@angular-architects/ngrx-toolkit 20.4.0 → 20.4.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"angular-architects-ngrx-toolkit.mjs","sources":["../tmp-esm2022/lib/devtools/internal/devtools-feature.js","../tmp-esm2022/lib/devtools/features/with-disabled-name-indicies.js","../tmp-esm2022/lib/shared/throw-if-null.js","../tmp-esm2022/lib/devtools/internal/glitch-tracker.service.js","../tmp-esm2022/lib/devtools/features/with-glitch-tracking.js","../tmp-esm2022/lib/devtools/features/with-mapper.js","../tmp-esm2022/lib/devtools/provide-devtools-config.js","../tmp-esm2022/lib/devtools/internal/default-tracker.js","../tmp-esm2022/lib/devtools/internal/current-action-names.js","../tmp-esm2022/lib/devtools/internal/devtools-syncer.service.js","../tmp-esm2022/lib/devtools/with-devtools.js","../tmp-esm2022/lib/devtools/rename-devtools-name.js","../tmp-esm2022/lib/devtools/update-state.js","../tmp-esm2022/lib/devtools/with-dev-tools-stub.js","../tmp-esm2022/lib/assertions/assertions.js","../tmp-esm2022/lib/with-redux.js","../tmp-esm2022/lib/with-call-state.js","../tmp-esm2022/lib/with-data-service.js","../tmp-esm2022/lib/with-pagination.js","../tmp-esm2022/lib/with-reset.js","../tmp-esm2022/lib/with-undo-redo.js","../tmp-esm2022/lib/immutable-state/deep-freeze.js","../tmp-esm2022/lib/immutable-state/is-dev-mode.js","../tmp-esm2022/lib/immutable-state/with-immutable-state.js","../tmp-esm2022/lib/storage-sync/internal/indexeddb.service.js","../tmp-esm2022/lib/storage-sync/internal/models.js","../tmp-esm2022/lib/storage-sync/features/with-indexed-db.js","../tmp-esm2022/lib/storage-sync/internal/local-storage.service.js","../tmp-esm2022/lib/storage-sync/internal/session-storage.service.js","../tmp-esm2022/lib/storage-sync/features/with-local-storage.js","../tmp-esm2022/lib/storage-sync/with-storage-sync.js","../tmp-esm2022/lib/with-conditional.js","../tmp-esm2022/lib/with-feature-factory.js","../tmp-esm2022/lib/flattening-operator.js","../tmp-esm2022/lib/mutation/rx-mutation.js","../tmp-esm2022/lib/with-mutations.js","../tmp-esm2022/lib/with-resource.js","../tmp-esm2022/lib/mutation/http-mutation.js","../tmp-esm2022/angular-architects-ngrx-toolkit.js"],"sourcesContent":["export const DEVTOOLS_FEATURE = Symbol('DEVTOOLS_FEATURE');\nexport function createDevtoolsFeature(options) {\n return {\n [DEVTOOLS_FEATURE]: true,\n ...options,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMtZmVhdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQTJCM0QsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxPQUF3QjtJQUV4QixPQUFPO1FBQ0wsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUk7UUFDeEIsR0FBRyxPQUFPO0tBQ1gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFja2VyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgREVWVE9PTFNfRkVBVFVSRSA9IFN5bWJvbCgnREVWVE9PTFNfRkVBVFVSRScpO1xuXG5leHBvcnQgdHlwZSBNYXBwZXIgPSAoc3RhdGU6IG9iamVjdCkgPT4gb2JqZWN0O1xuXG5leHBvcnQgdHlwZSBEZXZ0b29sc09wdGlvbnMgPSB7XG4gIGluZGV4TmFtZXM/OiBib29sZWFuOyAvLyBkZWZpbmVzIGlmIG5hbWVzIHNob3VsZCBiZSBpbmRleGVkLlxuICBtYXA/OiBNYXBwZXI7IC8vIGRlZmluZXMgYSBtYXBwZXIgZm9yIHRoZSBzdGF0ZS5cbiAgdHJhY2tlcj86IG5ldyAoKSA9PiBUcmFja2VyOyAvLyBkZWZpbmVzIGEgdHJhY2tlciBmb3IgdGhlIHN0YXRlXG59O1xuXG5leHBvcnQgdHlwZSBEZXZ0b29sc0lubmVyT3B0aW9ucyA9IHtcbiAgaW5kZXhOYW1lczogYm9vbGVhbjtcbiAgbWFwOiBNYXBwZXI7XG4gIHRyYWNrZXI6IFRyYWNrZXI7XG59O1xuXG4vKipcbiAqIEEgRGV2dG9vbHNGZWF0dXJlIGFkZHMgb3IgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoZVxuICogZGV2dG9vbHMgZXh0ZW5zaW9uLlxuICpcbiAqIFdlIHVzZSB0aGVtIChmdW5jdGlvbiBjYWxscykgaW5zdGVhZCBvZiBhIGNvbmZpZyBvYmplY3QsXG4gKiBiZWNhdXNlIG9mIHRyZWUtc2hha2luZy5cbiAqL1xuZXhwb3J0IHR5cGUgRGV2dG9vbHNGZWF0dXJlID0ge1xuICBbREVWVE9PTFNfRkVBVFVSRV06IHRydWU7XG59ICYgUGFydGlhbDxEZXZ0b29sc09wdGlvbnM+O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGV2dG9vbHNGZWF0dXJlKFxuICBvcHRpb25zOiBEZXZ0b29sc09wdGlvbnMsXG4pOiBEZXZ0b29sc0ZlYXR1cmUge1xuICByZXR1cm4ge1xuICAgIFtERVZUT09MU19GRUFUVVJFXTogdHJ1ZSxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xufVxuIl19","import { createDevtoolsFeature } from '../internal/devtools-feature';\n/**\n * If multiple instances of the same SignalStore class\n * exist, their devtool names are indexed.\n *\n * For example:\n *\n * ```typescript\n * const Store = signalStore(\n * withDevtools('flights')\n * )\n *\n * const store1 = new Store(); // will show up as 'flights'\n * const store2 = new Store(); // will show up as 'flights-1'\n * ```\n *\n * With adding `withDisabledNameIndices` to the store:\n * ```typescript\n * const Store = signalStore(\n * withDevtools('flights', withDisabledNameIndices())\n * )\n *\n * const store1 = new Store(); // will show up as 'flights'\n * const store2 = new Store(); //💥 throws an error\n * ```\n *\n */\nexport function withDisabledNameIndices() {\n return createDevtoolsFeature({ indexNames: false });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kaXNhYmxlZC1uYW1lLWluZGljaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9kZXZ0b29scy9mZWF0dXJlcy93aXRoLWRpc2FibGVkLW5hbWUtaW5kaWNpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFckU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8scUJBQXFCLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRGV2dG9vbHNGZWF0dXJlIH0gZnJvbSAnLi4vaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZSc7XG5cbi8qKlxuICogSWYgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIFNpZ25hbFN0b3JlIGNsYXNzXG4gKiBleGlzdCwgdGhlaXIgZGV2dG9vbCBuYW1lcyBhcmUgaW5kZXhlZC5cbiAqXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB3aXRoRGV2dG9vbHMoJ2ZsaWdodHMnKVxuICogKVxuICpcbiAqIGNvbnN0IHN0b3JlMSA9IG5ldyBTdG9yZSgpOyAvLyB3aWxsIHNob3cgdXAgYXMgJ2ZsaWdodHMnXG4gKiBjb25zdCBzdG9yZTIgPSBuZXcgU3RvcmUoKTsgLy8gd2lsbCBzaG93IHVwIGFzICdmbGlnaHRzLTEnXG4gKiBgYGBcbiAqXG4gKiBXaXRoIGFkZGluZyBgd2l0aERpc2FibGVkTmFtZUluZGljZXNgIHRvIHRoZSBzdG9yZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IFN0b3JlID0gc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhEZXZ0b29scygnZmxpZ2h0cycsIHdpdGhEaXNhYmxlZE5hbWVJbmRpY2VzKCkpXG4gKiApXG4gKlxuICogY29uc3Qgc3RvcmUxID0gbmV3IFN0b3JlKCk7IC8vIHdpbGwgc2hvdyB1cCBhcyAnZmxpZ2h0cydcbiAqIGNvbnN0IHN0b3JlMiA9IG5ldyBTdG9yZSgpOyAvL/CfkqUgdGhyb3dzIGFuIGVycm9yXG4gKiBgYGBcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGlzYWJsZWROYW1lSW5kaWNlcygpIHtcbiAgcmV0dXJuIGNyZWF0ZURldnRvb2xzRmVhdHVyZSh7IGluZGV4TmFtZXM6IGZhbHNlIH0pO1xufVxuIl19","export function throwIfNull(obj) {\n if (obj === null || obj === undefined) {\n throw new Error('');\n }\n return obj;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3ctaWYtbnVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvc2hhcmVkL3Rocm93LWlmLW51bGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFdBQVcsQ0FBSSxHQUFNO0lBQ25DLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHRocm93SWZOdWxsPFQ+KG9iajogVCk6IE5vbk51bGxhYmxlPFQ+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignJyk7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuIl19","import { Injectable } from '@angular/core';\nimport { getState, watchState } from '@ngrx/signals';\nimport { throwIfNull } from '../../shared/throw-if-null';\nimport * as i0 from \"@angular/core\";\n/**\n * Internal Service used by {@link withGlitchTracking}. It does not rely\n * on `effect` as {@link DefaultTracker} does but uses the NgRx function\n * `watchState` to track all state changes.\n */\nexport class GlitchTrackerService {\n #stores = {};\n #callback;\n get stores() {\n return Object.entries(this.#stores).reduce((acc, [id, { store }]) => {\n acc[id] = store;\n return acc;\n }, {});\n }\n onChange(callback) {\n this.#callback = callback;\n }\n removeStore(id) {\n this.#stores = Object.entries(this.#stores).reduce((newStore, [storeId, value]) => {\n if (storeId !== id) {\n newStore[storeId] = value;\n }\n else {\n value.destroyWatcher();\n }\n return newStore;\n }, {});\n throwIfNull(this.#callback)({});\n }\n track(id, store) {\n const watcher = watchState(store, (state) => {\n throwIfNull(this.#callback)({ [id]: state });\n });\n this.#stores[id] = { destroyWatcher: watcher.destroy, store };\n }\n notifyRenamedStore(id) {\n if (Object.keys(this.#stores).includes(id) && this.#callback) {\n this.#callback({ [id]: getState(this.#stores[id].store) });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: GlitchTrackerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: GlitchTrackerService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: GlitchTrackerService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xpdGNoLXRyYWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvaW50ZXJuYWwvZ2xpdGNoLXRyYWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQWUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFRekQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNyQixTQUFTLENBQStEO0lBRXhFLElBQUksTUFBTTtRQUNSLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDaEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBbUIsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRLENBQUMsUUFBd0Q7UUFDL0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFVO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUNoRCxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzdCLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNuQixRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFDRCxFQUFZLENBQ2IsQ0FBQztRQUVGLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBMEI7UUFDMUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQVU7UUFDM0IsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQzs4R0EzQ1Usb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzsyRkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFN0YXRlLCBTdGF0ZVNvdXJjZSwgd2F0Y2hTdGF0ZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHsgdGhyb3dJZk51bGwgfSBmcm9tICcuLi8uLi9zaGFyZWQvdGhyb3ctaWYtbnVsbCc7XG5pbXBvcnQgeyBUcmFja2VyLCBUcmFja2VyU3RvcmVzIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG50eXBlIFN0b3JlcyA9IFJlY29yZDxcbiAgc3RyaW5nLFxuICB7IGRlc3Ryb3lXYXRjaGVyOiAoKSA9PiB2b2lkOyBzdG9yZTogU3RhdGVTb3VyY2U8b2JqZWN0PiB9XG4+O1xuXG4vKipcbiAqIEludGVybmFsIFNlcnZpY2UgdXNlZCBieSB7QGxpbmsgd2l0aEdsaXRjaFRyYWNraW5nfS4gSXQgZG9lcyBub3QgcmVseVxuICogb24gYGVmZmVjdGAgYXMge0BsaW5rIERlZmF1bHRUcmFja2VyfSBkb2VzIGJ1dCB1c2VzIHRoZSBOZ1J4IGZ1bmN0aW9uXG4gKiBgd2F0Y2hTdGF0ZWAgdG8gdHJhY2sgYWxsIHN0YXRlIGNoYW5nZXMuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgR2xpdGNoVHJhY2tlclNlcnZpY2UgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgI3N0b3JlczogU3RvcmVzID0ge307XG4gICNjYWxsYmFjazogKChjaGFuZ2VkU3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4pID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gIGdldCBzdG9yZXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuI3N0b3JlcykucmVkdWNlKChhY2MsIFtpZCwgeyBzdG9yZSB9XSkgPT4ge1xuICAgICAgYWNjW2lkXSA9IHN0b3JlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBUcmFja2VyU3RvcmVzKTtcbiAgfVxuXG4gIG9uQ2hhbmdlKGNhbGxiYWNrOiAoY2hhbmdlZFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHJlbW92ZVN0b3JlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLiNzdG9yZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLiNzdG9yZXMpLnJlZHVjZShcbiAgICAgIChuZXdTdG9yZSwgW3N0b3JlSWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoc3RvcmVJZCAhPT0gaWQpIHtcbiAgICAgICAgICBuZXdTdG9yZVtzdG9yZUlkXSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlLmRlc3Ryb3lXYXRjaGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1N0b3JlO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFN0b3JlcyxcbiAgICApO1xuXG4gICAgdGhyb3dJZk51bGwodGhpcy4jY2FsbGJhY2spKHt9KTtcbiAgfVxuXG4gIHRyYWNrKGlkOiBzdHJpbmcsIHN0b3JlOiBTdGF0ZVNvdXJjZTxvYmplY3Q+KTogdm9pZCB7XG4gICAgY29uc3Qgd2F0Y2hlciA9IHdhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgdGhyb3dJZk51bGwodGhpcy4jY2FsbGJhY2spKHsgW2lkXTogc3RhdGUgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiNzdG9yZXNbaWRdID0geyBkZXN0cm95V2F0Y2hlcjogd2F0Y2hlci5kZXN0cm95LCBzdG9yZSB9O1xuICB9XG5cbiAgbm90aWZ5UmVuYW1lZFN0b3JlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy4jc3RvcmVzKS5pbmNsdWRlcyhpZCkgJiYgdGhpcy4jY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuI2NhbGxiYWNrKHsgW2lkXTogZ2V0U3RhdGUodGhpcy4jc3RvcmVzW2lkXS5zdG9yZSkgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=","import { createDevtoolsFeature } from '../internal/devtools-feature';\nimport { GlitchTrackerService } from '../internal/glitch-tracker.service';\n/**\n * It tracks all state changes of the State, including intermediary updates\n * that are typically suppressed by Angular's glitch-free mechanism.\n *\n * This feature is especially useful for debugging.\n *\n * Example:\n *\n * ```typescript\n * const Store = signalStore(\n * { providedIn: 'root' },\n * withState({ count: 0 }),\n * withDevtools('counter', withGlitchTracking()),\n * withMethods((store) => ({\n * increase: () =>\n * patchState(store, (value) => ({ count: value.count + 1 })),\n * }))\n * );\n *\n * // would show up in the DevTools with value 0\n * const store = inject(Store);\n *\n * store.increase(); // would show up in the DevTools with value 1\n * store.increase(); // would show up in the DevTools with value 2\n * store.increase(); // would show up in the DevTools with value 3\n * ```\n *\n * Without `withGlitchTracking`, the DevTools would only show the final value of 3.\n */\nexport function withGlitchTracking() {\n return createDevtoolsFeature({ tracker: GlitchTrackerService });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1nbGl0Y2gtdHJhY2tpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ZlYXR1cmVzL3dpdGgtZ2xpdGNoLXRyYWNraW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLHFCQUFxQixDQUFDLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRGV2dG9vbHNGZWF0dXJlIH0gZnJvbSAnLi4vaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZSc7XG5pbXBvcnQgeyBHbGl0Y2hUcmFja2VyU2VydmljZSB9IGZyb20gJy4uL2ludGVybmFsL2dsaXRjaC10cmFja2VyLnNlcnZpY2UnO1xuXG4vKipcbiAqIEl0IHRyYWNrcyBhbGwgc3RhdGUgY2hhbmdlcyBvZiB0aGUgU3RhdGUsIGluY2x1ZGluZyBpbnRlcm1lZGlhcnkgdXBkYXRlc1xuICogdGhhdCBhcmUgdHlwaWNhbGx5IHN1cHByZXNzZWQgYnkgQW5ndWxhcidzIGdsaXRjaC1mcmVlIG1lY2hhbmlzbS5cbiAqXG4gKiBUaGlzIGZlYXR1cmUgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIGRlYnVnZ2luZy5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IFN0b3JlID0gc2lnbmFsU3RvcmUoXG4gKiAgIHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXG4gKiAgIHdpdGhTdGF0ZSh7IGNvdW50OiAwIH0pLFxuICogICB3aXRoRGV2dG9vbHMoJ2NvdW50ZXInLCB3aXRoR2xpdGNoVHJhY2tpbmcoKSksXG4gKiAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAqICAgICBpbmNyZWFzZTogKCkgPT5cbiAqICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsICh2YWx1ZSkgPT4gKHsgY291bnQ6IHZhbHVlLmNvdW50ICsgMSB9KSksXG4gKiAgIH0pKVxuICogKTtcbiAqXG4gKiAvLyB3b3VsZCBzaG93IHVwIGluIHRoZSBEZXZUb29scyB3aXRoIHZhbHVlIDBcbiAqIGNvbnN0IHN0b3JlID0gaW5qZWN0KFN0b3JlKTtcbiAqXG4gKiBzdG9yZS5pbmNyZWFzZSgpOyAvLyB3b3VsZCBzaG93IHVwIGluIHRoZSBEZXZUb29scyB3aXRoIHZhbHVlIDFcbiAqIHN0b3JlLmluY3JlYXNlKCk7IC8vIHdvdWxkIHNob3cgdXAgaW4gdGhlIERldlRvb2xzIHdpdGggdmFsdWUgMlxuICogc3RvcmUuaW5jcmVhc2UoKTsgLy8gd291bGQgc2hvdyB1cCBpbiB0aGUgRGV2VG9vbHMgd2l0aCB2YWx1ZSAzXG4gKiBgYGBcbiAqXG4gKiBXaXRob3V0IGB3aXRoR2xpdGNoVHJhY2tpbmdgLCB0aGUgRGV2VG9vbHMgd291bGQgb25seSBzaG93IHRoZSBmaW5hbCB2YWx1ZSBvZiAzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEdsaXRjaFRyYWNraW5nKCkge1xuICByZXR1cm4gY3JlYXRlRGV2dG9vbHNGZWF0dXJlKHsgdHJhY2tlcjogR2xpdGNoVHJhY2tlclNlcnZpY2UgfSk7XG59XG4iXX0=","import { createDevtoolsFeature } from '../internal/devtools-feature';\n/**\n * Allows you to define a function to map the state.\n *\n * It is needed for huge states, that slows down the Devtools and where\n * you don't need to see the whole state or other reasons.\n *\n * Example:\n *\n * ```typescript\n * const initialState = {\n * id: 1,\n * email: 'john.list@host.com',\n * name: 'John List',\n * enteredPassword: ''\n * }\n *\n * const Store = signalStore(\n * withState(initialState),\n * withDevtools(\n * 'user',\n * withMapper(state => ({...state, enteredPassword: '***' }))\n * )\n * )\n * ```\n *\n * @param map function which maps the state\n */\nexport function withMapper(map) {\n return createDevtoolsFeature({ map: map });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ZlYXR1cmVzL3dpdGgtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBVSxNQUFNLDhCQUE4QixDQUFDO0FBRTdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLEdBQThDO0lBRTlDLE9BQU8scUJBQXFCLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBYSxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRGV2dG9vbHNGZWF0dXJlLCBNYXBwZXIgfSBmcm9tICcuLi9pbnRlcm5hbC9kZXZ0b29scy1mZWF0dXJlJztcblxuLyoqXG4gKiBBbGxvd3MgeW91IHRvIGRlZmluZSBhIGZ1bmN0aW9uIHRvIG1hcCB0aGUgc3RhdGUuXG4gKlxuICogSXQgaXMgbmVlZGVkIGZvciBodWdlIHN0YXRlcywgdGhhdCBzbG93cyBkb3duIHRoZSBEZXZ0b29scyBhbmQgd2hlcmVcbiAqIHlvdSBkb24ndCBuZWVkIHRvIHNlZSB0aGUgd2hvbGUgc3RhdGUgb3Igb3RoZXIgcmVhc29ucy5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAqICAgaWQ6IDEsXG4gKiAgIGVtYWlsOiAnam9obi5saXN0QGhvc3QuY29tJyxcbiAqICAgbmFtZTogJ0pvaG4gTGlzdCcsXG4gKiAgIGVudGVyZWRQYXNzd29yZDogJydcbiAqIH1cbiAqXG4gKiBjb25zdCBTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB3aXRoU3RhdGUoaW5pdGlhbFN0YXRlKSxcbiAqICAgd2l0aERldnRvb2xzKFxuICogICAgICd1c2VyJyxcbiAqICAgICB3aXRoTWFwcGVyKHN0YXRlID0+ICh7Li4uc3RhdGUsIGVudGVyZWRQYXNzd29yZDogJyoqKicgfSkpXG4gKiAgIClcbiAqIClcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBtYXAgZnVuY3Rpb24gd2hpY2ggbWFwcyB0aGUgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhNYXBwZXI8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBtYXA6IChzdGF0ZTogU3RhdGUpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKSB7XG4gIHJldHVybiBjcmVhdGVEZXZ0b29sc0ZlYXR1cmUoeyBtYXA6IG1hcCBhcyBNYXBwZXIgfSk7XG59XG4iXX0=","import { InjectionToken } from '@angular/core';\n/**\n * Provides the configuration options for connecting to the Redux DevTools Extension.\n */\nexport function provideDevtoolsConfig(config) {\n return {\n provide: REDUX_DEVTOOLS_CONFIG,\n useValue: config,\n };\n}\n/**\n * Injection token for the configuration options for connecting to the Redux DevTools Extension.\n */\nexport const REDUX_DEVTOOLS_CONFIG = new InjectionToken('ReduxDevtoolsConfig');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1kZXZ0b29scy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL3Byb3ZpZGUtZGV2dG9vbHMtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRTlEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxNQUEyQjtJQUUzQixPQUFPO1FBQ0wsT0FBTyxFQUFFLHFCQUFxQjtRQUM5QixRQUFRLEVBQUUsTUFBTTtLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ3JELHFCQUFxQixDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFZhbHVlUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBjb25uZWN0aW5nIHRvIHRoZSBSZWR1eCBEZXZUb29scyBFeHRlbnNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGV2dG9vbHNDb25maWcoXG4gIGNvbmZpZzogUmVkdXhEZXZ0b29sc0NvbmZpZyxcbik6IFZhbHVlUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFJFRFVYX0RFVlRPT0xTX0NPTkZJRyxcbiAgICB1c2VWYWx1ZTogY29uZmlnLFxuICB9O1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgY29ubmVjdGluZyB0byB0aGUgUmVkdXggRGV2VG9vbHMgRXh0ZW5zaW9uLlxuICovXG5leHBvcnQgY29uc3QgUkVEVVhfREVWVE9PTFNfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFJlZHV4RGV2dG9vbHNDb25maWc+KFxuICAnUmVkdXhEZXZ0b29sc0NvbmZpZycsXG4pO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbm5lY3RpbmcgdG8gdGhlIFJlZHV4IERldlRvb2xzIEV4dGVuc2lvbi5cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkZXZUb29sc09wdGlvbnM6IFJlZHV4RGV2dG9vbHNDb25maWcgPSB7XG4gKiAgIG5hbWU6ICdNeSBBcHAnLFxuICogfTtcbiAqL1xuZXhwb3J0IHR5cGUgUmVkdXhEZXZ0b29sc0NvbmZpZyA9IHtcbiAgLyoqIE9wdGlvbmFsIG5hbWUgZm9yIHRoZSBkZXZ0b29scyBpbnN0YW5jZS4gSWYgZW1wdHksIFwiTmdSeCBTaWduYWxTdG9yZVwiIHdpbGwgYmUgdXNlZC4gKi9cbiAgbmFtZT86IHN0cmluZztcbn07XG4iXX0=","import { effect, Injectable, signal } from '@angular/core';\nimport { getState } from '@ngrx/signals';\nimport * as i0 from \"@angular/core\";\nexport class DefaultTracker {\n #stores = signal({}, ...(ngDevMode ? [{ debugName: \"#stores\" }] : []));\n get stores() {\n return this.#stores();\n }\n #trackCallback;\n #trackingEffect = effect(() => {\n if (this.#trackCallback === undefined) {\n throw new Error('no callback function defined');\n }\n const stores = this.#stores();\n const fullState = Object.entries(stores).reduce((acc, [id, store]) => {\n return { ...acc, [id]: getState(store) };\n }, {});\n this.#trackCallback(fullState);\n }, ...(ngDevMode ? [{ debugName: \"#trackingEffect\" }] : []));\n track(id, store) {\n this.#stores.update((value) => ({\n ...value,\n [id]: store,\n }));\n }\n onChange(callback) {\n this.#trackCallback = callback;\n }\n removeStore(id) {\n this.#stores.update((stores) => Object.entries(stores).reduce((newStore, [storeId, state]) => {\n if (storeId !== id) {\n newStore[storeId] = state;\n }\n return newStore;\n }, {}));\n }\n notifyRenamedStore(id) {\n if (this.#stores()[id]) {\n this.#stores.update((stores) => {\n return { ...stores };\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DefaultTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DefaultTracker, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DefaultTracker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10cmFja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9kZXZ0b29scy9pbnRlcm5hbC9kZWZhdWx0LXRyYWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQWUsTUFBTSxlQUFlLENBQUM7O0FBSXRELE1BQU0sT0FBTyxjQUFjO0lBQ2hCLE9BQU8sR0FBRyxNQUFNLENBQWdCLEVBQUUsbURBQUMsQ0FBQztJQUU3QyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYyxDQUErRDtJQUU3RSxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUM1QixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFOUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQzdDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxFQUNELEVBQTRCLENBQzdCLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsMkRBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBMEI7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUIsR0FBRyxLQUFLO1lBQ1IsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLO1NBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQXdEO1FBQy9ELElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBVTtRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDM0QsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ25CLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDNUIsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFBRSxFQUFtQixDQUFDLENBQ3hCLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCLENBQUMsRUFBVTtRQUMzQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzdCLE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7OEdBckRVLGNBQWM7a0hBQWQsY0FBYyxjQURELE1BQU07OzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVmZmVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRTdGF0ZSwgU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IFRyYWNrZXIsIFRyYWNrZXJTdG9yZXMgfSBmcm9tICcuL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRGVmYXVsdFRyYWNrZXIgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgcmVhZG9ubHkgI3N0b3JlcyA9IHNpZ25hbDxUcmFja2VyU3RvcmVzPih7fSk7XG5cbiAgZ2V0IHN0b3JlcygpOiBUcmFja2VyU3RvcmVzIHtcbiAgICByZXR1cm4gdGhpcy4jc3RvcmVzKCk7XG4gIH1cblxuICAjdHJhY2tDYWxsYmFjazogdW5kZWZpbmVkIHwgKChjaGFuZ2VkU3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4pID0+IHZvaWQpO1xuXG4gICN0cmFja2luZ0VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuI3RyYWNrQ2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBjYWxsYmFjayBmdW5jdGlvbiBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGNvbnN0IHN0b3JlcyA9IHRoaXMuI3N0b3JlcygpO1xuXG4gICAgY29uc3QgZnVsbFN0YXRlID0gT2JqZWN0LmVudHJpZXMoc3RvcmVzKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaWQsIHN0b3JlXSkgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtpZF06IGdldFN0YXRlKHN0b3JlKSB9O1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD4sXG4gICAgKTtcblxuICAgIHRoaXMuI3RyYWNrQ2FsbGJhY2soZnVsbFN0YXRlKTtcbiAgfSk7XG5cbiAgdHJhY2soaWQ6IHN0cmluZywgc3RvcmU6IFN0YXRlU291cmNlPG9iamVjdD4pOiB2b2lkIHtcbiAgICB0aGlzLiNzdG9yZXMudXBkYXRlKCh2YWx1ZSkgPT4gKHtcbiAgICAgIC4uLnZhbHVlLFxuICAgICAgW2lkXTogc3RvcmUsXG4gICAgfSkpO1xuICB9XG5cbiAgb25DaGFuZ2UoY2FsbGJhY2s6IChjaGFuZ2VkU3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiN0cmFja0NhbGxiYWNrID0gY2FsbGJhY2s7XG4gIH1cblxuICByZW1vdmVTdG9yZShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy4jc3RvcmVzLnVwZGF0ZSgoc3RvcmVzKSA9PlxuICAgICAgT2JqZWN0LmVudHJpZXMoc3RvcmVzKS5yZWR1Y2UoKG5ld1N0b3JlLCBbc3RvcmVJZCwgc3RhdGVdKSA9PiB7XG4gICAgICAgIGlmIChzdG9yZUlkICE9PSBpZCkge1xuICAgICAgICAgIG5ld1N0b3JlW3N0b3JlSWRdID0gc3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1N0b3JlO1xuICAgICAgfSwge30gYXMgVHJhY2tlclN0b3JlcyksXG4gICAgKTtcbiAgfVxuXG4gIG5vdGlmeVJlbmFtZWRTdG9yZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI3N0b3JlcygpW2lkXSkge1xuICAgICAgdGhpcy4jc3RvcmVzLnVwZGF0ZSgoc3RvcmVzKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0b3JlcyB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=","export const currentActionNames = new Set();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC1hY3Rpb24tbmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ludGVybmFsL2N1cnJlbnQtYWN0aW9uLW5hbWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY3VycmVudEFjdGlvbk5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4iXX0=","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { throwIfNull } from '../../shared/throw-if-null';\nimport { REDUX_DEVTOOLS_CONFIG } from '../provide-devtools-config';\nimport { currentActionNames } from './current-action-names';\nimport * as i0 from \"@angular/core\";\nconst dummyConnection = {\n send: () => void true,\n};\n/**\n * A service provided by the root injector is\n * required because the synchronization runs\n * globally.\n *\n * The SignalStore could be provided in a component.\n * If the effect starts in the injection\n * context of the SignalStore, the complete sync\n * process would shut down once the component gets\n * destroyed.\n */\nexport class DevtoolsSyncer {\n /**\n * Stores all SignalStores that are connected to the\n * DevTools along their options, names and id.\n */\n #stores = {};\n #isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n #trackers = [];\n #devtoolsConfig = {\n name: 'NgRx SignalStore',\n ...inject(REDUX_DEVTOOLS_CONFIG, { optional: true }),\n };\n /**\n * Maintains the current states of all stores to avoid conflicts\n * between glitch-free and glitched trackers when used simultaneously.\n *\n * The challenge lies in ensuring that glitched trackers do not\n * interfere with the synchronization process of glitch-free trackers.\n * Specifically, glitched trackers could cause the synchronization to\n * read the current state of stores managed by glitch-free trackers.\n *\n * Therefore, the synchronization process doesn't read the state from\n * each store, but relies on #currentState.\n *\n * Please note, that here the key is the name and not the id.\n */\n #currentState = {};\n #currentId = 1;\n #connection = this.#isBrowser\n ? window.__REDUX_DEVTOOLS_EXTENSION__\n ? window.__REDUX_DEVTOOLS_EXTENSION__.connect(this.#devtoolsConfig)\n : dummyConnection\n : dummyConnection;\n constructor() {\n if (!this.#isBrowser) {\n return;\n }\n }\n ngOnDestroy() {\n currentActionNames.clear();\n }\n syncToDevTools(changedStatePerId) {\n const mappedChangedStatePerName = Object.entries(changedStatePerId).reduce((acc, [id, store]) => {\n const { options, name } = this.#stores[id];\n acc[name] = options.map(store);\n return acc;\n }, {});\n this.#currentState = {\n ...this.#currentState,\n ...mappedChangedStatePerName,\n };\n const names = Array.from(currentActionNames);\n const type = names.length ? names.join(', ') : 'Store Update';\n currentActionNames.clear();\n this.#connection.send({ type }, this.#currentState);\n }\n getNextId() {\n return String(this.#currentId++);\n }\n /**\n * Consumer provides the id. That is because we can only start\n * tracking the store in the init hook.\n * Unfortunately, methods for renaming having the final id\n * need to be defined already before.\n * That's why `withDevtools` requests first the id and\n * then registers itself later.\n */\n addStore(id, name, store, options) {\n let storeName = name;\n const names = Object.values(this.#stores).map((store) => store.name);\n if (names.includes(storeName)) {\n // const { options } = throwIfNull(\n // Object.values(this.#stores).find((store) => store.name === storeName)\n // );\n if (!options.indexNames) {\n throw new Error(`An instance of the store ${storeName} already exists. \\\nEnable automatic indexing via withDevTools('${storeName}', { indexNames: true }), or rename it upon instantiation.`);\n }\n }\n for (let i = 1; names.includes(storeName); i++) {\n storeName = `${name}-${i}`;\n }\n this.#stores[id] = { name: storeName, options };\n const tracker = options.tracker;\n if (!this.#trackers.includes(tracker)) {\n this.#trackers.push(tracker);\n }\n tracker.onChange((changedState) => this.syncToDevTools(changedState));\n tracker.track(id, store);\n }\n removeStore(id) {\n const name = this.#stores[id].name;\n this.#stores = Object.entries(this.#stores).reduce((newStore, [storeId, value]) => {\n if (storeId !== id) {\n newStore[storeId] = value;\n }\n return newStore;\n }, {});\n this.#currentState = Object.entries(this.#currentState).reduce((newState, [storeName, state]) => {\n if (storeName !== name) {\n newState[name] = state;\n }\n return newState;\n }, {});\n for (const tracker of this.#trackers) {\n tracker.removeStore(id);\n }\n }\n renameStore(oldName, newName) {\n const storeNames = Object.values(this.#stores).map((store) => store.name);\n const id = throwIfNull(Object.keys(this.#stores).find((id) => this.#stores[id].name === oldName));\n if (storeNames.includes(newName)) {\n throw new Error(`NgRx Toolkit/DevTools: cannot rename from ${oldName} to ${newName}. ${newName} is already assigned to another SignalStore instance.`);\n }\n this.#stores = Object.entries(this.#stores).reduce((newStore, [id, value]) => {\n if (value.name === oldName) {\n newStore[id] = { ...value, name: newName };\n }\n else {\n newStore[id] = value;\n }\n return newStore;\n }, {});\n // we don't rename in #currentState but wait for tracker to notify\n // us with a changed state that contains that name.\n this.#currentState = Object.entries(this.#currentState).reduce((newState, [storeName, state]) => {\n if (storeName !== oldName) {\n newState[storeName] = state;\n }\n return newState;\n }, {});\n this.#trackers.forEach((tracker) => tracker.notifyRenamedStore(id));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DevtoolsSyncer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DevtoolsSyncer, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DevtoolsSyncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMtc3luY2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ludGVybmFsL2RldnRvb2xzLXN5bmNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBSTVELE1BQU0sZUFBZSxHQUFlO0lBQ2xDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUk7Q0FDdEIsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUN6Qjs7O09BR0c7SUFDSCxPQUFPLEdBQWtCLEVBQUUsQ0FBQztJQUNuQixVQUFVLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsU0FBUyxHQUFHLEVBQWUsQ0FBQztJQUM1QixlQUFlLEdBQUc7UUFDekIsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUNyRCxDQUFDO0lBRUY7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILGFBQWEsR0FBMkIsRUFBRSxDQUFDO0lBQzNDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFFTixXQUFXLEdBQWUsSUFBSSxDQUFDLFVBQVU7UUFDaEQsQ0FBQyxDQUFD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QUFDLEVBQ0QsRUFBbUIsQ0FDcEIsQ0FBQztRQUVGLGtFQUFrRTtRQUNsRSxtREFBbUQ7UUFDbkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQzVELENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDL0IsSUFBSSxTQUFTLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDOUIsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFDRCxFQUE0QixDQUM3QixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7OEdBL0tVLGNBQWM7a0hBQWQsY0FBYyxjQURELE1BQU07OzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IHRocm93SWZOdWxsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3Rocm93LWlmLW51bGwnO1xuaW1wb3J0IHsgUkVEVVhfREVWVE9PTFNfQ09ORklHIH0gZnJvbSAnLi4vcHJvdmlkZS1kZXZ0b29scy1jb25maWcnO1xuaW1wb3J0IHsgY3VycmVudEFjdGlvbk5hbWVzIH0gZnJvbSAnLi9jdXJyZW50LWFjdGlvbi1uYW1lcyc7XG5pbXBvcnQgeyBEZXZ0b29sc0lubmVyT3B0aW9ucyB9IGZyb20gJy4vZGV2dG9vbHMtZmVhdHVyZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uLCBTdG9yZVJlZ2lzdHJ5LCBUcmFja2VyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5jb25zdCBkdW1teUNvbm5lY3Rpb246IENvbm5lY3Rpb24gPSB7XG4gIHNlbmQ6ICgpID0+IHZvaWQgdHJ1ZSxcbn07XG5cbi8qKlxuICogQSBzZXJ2aWNlIHByb3ZpZGVkIGJ5IHRoZSByb290IGluamVjdG9yIGlzXG4gKiByZXF1aXJlZCBiZWNhdXNlIHRoZSBzeW5jaHJvbml6YXRpb24gcnVuc1xuICogZ2xvYmFsbHkuXG4gKlxuICogVGhlIFNpZ25hbFN0b3JlIGNvdWxkIGJlIHByb3ZpZGVkIGluIGEgY29tcG9uZW50LlxuICogSWYgdGhlIGVmZmVjdCBzdGFydHMgaW4gdGhlIGluamVjdGlvblxuICogY29udGV4dCBvZiB0aGUgU2lnbmFsU3RvcmUsIHRoZSBjb21wbGV0ZSBzeW5jXG4gKiBwcm9jZXNzIHdvdWxkIHNodXQgZG93biBvbmNlIHRoZSBjb21wb25lbnQgZ2V0c1xuICogZGVzdHJveWVkLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIERldnRvb2xzU3luY2VyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFN0b3JlcyBhbGwgU2lnbmFsU3RvcmVzIHRoYXQgYXJlIGNvbm5lY3RlZCB0byB0aGVcbiAgICogRGV2VG9vbHMgYWxvbmcgdGhlaXIgb3B0aW9ucywgbmFtZXMgYW5kIGlkLlxuICAgKi9cbiAgI3N0b3JlczogU3RvcmVSZWdpc3RyeSA9IHt9O1xuICByZWFkb25seSAjaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIoaW5qZWN0KFBMQVRGT1JNX0lEKSk7XG4gIHJlYWRvbmx5ICN0cmFja2VycyA9IFtdIGFzIFRyYWNrZXJbXTtcbiAgcmVhZG9ubHkgI2RldnRvb2xzQ29uZmlnID0ge1xuICAgIG5hbWU6ICdOZ1J4IFNpZ25hbFN0b3JlJyxcbiAgICAuLi5pbmplY3QoUkVEVVhfREVWVE9PTFNfQ09ORklHLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxuICB9O1xuXG4gIC8qKlxuICAgKiBNYWludGFpbnMgdGhlIGN1cnJlbnQgc3RhdGVzIG9mIGFsbCBzdG9yZXMgdG8gYXZvaWQgY29uZmxpY3RzXG4gICAqIGJldHdlZW4gZ2xpdGNoLWZyZWUgYW5kIGdsaXRjaGVkIHRyYWNrZXJzIHdoZW4gdXNlZCBzaW11bHRhbmVvdXNseS5cbiAgICpcbiAgICogVGhlIGNoYWxsZW5nZSBsaWVzIGluIGVuc3VyaW5nIHRoYXQgZ2xpdGNoZWQgdHJhY2tlcnMgZG8gbm90XG4gICAqIGludGVyZmVyZSB3aXRoIHRoZSBzeW5jaHJvbml6YXRpb24gcHJvY2VzcyBvZiBnbGl0Y2gtZnJlZSB0cmFja2Vycy5cbiAgICogU3BlY2lmaWNhbGx5LCBnbGl0Y2hlZCB0cmFja2VycyBjb3VsZCBjYXVzZSB0aGUgc3luY2hyb25pemF0aW9uIHRvXG4gICAqIHJlYWQgdGhlIGN1cnJlbnQgc3RhdGUgb2Ygc3RvcmVzIG1hbmFnZWQgYnkgZ2xpdGNoLWZyZWUgdHJhY2tlcnMuXG4gICAqXG4gICAqIFRoZXJlZm9yZSwgdGhlIHN5bmNocm9uaXphdGlvbiBwcm9jZXNzIGRvZXNuJ3QgcmVhZCB0aGUgc3RhdGUgZnJvbVxuICAgKiBlYWNoIHN0b3JlLCBidXQgcmVsaWVzIG9uICNjdXJyZW50U3RhdGUuXG4gICAqXG4gICAqIFBsZWFzZSBub3RlLCB0aGF0IGhlcmUgdGhlIGtleSBpcyB0aGUgbmFtZSBhbmQgbm90IHRoZSBpZC5cbiAgICovXG4gICNjdXJyZW50U3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4gPSB7fTtcbiAgI2N1cnJlbnRJZCA9IDE7XG5cbiAgcmVhZG9ubHkgI2Nvbm5lY3Rpb246IENvbm5lY3Rpb24gPSB0aGlzLiNpc0Jyb3dzZXJcbiAgICA/IHdpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fXG4gICAgICA/IHdpbmRvdy5fX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fLmNvbm5lY3QodGhpcy4jZGV2dG9vbHNDb25maWcpXG4gICAgICA6IGR1bW15Q29ubmVjdGlvblxuICAgIDogZHVtbXlDb25uZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy4jaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgY3VycmVudEFjdGlvbk5hbWVzLmNsZWFyKCk7XG4gIH1cblxuICBzeW5jVG9EZXZUb29scyhjaGFuZ2VkU3RhdGVQZXJJZDogUmVjb3JkPHN0cmluZywgb2JqZWN0Pikge1xuICAgIGNvbnN0IG1hcHBlZENoYW5nZWRTdGF0ZVBlck5hbWUgPSBPYmplY3QuZW50cmllcyhjaGFuZ2VkU3RhdGVQZXJJZCkucmVkdWNlKFxuICAgICAgKGFjYywgW2lkLCBzdG9yZV0pID0+IHtcbiAgICAgICAgY29uc3QgeyBvcHRpb25zLCBuYW1lIH0gPSB0aGlzLiNzdG9yZXNbaWRdO1xuICAgICAgICBhY2NbbmFtZV0gPSBvcHRpb25zLm1hcChzdG9yZSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PixcbiAgICApO1xuICAgIHRoaXMuI2N1cnJlbnRTdGF0ZSA9IHtcbiAgICAgIC4uLnRoaXMuI2N1cnJlbnRTdGF0ZSxcbiAgICAgIC4uLm1hcHBlZENoYW5nZWRTdGF0ZVBlck5hbWUsXG4gICAgfTtcblxuICAgIGNvbnN0IG5hbWVzID0gQXJyYXkuZnJvbShjdXJyZW50QWN0aW9uTmFtZXMpO1xuICAgIGNvbnN0IHR5cGUgPSBuYW1lcy5sZW5ndGggPyBuYW1lcy5qb2luKCcsICcpIDogJ1N0b3JlIFVwZGF0ZSc7XG4gICAgY3VycmVudEFjdGlvbk5hbWVzLmNsZWFyKCk7XG5cbiAgICB0aGlzLiNjb25uZWN0aW9uLnNlbmQoeyB0eXBlIH0sIHRoaXMuI2N1cnJlbnRTdGF0ZSk7XG4gIH1cblxuICBnZXROZXh0SWQoKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLiNjdXJyZW50SWQrKyk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3VtZXIgcHJvdmlkZXMgdGhlIGlkLiBUaGF0IGlzIGJlY2F1c2Ugd2UgY2FuIG9ubHkgc3RhcnRcbiAgICogdHJhY2tpbmcgdGhlIHN0b3JlIGluIHRoZSBpbml0IGhvb2suXG4gICAqIFVuZm9ydHVuYXRlbHksIG1ldGhvZHMgZm9yIHJlbmFtaW5nIGhhdmluZyB0aGUgZmluYWwgaWRcbiAgICogbmVlZCB0byBiZSBkZWZpbmVkIGFscmVhZHkgYmVmb3JlLlxuICAgKiBUaGF0J3Mgd2h5IGB3aXRoRGV2dG9vbHNgIHJlcXVlc3RzIGZpcnN0IHRoZSBpZCBhbmRcbiAgICogdGhlbiByZWdpc3RlcnMgaXRzZWxmIGxhdGVyLlxuICAgKi9cbiAgYWRkU3RvcmUoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgc3RvcmU6IFN0YXRlU291cmNlPG9iamVjdD4sXG4gICAgb3B0aW9uczogRGV2dG9vbHNJbm5lck9wdGlvbnMsXG4gICkge1xuICAgIGxldCBzdG9yZU5hbWUgPSBuYW1lO1xuICAgIGNvbnN0IG5hbWVzID0gT2JqZWN0LnZhbHVlcyh0aGlzLiNzdG9yZXMpLm1hcCgoc3RvcmUpID0+IHN0b3JlLm5hbWUpO1xuXG4gICAgaWYgKG5hbWVzLmluY2x1ZGVzKHN0b3JlTmFtZSkpIHtcbiAgICAgIC8vIGNvbnN0IHsgb3B0aW9ucyB9ID0gdGhyb3dJZk51bGwoXG4gICAgICAvLyAgIE9iamVjdC52YWx1ZXModGhpcy4jc3RvcmVzKS5maW5kKChzdG9yZSkgPT4gc3RvcmUubmFtZSA9PT0gc3RvcmVOYW1lKVxuICAgICAgLy8gKTtcbiAgICAgIGlmICghb3B0aW9ucy5pbmRleE5hbWVzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQW4gaW5zdGFuY2Ugb2YgdGhlIHN0b3JlICR7c3RvcmVOYW1lfSBhbHJlYWR5IGV4aXN0cy4gXFxcbkVuYWJsZSBhdXRvbWF0aWMgaW5kZXhpbmcgdmlhIHdpdGhEZXZUb29scygnJHtzdG9yZU5hbWV9JywgeyBpbmRleE5hbWVzOiB0cnVlIH0pLCBvciByZW5hbWUgaXQgdXBvbiBpbnN0YW50aWF0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAxOyBuYW1lcy5pbmNsdWRlcyhzdG9yZU5hbWUpOyBpKyspIHtcbiAgICAgIHN0b3JlTmFtZSA9IGAke25hbWV9LSR7aX1gO1xuICAgIH1cbiAgICB0aGlzLiNzdG9yZXNbaWRdID0geyBuYW1lOiBzdG9yZU5hbWUsIG9wdGlvbnMgfTtcblxuICAgIGNvbnN0IHRyYWNrZXIgPSBvcHRpb25zLnRyYWNrZXI7XG4gICAgaWYgKCF0aGlzLiN0cmFja2Vycy5pbmNsdWRlcyh0cmFja2VyKSkge1xuICAgICAgdGhpcy4jdHJhY2tlcnMucHVzaCh0cmFja2VyKTtcbiAgICB9XG5cbiAgICB0cmFja2VyLm9uQ2hhbmdlKChjaGFuZ2VkU3RhdGUpID0+IHRoaXMuc3luY1RvRGV2VG9vbHMoY2hhbmdlZFN0YXRlKSk7XG4gICAgdHJhY2tlci50cmFjayhpZCwgc3RvcmUpO1xuICB9XG5cbiAgcmVtb3ZlU3RvcmUoaWQ6IHN0cmluZykge1xuICAgIGNvbnN0IG5hbWUgPSB0aGlzLiNzdG9yZXNbaWRdLm5hbWU7XG4gICAgdGhpcy4jc3RvcmVzID0gT2JqZWN0LmVudHJpZXModGhpcy4jc3RvcmVzKS5yZWR1Y2UoXG4gICAgICAobmV3U3RvcmUsIFtzdG9yZUlkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHN0b3JlSWQgIT09IGlkKSB7XG4gICAgICAgICAgbmV3U3RvcmVbc3RvcmVJZF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3U3RvcmU7XG4gICAgICB9LFxuICAgICAge30gYXMgU3RvcmVSZWdpc3RyeSxcbiAgICApO1xuXG4gICAgdGhpcy4jY3VycmVudFN0YXRlID0gT2JqZWN0LmVudHJpZXModGhpcy4jY3VycmVudFN0YXRlKS5yZWR1Y2UoXG4gICAgICAobmV3U3RhdGUsIFtzdG9yZU5hbWUsIHN0YXRlXSkgPT4ge1xuICAgICAgICBpZiAoc3RvcmVOYW1lICE9PSBuYW1lKSB7XG4gICAgICAgICAgbmV3U3RhdGVbbmFtZV0gPSBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PixcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCB0cmFja2VyIG9mIHRoaXMuI3RyYWNrZXJzKSB7XG4gICAgICB0cmFja2VyLnJlbW92ZVN0b3JlKGlkKTtcbiAgICB9XG4gIH1cblxuICByZW5hbWVTdG9yZShvbGROYW1lOiBzdHJpbmcsIG5ld05hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHN0b3JlTmFtZXMgPSBPYmplY3QudmFsdWVzKHRoaXMuI3N0b3JlcykubWFwKChzdG9yZSkgPT4gc3RvcmUubmFtZSk7XG4gICAgY29uc3QgaWQgPSB0aHJvd0lmTnVsbChcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuI3N0b3JlcykuZmluZCgoaWQpID0+IHRoaXMuI3N0b3Jlc1tpZF0ubmFtZSA9PT0gb2xkTmFtZSksXG4gICAgKTtcbiAgICBpZiAoc3RvcmVOYW1lcy5pbmNsdWRlcyhuZXdOYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgTmdSeCBUb29sa2l0L0RldlRvb2xzOiBjYW5ub3QgcmVuYW1lIGZyb20gJHtvbGROYW1lfSB0byAke25ld05hbWV9LiAke25ld05hbWV9IGlzIGFscmVhZHkgYXNzaWduZWQgdG8gYW5vdGhlciBTaWduYWxTdG9yZSBpbnN0YW5jZS5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLiNzdG9yZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLiNzdG9yZXMpLnJlZHVjZShcbiAgICAgIChuZXdTdG9yZSwgW2lkLCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLm5hbWUgPT09IG9sZE5hbWUpIHtcbiAgICAgICAgICBuZXdTdG9yZVtpZF0gPSB7IC4uLnZhbHVlLCBuYW1lOiBuZXdOYW1lIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3U3RvcmVbaWRdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1N0b3JlO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFN0b3JlUmVnaXN0cnksXG4gICAgKTtcblxuICAgIC8vIHdlIGRvbid0IHJlbmFtZSBpbiAjY3VycmVudFN0YXRlIGJ1dCB3YWl0IGZvciB0cmFja2VyIHRvIG5vdGlmeVxuICAgIC8vIHVzIHdpdGggYSBjaGFuZ2VkIHN0YXRlIHRoYXQgY29udGFpbnMgdGhhdCBuYW1lLlxuICAgIHRoaXMuI2N1cnJlbnRTdGF0ZSA9IE9iamVjdC5lbnRyaWVzKHRoaXMuI2N1cnJlbnRTdGF0ZSkucmVkdWNlKFxuICAgICAgKG5ld1N0YXRlLCBbc3RvcmVOYW1lLCBzdGF0ZV0pID0+IHtcbiAgICAgICAgaWYgKHN0b3JlTmFtZSAhPT0gb2xkTmFtZSkge1xuICAgICAgICAgIG5ld1N0YXRlW3N0b3JlTmFtZV0gPSBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PixcbiAgICApO1xuXG4gICAgdGhpcy4jdHJhY2tlcnMuZm9yRWFjaCgodHJhY2tlcikgPT4gdHJhY2tlci5ub3RpZnlSZW5hbWVkU3RvcmUoaWQpKTtcbiAgfVxufVxuIl19","import { inject, InjectionToken } from '@angular/core';\nimport { signalStoreFeature, withHooks, withMethods, } from '@ngrx/signals';\nimport { DefaultTracker } from './internal/default-tracker';\nimport { DevtoolsSyncer } from './internal/devtools-syncer.service';\nexport const renameDevtoolsMethodName = '___renameDevtoolsName';\nexport const uniqueDevtoolsId = '___uniqueDevtoolsId';\nconst EXISTING_NAMES = new InjectionToken('Array contain existing names for the signal stores', { factory: () => [], providedIn: 'root' });\n/**\n * Adds this store as a feature state to the Redux DevTools.\n *\n * By default, the action name is 'Store Update'. You can\n * change that via the {@link updateState} method, which has as second\n * parameter the action name.\n *\n * The standalone function {@link renameDevtoolsName} can rename\n * the store name.\n *\n * @param name name of the store as it should appear in the DevTools\n * @param features features to extend or modify the behavior of the Devtools\n */\nexport function withDevtools(name, ...features) {\n return signalStoreFeature(withMethods(() => {\n const syncer = inject(DevtoolsSyncer);\n const id = syncer.getNextId();\n // TODO: use withProps and symbols\n return {\n [renameDevtoolsMethodName]: (newName) => {\n syncer.renameStore(name, newName);\n },\n [uniqueDevtoolsId]: () => id,\n };\n }), withHooks((store) => {\n const syncer = inject(DevtoolsSyncer);\n const id = String(store[uniqueDevtoolsId]());\n return {\n onInit() {\n const id = String(store[uniqueDevtoolsId]());\n const finalOptions = {\n indexNames: !features.some((f) => f.indexNames === false),\n map: features.find((f) => f.map)?.map ?? ((state) => state),\n tracker: inject(features.find((f) => f.tracker)?.tracker || DefaultTracker),\n };\n syncer.addStore(id, name, store, finalOptions);\n },\n onDestroy() {\n syncer.removeStore(id);\n },\n };\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kZXZ0b29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvd2l0aC1kZXZ0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQVNwRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyx1QkFBdUIsQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztBQUV0RCxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FDdkMsb0RBQW9ELEVBQ3BELEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQ3RELENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVksRUFBRSxHQUFHLFFBQTJCO0lBQ3ZFLE9BQU8sa0JBQWtCLENBQ3ZCLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDZixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFdEMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRTlCLGtDQUFrQztRQUNsQyxPQUFPO1lBQ0wsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsT0FBZSxFQUFFLEVBQUU7Z0JBQzlDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BDLENBQUM7WUFDRCxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtTQUNxQixDQUFDO0lBQ3RELENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLE9BQU87WUFDTCxNQUFNO2dCQUNKLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sWUFBWSxHQUF5QjtvQkFDekMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUM7b0JBQ3pELEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztvQkFDM0QsT0FBTyxFQUFFLE1BQU0sQ0FDYixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxJQUFJLGNBQWMsQ0FDM0Q7aUJBQ0YsQ0FBQztnQkFFRixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCxTQUFTO2dCQUNQLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FDMkQsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgd2l0aEhvb2tzLFxuICB3aXRoTWV0aG9kcyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBEZWZhdWx0VHJhY2tlciB9IGZyb20gJy4vaW50ZXJuYWwvZGVmYXVsdC10cmFja2VyJztcbmltcG9ydCB7XG4gIERldnRvb2xzRmVhdHVyZSxcbiAgRGV2dG9vbHNJbm5lck9wdGlvbnMsXG59IGZyb20gJy4vaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZSc7XG5pbXBvcnQgeyBEZXZ0b29sc1N5bmNlciB9IGZyb20gJy4vaW50ZXJuYWwvZGV2dG9vbHMtc3luY2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVkdXhEZXZ0b29sc0V4dGVuc2lvbiB9IGZyb20gJy4vaW50ZXJuYWwvbW9kZWxzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fOiBSZWR1eERldnRvb2xzRXh0ZW5zaW9uIHwgdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCByZW5hbWVEZXZ0b29sc01ldGhvZE5hbWUgPSAnX19fcmVuYW1lRGV2dG9vbHNOYW1lJztcbmV4cG9ydCBjb25zdCB1bmlxdWVEZXZ0b29sc0lkID0gJ19fX3VuaXF1ZURldnRvb2xzSWQnO1xuXG5jb25zdCBFWElTVElOR19OQU1FUyA9IG5ldyBJbmplY3Rpb25Ub2tlbihcbiAgJ0FycmF5IGNvbnRhaW4gZXhpc3RpbmcgbmFtZXMgZm9yIHRoZSBzaWduYWwgc3RvcmVzJyxcbiAgeyBmYWN0b3J5OiAoKSA9PiBbXSBhcyBzdHJpbmdbXSwgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXG4pO1xuXG4vKipcbiAqIEFkZHMgdGhpcyBzdG9yZSBhcyBhIGZlYXR1cmUgc3RhdGUgdG8gdGhlIFJlZHV4IERldlRvb2xzLlxuICpcbiAqIEJ5IGRlZmF1bHQsIHRoZSBhY3Rpb24gbmFtZSBpcyAnU3RvcmUgVXBkYXRlJy4gWW91IGNhblxuICogY2hhbmdlIHRoYXQgdmlhIHRoZSB7QGxpbmsgdXBkYXRlU3RhdGV9IG1ldGhvZCwgd2hpY2ggaGFzIGFzIHNlY29uZFxuICogcGFyYW1ldGVyIHRoZSBhY3Rpb24gbmFtZS5cbiAqXG4gKiBUaGUgc3RhbmRhbG9uZSBmdW5jdGlvbiB7QGxpbmsgcmVuYW1lRGV2dG9vbHNOYW1lfSBjYW4gcmVuYW1lXG4gKiB0aGUgc3RvcmUgbmFtZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBuYW1lIG9mIHRoZSBzdG9yZSBhcyBpdCBzaG91bGQgYXBwZWFyIGluIHRoZSBEZXZUb29sc1xuICogQHBhcmFtIGZlYXR1cmVzIGZlYXR1cmVzIHRvIGV4dGVuZCBvciBtb2RpZnkgdGhlIGJlaGF2aW9yIG9mIHRoZSBEZXZ0b29sc1xuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aERldnRvb2xzKG5hbWU6IHN0cmluZywgLi4uZmVhdHVyZXM6IERldnRvb2xzRmVhdHVyZVtdKSB7XG4gIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXG4gICAgd2l0aE1ldGhvZHMoKCkgPT4ge1xuICAgICAgY29uc3Qgc3luY2VyID0gaW5qZWN0KERldnRvb2xzU3luY2VyKTtcblxuICAgICAgY29uc3QgaWQgPSBzeW5jZXIuZ2V0TmV4dElkKCk7XG5cbiAgICAgIC8vIFRPRE86IHVzZSB3aXRoUHJvcHMgYW5kIHN5bWJvbHNcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtyZW5hbWVEZXZ0b29sc01ldGhvZE5hbWVdOiAobmV3TmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgc3luY2VyLnJlbmFtZVN0b3JlKG5hbWUsIG5ld05hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBbdW5pcXVlRGV2dG9vbHNJZF06ICgpID0+IGlkLFxuICAgICAgfSBhcyBSZWNvcmQ8c3RyaW5nLCAobmV3TmFtZT86IHVua25vd24pID0+IHVua25vd24+O1xuICAgIH0pLFxuICAgIHdpdGhIb29rcygoc3RvcmUpID0+IHtcbiAgICAgIGNvbnN0IHN5bmNlciA9IGluamVjdChEZXZ0b29sc1N5bmNlcik7XG4gICAgICBjb25zdCBpZCA9IFN0cmluZyhzdG9yZVt1bmlxdWVEZXZ0b29sc0lkXSgpKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9uSW5pdCgpIHtcbiAgICAgICAgICBjb25zdCBpZCA9IFN0cmluZyhzdG9yZVt1bmlxdWVEZXZ0b29sc0lkXSgpKTtcbiAgICAgICAgICBjb25zdCBmaW5hbE9wdGlvbnM6IERldnRvb2xzSW5uZXJPcHRpb25zID0ge1xuICAgICAgICAgICAgaW5kZXhOYW1lczogIWZlYXR1cmVzLnNvbWUoKGYpID0+IGYuaW5kZXhOYW1lcyA9PT0gZmFsc2UpLFxuICAgICAgICAgICAgbWFwOiBmZWF0dXJlcy5maW5kKChmKSA9PiBmLm1hcCk/Lm1hcCA/PyAoKHN0YXRlKSA9PiBzdGF0ZSksXG4gICAgICAgICAgICB0cmFja2VyOiBpbmplY3QoXG4gICAgICAgICAgICAgIGZlYXR1cmVzLmZpbmQoKGYpID0+IGYudHJhY2tlcik/LnRyYWNrZXIgfHwgRGVmYXVsdFRyYWNrZXIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBzeW5jZXIuYWRkU3RvcmUoaWQsIG5hbWUsIHN0b3JlLCBmaW5hbE9wdGlvbnMpO1xuICAgICAgICB9LFxuICAgICAgICBvbkRlc3Ryb3koKSB7XG4gICAgICAgICAgc3luY2VyLnJlbW92ZVN0b3JlKGlkKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSksXG4gICkgYXMgU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRW1wdHlGZWF0dXJlUmVzdWx0Pjtcbn1cbiJdfQ==","import { renameDevtoolsMethodName } from './with-devtools';\n/**\n * Renames the name of a store how it appears in the Devtools.\n * @param store instance of the SignalStore\n * @param newName new name for the Devtools\n */\nexport function renameDevtoolsName(store, newName) {\n const renameMethod = store[renameDevtoolsMethodName];\n if (!renameMethod) {\n throw new Error(\"Devtools extensions haven't been added to this store.\");\n }\n renameMethod(newName);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuYW1lLWRldnRvb2xzLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL3JlbmFtZS1kZXZ0b29scy1uYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLEtBQXlCLEVBQ3pCLE9BQWU7SUFFZixNQUFNLFlBQVksR0FBSSxLQUFtRCxDQUN2RSx3QkFBd0IsQ0FDekIsQ0FBQztJQUNGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IHJlbmFtZURldnRvb2xzTWV0aG9kTmFtZSB9IGZyb20gJy4vd2l0aC1kZXZ0b29scyc7XG5cbi8qKlxuICogUmVuYW1lcyB0aGUgbmFtZSBvZiBhIHN0b3JlIGhvdyBpdCBhcHBlYXJzIGluIHRoZSBEZXZ0b29scy5cbiAqIEBwYXJhbSBzdG9yZSBpbnN0YW5jZSBvZiB0aGUgU2lnbmFsU3RvcmVcbiAqIEBwYXJhbSBuZXdOYW1lIG5ldyBuYW1lIGZvciB0aGUgRGV2dG9vbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZURldnRvb2xzTmFtZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0b3JlOiBTdGF0ZVNvdXJjZTxTdGF0ZT4sXG4gIG5ld05hbWU6IHN0cmluZyxcbik6IHZvaWQge1xuICBjb25zdCByZW5hbWVNZXRob2QgPSAoc3RvcmUgYXMgUmVjb3JkPHN0cmluZywgKG5ld05hbWU6IHN0cmluZykgPT4gdm9pZD4pW1xuICAgIHJlbmFtZURldnRvb2xzTWV0aG9kTmFtZVxuICBdO1xuICBpZiAoIXJlbmFtZU1ldGhvZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGV4dGVuc2lvbnMgaGF2ZW4ndCBiZWVuIGFkZGVkIHRvIHRoaXMgc3RvcmUuXCIpO1xuICB9XG5cbiAgcmVuYW1lTWV0aG9kKG5ld05hbWUpO1xufVxuIl19","import { patchState as originalPatchState, } from '@ngrx/signals';\nimport { currentActionNames } from './internal/current-action-names';\n/**\n * @deprecated Has been renamed to `updateState`\n */\nexport const patchState = (state, action, ...rest) => {\n updateState(state, action, ...rest);\n};\n/**\n * Wrapper of `patchState` for DevTools integration. Next to updating the state,\n * it also sends the action to the DevTools.\n * @param stateSource state of Signal Store\n * @param action name of action how it will show in DevTools\n * @param updaters updater functions or objects\n */\nexport function updateState(stateSource, action, ...updaters) {\n currentActionNames.add(action);\n return originalPatchState(stateSource, ...updaters);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9kZXZ0b29scy91cGRhdGUtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsSUFBSSxrQkFBa0IsR0FHakMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFTckU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUU7SUFDNUQsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixXQUF1QyxFQUN2QyxNQUFjLEVBQ2QsR0FBRyxRQUVGO0lBRUQsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLE9BQU8sa0JBQWtCLENBQUMsV0FBVyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHBhdGNoU3RhdGUgYXMgb3JpZ2luYWxQYXRjaFN0YXRlLFxuICBQYXJ0aWFsU3RhdGVVcGRhdGVyLFxuICBXcml0YWJsZVN0YXRlU291cmNlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGN1cnJlbnRBY3Rpb25OYW1lcyB9IGZyb20gJy4vaW50ZXJuYWwvY3VycmVudC1hY3Rpb24tbmFtZXMnO1xuXG50eXBlIFBhdGNoRm4gPSB0eXBlb2Ygb3JpZ2luYWxQYXRjaFN0YXRlIGV4dGVuZHMgKFxuICBhcmcxOiBpbmZlciBGaXJzdCxcbiAgLi4uYXJnczogaW5mZXIgUmVzdFxuKSA9PiBpbmZlciBSZXR1cm5lclxuICA/IChzdGF0ZTogRmlyc3QsIGFjdGlvbjogc3RyaW5nLCAuLi5yZXN0OiBSZXN0KSA9PiBSZXR1cm5lclxuICA6IG5ldmVyO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIEhhcyBiZWVuIHJlbmFtZWQgdG8gYHVwZGF0ZVN0YXRlYFxuICovXG5leHBvcnQgY29uc3QgcGF0Y2hTdGF0ZTogUGF0Y2hGbiA9IChzdGF0ZSwgYWN0aW9uLCAuLi5yZXN0KSA9PiB7XG4gIHVwZGF0ZVN0YXRlKHN0YXRlLCBhY3Rpb24sIC4uLnJlc3QpO1xufTtcblxuLyoqXG4gKiBXcmFwcGVyIG9mIGBwYXRjaFN0YXRlYCBmb3IgRGV2VG9vbHMgaW50ZWdyYXRpb24uIE5leHQgdG8gdXBkYXRpbmcgdGhlIHN0YXRlLFxuICogaXQgYWxzbyBzZW5kcyB0aGUgYWN0aW9uIHRvIHRoZSBEZXZUb29scy5cbiAqIEBwYXJhbSBzdGF0ZVNvdXJjZSBzdGF0ZSBvZiBTaWduYWwgU3RvcmVcbiAqIEBwYXJhbSBhY3Rpb24gbmFtZSBvZiBhY3Rpb24gaG93IGl0IHdpbGwgc2hvdyBpbiBEZXZUb29sc1xuICogQHBhcmFtIHVwZGF0ZXJzIHVwZGF0ZXIgZnVuY3Rpb25zIG9yIG9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVTb3VyY2U6IFdyaXRhYmxlU3RhdGVTb3VyY2U8U3RhdGU+LFxuICBhY3Rpb246IHN0cmluZyxcbiAgLi4udXBkYXRlcnM6IEFycmF5PFxuICAgIFBhcnRpYWw8Tm9JbmZlcjxTdGF0ZT4+IHwgUGFydGlhbFN0YXRlVXBkYXRlcjxOb0luZmVyPFN0YXRlPj5cbiAgPlxuKTogdm9pZCB7XG4gIGN1cnJlbnRBY3Rpb25OYW1lcy5hZGQoYWN0aW9uKTtcbiAgcmV0dXJuIG9yaWdpbmFsUGF0Y2hTdGF0ZShzdGF0ZVNvdXJjZSwgLi4udXBkYXRlcnMpO1xufVxuIl19","/**\n * Stub for DevTools integration. Can be used to disable DevTools in production.\n */\nexport const withDevToolsStub = () => (store) => store;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kZXYtdG9vbHMtc3R1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvd2l0aC1kZXYtdG9vbHMtc3R1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUF3QixHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2l0aERldnRvb2xzIH0gZnJvbSAnLi93aXRoLWRldnRvb2xzJztcblxuLyoqXG4gKiBTdHViIGZvciBEZXZUb29scyBpbnRlZ3JhdGlvbi4gQ2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBEZXZUb29scyBpbiBwcm9kdWN0aW9uLlxuICovXG5leHBvcnQgY29uc3Qgd2l0aERldlRvb2xzU3R1YjogdHlwZW9mIHdpdGhEZXZ0b29scyA9ICgpID0+IChzdG9yZSkgPT4gc3RvcmU7XG4iXX0=","export function assertActionFnSpecs(obj) {\n if (!obj || typeof obj !== 'object') {\n throw new Error('%o is not an Action Specification');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvYXNzZXJ0aW9ucy9hc3NlcnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBWTtJQUVaLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uc0ZuU3BlY3MgfSBmcm9tICcuLi93aXRoLXJlZHV4JztcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFjdGlvbkZuU3BlY3MoXG4gIG9iajogdW5rbm93bixcbik6IGFzc2VydHMgb2JqIGlzIEFjdGlvbnNGblNwZWNzIHtcbiAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJyVvIGlzIG5vdCBhbiBBY3Rpb24gU3BlY2lmaWNhdGlvbicpO1xuICB9XG59XG4iXX0=","import { Subject } from 'rxjs';\nimport { assertActionFnSpecs } from './assertions/assertions';\nexport function payload() {\n return {};\n}\nexport const noPayload = {};\n/**\n * Creates a reducer function to separate the reducer logic into another file.\n *\n * ```typescript\n * interface FlightState {\n * flights: Flight[];\n * effect1: boolean;\n * effect2: boolean;\n * }\n *\n * const initialState: FlightState = {\n * flights: [],\n * effect1: false,\n * effect2: false,\n * };\n *\n * const actions = {\n * init: noPayload,\n * updateEffect1: payload<{ value: boolean }>(),\n * updateEffect2: payload<{ value: boolean }>(),\n * };\n *\n * const reducer = createReducer<FlightState, typeof actions>((actions, on) => {\n * on(actions.updateEffect1, (state, { value }) => {\n * patchState(state, { effect1: value });\n * });\n *\n * on(actions.updateEffect2, (state, { value }) => {\n * patchState(state, { effect2: value });\n * });\n * });\n *\n * signalStore(\n * withState(initialState),\n * withRedux({\n * actions,\n * reducer,\n * })\n * );\n * ```\n * @param reducerFactory\n */\nexport function createReducer(reducerFactory) {\n return reducerFactory;\n}\n/**\n * @deprecated Use NgRx's `@ngrx/signals/events` starting in 19.2\n *\n * Creates the effects function to separate the effects logic into another file.\n *\n * ```typescript\n * interface FlightState {\n * flights: Flight[];\n * effect1: boolean;\n * effect2: boolean;\n * }\n *\n * const initialState: FlightState = {\n * flights: [],\n * effect1: false,\n * effect2: false,\n * };\n *\n * const actions = {\n * init: noPayload,\n * updateEffect1: payload<{ value: boolean }>(),\n * updateEffect2: payload<{ value: boolean }>(),\n * };\n *\n * const effects = createEffects(actions, (actions, create) => {\n * return {\n * init1$: create(actions.init).pipe(\n * map(() => actions.updateEffect1({ value: true }))\n * ),\n * init2$: create(actions.init).pipe(\n * map(() => actions.updateEffect2({ value: true }))\n * ),\n * };\n * });\n *\n * signalStore(\n * withState(initialState),\n * withRedux({\n * actions,\n * effects,\n * })\n * );\n * ```\n * @param actions\n * @param effectsFactory\n */\nexport function createEffects(actions, effectsFactory) {\n return effectsFactory;\n}\nfunction createActionFns(actionFnSpecs, reducerRegistry, effectsRegistry, state) {\n const actionFns = {};\n for (const type in actionFnSpecs) {\n const actionFn = (payload) => {\n const fullPayload = { ...payload, type };\n const reducer = reducerRegistry[type];\n if (reducer) {\n reducer(state, fullPayload);\n }\n const effectSubjects = effectsRegistry[type];\n if (effectSubjects?.length) {\n for (const effectSubject of effectSubjects) {\n effectSubject.next(fullPayload);\n }\n }\n return fullPayload;\n };\n actionFn.type = type.toString();\n actionFns[type] = actionFn;\n }\n return actionFns;\n}\nfunction createPublicAndAllActionsFns(actionFnSpecs, reducerRegistry, effectsRegistry, state) {\n if ('public' in actionFnSpecs || 'private' in actionFnSpecs) {\n const privates = actionFnSpecs['private'] || {};\n const publics = actionFnSpecs['public'] || {};\n assertActionFnSpecs(privates);\n assertActionFnSpecs(publics);\n const privateActionFns = createActionFns(privates, reducerRegistry, effectsRegistry, state);\n const publicActionFns = createActionFns(publics, reducerRegistry, effectsRegistry, state);\n return {\n all: { ...privateActionFns, ...publicActionFns },\n publics: publicActionFns,\n };\n }\n const actionFns = createActionFns(actionFnSpecs, reducerRegistry, effectsRegistry, state);\n return { all: actionFns, publics: actionFns };\n}\nfunction fillReducerRegistry(reducer, actionFns, reducerRegistry) {\n function on(action, reducerFn) {\n reducerRegistry[action.type] = reducerFn;\n }\n reducer(actionFns, on);\n return reducerRegistry;\n}\nfunction fillEffects(effects, actionFns, effectsRegistry = {}) {\n function create(action) {\n const subject = new Subject();\n if (!(action.type in effectsRegistry)) {\n effectsRegistry[action.type] = [];\n }\n effectsRegistry[action.type].push(subject);\n return subject.asObservable();\n }\n const effectObservables = effects(actionFns, create);\n return Object.values(effectObservables);\n}\nfunction startSubscriptions(observables) {\n return observables.map((observable) => observable.subscribe());\n}\nfunction processRedux(actionFnSpecs, reducer, effects, store) {\n const reducerRegistry = {};\n const effectsRegistry = {};\n const actionsMap = createPublicAndAllActionsFns(actionFnSpecs, reducerRegistry, effectsRegistry, store);\n const actionFns = actionsMap.all;\n const publicActionsFns = actionsMap.publics;\n fillReducerRegistry(reducer, actionFns, reducerRegistry);\n const effectObservables = fillEffects(effects, actionFns, effectsRegistry);\n const subscriptions = startSubscriptions(effectObservables);\n return {\n methods: publicActionsFns,\n subscriptions: subscriptions,\n };\n}\n/**\n * @param redux redux\n *\n * properties do not start with `with` since they are not extension functions on their own.\n *\n * no dependency to NgRx\n *\n * actions are passed to reducer and effects, but it is also possible to use other actions.\n * effects provide forAction and do not return anything. that is important because effects should stay inaccessible\n */\nexport function withRedux(redux) {\n return (store) => {\n const { methods } = processRedux(redux.actions, redux.reducer, redux.effects, store);\n return {\n ...store,\n methods: { ...store.methods, ...methods },\n };\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZWR1eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZWR1eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBNEM5RCxNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLEVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQWlCNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FJM0IsY0FHQztJQUVELE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFXRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsT0FBZ0IsRUFDaEIsY0FBeUQ7SUFFekQsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQVdELFNBQVMsZUFBZSxDQUN0QixhQUFtQixFQUNuQixlQUdDLEVBQ0QsZUFBZ0MsRUFDaEMsS0FBYztJQUVkLE1BQU0sU0FBUyxHQUE2QixFQUFFLENBQUM7SUFFL0MsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNwQyxNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNYLE9BQXNELENBQ3JELEtBQUssRUFDTCxX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T0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFO1NBQzFDLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgV3JpdGFibGVTdGF0ZVNvdXJjZSxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhc3NlcnRBY3Rpb25GblNwZWNzIH0gZnJvbSAnLi9hc3NlcnRpb25zL2Fzc2VydGlvbnMnO1xuXG4vKiogQWN0aW9ucyAqKi9cblxudHlwZSBQYXlsb2FkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbnR5cGUgQWN0aW9uRm48XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIEFjdGlvblBheWxvYWQgZXh0ZW5kcyBQYXlsb2FkID0gUGF5bG9hZCxcbj4gPSAoKHBheWxvYWQ6IEFjdGlvblBheWxvYWQpID0+IEFjdGlvblBheWxvYWQgJiB7IHR5cGU6IFR5cGUgfSkgJiB7XG4gIHR5cGU6IFR5cGU7XG59O1xuXG50eXBlIEFjdGlvbkZucyA9IFJlY29yZDxzdHJpbmcsIEFjdGlvbkZuPjtcblxuZXhwb3J0IHR5cGUgQWN0aW9uc0ZuU3BlY3MgPSBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcblxudHlwZSBBY3Rpb25GbkNyZWF0b3I8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPiA9IHtcbiAgW0FjdGlvbk5hbWUgaW4ga2V5b2YgU3BlY106IChSZWNvcmQ8bmV2ZXIsIG5ldmVyPiBleHRlbmRzIFNwZWNbQWN0aW9uTmFtZV1cbiAgICA/ICgpID0+IFNwZWNbQWN0aW9uTmFtZV0gJiB7IHR5cGU6IEFjdGlvbk5hbWUgfVxuICAgIDogKFxuICAgICAgICBwYXlsb2FkOiBTcGVjW0FjdGlvbk5hbWVdLFxuICAgICAgKSA9PiBTcGVjW0FjdGlvbk5hbWVdICYgeyB0eXBlOiBBY3Rpb25OYW1lIH0pICYge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUgJiBzdHJpbmc7XG4gIH07XG59O1xuXG50eXBlIEFjdGlvbkZuUGF5bG9hZDxBY3Rpb24+ID0gQWN0aW9uIGV4dGVuZHMgKHBheWxvYWQ6IGluZmVyIFBheWxvYWQpID0+IHZvaWRcbiAgPyBQYXlsb2FkXG4gIDogbmV2ZXI7XG5cbnR5cGUgQWN0aW9uRm5zQ3JlYXRvcjxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+ID0gU3BlYyBleHRlbmRzIHtcbiAgcHJpdmF0ZTogUmVjb3JkPHN0cmluZywgUGF5bG9hZD47XG4gIHB1YmxpYzogUmVjb3JkPHN0cmluZywgUGF5bG9hZD47XG59XG4gID8gQWN0aW9uRm5DcmVhdG9yPFNwZWNbJ3ByaXZhdGUnXT4gJiBBY3Rpb25GbkNyZWF0b3I8U3BlY1sncHVibGljJ10+XG4gIDogQWN0aW9uRm5DcmVhdG9yPFNwZWM+O1xuXG50eXBlIFB1YmxpY0FjdGlvbkZuczxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+ID0gU3BlYyBleHRlbmRzIHtcbiAgcHVibGljOiBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcbn1cbiAgPyBBY3Rpb25GbkNyZWF0b3I8U3BlY1sncHVibGljJ10+XG4gIDogQWN0aW9uRm5DcmVhdG9yPFNwZWM+O1xuXG5leHBvcnQgZnVuY3Rpb24gcGF5bG9hZDxUeXBlIGV4dGVuZHMgUGF5bG9hZD4oKTogVHlwZSB7XG4gIHJldHVybiB7fSBhcyBUeXBlO1xufVxuXG5leHBvcnQgY29uc3Qgbm9QYXlsb2FkID0ge307XG5cbi8qKiBSZWR1Y2VyICoqL1xuXG50eXBlIFJlZHVjZXJGdW5jdGlvbjxSZWR1Y2VyQWN0aW9uLCBTdGF0ZT4gPSAoXG4gIHN0YXRlOiBTdGF0ZSxcbiAgYWN0aW9uOiBBY3Rpb25GblBheWxvYWQ8UmVkdWNlckFjdGlvbj4sXG4pID0+IHZvaWQ7XG5cbnR5cGUgUmVkdWNlckZhY3Rvcnk8U3RhdGVBY3Rpb25GbnMgZXh0ZW5kcyBBY3Rpb25GbnMsIFN0YXRlPiA9IChcbiAgYWN0aW9uczogU3RhdGVBY3Rpb25GbnMsXG4gIG9uOiA8UmVkdWNlckFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxuICAgIGFjdGlvbjogUmVkdWNlckFjdGlvbixcbiAgICByZWR1Y2VyRm46IFJlZHVjZXJGdW5jdGlvbjxSZWR1Y2VyQWN0aW9uLCBTdGF0ZT4sXG4gICkgPT4gdm9pZCxcbikgPT4gdm9pZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVkdWNlciBmdW5jdGlvbiB0byBzZXBhcmF0ZSB0aGUgcmVkdWNlciBsb2dpYyBpbnRvIGFub3RoZXIgZmlsZS5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgRmxpZ2h0U3RhdGUge1xuICogICBmbGlnaHRzOiBGbGlnaHRbXTtcbiAqICAgZWZmZWN0MTogYm9vbGVhbjtcbiAqICAgZWZmZWN0MjogYm9vbGVhbjtcbiAqIH1cbiAqXG4gKiBjb25zdCBpbml0aWFsU3RhdGU6IEZsaWdodFN0YXRlID0ge1xuICogICBmbGlnaHRzOiBbXSxcbiAqICAgZWZmZWN0MTogZmFsc2UsXG4gKiAgIGVmZmVjdDI6IGZhbHNlLFxuICogfTtcbiAqXG4gKiBjb25zdCBhY3Rpb25zID0ge1xuICogICBpbml0OiBub1BheWxvYWQsXG4gKiAgIHVwZGF0ZUVmZmVjdDE6IHBheWxvYWQ8eyB2YWx1ZTogYm9vbGVhbiB9PigpLFxuICogICB1cGRhdGVFZmZlY3QyOiBwYXlsb2FkPHsgdmFsdWU6IGJvb2xlYW4gfT4oKSxcbiAqIH07XG4gKlxuICogY29uc3QgcmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8RmxpZ2h0U3RhdGUsIHR5cGVvZiBhY3Rpb25zPigoYWN0aW9ucywgb24pID0+IHtcbiAqICAgb24oYWN0aW9ucy51cGRhdGVFZmZlY3QxLCAoc3RhdGUsIHsgdmFsdWUgfSkgPT4ge1xuICogICAgIHBhdGNoU3RhdGUoc3RhdGUsIHsgZWZmZWN0MTogdmFsdWUgfSk7XG4gKiAgIH0pO1xuICpcbiAqICAgb24oYWN0aW9ucy51cGRhdGVFZmZlY3QyLCAoc3RhdGUsIHsgdmFsdWUgfSkgPT4ge1xuICogICAgIHBhdGNoU3RhdGUoc3RhdGUsIHsgZWZmZWN0MjogdmFsdWUgfSk7XG4gKiAgIH0pO1xuICogfSk7XG4gKlxuICogc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhTdGF0ZShpbml0aWFsU3RhdGUpLFxuICogICB3aXRoUmVkdXgoe1xuICogICAgIGFjdGlvbnMsXG4gKiAgICAgcmVkdWNlcixcbiAqICAgfSlcbiAqICk7XG4gKiBgYGBcbiAqIEBwYXJhbSByZWR1Y2VyRmFjdG9yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVkdWNlcjxcbiAgU3RhdGUgZXh0ZW5kcyBvYmplY3QsXG4gIEFjdGlvbnMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcyxcbj4oXG4gIHJlZHVjZXJGYWN0b3J5OiBSZWR1Y2VyRmFjdG9yeTxcbiAgICBBY3Rpb25GbnNDcmVhdG9yPEFjdGlvbnM+LFxuICAgIFdyaXRhYmxlU3RhdGVTb3VyY2U8U3RhdGU+XG4gID4sXG4pIHtcbiAgcmV0dXJuIHJlZHVjZXJGYWN0b3J5O1xufVxuXG4vKiogRWZmZWN0ICoqL1xuXG50eXBlIEVmZmVjdHNGYWN0b3J5PFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zPiA9IChcbiAgYWN0aW9uczogU3RhdGVBY3Rpb25GbnMsXG4gIGNyZWF0ZTogPEVmZmVjdEFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxuICAgIGFjdGlvbjogRWZmZWN0QWN0aW9uLFxuICApID0+IE9ic2VydmFibGU8QWN0aW9uRm5QYXlsb2FkPEVmZmVjdEFjdGlvbj4+LFxuKSA9PiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPHVua25vd24+PjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTmdSeCdzIGBAbmdyeC9zaWduYWxzL2V2ZW50c2Agc3RhcnRpbmcgaW4gMTkuMlxuICpcbiAqIENyZWF0ZXMgdGhlIGVmZmVjdHMgZnVuY3Rpb24gdG8gc2VwYXJhdGUgdGhlIGVmZmVjdHMgbG9naWMgaW50byBhbm90aGVyIGZpbGUuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIEZsaWdodFN0YXRlIHtcbiAqICAgZmxpZ2h0czogRmxpZ2h0W107XG4gKiAgIGVmZmVjdDE6IGJvb2xlYW47XG4gKiAgIGVmZmVjdDI6IGJvb2xlYW47XG4gKiB9XG4gKlxuICogY29uc3QgaW5pdGlhbFN0YXRlOiBGbGlnaHRTdGF0ZSA9IHtcbiAqICAgZmxpZ2h0czogW10sXG4gKiAgIGVmZmVjdDE6IGZhbHNlLFxuICogICBlZmZlY3QyOiBmYWxzZSxcbiAqIH07XG4gKlxuICogY29uc3QgYWN0aW9ucyA9IHtcbiAqICAgaW5pdDogbm9QYXlsb2FkLFxuICogICB1cGRhdGVFZmZlY3QxOiBwYXlsb2FkPHsgdmFsdWU6IGJvb2xlYW4gfT4oKSxcbiAqICAgdXBkYXRlRWZmZWN0MjogcGF5bG9hZDx7IHZhbHVlOiBib29sZWFuIH0+KCksXG4gKiB9O1xuICpcbiAqIGNvbnN0IGVmZmVjdHMgPSBjcmVhdGVFZmZlY3RzKGFjdGlvbnMsIChhY3Rpb25zLCBjcmVhdGUpID0+IHtcbiAqICAgcmV0dXJuIHtcbiAqICAgICBpbml0MSQ6IGNyZWF0ZShhY3Rpb25zLmluaXQpLnBpcGUoXG4gKiAgICAgICBtYXAoKCkgPT4gYWN0aW9ucy51cGRhdGVFZmZlY3QxKHsgdmFsdWU6IHRydWUgfSkpXG4gKiAgICAgKSxcbiAqICAgICBpbml0MiQ6IGNyZWF0ZShhY3Rpb25zLmluaXQpLnBpcGUoXG4gKiAgICAgICBtYXAoKCkgPT4gYWN0aW9ucy51cGRhdGVFZmZlY3QyKHsgdmFsdWU6IHRydWUgfSkpXG4gKiAgICAgKSxcbiAqICAgfTtcbiAqIH0pO1xuICpcbiAqIHNpZ25hbFN0b3JlKFxuICogICB3aXRoU3RhdGUoaW5pdGlhbFN0YXRlKSxcbiAqICAgd2l0aFJlZHV4KHtcbiAqICAgICBhY3Rpb25zLFxuICogICAgIGVmZmVjdHMsXG4gKiAgIH0pXG4gKiApO1xuICogYGBgXG4gKiBAcGFyYW0gYWN0aW9uc1xuICogQHBhcmFtIGVmZmVjdHNGYWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZmZlY3RzPEFjdGlvbnMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4oXG4gIGFjdGlvbnM6IEFjdGlvbnMsXG4gIGVmZmVjdHNGYWN0b3J5OiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnNDcmVhdG9yPEFjdGlvbnM+Pixcbikge1xuICByZXR1cm4gZWZmZWN0c0ZhY3Rvcnk7XG59XG5cbi8vIGludGVybmFsIHR5cGVzXG5cbi8qKlxuICogUmVjb3JkIHdoaWNoIGhvbGRzIGFsbCBlZmZlY3RzIGZvciBhIHNwZWNpZmljIGFjdGlvbiB0eXBlLlxuICogVGhlIHZhbHVlcyBhcmUgU3ViamVjdCB3aGljaCB0aGUgZWZmZWN0IGFyZSBzdWJzY3JpYmVkIHRvLlxuICogYGNyZWF0ZUFjdGlvbkZuc2Agd2lsbCBjYWxsIG5leHQgb24gdGhlc2Ugc3ViamVjdHMuXG4gKi9cbnR5cGUgRWZmZWN0c1JlZ2lzdHJ5ID0gUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+W10+O1xuXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25GbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPihcbiAgYWN0aW9uRm5TcGVjczogU3BlYyxcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkXG4gID4sXG4gIGVmZmVjdHNSZWdpc3RyeTogRWZmZWN0c1JlZ2lzdHJ5LFxuICBzdGF0ZTogdW5rbm93bixcbikge1xuICBjb25zdCBhY3Rpb25GbnM6IFJlY29yZDxzdHJpbmcsIEFjdGlvbkZuPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgdHlwZSBpbiBhY3Rpb25GblNwZWNzKSB7XG4gICAgY29uc3QgYWN0aW9uRm4gPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgZnVsbFBheWxvYWQgPSB7IC4uLnBheWxvYWQsIHR5cGUgfTtcbiAgICAgIGNvbnN0IHJlZHVjZXIgPSByZWR1Y2VyUmVnaXN0cnlbdHlwZV07XG4gICAgICBpZiAocmVkdWNlcikge1xuICAgICAgICAocmVkdWNlciBhcyAoc3RhdGU6IHVua25vd24sIHBheWxvYWQ6IHVua25vd24pID0+IHZvaWQpKFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIGZ1bGxQYXlsb2FkIGFzIHVua25vd24sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBlZmZlY3RTdWJqZWN0cyA9IGVmZmVjdHNSZWdpc3RyeVt0eXBlXTtcbiAgICAgIGlmIChlZmZlY3RTdWJqZWN0cz8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgZWZmZWN0U3ViamVjdCBvZiBlZmZlY3RTdWJqZWN0cykge1xuICAgICAgICAgIChlZmZlY3RTdWJqZWN0IGFzIHVua25vd24gYXMgU3ViamVjdDx1bmtub3duPikubmV4dChmdWxsUGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmdWxsUGF5bG9hZDtcbiAgICB9O1xuICAgIGFjdGlvbkZuLnR5cGUgPSB0eXBlLnRvU3RyaW5nKCk7XG4gICAgYWN0aW9uRm5zW3R5cGVdID0gYWN0aW9uRm47XG4gIH1cblxuICByZXR1cm4gYWN0aW9uRm5zO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQdWJsaWNBbmRBbGxBY3Rpb25zRm5zPFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4oXG4gIGFjdGlvbkZuU3BlY3M6IFNwZWMsXG4gIHJlZHVjZXJSZWdpc3RyeTogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICAoc3RhdGU6IHVua25vd24sIHBheWxvYWQ6IEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPikgPT4gdm9pZFxuICA+LFxuICBlZmZlY3RzUmVnaXN0cnk6IEVmZmVjdHNSZWdpc3RyeSxcbiAgc3RhdGU6IHVua25vd24sXG4pOiB7IGFsbDogQWN0aW9uRm5zOyBwdWJsaWNzOiBBY3Rpb25GbnMgfSB7XG4gIGlmICgncHVibGljJyBpbiBhY3Rpb25GblNwZWNzIHx8ICdwcml2YXRlJyBpbiBhY3Rpb25GblNwZWNzKSB7XG4gICAgY29uc3QgcHJpdmF0ZXMgPSBhY3Rpb25GblNwZWNzWydwcml2YXRlJ10gfHwge307XG4gICAgY29uc3QgcHVibGljcyA9IGFjdGlvbkZuU3BlY3NbJ3B1YmxpYyddIHx8IHt9O1xuXG4gICAgYXNzZXJ0QWN0aW9uRm5TcGVjcyhwcml2YXRlcyk7XG4gICAgYXNzZXJ0QWN0aW9uRm5TcGVjcyhwdWJsaWNzKTtcblxuICAgIGNvbnN0IHByaXZhdGVBY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXG4gICAgICBwcml2YXRlcyxcbiAgICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICAgIHN0YXRlLFxuICAgICk7XG4gICAgY29uc3QgcHVibGljQWN0aW9uRm5zID0gY3JlYXRlQWN0aW9uRm5zKFxuICAgICAgcHVibGljcyxcbiAgICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICAgIHN0YXRlLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWxsOiB7IC4uLnByaXZhdGVBY3Rpb25GbnMsIC4uLnB1YmxpY0FjdGlvbkZucyB9LFxuICAgICAgcHVibGljczogcHVibGljQWN0aW9uRm5zLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBhY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXG4gICAgYWN0aW9uRm5TcGVjcyxcbiAgICByZWR1Y2VyUmVnaXN0cnksXG4gICAgZWZmZWN0c1JlZ2lzdHJ5LFxuICAgIHN0YXRlLFxuICApO1xuXG4gIHJldHVybiB7IGFsbDogYWN0aW9uRm5zLCBwdWJsaWNzOiBhY3Rpb25GbnMgfTtcbn1cblxuZnVuY3Rpb24gZmlsbFJlZHVjZXJSZWdpc3RyeShcbiAgcmVkdWNlcjogUmVkdWNlckZhY3Rvcnk8QWN0aW9uRm5zLCB1bmtub3duPixcbiAgYWN0aW9uRm5zOiBBY3Rpb25GbnMsXG4gIHJlZHVjZXJSZWdpc3RyeTogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICAoc3RhdGU6IHVua25vd24sIHBheWxvYWQ6IEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPikgPT4gdm9pZFxuICA+LFxuKSB7XG4gIGZ1bmN0aW9uIG9uKFxuICAgIGFjdGlvbjogeyB0eXBlOiBzdHJpbmcgfSxcbiAgICByZWR1Y2VyRm46IChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkLFxuICApIHtcbiAgICByZWR1Y2VyUmVnaXN0cnlbYWN0aW9uLnR5cGVdID0gcmVkdWNlckZuO1xuICB9XG5cbiAgcmVkdWNlcihhY3Rpb25GbnMsIG9uKTtcblxuICByZXR1cm4gcmVkdWNlclJlZ2lzdHJ5O1xufVxuXG5mdW5jdGlvbiBmaWxsRWZmZWN0cyhcbiAgZWZmZWN0czogRWZmZWN0c0ZhY3Rvcnk8QWN0aW9uRm5zPixcbiAgYWN0aW9uRm5zOiBBY3Rpb25GbnMsXG4gIGVmZmVjdHNSZWdpc3RyeTogRWZmZWN0c1JlZ2lzdHJ5ID0ge30sXG4pOiBPYnNlcnZhYmxlPHVua25vd24+W10ge1xuICBmdW5jdGlvbiBjcmVhdGUoYWN0aW9uOiB7IHR5cGU6IHN0cmluZyB9KSB7XG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4oKTtcbiAgICBpZiAoIShhY3Rpb24udHlwZSBpbiBlZmZlY3RzUmVnaXN0cnkpKSB7XG4gICAgICBlZmZlY3RzUmVnaXN0cnlbYWN0aW9uLnR5cGVdID0gW107XG4gICAgfVxuICAgIGVmZmVjdHNSZWdpc3RyeVthY3Rpb24udHlwZV0ucHVzaChzdWJqZWN0KTtcbiAgICByZXR1cm4gc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0IGVmZmVjdE9ic2VydmFibGVzID0gZWZmZWN0cyhhY3Rpb25GbnMsIGNyZWF0ZSk7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKGVmZmVjdE9ic2VydmFibGVzKTtcbn1cblxuZnVuY3Rpb24gc3RhcnRTdWJzY3JpcHRpb25zKG9ic2VydmFibGVzOiBPYnNlcnZhYmxlPHVua25vd24+W10pIHtcbiAgcmV0dXJuIG9ic2VydmFibGVzLm1hcCgob2JzZXJ2YWJsZSkgPT4gb2JzZXJ2YWJsZS5zdWJzY3JpYmUoKSk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NSZWR1eDxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3MsIFJldHVyblR5cGU+KFxuICBhY3Rpb25GblNwZWNzOiBTcGVjLFxuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxBY3Rpb25GbnMsIHVua25vd24+LFxuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnM+LFxuICBzdG9yZTogdW5rbm93bixcbikge1xuICBjb25zdCByZWR1Y2VyUmVnaXN0cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgKHN0YXRlOiB1bmtub3duLCBwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4pID0+IHZvaWRcbiAgPiA9IHt9O1xuICBjb25zdCBlZmZlY3RzUmVnaXN0cnk6IFJlY29yZDxzdHJpbmcsIFN1YmplY3Q8QWN0aW9uRm5QYXlsb2FkPHVua25vd24+PltdPiA9XG4gICAge307XG4gIGNvbnN0IGFjdGlvbnNNYXAgPSBjcmVhdGVQdWJsaWNBbmRBbGxBY3Rpb25zRm5zKFxuICAgIGFjdGlvbkZuU3BlY3MsXG4gICAgcmVkdWNlclJlZ2lzdHJ5LFxuICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICBzdG9yZSxcbiAgKTtcbiAgY29uc3QgYWN0aW9uRm5zID0gYWN0aW9uc01hcC5hbGw7XG4gIGNvbnN0IHB1YmxpY0FjdGlvbnNGbnMgPSBhY3Rpb25zTWFwLnB1YmxpY3M7XG5cbiAgZmlsbFJlZHVjZXJSZWdpc3RyeShyZWR1Y2VyLCBhY3Rpb25GbnMsIHJlZHVjZXJSZWdpc3RyeSk7XG4gIGNvbnN0IGVmZmVjdE9ic2VydmFibGVzID0gZmlsbEVmZmVjdHMoZWZmZWN0cywgYWN0aW9uRm5zLCBlZmZlY3RzUmVnaXN0cnkpO1xuICBjb25zdCBzdWJzY3JpcHRpb25zID0gc3RhcnRTdWJzY3JpcHRpb25zKGVmZmVjdE9ic2VydmFibGVzKTtcblxuICByZXR1cm4ge1xuICAgIG1ldGhvZHM6IHB1YmxpY0FjdGlvbnNGbnMgYXMgUmV0dXJuVHlwZSxcbiAgICBzdWJzY3JpcHRpb25zOiBzdWJzY3JpcHRpb25zLFxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWR1eCByZWR1eFxuICpcbiAqIHByb3BlcnRpZXMgZG8gbm90IHN0YXJ0IHdpdGggYHdpdGhgIHNpbmNlIHRoZXkgYXJlIG5vdCBleHRlbnNpb24gZnVuY3Rpb25zIG9uIHRoZWlyIG93bi5cbiAqXG4gKiBubyBkZXBlbmRlbmN5IHRvIE5nUnhcbiAqXG4gKiBhY3Rpb25zIGFyZSBwYXNzZWQgdG8gcmVkdWNlciBhbmQgZWZmZWN0cywgYnV0IGl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIG90aGVyIGFjdGlvbnMuXG4gKiBlZmZlY3RzIHByb3ZpZGUgZm9yQWN0aW9uIGFuZCBkbyBub3QgcmV0dXJuIGFueXRoaW5nLiB0aGF0IGlzIGltcG9ydGFudCBiZWNhdXNlIGVmZmVjdHMgc2hvdWxkIHN0YXkgaW5hY2Nlc3NpYmxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVkdXg8XG4gIFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcyxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zQ3JlYXRvcjxTcGVjPiA9IEFjdGlvbkZuc0NyZWF0b3I8U3BlYz4sXG4gIFB1YmxpY1N0b3JlQWN0aW9uRm5zIGV4dGVuZHMgUHVibGljQWN0aW9uRm5zPFNwZWM+ID0gUHVibGljQWN0aW9uRm5zPFNwZWM+LFxuPihyZWR1eDoge1xuICBhY3Rpb25zOiBTcGVjO1xuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxTdGF0ZUFjdGlvbkZucywgV3JpdGFibGVTdGF0ZVNvdXJjZTxJbnB1dFsnc3RhdGUnXT4+O1xuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxTdGF0ZUFjdGlvbkZucz47XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBJbnB1dCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBtZXRob2RzOiBQdWJsaWNTdG9yZUFjdGlvbkZucyB9XG4+IHtcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xuICAgIGNvbnN0IHsgbWV0aG9kcyB9ID0gcHJvY2Vzc1JlZHV4PFNwZWMsIFB1YmxpY1N0b3JlQWN0aW9uRm5zPihcbiAgICAgIHJlZHV4LmFjdGlvbnMsXG4gICAgICByZWR1eC5yZWR1Y2VyIGFzIFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXG4gICAgICByZWR1eC5lZmZlY3RzIGFzIEVmZmVjdHNGYWN0b3J5PEFjdGlvbkZucz4sXG4gICAgICBzdG9yZSxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdG9yZSxcbiAgICAgIG1ldGhvZHM6IHsgLi4uc3RvcmUubWV0aG9kcywgLi4ubWV0aG9kcyB9LFxuICAgIH07XG4gIH07XG59XG4iXX0=","import { computed } from '@angular/core';\nimport { signalStoreFeature, withComputed, withState, } from '@ngrx/signals';\nexport function deriveCallStateKeys(collection) {\n return {\n callStateKey: collection ? `${collection}CallState` : 'callState',\n loadingKey: collection ? `${collection}Loading` : 'loading',\n loadedKey: collection ? `${collection}Loaded` : 'loaded',\n errorKey: collection ? `${collection}Error` : 'error',\n };\n}\nexport function getCallStateKeys(config) {\n const prop = config?.collection;\n return deriveCallStateKeys(prop);\n}\nexport function getCollectionArray(config) {\n return 'collections' in config\n ? config.collections\n : 'collection' in config && config.collection\n ? [config.collection]\n : undefined;\n}\nexport function withCallState(config) {\n return signalStoreFeature(withState(() => {\n if (!config) {\n return { callState: 'init' };\n }\n const collections = getCollectionArray(config);\n if (collections) {\n return collections.reduce((acc, cur) => ({\n ...acc,\n ...{ [cur ? `${cur}CallState` : 'callState']: 'init' },\n }), {});\n }\n return { callState: 'init' };\n }), withComputed((state) => {\n if (config) {\n const collections = getCollectionArray(config);\n if (collections) {\n return collections.reduce((acc, cur) => {\n const { callStateKey, errorKey, loadedKey, loadingKey } = deriveCallStateKeys(cur);\n const callState = state[callStateKey];\n return {\n ...acc,\n [loadingKey]: computed(() => callState() === 'loading'),\n [loadedKey]: computed(() => callState() === 'loaded'),\n [errorKey]: computed(() => {\n const v = callState();\n return typeof v === 'object' ? v.error : null;\n }),\n };\n }, {});\n }\n }\n const { callStateKey, errorKey, loadedKey, loadingKey } = deriveCallStateKeys();\n const callState = state[callStateKey];\n return {\n [loadingKey]: computed(() => callState() === 'loading'),\n [loadedKey]: computed(() => callState() === 'loaded'),\n [errorKey]: computed(() => {\n const v = callState();\n return typeof v === 'object' ? v.error : null;\n }),\n };\n }));\n}\nexport function setLoading(prop) {\n if (prop) {\n return { [`${prop}CallState`]: 'loading' };\n }\n return { callState: 'loading' };\n}\nexport function setLoaded(prop) {\n if (prop) {\n return { [`${prop}CallState`]: 'loaded' };\n }\n else {\n return { callState: 'loaded' };\n }\n}\nexport function setError(error, prop) {\n let errorMessage;\n if (!error) {\n errorMessage = '';\n }\n else if (typeof error === 'object' && 'message' in error) {\n errorMessage = String(error.message);\n }\n else {\n errorMessage = String(error);\n }\n if (prop) {\n return {\n [`${prop}CallState`]: { error: errorMessage },\n };\n }\n else {\n return { callState: { error: errorMessage } };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jYWxsLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi93aXRoLWNhbGwtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUE4QnZCLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsVUFBdUI7SUFFdkIsT0FBTztRQUNMLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFDakUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUMzRCxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRO1FBQ3hELFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU87S0FDdEQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBZ0M7SUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUNoQyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE1BQTREO0lBRTVELE9BQU8sYUFBYSxJQUFJLE1BQU07UUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXO1FBQ3BCLENBQUMsQ0FBQyxZQUFZLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVO1lBQzNDLENBQUMsQ0FBQyxDQUFDLE1BQU0s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LEVBQUUsWUFBWSxFQUFFLEVBQXdCLENBQUM7SUFDdEUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgc2lnbmFsU3RvcmVGZWF0dXJlLFxuICB3aXRoQ29tcHV0ZWQsXG4gIHdpdGhTdGF0ZSxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5cbmV4cG9ydCB0eXBlIENhbGxTdGF0ZSA9ICdpbml0JyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnIHwgeyBlcnJvcjogc3RyaW5nIH07XG5cbmV4cG9ydCB0eXBlIENhbGxTdGF0ZVNsaWNlID0ge1xuICBjYWxsU3RhdGU6IENhbGxTdGF0ZTtcbn07XG5cbmV4cG9ydCB0eXBlIE5hbWVkQ2FsbFN0YXRlU2xpY2U8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4gPSB7XG4gIFtLIGluIGtleW9mIENhbGxTdGF0ZVNsaWNlIGFzIENvbGxlY3Rpb24gZXh0ZW5kcyAnJ1xuICAgID8gYCR7Q29sbGVjdGlvbn0ke0t9YFxuICAgIDogYCR7Q29sbGVjdGlvbn0ke0NhcGl0YWxpemU8Sz59YF06IENhbGxTdGF0ZVNsaWNlW0tdO1xufTtcblxuZXhwb3J0IHR5cGUgQ2FsbFN0YXRlU2lnbmFscyA9IHtcbiAgbG9hZGluZzogU2lnbmFsPGJvb2xlYW4+O1xuICBsb2FkZWQ6IFNpZ25hbDxib29sZWFuPjtcbiAgZXJyb3I6IFNpZ25hbDxzdHJpbmcgfCBudWxsPjtcbn07XG5cbmV4cG9ydCB0eXBlIE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxQcm9wIGV4dGVuZHMgc3RyaW5nPiA9IHtcbiAgW0sgaW4ga2V5b2YgQ2FsbFN0YXRlU2lnbmFscyBhcyBQcm9wIGV4dGVuZHMgJydcbiAgICA/IGAke1Byb3B9JHtLfWBcbiAgICA6IGAke1Byb3B9JHtDYXBpdGFsaXplPEs+fWBdOiBDYWxsU3RhdGVTaWduYWxzW0tdO1xufTtcblxuZXhwb3J0IHR5cGUgU2V0Q2FsbFN0YXRlPFByb3AgZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+ID0gUHJvcCBleHRlbmRzIHN0cmluZ1xuICA/IE5hbWVkQ2FsbFN0YXRlU2xpY2U8UHJvcD5cbiAgOiBDYWxsU3RhdGVTbGljZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUNhbGxTdGF0ZUtleXM8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4oXG4gIGNvbGxlY3Rpb24/OiBDb2xsZWN0aW9uLFxuKSB7XG4gIHJldHVybiB7XG4gICAgY2FsbFN0YXRlS2V5OiBjb2xsZWN0aW9uID8gYCR7Y29sbGVjdGlvbn1DYWxsU3RhdGVgIDogJ2NhbGxTdGF0ZScsXG4gICAgbG9hZGluZ0tleTogY29sbGVjdGlvbiA/IGAke2NvbGxlY3Rpb259TG9hZGluZ2AgOiAnbG9hZGluZycsXG4gICAgbG9hZGVkS2V5OiBjb2xsZWN0aW9uID8gYCR7Y29sbGVjdGlvbn1Mb2FkZWRgIDogJ2xvYWRlZCcsXG4gICAgZXJyb3JLZXk6IGNvbGxlY3Rpb24gPyBgJHtjb2xsZWN0aW9ufUVycm9yYCA6ICdlcnJvcicsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWxsU3RhdGVLZXlzKGNvbmZpZz86IHsgY29sbGVjdGlvbj86IHN0cmluZyB9KSB7XG4gIGNvbnN0IHByb3AgPSBjb25maWc/LmNvbGxlY3Rpb247XG4gIHJldHVybiBkZXJpdmVDYWxsU3RhdGVLZXlzKHByb3ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbkFycmF5KFxuICBjb25maWc6IHsgY29sbGVjdGlvbj86IHN0cmluZyB9IHwgeyBjb2xsZWN0aW9ucz86IHN0cmluZ1tdIH0sXG4pIHtcbiAgcmV0dXJuICdjb2xsZWN0aW9ucycgaW4gY29uZmlnXG4gICAgPyBjb25maWcuY29sbGVjdGlvbnNcbiAgICA6ICdjb2xsZWN0aW9uJyBpbiBjb25maWcgJiYgY29uZmlnLmNvbGxlY3Rpb25cbiAgICAgID8gW2NvbmZpZy5jb2xsZWN0aW9uXVxuICAgICAgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KGNvbmZpZzoge1xuICBjb2xsZWN0aW9uczogQ29sbGVjdGlvbltdO1xufSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IE5hbWVkQ2FsbFN0YXRlU2xpY2U8Q29sbGVjdGlvbj47XG4gICAgcHJvcHM6IE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxDb2xsZWN0aW9uPjtcbiAgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KGNvbmZpZzoge1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xufSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IE5hbWVkQ2FsbFN0YXRlU2xpY2U8Q29sbGVjdGlvbj47XG4gICAgcHJvcHM6IE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxDb2xsZWN0aW9uPjtcbiAgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlKCk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IENhbGxTdGF0ZVNsaWNlO1xuICAgIHByb3BzOiBDYWxsU3RhdGVTaWduYWxzO1xuICB9XG4+O1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDYWxsU3RhdGU8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4oXG4gIGNvbmZpZz86XG4gICAgfCB7XG4gICAgICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIGNvbGxlY3Rpb25zOiBDb2xsZWN0aW9uW107XG4gICAgICB9LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoKCkgPT4ge1xuICAgICAgaWYgKCFjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIHsgY2FsbFN0YXRlOiAnaW5pdCcgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gZ2V0Q29sbGVjdGlvbkFycmF5KGNvbmZpZyk7XG4gICAgICBpZiAoY29sbGVjdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXIpID0+ICh7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAuLi57IFtjdXIgPyBgJHtjdXJ9Q2FsbFN0YXRlYCA6ICdjYWxsU3RhdGUnXTogJ2luaXQnIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAge30sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGNhbGxTdGF0ZTogJ2luaXQnIH07XG4gICAgfSksXG4gICAgd2l0aENvbXB1dGVkKChzdGF0ZTogUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+PikgPT4ge1xuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9ucyA9IGdldENvbGxlY3Rpb25BcnJheShjb25maWcpO1xuICAgICAgICBpZiAoY29sbGVjdGlvbnMpIHtcbiAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMucmVkdWNlPFJlY29yZDxzdHJpbmcsIFNpZ25hbDx1bmtub3duPj4+KFxuICAgICAgICAgICAgKGFjYywgY3VyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjYWxsU3RhdGVLZXksIGVycm9yS2V5LCBsb2FkZWRLZXksIGxvYWRpbmdLZXkgfSA9XG4gICAgICAgICAgICAgICAgZGVyaXZlQ2FsbFN0YXRlS2V5cyhjdXIpO1xuICAgICAgICAgICAgICBjb25zdCBjYWxsU3RhdGUgPSBzdGF0ZVtjYWxsU3RhdGVLZXldIGFzIFNpZ25hbDxDYWxsU3RhdGU+O1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICBbbG9hZGluZ0tleV06IGNvbXB1dGVkKCgpID0+IGNhbGxTdGF0ZSgpID09PSAnbG9hZGluZycpLFxuICAgICAgICAgICAgICAgIFtsb2FkZWRLZXldOiBjb21wdXRlZCgoKSA9PiBjYWxsU3RhdGUoKSA9PT0gJ2xvYWRlZCcpLFxuICAgICAgICAgICAgICAgIFtlcnJvcktleV06IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBjYWxsU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyB2LmVycm9yIDogbnVsbDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCB7IGNhbGxTdGF0ZUtleSwgZXJyb3JLZXksIGxvYWRlZEtleSwgbG9hZGluZ0tleSB9ID1cbiAgICAgICAgZGVyaXZlQ2FsbFN0YXRlS2V5cygpO1xuICAgICAgY29uc3QgY2FsbFN0YXRlID0gc3RhdGVbY2FsbFN0YXRlS2V5XSBhcyBTaWduYWw8Q2FsbFN0YXRlPjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtsb2FkaW5nS2V5XTogY29tcHV0ZWQoKCkgPT4gY2FsbFN0YXRlKCkgPT09ICdsb2FkaW5nJyksXG4gICAgICAgIFtsb2FkZWRLZXldOiBjb21wdXRlZCgoKSA9PiBjYWxsU3RhdGUoKSA9PT0gJ2xvYWRlZCcpLFxuICAgICAgICBbZXJyb3JLZXldOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdiA9IGNhbGxTdGF0ZSgpO1xuICAgICAgICAgIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyB2LmVycm9yIDogbnVsbDtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9hZGluZzxQcm9wIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgcHJvcD86IFByb3AsXG4pOiBTZXRDYWxsU3RhdGU8UHJvcD4ge1xuICBpZiAocHJvcCkge1xuICAgIHJldHVybiB7IFtgJHtwcm9wfUNhbGxTdGF0ZWBdOiAnbG9hZGluZycgfSBhcyBTZXRDYWxsU3RhdGU8UHJvcD47XG4gIH1cblxuICByZXR1cm4geyBjYWxsU3RhdGU6ICdsb2FkaW5nJyB9IGFzIFNldENhbGxTdGF0ZTxQcm9wPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldExvYWRlZDxQcm9wIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgcHJvcD86IFByb3AsXG4pOiBTZXRDYWxsU3RhdGU8UHJvcD4ge1xuICBpZiAocHJvcCkge1xuICAgIHJldHVybiB7IFtgJHtwcm9wfUNhbGxTdGF0ZWBdOiAnbG9hZGVkJyB9IGFzIFNldENhbGxTdGF0ZTxQcm9wPjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geyBjYWxsU3RhdGU6ICdsb2FkZWQnIH0gYXMgU2V0Q2FsbFN0YXRlPFByb3A+O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRFcnJvcjxQcm9wIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgZXJyb3I6IHVua25vd24sXG4gIHByb3A/OiBQcm9wLFxuKTogU2V0Q2FsbFN0YXRlPFByb3A+IHtcbiAgbGV0IGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIGlmICghZXJyb3IpIHtcbiAgICBlcnJvck1lc3NhZ2UgPSAnJztcbiAgfSBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmICdtZXNzYWdlJyBpbiBlcnJvcikge1xuICAgIGVycm9yTWVzc2FnZSA9IFN0cmluZyhlcnJvci5tZXNzYWdlKTtcbiAgfSBlbHNlIHtcbiAgICBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoZXJyb3IpO1xuICB9XG5cbiAgaWYgKHByb3ApIHtcbiAgICByZXR1cm4ge1xuICAgICAgW2Ake3Byb3B9Q2FsbFN0YXRlYF06IHsgZXJyb3I6IGVycm9yTWVzc2FnZSB9LFxuICAgIH0gYXMgU2V0Q2FsbFN0YXRlPFByb3A+O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IGNhbGxTdGF0ZTogeyBlcnJvcjogZXJyb3JNZXNzYWdlIH0gfSBhcyBTZXRDYWxsU3RhdGU8UHJvcD47XG4gIH1cbn1cbiJdfQ==","import { computed, inject } from '@angular/core';\nimport { patchState, signalStoreFeature, withComputed, withMethods, withState, } from '@ngrx/signals';\nimport { addEntity, removeEntity, setAllEntities, updateEntity, } from '@ngrx/signals/entities';\nimport { getCallStateKeys, setError, setLoaded, setLoading, } from './with-call-state';\nexport function capitalize(str) {\n return str ? str[0].toUpperCase() + str.substring(1) : str;\n}\nexport function getDataServiceKeys(options) {\n const filterKey = options.collection\n ? `${options.collection}Filter`\n : 'filter';\n const selectedIdsKey = options.collection\n ? `selected${capitalize(options.collection)}Ids`\n : 'selectedIds';\n const selectedEntitiesKey = options.collection\n ? `selected${capitalize(options.collection)}Entities`\n : 'selectedEntities';\n const updateFilterKey = options.collection\n ? `update${capitalize(options.collection)}Filter`\n : 'updateFilter';\n const updateSelectedKey = options.collection\n ? `updateSelected${capitalize(options.collection)}Entities`\n : 'updateSelected';\n const loadKey = options.collection\n ? `load${capitalize(options.collection)}Entities`\n : 'load';\n const currentKey = options.collection\n ? `current${capitalize(options.collection)}`\n : 'current';\n const loadByIdKey = options.collection\n ? `load${capitalize(options.collection)}ById`\n : 'loadById';\n const setCurrentKey = options.collection\n ? `setCurrent${capitalize(options.collection)}`\n : 'setCurrent';\n const createKey = options.collection\n ? `create${capitalize(options.collection)}`\n : 'create';\n const updateKey = options.collection\n ? `update${capitalize(options.collection)}`\n : 'update';\n const updateAllKey = options.collection\n ? `updateAll${capitalize(options.collection)}`\n : 'updateAll';\n const deleteKey = options.collection\n ? `delete${capitalize(options.collection)}`\n : 'delete';\n // TODO: Take these from @ngrx/signals/entities, when they are exported\n const entitiesKey = options.collection\n ? `${options.collection}Entities`\n : 'entities';\n const entityMapKey = options.collection\n ? `${options.collection}EntityMap`\n : 'entityMap';\n const idsKey = options.collection ? `${options.collection}Ids` : 'ids';\n return {\n filterKey,\n selectedIdsKey,\n selectedEntitiesKey,\n updateFilterKey,\n updateSelectedKey,\n loadKey,\n entitiesKey,\n entityMapKey,\n idsKey,\n currentKey,\n loadByIdKey,\n setCurrentKey,\n createKey,\n updateKey,\n updateAllKey,\n deleteKey,\n };\n}\nexport function withDataService(options) {\n const { dataServiceType, filter, collection: prefix } = options;\n const { entitiesKey, filterKey, loadKey, selectedEntitiesKey, selectedIdsKey, updateFilterKey, updateSelectedKey, currentKey, createKey, updateKey, updateAllKey, deleteKey, loadByIdKey, setCurrentKey, } = getDataServiceKeys(options);\n const { callStateKey } = getCallStateKeys({ collection: prefix });\n return signalStoreFeature(withState(() => ({\n [filterKey]: filter,\n [selectedIdsKey]: {},\n [currentKey]: undefined,\n })), withComputed((store) => {\n const entities = store[entitiesKey];\n const selectedIds = store[selectedIdsKey];\n return {\n [selectedEntitiesKey]: computed(() => entities().filter((e) => selectedIds()[e.id])),\n };\n }), withMethods((store) => {\n const dataService = inject(dataServiceType);\n return {\n [updateFilterKey]: (filter) => {\n patchState(store, { [filterKey]: filter });\n },\n [updateSelectedKey]: (id, selected) => {\n patchState(store, (state) => ({\n [selectedIdsKey]: {\n ...state[selectedIdsKey],\n [id]: selected,\n },\n }));\n },\n [loadKey]: async () => {\n const filter = store[filterKey];\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const result = await dataService.load(filter());\n patchState(store, prefix\n ? setAllEntities(result, { collection: prefix })\n : setAllEntities(result));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [loadByIdKey]: async (id) => {\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const current = await dataService.loadById(id);\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n patchState(store, { [currentKey]: current });\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [setCurrentKey]: (current) => {\n patchState(store, { [currentKey]: current });\n },\n [createKey]: async (entity) => {\n patchState(store, { [currentKey]: entity });\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const created = await dataService.create(entity);\n patchState(store, { [currentKey]: created });\n patchState(store, prefix\n ? addEntity(created, { collection: prefix })\n : addEntity(created));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [updateKey]: async (entity) => {\n patchState(store, { [currentKey]: entity });\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const updated = await dataService.update(entity);\n patchState(store, { [currentKey]: updated });\n const updateArg = {\n id: updated.id,\n changes: updated,\n };\n const updater = (collection) => updateEntity(updateArg, { collection });\n patchState(store, prefix ? updater(prefix) : updateEntity(updateArg));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [updateAllKey]: async (entities) => {\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const result = await dataService.updateAll(entities);\n patchState(store, prefix\n ? setAllEntities(result, { collection: prefix })\n : setAllEntities(result));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [deleteKey]: async (entity) => {\n patchState(store, { [currentKey]: entity });\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n await dataService.delete(entity);\n patchState(store, { [currentKey]: undefined });\n patchState(store, prefix\n ? removeEntity(entity.id, { collection: prefix })\n : removeEntity(entity.id));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n };\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kYXRhLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtZGF0YS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBSUwsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixjQUFjLEVBQ2QsWUFBWSxHQUNiLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUdMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLG1CQUFtQixDQUFDO0FBbUIzQixNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVc7SUFDcEMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUFnQztJQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsVUFBVTtRQUNsQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxRQUFRO1FBQy9CLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDYixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsVUFBVTtRQUN2QyxDQUFDLENBQUMsV0FBVyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLO1FBQ2hELENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDbEIsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsVUFB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aW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgV3JpdGFibGVTdGF0ZVNvdXJjZSxcbiAgcGF0Y2hTdGF0ZSxcbiAgc2lnbmFsU3RvcmVGZWF0dXJlLFxuICB3aXRoQ29tcHV0ZWQsXG4gIHdpdGhNZXRob2RzLFxuICB3aXRoU3RhdGUsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHtcbiAgRW50aXR5SWQsXG4gIE5hbWVkRW50aXR5U3RhdGUsXG4gIGFkZEVudGl0eSxcbiAgcmVtb3ZlRW50aXR5LFxuICBzZXRBbGxFbnRpdGllcyxcbiAgdXBkYXRlRW50aXR5LFxufSBmcm9tICdAbmdyeC9zaWduYWxzL2VudGl0aWVzJztcbmltcG9ydCB7IEVudGl0eVN0YXRlIH0gZnJvbSAnLi9zaGFyZWQvc2lnbmFsLXN0b3JlLW1vZGVscyc7XG5pbXBvcnQge1xuICBDYWxsU3RhdGUsXG4gIE5hbWVkQ2FsbFN0YXRlU2xpY2UsXG4gIGdldENhbGxTdGF0ZUtleXMsXG4gIHNldEVycm9yLFxuICBzZXRMb2FkZWQsXG4gIHNldExvYWRpbmcsXG59IGZyb20gJy4vd2l0aC1jYWxsLXN0YXRlJztcblxuZXhwb3J0IHR5cGUgRmlsdGVyID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5leHBvcnQgdHlwZSBFbnRpdHkgPSB7IGlkOiBFbnRpdHlJZCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTZXJ2aWNlPEUgZXh0ZW5kcyBFbnRpdHksIEYgZXh0ZW5kcyBGaWx0ZXI+IHtcbiAgbG9hZChmaWx0ZXI6IEYpOiBQcm9taXNlPEVbXT47XG5cbiAgbG9hZEJ5SWQoaWQ6IEVudGl0eUlkKTogUHJvbWlzZTxFPjtcblxuICBjcmVhdGUoZW50aXR5OiBFKTogUHJvbWlzZTxFPjtcblxuICB1cGRhdGUoZW50aXR5OiBFKTogUHJvbWlzZTxFPjtcblxuICB1cGRhdGVBbGwoZW50aXR5OiBFW10pOiBQcm9taXNlPEVbXT47XG5cbiAgZGVsZXRlKGVudGl0eTogRSk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ciA/IHN0clswXS50b1VwcGVyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKSA6IHN0cjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFTZXJ2aWNlS2V5cyhvcHRpb25zOiB7IGNvbGxlY3Rpb24/OiBzdHJpbmcgfSkge1xuICBjb25zdCBmaWx0ZXJLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1GaWx0ZXJgXG4gICAgOiAnZmlsdGVyJztcbiAgY29uc3Qgc2VsZWN0ZWRJZHNLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGBzZWxlY3RlZCR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUlkc2BcbiAgICA6ICdzZWxlY3RlZElkcyc7XG4gIGNvbnN0IHNlbGVjdGVkRW50aXRpZXNLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGBzZWxlY3RlZCR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUVudGl0aWVzYFxuICAgIDogJ3NlbGVjdGVkRW50aXRpZXMnO1xuXG4gIGNvbnN0IHVwZGF0ZUZpbHRlcktleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYHVwZGF0ZSR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUZpbHRlcmBcbiAgICA6ICd1cGRhdGVGaWx0ZXInO1xuICBjb25zdCB1cGRhdGVTZWxlY3RlZEtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYHVwZGF0ZVNlbGVjdGVkJHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9RW50aXRpZXNgXG4gICAgOiAndXBkYXRlU2VsZWN0ZWQnO1xuICBjb25zdCBsb2FkS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uXG4gICAgPyBgbG9hZCR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUVudGl0aWVzYFxuICAgIDogJ2xvYWQnO1xuXG4gIGNvbnN0IGN1cnJlbnRLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGBjdXJyZW50JHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9YFxuICAgIDogJ2N1cnJlbnQnO1xuICBjb25zdCBsb2FkQnlJZEtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYGxvYWQke2NhcGl0YWxpemUob3B0aW9ucy5jb2xsZWN0aW9uKX1CeUlkYFxuICAgIDogJ2xvYWRCeUlkJztcbiAgY29uc3Qgc2V0Q3VycmVudEtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYHNldEN1cnJlbnQke2NhcGl0YWxpemUob3B0aW9ucy5jb2xsZWN0aW9uKX1gXG4gICAgOiAnc2V0Q3VycmVudCc7XG4gIGNvbnN0IGNyZWF0ZUtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYGNyZWF0ZSR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfWBcbiAgICA6ICdjcmVhdGUnO1xuICBjb25zdCB1cGRhdGVLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGB1cGRhdGUke2NhcGl0YWxpemUob3B0aW9ucy5jb2xsZWN0aW9uKX1gXG4gICAgOiAndXBkYXRlJztcbiAgY29uc3QgdXBkYXRlQWxsS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uXG4gICAgPyBgdXBkYXRlQWxsJHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9YFxuICAgIDogJ3VwZGF0ZUFsbCc7XG4gIGNvbnN0IGRlbGV0ZUtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYGRlbGV0ZSR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfWBcbiAgICA6ICdkZWxldGUnO1xuXG4gIC8vIFRPRE86IFRha2UgdGhlc2UgZnJvbSBAbmdyeC9zaWduYWxzL2VudGl0aWVzLCB3aGVuIHRoZXkgYXJlIGV4cG9ydGVkXG4gIGNvbnN0IGVudGl0aWVzS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259RW50aXRpZXNgXG4gICAgOiAnZW50aXRpZXMnO1xuICBjb25zdCBlbnRpdHlNYXBLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1FbnRpdHlNYXBgXG4gICAgOiAnZW50aXR5TWFwJztcbiAgY29uc3QgaWRzS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uID8gYCR7b3B0aW9ucy5jb2xsZWN0aW9ufUlkc2AgOiAnaWRzJztcblxuICByZXR1cm4ge1xuICAgIGZpbHRlcktleSxcbiAgICBzZWxlY3RlZElkc0tleSxcbiAgICBzZWxlY3RlZEVudGl0aWVzS2V5LFxuICAgIHVwZGF0ZUZpbHRlcktleSxcbiAgICB1cGRhdGVTZWxlY3RlZEtleSxcbiAgICBsb2FkS2V5LFxuICAgIGVudGl0aWVzS2V5LFxuICAgIGVudGl0eU1hcEtleSxcbiAgICBpZHNLZXksXG5cbiAgICBjdXJyZW50S2V5LFxuICAgIGxvYWRCeUlkS2V5LFxuICAgIHNldEN1cnJlbnRLZXksXG4gICAgY3JlYXRlS2V5LFxuICAgIHVwZGF0ZUtleSxcbiAgICB1cGRhdGVBbGxLZXksXG4gICAgZGVsZXRlS2V5LFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBOYW1lZERhdGFTZXJ2aWNlU3RhdGU8XG4gIEUgZXh0ZW5kcyBFbnRpdHksXG4gIEYgZXh0ZW5kcyBGaWx0ZXIsXG4gIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcsXG4+ID0ge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0t9RmlsdGVyYF06IEY7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBzZWxlY3RlZCR7Q2FwaXRhbGl6ZTxLPn1JZHNgXTogUmVjb3JkPEVudGl0eUlkLCBib29sZWFuPjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYGN1cnJlbnQke0NhcGl0YWxpemU8Sz59YF06IEU7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRhU2VydmljZVN0YXRlPEUgZXh0ZW5kcyBFbnRpdHksIEYgZXh0ZW5kcyBGaWx0ZXI+ID0ge1xuICBmaWx0ZXI6IEY7XG4gIHNlbGVjdGVkSWRzOiBSZWNvcmQ8RW50aXR5SWQsIGJvb2xlYW4+O1xuICBjdXJyZW50OiBFO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVNlcnZpY2VDb21wdXRlZDxFIGV4dGVuZHMgRW50aXR5PiA9IHtcbiAgc2VsZWN0ZWRFbnRpdGllczogU2lnbmFsPEVbXT47XG59O1xuXG5leHBvcnQgdHlwZSBOYW1lZERhdGFTZXJ2aWNlQ29tcHV0ZWQ8XG4gIEUgZXh0ZW5kcyBFbnRpdHksXG4gIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcsXG4+ID0ge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBzZWxlY3RlZCR7Q2FwaXRhbGl6ZTxLPn1FbnRpdGllc2BdOiBTaWduYWw8RVtdPjtcbn07XG5cbmV4cG9ydCB0eXBlIE5hbWVkRGF0YVNlcnZpY2VNZXRob2RzPFxuICBFIGV4dGVuZHMgRW50aXR5LFxuICBGIGV4dGVuZHMgRmlsdGVyLFxuICBDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nLFxuPiA9IHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgdXBkYXRlJHtDYXBpdGFsaXplPEs+fUZpbHRlcmBdOiAoZmlsdGVyOiBGKSA9PiB2b2lkO1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgdXBkYXRlU2VsZWN0ZWQke0NhcGl0YWxpemU8Sz59RW50aXRpZXNgXTogKFxuICAgIGlkOiBFbnRpdHlJZCxcbiAgICBzZWxlY3RlZDogYm9vbGVhbixcbiAgKSA9PiB2b2lkO1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgbG9hZCR7Q2FwaXRhbGl6ZTxLPn1FbnRpdGllc2BdOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgc2V0Q3VycmVudCR7Q2FwaXRhbGl6ZTxLPn1gXTogKGVudGl0eTogRSkgPT4gdm9pZDtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYGxvYWQke0NhcGl0YWxpemU8Sz59QnlJZGBdOiAoXG4gICAgaWQ6IEVudGl0eUlkLFxuICApID0+IFByb21pc2U8dm9pZD47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBjcmVhdGUke0NhcGl0YWxpemU8Sz59YF06IChlbnRpdHk6IEUpID0+IFByb21pc2U8dm9pZD47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGB1cGRhdGUke0NhcGl0YWxpemU8Sz59YF06IChlbnRpdHk6IEUpID0+IFByb21pc2U8dm9pZD47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGB1cGRhdGVBbGwke0NhcGl0YWxpemU8Sz59YF06IChcbiAgICBlbnRpdHk6IEVbXSxcbiAgKSA9PiBQcm9taXNlPHZvaWQ+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgZGVsZXRlJHtDYXBpdGFsaXplPEs+fWBdOiAoZW50aXR5OiBFKSA9PiBQcm9taXNlPHZvaWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVNlcnZpY2VNZXRob2RzPEUgZXh0ZW5kcyBFbnRpdHksIEYgZXh0ZW5kcyBGaWx0ZXI+ID0ge1xuICB1cGRhdGVGaWx0ZXI6IChmaWx0ZXI6IEYpID0+IHZvaWQ7XG4gIHVwZGF0ZVNlbGVjdGVkOiAoaWQ6IEVudGl0eUlkLCBzZWxlY3RlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgbG9hZDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBzZXRDdXJyZW50KGVudGl0eTogRSk6IHZvaWQ7XG4gIGxvYWRCeUlkKGlkOiBFbnRpdHlJZCk6IFByb21pc2U8dm9pZD47XG4gIGNyZWF0ZShlbnRpdHk6IEUpOiBQcm9taXNlPHZvaWQ+O1xuICB1cGRhdGUoZW50aXR5OiBFKTogUHJvbWlzZTx2b2lkPjtcbiAgdXBkYXRlQWxsKGVudGl0aWVzOiBFW10pOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGUoZW50aXR5OiBFKTogUHJvbWlzZTx2b2lkPjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGF0YVNlcnZpY2U8XG4gIEUgZXh0ZW5kcyBFbnRpdHksXG4gIEYgZXh0ZW5kcyBGaWx0ZXIsXG4gIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcsXG4+KG9wdGlvbnM6IHtcbiAgZGF0YVNlcnZpY2VUeXBlOiBQcm92aWRlclRva2VuPERhdGFTZXJ2aWNlPEUsIEY+PjtcbiAgZmlsdGVyOiBGO1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xufSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYge1xuICAgIHN0YXRlOiBOYW1lZENhbGxTdGF0ZVNsaWNlPENvbGxlY3Rpb24+ICYgTmFtZWRFbnRpdHlTdGF0ZTxFLCBDb2xsZWN0aW9uPjtcbiAgfSxcbiAge1xuICAgIHN0YXRlOiBOYW1lZERhdGFTZXJ2aWNlU3RhdGU8RSwgRiwgQ29sbGVjdGlvbj47XG4gICAgcHJvcHM6IE5hbWVkRGF0YVNlcnZpY2VDb21wdXRlZDxFLCBDb2xsZWN0aW9uPjtcbiAgICBtZXRob2RzOiBOYW1lZERhdGFTZXJ2aWNlTWV0aG9kczxFLCBGLCBDb2xsZWN0aW9uPjtcbiAgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGF0YVNlcnZpY2U8RSBleHRlbmRzIEVudGl0eSwgRiBleHRlbmRzIEZpbHRlcj4ob3B0aW9uczoge1xuICBkYXRhU2VydmljZVR5cGU6IFByb3ZpZGVyVG9rZW48RGF0YVNlcnZpY2U8RSwgRj4+O1xuICBmaWx0ZXI6IEY7XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7IHN0YXRlOiB7IGNhbGxTdGF0ZTogQ2FsbFN0YXRlIH0gJiBFbnRpdHlTdGF0ZTxFPiB9LFxuICB7XG4gICAgc3RhdGU6IERhdGFTZXJ2aWNlU3RhdGU8RSwgRj47XG4gICAgcHJvcHM6IERhdGFTZXJ2aWNlQ29tcHV0ZWQ8RT47XG4gICAgbWV0aG9kczogRGF0YVNlcnZpY2VNZXRob2RzPEUsIEY+O1xuICB9XG4+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aERhdGFTZXJ2aWNlPFxuICBFIGV4dGVuZHMgRW50aXR5LFxuICBGIGV4dGVuZHMgRmlsdGVyLFxuICBDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nLFxuPihvcHRpb25zOiB7XG4gIGRhdGFTZXJ2aWNlVHlwZTogUHJvdmlkZXJUb2tlbjxEYXRhU2VydmljZTxFLCBGPj47XG4gIGZpbHRlcjogRjtcbiAgY29sbGVjdGlvbj86IENvbGxlY3Rpb247XG59KTogLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuU2lnbmFsU3RvcmVGZWF0dXJlPGFueSwgYW55PiB7XG4gIGNvbnN0IHsgZGF0YVNlcnZpY2VUeXBlLCBmaWx0ZXIsIGNvbGxlY3Rpb246IHByZWZpeCB9ID0gb3B0aW9ucztcbiAgY29uc3Qge1xuICAgIGVudGl0aWVzS2V5LFxuICAgIGZpbHRlcktleSxcbiAgICBsb2FkS2V5LFxuICAgIHNlbGVjdGVkRW50aXRpZXNLZXksXG4gICAgc2VsZWN0ZWRJZHNLZXksXG4gICAgdXBkYXRlRmlsdGVyS2V5LFxuICAgIHVwZGF0ZVNlbGVjdGVkS2V5LFxuXG4gICAgY3VycmVudEtleSxcbiAgICBjcmVhdGVLZXksXG4gICAgdXBkYXRlS2V5LFxuICAgIHVwZGF0ZUFsbEtleSxcbiAgICBkZWxldGVLZXksXG4gICAgbG9hZEJ5SWRLZXksXG4gICAgc2V0Q3VycmVudEtleSxcbiAgfSA9IGdldERhdGFTZXJ2aWNlS2V5cyhvcHRpb25zKTtcblxuICBjb25zdCB7IGNhbGxTdGF0ZUtleSB9ID0gZ2V0Q2FsbFN0YXRlS2V5cyh7IGNvbGxlY3Rpb246IHByZWZpeCB9KTtcblxuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhTdGF0ZSgoKSA9PiAoe1xuICAgICAgW2ZpbHRlcktleV06IGZpbHRlcixcbiAgICAgIFtzZWxlY3RlZElkc0tleV06IHt9IGFzIFJlY29yZDxFbnRpdHlJZCwgYm9vbGVhbj4sXG4gICAgICBbY3VycmVudEtleV06IHVuZGVmaW5lZCBhcyBFIHwgdW5kZWZpbmVkLFxuICAgIH0pKSxcbiAgICB3aXRoQ29tcHV0ZWQoKHN0b3JlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgY29uc3QgZW50aXRpZXMgPSBzdG9yZVtlbnRpdGllc0tleV0gYXMgU2lnbmFsPEVbXT47XG4gICAgICBjb25zdCBzZWxlY3RlZElkcyA9IHN0b3JlW3NlbGVjdGVkSWRzS2V5XSBhcyBTaWduYWw8XG4gICAgICAgIFJlY29yZDxFbnRpdHlJZCwgYm9vbGVhbj5cbiAgICAgID47XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtzZWxlY3RlZEVudGl0aWVzS2V5XTogY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgICBlbnRpdGllcygpLmZpbHRlcigoZSkgPT4gc2VsZWN0ZWRJZHMoKVtlLmlkXSksXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhNZXRob2RzKFxuICAgICAgKHN0b3JlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiAmIFdyaXRhYmxlU3RhdGVTb3VyY2U8b2JqZWN0PikgPT4ge1xuICAgICAgICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdChkYXRhU2VydmljZVR5cGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFt1cGRhdGVGaWx0ZXJLZXldOiAoZmlsdGVyOiBGKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IFtmaWx0ZXJLZXldOiBmaWx0ZXIgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbdXBkYXRlU2VsZWN0ZWRLZXldOiAoaWQ6IEVudGl0eUlkLCBzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gKHtcbiAgICAgICAgICAgICAgW3NlbGVjdGVkSWRzS2V5XToge1xuICAgICAgICAgICAgICAgIC4uLihzdGF0ZVtzZWxlY3RlZElkc0tleV0gYXMgUmVjb3JkPEVudGl0eUlkLCBib29sZWFuPiksXG4gICAgICAgICAgICAgICAgW2lkXTogc2VsZWN0ZWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbbG9hZEtleV06IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHN0b3JlW2ZpbHRlcktleV0gYXMgU2lnbmFsPEY+O1xuICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGluZyhwcmVmaXgpKSkoKTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGF0YVNlcnZpY2UubG9hZChmaWx0ZXIoKSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IHNldEFsbEVudGl0aWVzKHJlc3VsdCwgeyBjb2xsZWN0aW9uOiBwcmVmaXggfSlcbiAgICAgICAgICAgICAgICAgIDogc2V0QWxsRW50aXRpZXMocmVzdWx0KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJiBwYXRjaFN0YXRlKHN0b3JlLCBzZXRMb2FkZWQocHJlZml4KSkpKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiZcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBzZXRFcnJvcihlLCBwcmVmaXgpKSkoKTtcbiAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtsb2FkQnlJZEtleV06IGFzeW5jIChpZDogRW50aXR5SWQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBkYXRhU2VydmljZS5sb2FkQnlJZChpZCk7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGVkKHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IFtjdXJyZW50S2V5XTogY3VycmVudCB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJlxuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHNldEVycm9yKGUsIHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW3NldEN1cnJlbnRLZXldOiAoY3VycmVudDogRSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGN1cnJlbnQgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbY3JlYXRlS2V5XTogYXN5bmMgKGVudGl0eTogRSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGVudGl0eSB9KTtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBkYXRhU2VydmljZS5jcmVhdGUoZW50aXR5KTtcbiAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGNyZWF0ZWQgfSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IGFkZEVudGl0eShjcmVhdGVkLCB7IGNvbGxlY3Rpb246IHByZWZpeCB9KVxuICAgICAgICAgICAgICAgICAgOiBhZGRFbnRpdHkoY3JlYXRlZCksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGVkKHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAoKCkgPT5cbiAgICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmXG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0RXJyb3IoZSwgcHJlZml4KSkpKCk7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbdXBkYXRlS2V5XTogYXN5bmMgKGVudGl0eTogRSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGVudGl0eSB9KTtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCBkYXRhU2VydmljZS51cGRhdGUoZW50aXR5KTtcbiAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IHVwZGF0ZWQgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlQXJnID0ge1xuICAgICAgICAgICAgICAgIGlkOiB1cGRhdGVkLmlkLFxuICAgICAgICAgICAgICAgIGNoYW5nZXM6IHVwZGF0ZWQsXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlciA9IChjb2xsZWN0aW9uOiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgdXBkYXRlRW50aXR5KHVwZGF0ZUFyZywgeyBjb2xsZWN0aW9uIH0pO1xuXG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4ID8gdXBkYXRlcihwcmVmaXgpIDogdXBkYXRlRW50aXR5KHVwZGF0ZUFyZyksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGVkKHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAoKCkgPT5cbiAgICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmXG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0RXJyb3IoZSwgcHJlZml4KSkpKCk7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbdXBkYXRlQWxsS2V5XTogYXN5bmMgKGVudGl0aWVzOiBFW10pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRhdGFTZXJ2aWNlLnVwZGF0ZUFsbChlbnRpdGllcyk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IHNldEFsbEVudGl0aWVzKHJlc3VsdCwgeyBjb2xsZWN0aW9uOiBwcmVmaXggfSlcbiAgICAgICAgICAgICAgICAgIDogc2V0QWxsRW50aXRpZXMocmVzdWx0KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJiBwYXRjaFN0YXRlKHN0b3JlLCBzZXRMb2FkZWQocHJlZml4KSkpKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiZcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBzZXRFcnJvcihlLCBwcmVmaXgpKSkoKTtcbiAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtkZWxldGVLZXldOiBhc3luYyAoZW50aXR5OiBFKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IFtjdXJyZW50S2V5XTogZW50aXR5IH0pO1xuICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGluZyhwcmVmaXgpKSkoKTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgZGF0YVNlcnZpY2UuZGVsZXRlKGVudGl0eSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgW2N1cnJlbnRLZXldOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IHJlbW92ZUVudGl0eShlbnRpdHkuaWQsIHsgY29sbGVjdGlvbjogcHJlZml4IH0pXG4gICAgICAgICAgICAgICAgICA6IHJlbW92ZUVudGl0eShlbnRpdHkuaWQpLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAoKCkgPT5cbiAgICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRlZChwcmVmaXgpKSkoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJlxuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHNldEVycm9yKGUsIHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICksXG4gICk7XG59XG4iXX0=","/** With pagination comes in two flavors the first one is local pagination or in memory pagination. For example we have 2000 items which we want\n * to display in a table and the response payload is small enough to be stored in the memory. But we can not display all 2000 items at once\n * so we need to paginate the data. The second flavor is server side pagination where the response payload is too large to be stored in the memory\n * and we need to fetch the data from the server in chunks. In the second case we 'could' also cache the data in the memory but that could lead to\n * other problems like memory leaks and stale data. So we will not cache the data in the memory in the second case.\n * This feature implements the local pagination.\n */\nimport { computed } from '@angular/core';\nimport { signalStoreFeature, withComputed, withState, } from '@ngrx/signals';\nimport { capitalize } from './with-data-service';\nexport function withPagination(options) {\n const { pageKey, pageSizeKey, entitiesKey, selectedPageEntitiesKey, totalCountKey, pageCountKey, pageNavigationArrayMaxKey, pageNavigationArrayKey, hasNextPageKey, hasPreviousPageKey, } = createPaginationKeys(options);\n return signalStoreFeature(withState({\n [pageKey]: 0,\n [pageSizeKey]: 10,\n [pageNavigationArrayMaxKey]: 7,\n }), withComputed((store) => {\n const entities = store[entitiesKey];\n const page = store[pageKey];\n const pageSize = store[pageSizeKey];\n const pageNavigationArrayMax = store[pageNavigationArrayMaxKey];\n return {\n // The derived enitites which are displayed on the current page\n [selectedPageEntitiesKey]: computed(() => {\n const pageSizeValue = pageSize();\n const pageValue = page();\n return entities().slice(pageValue * pageSizeValue, (pageValue + 1) * pageSizeValue);\n }),\n [totalCountKey]: computed(() => entities().length),\n [pageCountKey]: computed(() => {\n const totalCountValue = entities().length;\n const pageSizeValue = pageSize();\n if (totalCountValue === 0) {\n return 0;\n }\n return Math.ceil(totalCountValue / pageSizeValue);\n }),\n [pageNavigationArrayKey]: computed(() => createPageArray(page(), pageSize(), entities().length, pageNavigationArrayMax())),\n [hasNextPageKey]: computed(() => {\n return page() < pageSize();\n }),\n [hasPreviousPageKey]: computed(() => {\n return page() > 1;\n }),\n };\n }));\n}\nexport function gotoPage(page, options) {\n const { pageKey } = createPaginationKeys(options);\n return {\n [pageKey]: page,\n };\n}\nexport function setPageSize(pageSize, options) {\n const { pageSizeKey } = createPaginationKeys(options);\n return {\n [pageSizeKey]: pageSize,\n };\n}\nexport function nextPage(options) {\n const { pageKey } = createPaginationKeys(options);\n return (state) => {\n const currentPage = state[pageKey];\n return { [pageKey]: currentPage + 1 };\n };\n}\nexport function previousPage(options) {\n const { pageKey } = createPaginationKeys(options);\n return (state) => {\n const currentPage = state[pageKey];\n return { [pageKey]: currentPage - 1 };\n };\n}\nexport function firstPage(options) {\n const { pageKey } = createPaginationKeys(options);\n return { [pageKey]: 0 };\n}\nexport function setMaxPageNavigationArrayItems(maxPageNavigationArrayItems, options) {\n const { pageNavigationArrayMaxKey } = createPaginationKeys(options);\n return {\n [pageNavigationArrayMaxKey]: maxPageNavigationArrayItems,\n };\n}\nfunction createPaginationKeys(options) {\n const entitiesKey = options?.collection\n ? `${options.collection}Entities`\n : 'entities';\n const selectedPageEntitiesKey = options?.collection\n ? `selectedPage${capitalize(options?.collection)}Entities`\n : 'selectedPageEntities';\n const pageKey = options?.collection\n ? `${options.collection}CurrentPage`\n : 'currentPage';\n const pageSizeKey = options?.collection\n ? `${options.collection}PageSize`\n : 'pageSize';\n const totalCountKey = options?.collection\n ? `${options.collection}TotalCount`\n : 'totalCount';\n const pageCountKey = options?.collection\n ? `${options.collection}PageCount`\n : 'pageCount';\n const pageNavigationArrayMaxKey = options?.collection\n ? `${options.collection}PageNavigationArrayMax`\n : 'pageNavigationArrayMax';\n const pageNavigationArrayKey = options?.collection\n ? `${options.collection}PageNavigationArray`\n : 'pageNavigationArray';\n const hasNextPageKey = options?.collection\n ? `hasNext${capitalize(options.collection)}Page`\n : 'hasNextPage';\n const hasPreviousPageKey = options?.collection\n ? `hasPrevious${capitalize(options.collection)}Page`\n : 'hasPreviousPage';\n return {\n pageKey,\n pageSizeKey,\n entitiesKey,\n selectedPageEntitiesKey,\n totalCountKey,\n pageCountKey,\n pageNavigationArrayKey,\n pageNavigationArrayMaxKey,\n hasNextPageKey,\n hasPreviousPageKey,\n };\n}\nexport function createPageArray(currentPage, itemsPerPage, totalItems, paginationRange) {\n // Convert paginationRange to number in case it's a string\n paginationRange = +paginationRange;\n // Calculate total number of pages\n const totalPages = Math.max(Math.ceil(totalItems / itemsPerPage), 1);\n const halfWay = Math.ceil(paginationRange / 2);\n const isStart = currentPage <= halfWay;\n const isEnd = totalPages - halfWay < currentPage;\n const isMiddle = !isStart && !isEnd;\n const ellipsesNeeded = paginationRange < totalPages;\n const pages = [];\n for (let i = 1; i <= totalPages && i <= paginationRange; i++) {\n let pageNumber = i;\n if (i === paginationRange) {\n pageNumber = totalPages;\n }\n else if (ellipsesNeeded) {\n if (isEnd) {\n pageNumber = totalPages - paginationRange + i;\n }\n else if (isMiddle) {\n pageNumber = currentPage - halfWay + i;\n }\n }\n const openingEllipsesNeeded = i === 2 && (isMiddle || isEnd);\n const closingEllipsesNeeded = i === paginationRange - 1 && (isMiddle || isStart);\n const label = ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)\n ? '...'\n : pageNumber;\n pages.push({ label, value: pageNumber });\n }\n return pages;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1wYWdpbmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi93aXRoLXBhZ2luYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBdUdqRCxNQUFNLFVBQVUsY0FBYyxDQUErQixPQUc1RDtJQUNDLE1BQU0sRUFDSixPQUFPLEVBQ1AsV0FBVyxFQUNYLFdBQVcsRUFDWCx1QkFBdUIsRUFDdkIsYUFBYSxFQUNiLFlBQVksRUFDWix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCxrQkFBa0IsR0FDbkIsR0FBRyxvQkFBb0IsQ0FBYSxPQUFPLENBQUMsQ0FBQztJQUU5QyxPQUFPLGtCQUFrQixDQUN2QixTQUFTLENBQUM7UUFDUixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWixDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUU7UUFDakIsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7S0FDL0IsQ0FBQyxFQUNGLFlBQVksQ0FBQyxDQUFDLEtBQThCLEVBQUUsRUFBRTtRQUM5QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFnQixDQUFDO1FBQ25ELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQW1CLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBbUIsQ0FBQztRQUN0RCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FDbEMseUJBQXlCLENBQ1IsQ0FBQztRQUVwQixPQUFPO1lBQ0wsK0RBQStEO1lB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QkFBcUIsSUFBSSxxQkFBcUIsQ0FBQztZQUNoRSxDQUFDLENBQUMsS0FBSztZQUNQLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFFakIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFdpdGggcGFnaW5hdGlvbiBjb21lcyBpbiB0d28gZmxhdm9ycyB0aGUgZmlyc3Qgb25lIGlzIGxvY2FsIHBhZ2luYXRpb24gb3IgaW4gbWVtb3J5IHBhZ2luYXRpb24uIEZvciBleGFtcGxlIHdlIGhhdmUgMjAwMCBpdGVtcyB3aGljaCB3ZSB3YW50XG4gKiB0byBkaXNwbGF5IGluIGEgdGFibGUgYW5kIHRoZSByZXNwb25zZSBwYXlsb2FkIGlzIHNtYWxsIGVub3VnaCB0byBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeS4gQnV0IHdlIGNhbiBub3QgZGlzcGxheSBhbGwgMjAwMCBpdGVtcyBhdCBvbmNlXG4gKiBzbyB3ZSBuZWVkIHRvIHBhZ2luYXRlIHRoZSBkYXRhLiBUaGUgc2Vjb25kIGZsYXZvciBpcyBzZXJ2ZXIgc2lkZSBwYWdpbmF0aW9uIHdoZXJlIHRoZSByZXNwb25zZSBwYXlsb2FkIGlzIHRvbyBsYXJnZSB0byBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeVxuICogYW5kIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIGRhdGEgZnJvbSB0aGUgc2VydmVyIGluIGNodW5rcy4gSW4gdGhlIHNlY29uZCBjYXNlIHdlICdjb3VsZCcgYWxzbyBjYWNoZSB0aGUgZGF0YSBpbiB0aGUgbWVtb3J5IGJ1dCB0aGF0IGNvdWxkIGxlYWQgdG9cbiAqIG90aGVyIHByb2JsZW1zIGxpa2UgbWVtb3J5IGxlYWtzIGFuZCBzdGFsZSBkYXRhLiBTbyB3ZSB3aWxsIG5vdCBjYWNoZSB0aGUgZGF0YSBpbiB0aGUgbWVtb3J5IGluIHRoZSBzZWNvbmQgY2FzZS5cbiAqIFRoaXMgZmVhdHVyZSBpbXBsZW1lbnRzIHRoZSBsb2NhbCBwYWdpbmF0aW9uLlxuICovXG5cbmltcG9ydCB7IFNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVtcHR5RmVhdHVyZVJlc3VsdCxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIHdpdGhDb21wdXRlZCxcbiAgd2l0aFN0YXRlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tICcuL3dpdGgtZGF0YS1zZXJ2aWNlJztcblxuLy8gVGhpcyBpcyBhIHZpcnR1YWwgcGFnZSB3aGljaCBpcyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSBwYWdpbmF0aW9uIGNvbnRyb2xcbmV4cG9ydCB0eXBlIFBhZ2UgPSB7IGxhYmVsOiBzdHJpbmcgfCBudW1iZXI7IHZhbHVlOiBudW1iZXIgfTtcblxuZXhwb3J0IHR5cGUgTmFtZWRQYWdpbmF0aW9uU2VydmljZVN0YXRlPEUsIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBzZWxlY3RlZFBhZ2Uke0NhcGl0YWxpemU8Sz59RW50aXRpZXNgXTogQXJyYXk8RT47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1DdXJyZW50UGFnZWBdOiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1QYWdlU2l6ZWBdOiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1Ub3RhbENvdW50YF06IG51bWJlcjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fVBhZ2VDb3VudGBdOiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1QYWdlTmF2aWdhdGlvbkFycmF5YF06IG51bWJlcjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fVBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhgXTogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTmFtZWRQYWdpbmF0aW9uU2VydmljZVNpZ25hbHM8RSwgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4gPSB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYHNlbGVjdGVkUGFnZSR7Q2FwaXRhbGl6ZTxLPn1FbnRpdGllc2BdOiBTaWduYWw8RVtdPjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fUN1cnJlbnRQYWdlYF06IFNpZ25hbDxudW1iZXI+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgJHtMb3dlcmNhc2U8Sz59UGFnZVNpemVgXTogU2lnbmFsPG51bWJlcj47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1Ub3RhbENvdW50YF06IFNpZ25hbDxudW1iZXI+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgJHtMb3dlcmNhc2U8Sz59UGFnZUNvdW50YF06IFNpZ25hbDxudW1iZXI+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgJHtMb3dlcmNhc2U8Sz59UGFnZU5hdmlnYXRpb25BcnJheWBdOiBTaWduYWw8UGFnZVtdPjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fVBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhgXTogU2lnbmFsPG51bWJlcj47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBoYXNOZXh0JHtDYXBpdGFsaXplPEs+fVBhZ2VgXTogU2lnbmFsPGJvb2xlYW4+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgaGFzUHJldmlvdXMke0NhcGl0YWxpemU8Sz59UGFnZWBdOiBTaWduYWw8Ym9vbGVhbj47XG59O1xuXG5leHBvcnQgdHlwZSBQYWdpbmF0aW9uU2VydmljZVN0YXRlPEU+ID0ge1xuICBzZWxlY3RlZFBhZ2VFbnRpdGllczogQXJyYXk8RT47XG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgcGFnZUNvdW50OiBudW1iZXI7XG4gIHBhZ2VOYXZpZ2F0aW9uQXJyYXk6IFBhZ2VbXTtcbiAgcGFnZU5hdmlnYXRpb25BcnJheU1heDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgUGFnaW5hdGlvblNlcnZpY2VTaWduYWxzPEU+ID0ge1xuICBzZWxlY3RlZFBhZ2VFbnRpdGllczogU2lnbmFsPEVbXT47XG4gIGN1cnJlbnRQYWdlOiBTaWduYWw8bnVtYmVyPjtcbiAgcGFnZVNpemU6IFNpZ25hbDxudW1iZXI+O1xuICB0b3RhbENvdW50OiBTaWduYWw8bnVtYmVyPjtcbiAgcGFnZUNvdW50OiBTaWduYWw8bnVtYmVyPjtcbiAgcGFnZU5hdmlnYXRpb25BcnJheTogU2lnbmFsPFBhZ2VbXT47XG4gIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXg6IFNpZ25hbDxudW1iZXI+O1xuICBoYXNOZXh0UGFnZTogU2lnbmFsPGJvb2xlYW4+O1xuICBoYXNQcmV2aW91c1BhZ2U6IFNpZ25hbDxib29sZWFuPjtcbn07XG5cbnR5cGUgUGFnZVN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+ID1cbiAgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZ1xuICAgID8ge1xuICAgICAgICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1DdXJyZW50UGFnZWBdOiBudW1iZXI7XG4gICAgICB9XG4gICAgOiB7IGN1cnJlbnRQYWdlOiBudW1iZXIgfTtcblxudHlwZSBQYWdlU2l6ZVN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+ID1cbiAgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZ1xuICAgID8ge1xuICAgICAgICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1QYWdlU2l6ZWBdOiBudW1iZXI7XG4gICAgICB9XG4gICAgOiB7IHBhZ2VTaXplOiBudW1iZXIgfTtcblxuZXhwb3J0IHR5cGUgU2V0UGFnaW5hdGlvblN0YXRlPFxuICBFLFxuICBDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuPiA9IENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmdcbiAgPyBOYW1lZFBhZ2luYXRpb25TZXJ2aWNlU3RhdGU8RSwgQ29sbGVjdGlvbj5cbiAgOiBQYWdpbmF0aW9uU2VydmljZVN0YXRlPEU+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFBhZ2luYXRpb248RSwgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4ob3B0aW9uczoge1xuICBlbnRpdHk6IEU7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHtcbiAgICBzdGF0ZTogTmFtZWRQYWdpbmF0aW9uU2VydmljZVN0YXRlPEUsIENvbGxlY3Rpb24+O1xuICAgIHByb3BzOiBOYW1lZFBhZ2luYXRpb25TZXJ2aWNlU2lnbmFsczxFLCBDb2xsZWN0aW9uPjtcbiAgfVxuPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhQYWdpbmF0aW9uPEU+KCk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IFBhZ2luYXRpb25TZXJ2aWNlU3RhdGU8RT47XG4gICAgcHJvcHM6IFBhZ2luYXRpb25TZXJ2aWNlU2lnbmFsczxFPjtcbiAgfVxuPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhQYWdpbmF0aW9uPEUsIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGVudGl0eTogRTtcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjtcbn0pOiBTaWduYWxTdG9yZUZlYXR1cmUge1xuICBjb25zdCB7XG4gICAgcGFnZUtleSxcbiAgICBwYWdlU2l6ZUtleSxcbiAgICBlbnRpdGllc0tleSxcbiAgICBzZWxlY3RlZFBhZ2VFbnRpdGllc0tleSxcbiAgICB0b3RhbENvdW50S2V5LFxuICAgIHBhZ2VDb3VudEtleSxcbiAgICBwYWdlTmF2aWdhdGlvbkFycmF5TWF4S2V5LFxuICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlLZXksXG4gICAgaGFzTmV4dFBhZ2VLZXksXG4gICAgaGFzUHJldmlvdXNQYWdlS2V5LFxuICB9ID0gY3JlYXRlUGFnaW5hdGlvbktleXM8Q29sbGVjdGlvbj4ob3B0aW9ucyk7XG5cbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoe1xuICAgICAgW3BhZ2VLZXldOiAwLFxuICAgICAgW3BhZ2VTaXplS2V5XTogMTAsXG4gICAgICBbcGFnZU5hdmlnYXRpb25BcnJheU1heEtleV06IDcsXG4gICAgfSksXG4gICAgd2l0aENvbXB1dGVkKChzdG9yZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICAgIGNvbnN0IGVudGl0aWVzID0gc3RvcmVbZW50aXRpZXNLZXldIGFzIFNpZ25hbDxFW10+O1xuICAgICAgY29uc3QgcGFnZSA9IHN0b3JlW3BhZ2VLZXldIGFzIFNpZ25hbDxudW1iZXI+O1xuICAgICAgY29uc3QgcGFnZVNpemUgPSBzdG9yZVtwYWdlU2l6ZUtleV0gYXMgU2lnbmFsPG51bWJlcj47XG4gICAgICBjb25zdCBwYWdlTmF2aWdhdGlvbkFycmF5TWF4ID0gc3RvcmVbXG4gICAgICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhLZXlcbiAgICAgIF0gYXMgU2lnbmFsPG51bWJlcj47XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC8vIFRoZSBkZXJpdmVkIGVuaXRpdGVzIHdoaWNoIGFyZSBkaXNwbGF5ZWQgb24gdGhlIGN1cnJlbnQgcGFnZVxuICAgICAgICBbc2VsZWN0ZWRQYWdlRW50aXRpZXNLZXldOiBjb21wdXRlZDxFW10+KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYWdlU2l6ZVZhbHVlID0gcGFnZVNpemUoKTtcbiAgICAgICAgICBjb25zdCBwYWdlVmFsdWUgPSBwYWdlKCk7XG5cbiAgICAgICAgICByZXR1cm4gZW50aXRpZXMoKS5zbGljZShcbiAgICAgICAgICAgIHBhZ2VWYWx1ZSAqIHBhZ2VTaXplVmFsdWUsXG4gICAgICAgICAgICAocGFnZVZhbHVlICsgMSkgKiBwYWdlU2l6ZVZhbHVlLFxuICAgICAgICAgICkgYXMgRVtdO1xuICAgICAgICB9KSxcbiAgICAgICAgW3RvdGFsQ291bnRLZXldOiBjb21wdXRlZCgoKSA9PiBlbnRpdGllcygpLmxlbmd0aCksXG4gICAgICAgIFtwYWdlQ291bnRLZXldOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdG90YWxDb3VudFZhbHVlID0gZW50aXRpZXMoKS5sZW5ndGg7XG4gICAgICAgICAgY29uc3QgcGFnZVNpemVWYWx1ZSA9IHBhZ2VTaXplKCk7XG5cbiAgICAgICAgICBpZiAodG90YWxDb3VudFZhbHVlID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHRvdGFsQ291bnRWYWx1ZSAvIHBhZ2VTaXplVmFsdWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgW3BhZ2VOYXZpZ2F0aW9uQXJyYXlLZXldOiBjb21wdXRlZCgoKSA9PlxuICAgICAgICAgIGNyZWF0ZVBhZ2VBcnJheShcbiAgICAgICAgICAgIHBhZ2UoKSxcbiAgICAgICAgICAgIHBhZ2VTaXplKCksXG4gICAgICAgICAgICBlbnRpdGllcygpLmxlbmd0aCxcbiAgICAgICAgICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXgoKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuXG4gICAgICAgIFtoYXNOZXh0UGFnZUtleV06IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGFnZSgpIDwgcGFnZVNpemUoKTtcbiAgICAgICAgfSksXG5cbiAgICAgICAgW2hhc1ByZXZpb3VzUGFnZUtleV06IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGFnZSgpID4gMTtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ290b1BhZ2U8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4oXG4gIHBhZ2U6IG51bWJlcixcbiAgb3B0aW9ucz86IHtcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xuICB9LFxuKTogUGFnZVN0YXRlPENvbGxlY3Rpb24+IHtcbiAgY29uc3QgeyBwYWdlS2V5IH0gPSBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uPihvcHRpb25zKTtcblxuICByZXR1cm4ge1xuICAgIFtwYWdlS2V5XTogcGFnZSxcbiAgfSBhcyBQYWdlU3RhdGU8Q29sbGVjdGlvbj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQYWdlU2l6ZTxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPihcbiAgcGFnZVNpemU6IG51bWJlcixcbiAgb3B0aW9ucz86IHtcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xuICB9LFxuKSB7XG4gIGNvbnN0IHsgcGFnZVNpemVLZXkgfSA9IGNyZWF0ZVBhZ2luYXRpb25LZXlzPENvbGxlY3Rpb24+KG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgW3BhZ2VTaXplS2V5XTogcGFnZVNpemUsXG4gIH0gYXMgUGFnZVNpemVTdGF0ZTxDb2xsZWN0aW9uPjtcbn1cblxudHlwZSBTZXRQYWdlU3RhdGU8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZyB8IHVuZGVmaW5lZD4gPSAoXG4gIHN0YXRlOiBQYWdlU3RhdGU8Q29sbGVjdGlvbj4sXG4pID0+IFBhZ2VTdGF0ZTxDb2xsZWN0aW9uPjtcblxuZXhwb3J0IGZ1bmN0aW9uIG5leHRQYWdlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KTogU2V0UGFnZVN0YXRlPENvbGxlY3Rpb24+IHtcbiAgY29uc3QgeyBwYWdlS2V5IH0gPSBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uPihvcHRpb25zKTtcblxuICByZXR1cm4gKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KSA9PiB7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSBzdGF0ZVtwYWdlS2V5XTtcblxuICAgIHJldHVybiB7IFtwYWdlS2V5XTogY3VycmVudFBhZ2UgKyAxIH0gYXMgUGFnZVN0YXRlPENvbGxlY3Rpb24+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJldmlvdXNQYWdlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KTogU2V0UGFnZVN0YXRlPENvbGxlY3Rpb24+IHtcbiAgY29uc3QgeyBwYWdlS2V5IH0gPSBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uPihvcHRpb25zKTtcblxuICByZXR1cm4gKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KSA9PiB7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSBzdGF0ZVtwYWdlS2V5XTtcblxuICAgIHJldHVybiB7IFtwYWdlS2V5XTogY3VycmVudFBhZ2UgLSAxIH0gYXMgUGFnZVN0YXRlPENvbGxlY3Rpb24+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RQYWdlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KSB7XG4gIGNvbnN0IHsgcGFnZUtleSB9ID0gY3JlYXRlUGFnaW5hdGlvbktleXM8Q29sbGVjdGlvbj4ob3B0aW9ucyk7XG5cbiAgcmV0dXJuIHsgW3BhZ2VLZXldOiAwIH0gYXMgUGFnZVN0YXRlPENvbGxlY3Rpb24+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TWF4UGFnZU5hdmlnYXRpb25BcnJheUl0ZW1zPEUsIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KFxuICBtYXhQYWdlTmF2aWdhdGlvbkFycmF5SXRlbXM6IG51bWJlcixcbiAgb3B0aW9ucz86IHtcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xuICB9LFxuKTogUGFydGlhbDxTZXRQYWdpbmF0aW9uU3RhdGU8RSwgQ29sbGVjdGlvbj4+IHtcbiAgY29uc3QgeyBwYWdlTmF2aWdhdGlvbkFycmF5TWF4S2V5IH0gPVxuICAgIGNyZWF0ZVBhZ2luYXRpb25LZXlzPENvbGxlY3Rpb24+KG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgW3BhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhLZXldOiBtYXhQYWdlTmF2aWdhdGlvbkFycmF5SXRlbXMsXG4gIH0gYXMgUGFydGlhbDxTZXRQYWdpbmF0aW9uU3RhdGU8RSwgQ29sbGVjdGlvbj4+O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPihcbiAgb3B0aW9uczogeyBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uIH0gfCB1bmRlZmluZWQsXG4pIHtcbiAgY29uc3QgZW50aXRpZXNLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259RW50aXRpZXNgXG4gICAgOiAnZW50aXRpZXMnO1xuXG4gIGNvbnN0IHNlbGVjdGVkUGFnZUVudGl0aWVzS2V5ID0gb3B0aW9ucz8uY29sbGVjdGlvblxuICAgID8gYHNlbGVjdGVkUGFnZSR7Y2FwaXRhbGl6ZShvcHRpb25zPy5jb2xsZWN0aW9uKX1FbnRpdGllc2BcbiAgICA6ICdzZWxlY3RlZFBhZ2VFbnRpdGllcyc7XG5cbiAgY29uc3QgcGFnZUtleSA9IG9wdGlvbnM/LmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1DdXJyZW50UGFnZWBcbiAgICA6ICdjdXJyZW50UGFnZSc7XG5cbiAgY29uc3QgcGFnZVNpemVLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259UGFnZVNpemVgXG4gICAgOiAncGFnZVNpemUnO1xuXG4gIGNvbnN0IHRvdGFsQ291bnRLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259VG90YWxDb3VudGBcbiAgICA6ICd0b3RhbENvdW50JztcblxuICBjb25zdCBwYWdlQ291bnRLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259UGFnZUNvdW50YFxuICAgIDogJ3BhZ2VDb3VudCc7XG5cbiAgY29uc3QgcGFnZU5hdmlnYXRpb25BcnJheU1heEtleSA9IG9wdGlvbnM/LmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1QYWdlTmF2aWdhdGlvbkFycmF5TWF4YFxuICAgIDogJ3BhZ2VOYXZpZ2F0aW9uQXJyYXlNYXgnO1xuXG4gIGNvbnN0IHBhZ2VOYXZpZ2F0aW9uQXJyYXlLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259UGFnZU5hdmlnYXRpb25BcnJheWBcbiAgICA6ICdwYWdlTmF2aWdhdGlvbkFycmF5JztcblxuICBjb25zdCBoYXNOZXh0UGFnZUtleSA9IG9wdGlvbnM/LmNvbGxlY3Rpb25cbiAgICA/IGBoYXNOZXh0JHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9UGFnZWBcbiAgICA6ICdoYXNOZXh0UGFnZSc7XG5cbiAgY29uc3QgaGFzUHJldmlvdXNQYWdlS2V5ID0gb3B0aW9ucz8uY29sbGVjdGlvblxuICAgID8gYGhhc1ByZXZpb3VzJHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9UGFnZWBcbiAgICA6ICdoYXNQcmV2aW91c1BhZ2UnO1xuXG4gIHJldHVybiB7XG4gICAgcGFnZUtleSxcbiAgICBwYWdlU2l6ZUtleSxcbiAgICBlbnRpdGllc0tleSxcbiAgICBzZWxlY3RlZFBhZ2VFbnRpdGllc0tleSxcbiAgICB0b3RhbENvdW50S2V5LFxuICAgIHBhZ2VDb3VudEtleSxcbiAgICBwYWdlTmF2aWdhdGlvbkFycmF5S2V5LFxuICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhLZXksXG4gICAgaGFzTmV4dFBhZ2VLZXksXG4gICAgaGFzUHJldmlvdXNQYWdlS2V5LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFnZUFycmF5KFxuICBjdXJyZW50UGFnZTogbnVtYmVyLFxuICBpdGVtc1BlclBhZ2U6IG51bWJlcixcbiAgdG90YWxJdGVtczogbnVtYmVyLFxuICBwYWdpbmF0aW9uUmFuZ2U6IG51bWJlcixcbik6IFBhZ2VbXSB7XG4gIC8vIENvbnZlcnQgcGFnaW5hdGlvblJhbmdlIHRvIG51bWJlciBpbiBjYXNlIGl0J3MgYSBzdHJpbmdcbiAgcGFnaW5hdGlvblJhbmdlID0gK3BhZ2luYXRpb25SYW5nZTtcblxuICAvLyBDYWxjdWxhdGUgdG90YWwgbnVtYmVyIG9mIHBhZ2VzXG4gIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLm1heChNYXRoLmNlaWwodG90YWxJdGVtcyAvIGl0ZW1zUGVyUGFnZSksIDEpO1xuICBjb25zdCBoYWxmV2F5ID0gTWF0aC5jZWlsKHBhZ2luYXRpb25SYW5nZSAvIDIpO1xuXG4gIGNvbnN0IGlzU3RhcnQgPSBjdXJyZW50UGFnZSA8PSBoYWxmV2F5O1xuICBjb25zdCBpc0VuZCA9IHRvdGFsUGFnZXMgLSBoYWxmV2F5IDwgY3VycmVudFBhZ2U7XG4gIGNvbnN0IGlzTWlkZGxlID0gIWlzU3RhcnQgJiYgIWlzRW5kO1xuXG4gIGNvbnN0IGVsbGlwc2VzTmVlZGVkID0gcGFnaW5hdGlvblJhbmdlIDwgdG90YWxQYWdlcztcbiAgY29uc3QgcGFnZXM6IFBhZ2VbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IHRvdGFsUGFnZXMgJiYgaSA8PSBwYWdpbmF0aW9uUmFuZ2U7IGkrKykge1xuICAgIGxldCBwYWdlTnVtYmVyID0gaTtcblxuICAgIGlmIChpID09PSBwYWdpbmF0aW9uUmFuZ2UpIHtcbiAgICAgIHBhZ2VOdW1iZXIgPSB0b3RhbFBhZ2VzO1xuICAgIH0gZWxzZSBpZiAoZWxsaXBzZXNOZWVkZWQpIHtcbiAgICAgIGlmIChpc0VuZCkge1xuICAgICAgICBwYWdlTnVtYmVyID0gdG90YWxQYWdlcyAtIHBhZ2luYXRpb25SYW5nZSArIGk7XG4gICAgICB9IGVsc2UgaWYgKGlzTWlkZGxlKSB7XG4gICAgICAgIHBhZ2VOdW1iZXIgPSBjdXJyZW50UGFnZSAtIGhhbGZXYXkgKyBpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9wZW5pbmdFbGxpcHNlc05lZWRlZCA9IGkgPT09IDIgJiYgKGlzTWlkZGxlIHx8IGlzRW5kKTtcbiAgICBjb25zdCBjbG9zaW5nRWxsaXBzZXNOZWVkZWQgPVxuICAgICAgaSA9PT0gcGFnaW5hdGlvblJhbmdlIC0gMSAmJiAoaXNNaWRkbGUgfHwgaXNTdGFydCk7XG5cbiAgICBjb25zdCBsYWJlbCA9XG4gICAgICBlbGxpcHNlc05lZWRlZCAmJiAob3BlbmluZ0VsbGlwc2VzTmVlZGVkIHx8IGNsb3NpbmdFbGxpcHNlc05lZWRlZClcbiAgICAgICAgPyAnLi4uJ1xuICAgICAgICA6IHBhZ2VOdW1iZXI7XG5cbiAgICBwYWdlcy5wdXNoKHsgbGFiZWwsIHZhbHVlOiBwYWdlTnVtYmVyIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBhZ2VzO1xufVxuIl19","import { getState, patchState, signalStoreFeature, withHooks, withMethods, withProps, } from '@ngrx/signals';\n/**\n * Adds a `resetState` method to the store, which resets the state\n * to the initial state.\n *\n * If you want to set a custom initial state, you can use {@link setResetState}.\n */\nexport function withReset() {\n return signalStoreFeature(withProps(() => ({ _resetState: { value: {} } })), withMethods((store) => {\n // workaround to TS excessive property check\n const methods = {\n resetState() {\n patchState(store, store._resetState.value);\n },\n __setResetState__(state) {\n store._resetState.value = state;\n },\n };\n return methods;\n }), withHooks((store) => ({\n onInit() {\n store._resetState.value = getState(store);\n },\n })));\n}\n/**\n * Sets the reset state of the store to the given state.\n *\n * Throws an error if the store is not configured with {@link withReset}.\n * @param store the instance of a SignalStore\n * @param state the state to set as the reset state\n */\nexport function setResetState(store, state) {\n if (!('__setResetState__' in store)) {\n throw new Error('Cannot set reset state, since store is not configured with withReset()');\n }\n store.__setResetState__(state);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZXNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFVBQVUsRUFDVixrQkFBa0IsRUFFbEIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFNdkI7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsU0FBUztJQUN2QixPQUFPLGtCQUFrQixDQUN2QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDakQsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFpQixFQUFFO1FBQ25DLDRDQUE0QztRQUM1QyxNQUFNLE9BQU8sR0FBRztZQUNkLFVBQVU7Z0JBQ1IsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxpQkFBaUIsQ0FBQyxLQUFhO2dCQUM3QixLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbEMsQ0FBQztTQUNGLENBQUM7UUFFRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEIsTUFBTTtZQUNKLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDO0tBQ0YsQ0FBQyxDQUFDLENBQ0osQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUMzQixLQUF5QixFQUN6QixLQUFZO0lBRVosSUFBSSxDQUFDLENBQUMsbUJBQW1CLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksS0FBSyxDQUNiLHdFQUF3RSxDQUN6RSxDQUFDO0lBQ0osQ0FBQztJQUNBLEtBQUssQ0FBQyxpQkFBNEMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2V0U3RhdGUsXG4gIHBhdGNoU3RhdGUsXG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU3RhdGVTb3VyY2UsXG4gIHdpdGhIb29rcyxcbiAgd2l0aE1ldGhvZHMsXG4gIHdpdGhQcm9wcyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5cbmV4cG9ydCB0eXBlIFB1YmxpY01ldGhvZHMgPSB7XG4gIHJlc2V0U3RhdGUoKTogdm9pZDtcbn07XG5cbi8qKlxuICogQWRkcyBhIGByZXNldFN0YXRlYCBtZXRob2QgdG8gdGhlIHN0b3JlLCB3aGljaCByZXNldHMgdGhlIHN0YXRlXG4gKiB0byB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAqXG4gKiBJZiB5b3Ugd2FudCB0byBzZXQgYSBjdXN0b20gaW5pdGlhbCBzdGF0ZSwgeW91IGNhbiB1c2Uge0BsaW5rIHNldFJlc2V0U3RhdGV9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc2V0KCkge1xuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhQcm9wcygoKSA9PiAoeyBfcmVzZXRTdGF0ZTogeyB2YWx1ZToge30gfSB9KSksXG4gICAgd2l0aE1ldGhvZHMoKHN0b3JlKTogUHVibGljTWV0aG9kcyA9PiB7XG4gICAgICAvLyB3b3JrYXJvdW5kIHRvIFRTIGV4Y2Vzc2l2ZSBwcm9wZXJ0eSBjaGVja1xuICAgICAgY29uc3QgbWV0aG9kcyA9IHtcbiAgICAgICAgcmVzZXRTdGF0ZSgpIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBzdG9yZS5fcmVzZXRTdGF0ZS52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIF9fc2V0UmVzZXRTdGF0ZV9fKHN0YXRlOiBvYmplY3QpIHtcbiAgICAgICAgICBzdG9yZS5fcmVzZXRTdGF0ZS52YWx1ZSA9IHN0YXRlO1xuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG1ldGhvZHM7XG4gICAgfSksXG4gICAgd2l0aEhvb2tzKChzdG9yZSkgPT4gKHtcbiAgICAgIG9uSW5pdCgpIHtcbiAgICAgICAgc3RvcmUuX3Jlc2V0U3RhdGUudmFsdWUgPSBnZXRTdGF0ZShzdG9yZSk7XG4gICAgICB9LFxuICAgIH0pKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSByZXNldCBzdGF0ZSBvZiB0aGUgc3RvcmUgdG8gdGhlIGdpdmVuIHN0YXRlLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3RvcmUgaXMgbm90IGNvbmZpZ3VyZWQgd2l0aCB7QGxpbmsgd2l0aFJlc2V0fS5cbiAqIEBwYXJhbSBzdG9yZSB0aGUgaW5zdGFuY2Ugb2YgYSBTaWduYWxTdG9yZVxuICogQHBhcmFtIHN0YXRlIHRoZSBzdGF0ZSB0byBzZXQgYXMgdGhlIHJlc2V0IHN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZXNldFN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RvcmU6IFN0YXRlU291cmNlPFN0YXRlPixcbiAgc3RhdGU6IFN0YXRlLFxuKTogdm9pZCB7XG4gIGlmICghKCdfX3NldFJlc2V0U3RhdGVfXycgaW4gc3RvcmUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBzZXQgcmVzZXQgc3RhdGUsIHNpbmNlIHN0b3JlIGlzIG5vdCBjb25maWd1cmVkIHdpdGggd2l0aFJlc2V0KCknLFxuICAgICk7XG4gIH1cbiAgKHN0b3JlLl9fc2V0UmVzZXRTdGF0ZV9fIGFzIChzdGF0ZTogU3RhdGUpID0+IHZvaWQpKHN0YXRlKTtcbn1cbiJdfQ==","import { isSignal, signal, untracked } from '@angular/core';\nimport { patchState, signalStoreFeature, watchState, withComputed, withHooks, withMethods, } from '@ngrx/signals';\nimport { capitalize } from './with-data-service';\nconst defaultOptions = {\n maxStackSize: 100,\n keys: [],\n skip: 0,\n};\nexport function getUndoRedoKeys(collections) {\n if (collections) {\n return collections.flatMap((c) => [\n `${c}EntityMap`,\n `${c}Ids`,\n `selected${capitalize(c)}Ids`,\n `${c}Filter`,\n ]);\n }\n return ['entityMap', 'ids', 'selectedIds', 'filter'];\n}\nexport function withUndoRedo(options) {\n let previous = null;\n let skipOnce = false;\n const normalized = {\n ...defaultOptions,\n ...options,\n };\n //\n // Design Decision: This feature has its own\n // internal state.\n //\n const undoStack = [];\n const redoStack = [];\n const canUndo = signal(false, ...(ngDevMode ? [{ debugName: \"canUndo\" }] : []));\n const canRedo = signal(false, ...(ngDevMode ? [{ debugName: \"canRedo\" }] : []));\n const updateInternal = () => {\n canUndo.set(undoStack.length !== 0);\n canRedo.set(redoStack.length !== 0);\n };\n const keys = [...getUndoRedoKeys(normalized.collections), ...normalized.keys];\n return signalStoreFeature(withComputed(() => ({\n canUndo: canUndo.asReadonly(),\n canRedo: canRedo.asReadonly(),\n })), withMethods((store) => ({\n undo() {\n const item = undoStack.pop();\n if (item && previous) {\n redoStack.push(previous);\n }\n if (item) {\n skipOnce = true;\n patchState(store, item);\n previous = item;\n }\n updateInternal();\n },\n redo() {\n const item = redoStack.pop();\n if (item && previous) {\n undoStack.push(previous);\n }\n if (item) {\n skipOnce = true;\n patchState(store, item);\n previous = item;\n }\n updateInternal();\n },\n clearStack() {\n undoStack.splice(0);\n redoStack.splice(0);\n previous = null;\n updateInternal();\n },\n })), withHooks({\n onInit(store) {\n watchState(store, () => {\n const cand = keys.reduce((acc, key) => {\n const s = store[key];\n if (s && isSignal(s)) {\n return {\n ...acc,\n [key]: s(),\n };\n }\n return acc;\n }, {});\n if (normalized.skip > 0) {\n normalized.skip--;\n return;\n }\n if (skipOnce) {\n skipOnce = false;\n return;\n }\n //\n // Deep Comparison to prevent duplicated entries\n // on the stack. This can e.g. happen after an undo\n // if the component sends back the undone filter\n // to the store.\n //\n if (JSON.stringify(cand) === JSON.stringify(previous)) {\n return;\n }\n // Clear redoStack after recorded action\n redoStack.splice(0);\n if (previous) {\n undoStack.push(previous);\n }\n if (redoStack.length > normalized.maxStackSize) {\n undoStack.unshift();\n }\n previous = cand;\n // Don't propogate current reactive context\n untracked(() => updateInternal());\n });\n },\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC11bmRvLXJlZG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtdW5kby1yZWRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBSUwsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBV2pELE1BQU0sY0FBYyxHQUE4QjtJQUNoRCxZQUFZLEVBQUUsR0FBRztJQUNqQixJQUFJLEVBQUUsRUFBRTtJQUNSLElBQUksRUFBRSxDQUFDO0NBQ1IsQ0FBQztBQUVGLE1BQU0sVUFBVSxlQUFlLENBQUMsV0FBc0I7SUFDcEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQixPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxXQUFXO1lBQ2YsR0FBRyxDQUFDLEtBQUs7WUFDVCxXQUFXLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSztZQUM3QixHQUFHLENBQUMsUUFBUTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQW9CRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixPQUFnQztJQWVoQyxJQUFJLFFBQVEsR0FBcUIsSUFBSSxDQUFDO0lBQ3RDLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztJQUVyQixNQUFNLFVBQVUsR0FBRztRQUNqQixHQUFHLGNBQWM7UUFDakIsR0FBRyxPQUFPO0tB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QUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUVQLElBQUksVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNsQixPQUFPO2dCQUNULENBQUM7Z0JBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUNqQixPQUFPO2dCQUNULENBQUM7Z0JBRUQsRUFBRTtnQkFDRixnREFBZ0Q7Z0JBQ2hELG1EQUFtRDtnQkFDbkQsZ0RBQWdEO2dCQUNoRCxnQkFBZ0I7Z0JBQ2hCLEVBQUU7Z0JBQ0YsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDdEQsT0FBTztnQkFDVCxDQUFDO2dCQUVELHdDQUF3QztnQkFDeEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFcEIsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQixDQUFDO2dCQUVELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQy9DLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztnQkFFRCxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUVoQiwyQ0FBMkM7Z0JBQzNDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCwgaXNTaWduYWwsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBwYXRjaFN0YXRlLFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIHdhdGNoU3RhdGUsXG4gIHdpdGhDb21wdXRlZCxcbiAgd2l0aEhvb2tzLFxuICB3aXRoTWV0aG9kcyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBjYXBpdGFsaXplIH0gZnJvbSAnLi93aXRoLWRhdGEtc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIFN0YWNrSXRlbSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgdHlwZSBOb3JtYWxpemVkVW5kb1JlZG9PcHRpb25zID0ge1xuICBtYXhTdGFja1NpemU6IG51bWJlcjtcbiAgY29sbGVjdGlvbnM/OiBzdHJpbmdbXTtcbiAga2V5czogc3RyaW5nW107XG4gIHNraXA6IG51bWJlcjtcbn07XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOb3JtYWxpemVkVW5kb1JlZG9PcHRpb25zID0ge1xuICBtYXhTdGFja1NpemU6IDEwMCxcbiAga2V5czogW10sXG4gIHNraXA6IDAsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5kb1JlZG9LZXlzKGNvbGxlY3Rpb25zPzogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIGlmIChjb2xsZWN0aW9ucykge1xuICAgIHJldHVybiBjb2xsZWN0aW9ucy5mbGF0TWFwKChjKSA9PiBbXG4gICAgICBgJHtjfUVudGl0eU1hcGAsXG4gICAgICBgJHtjfUlkc2AsXG4gICAgICBgc2VsZWN0ZWQke2NhcGl0YWxpemUoYyl9SWRzYCxcbiAgICAgIGAke2N9RmlsdGVyYCxcbiAgICBdKTtcbiAgfVxuICByZXR1cm4gWydlbnRpdHlNYXAnLCAnaWRzJywgJ3NlbGVjdGVkSWRzJywgJ2ZpbHRlciddO1xufVxuXG50eXBlIE5vbk5ldmVyPFQ+ID0gVCBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBUO1xuXG50eXBlIEV4dHJhY3RFbnRpdHlDb2xsZWN0aW9uPFQ+ID0gVCBleHRlbmRzIGAke2luZmVyIFV9RW50aXRpZXNgID8gVSA6IG5ldmVyO1xuXG50eXBlIEV4dHJhY3RFbnRpdHlDb2xsZWN0aW9uczxTdG9yZSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4gPVxuICBOb25OZXZlcjxcbiAgICB7XG4gICAgICBbSyBpbiBrZXlvZiBTdG9yZVsncHJvcHMnXV06IEV4dHJhY3RFbnRpdHlDb2xsZWN0aW9uPEs+O1xuICAgIH1ba2V5b2YgU3RvcmVbJ3Byb3BzJ11dXG4gID47XG5cbnR5cGUgT3B0aW9uc0ZvclN0YXRlPFN0b3JlIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PiA9IFBhcnRpYWw8XG4gIE9taXQ8Tm9ybWFsaXplZFVuZG9SZWRvT3B0aW9ucywgJ2NvbGxlY3Rpb25zJyB8ICdrZXlzJz5cbj4gJiB7XG4gIGNvbGxlY3Rpb25zPzogRXh0cmFjdEVudGl0eUNvbGxlY3Rpb25zPFN0b3JlPltdO1xuICBrZXlzPzogKGtleW9mIFN0b3JlWydzdGF0ZSddKVtdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhVbmRvUmVkbzxJbnB1dCBleHRlbmRzIEVtcHR5RmVhdHVyZVJlc3VsdD4oXG4gIG9wdGlvbnM/OiBPcHRpb25zRm9yU3RhdGU8SW5wdXQ+LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBJbnB1dCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYge1xuICAgIHByb3BzOiB7XG4gICAgICBjYW5VbmRvOiBTaWduYWw8Ym9vbGVhbj47XG4gICAgICBjYW5SZWRvOiBTaWduYWw8Ym9vbGVhbj47XG4gICAgfTtcbiAgICBtZXRob2RzOiB7XG4gICAgICB1bmRvOiAoKSA9PiB2b2lkO1xuICAgICAgcmVkbzogKCkgPT4gdm9pZDtcbiAgICAgIGNsZWFyU3RhY2s6ICgpID0+IHZvaWQ7XG4gICAgfTtcbiAgfVxuPiB7XG4gIGxldCBwcmV2aW91czogU3RhY2tJdGVtIHwgbnVsbCA9IG51bGw7XG4gIGxldCBza2lwT25jZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB7XG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcblxuICAvL1xuICAvLyBEZXNpZ24gRGVjaXNpb246IFRoaXMgZmVhdHVyZSBoYXMgaXRzIG93blxuICAvLyBpbnRlcm5hbCBzdGF0ZS5cbiAgLy9cblxuICBjb25zdCB1bmRvU3RhY2s6IFN0YWNrSXRlbVtdID0gW107XG4gIGNvbnN0IHJlZG9TdGFjazogU3RhY2tJdGVtW10gPSBbXTtcblxuICBjb25zdCBjYW5VbmRvID0gc2lnbmFsKGZhbHNlKTtcbiAgY29uc3QgY2FuUmVkbyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3QgdXBkYXRlSW50ZXJuYWwgPSAoKSA9PiB7XG4gICAgY2FuVW5kby5zZXQodW5kb1N0YWNrLmxlbmd0aCAhPT0gMCk7XG4gICAgY2FuUmVkby5zZXQocmVkb1N0YWNrLmxlbmd0aCAhPT0gMCk7XG4gIH07XG5cbiAgY29uc3Qga2V5cyA9IFsuLi5nZXRVbmRvUmVkb0tleXMobm9ybWFsaXplZC5jb2xsZWN0aW9ucyksIC4uLm5vcm1hbGl6ZWQua2V5c107XG5cbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoQ29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIGNhblVuZG86IGNhblVuZG8uYXNSZWFkb25seSgpLFxuICAgICAgY2FuUmVkbzogY2FuUmVkby5hc1JlYWRvbmx5KCksXG4gICAgfSkpLFxuICAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAgICAgIHVuZG8oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB1bmRvU3RhY2sucG9wKCk7XG5cbiAgICAgICAgaWYgKGl0ZW0gJiYgcHJldmlvdXMpIHtcbiAgICAgICAgICByZWRvU3RhY2sucHVzaChwcmV2aW91cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIHNraXBPbmNlID0gdHJ1ZTtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBpdGVtKTtcbiAgICAgICAgICBwcmV2aW91cyA9IGl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVJbnRlcm5hbCgpO1xuICAgICAgfSxcbiAgICAgIHJlZG8oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSByZWRvU3RhY2sucG9wKCk7XG5cbiAgICAgICAgaWYgKGl0ZW0gJiYgcHJldmlvdXMpIHtcbiAgICAgICAgICB1bmRvU3RhY2sucHVzaChwcmV2aW91cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIHNraXBPbmNlID0gdHJ1ZTtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBpdGVtKTtcbiAgICAgICAgICBwcmV2aW91cyA9IGl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVJbnRlcm5hbCgpO1xuICAgICAgfSxcbiAgICAgIGNsZWFyU3RhY2soKTogdm9pZCB7XG4gICAgICAgIHVuZG9TdGFjay5zcGxpY2UoMCk7XG4gICAgICAgIHJlZG9TdGFjay5zcGxpY2UoMCk7XG4gICAgICAgIHByZXZpb3VzID0gbnVsbDtcbiAgICAgICAgdXBkYXRlSW50ZXJuYWwoKTtcbiAgICAgIH0sXG4gICAgfSkpLFxuICAgIHdpdGhIb29rcyh7XG4gICAgICBvbkluaXQoc3RvcmUpIHtcbiAgICAgICAgd2F0Y2hTdGF0ZShzdG9yZSwgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhbmQgPSBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSAoc3RvcmUgYXMgUmVjb3JkPHN0cmluZyB8IGtleW9mIElucHV0WydzdGF0ZSddLCB1bmtub3duPilbXG4gICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChzICYmIGlzU2lnbmFsKHMpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIFtrZXldOiBzKCksXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgIGlmIChub3JtYWxpemVkLnNraXAgPiAwKSB7XG4gICAgICAgICAgICBub3JtYWxpemVkLnNraXAtLTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2tpcE9uY2UpIHtcbiAgICAgICAgICAgIHNraXBPbmNlID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBEZWVwIENvbXBhcmlzb24gdG8gcHJldmVudCBkdXBsaWNhdGVkIGVudHJpZXNcbiAgICAgICAgICAvLyBvbiB0aGUgc3RhY2suIFRoaXMgY2FuIGUuZy4gaGFwcGVuIGFmdGVyIGFuIHVuZG9cbiAgICAgICAgICAvLyBpZiB0aGUgY29tcG9uZW50IHNlbmRzIGJhY2sgdGhlIHVuZG9uZSBmaWx0ZXJcbiAgICAgICAgICAvLyB0byB0aGUgc3RvcmUuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoY2FuZCkgPT09IEpTT04uc3RyaW5naWZ5KHByZXZpb3VzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENsZWFyIHJlZG9TdGFjayBhZnRlciByZWNvcmRlZCBhY3Rpb25cbiAgICAgICAgICByZWRvU3RhY2suc3BsaWNlKDApO1xuXG4gICAgICAgICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgICAgICB1bmRvU3RhY2sucHVzaChwcmV2aW91cyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlZG9TdGFjay5sZW5ndGggPiBub3JtYWxpemVkLm1heFN0YWNrU2l6ZSkge1xuICAgICAgICAgICAgdW5kb1N0YWNrLnVuc2hpZnQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwcmV2aW91cyA9IGNhbmQ7XG5cbiAgICAgICAgICAvLyBEb24ndCBwcm9wb2dhdGUgY3VycmVudCByZWFjdGl2ZSBjb250ZXh0XG4gICAgICAgICAgdW50cmFja2VkKCgpID0+IHVwZGF0ZUludGVybmFsKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG59XG4iXX0=","/**\n * Deep freezes a state object along its properties with primitive values\n * on the first level.\n *\n * The reason for this is that the final state is a merge of all\n * root properties of all states, i.e. `withState`,....\n *\n * Since the root object will not be part of the state (shadow clone),\n * we are not freezing it.\n */\nexport function deepFreeze(target, \n// if empty all properties will be frozen\npropertyNamesToBeFrozen, \n// also means that we are on the first level\nisRoot = true) {\n const runPropertyNameCheck = propertyNamesToBeFrozen.length > 0;\n for (const key of Reflect.ownKeys(target)) {\n if (runPropertyNameCheck && !propertyNamesToBeFrozen.includes(key)) {\n continue;\n }\n const propValue = target[key];\n if (isRecordLike(propValue) && !Object.isFrozen(propValue)) {\n Object.freeze(propValue);\n deepFreeze(propValue, [], false);\n }\n else if (isRoot) {\n Object.defineProperty(target, key, {\n value: propValue,\n writable: false,\n configurable: false,\n });\n }\n }\n}\nfunction isRecordLike(target) {\n return typeof target === 'object' && target !== null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcC1mcmVlemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2ltbXV0YWJsZS1zdGF0ZS9kZWVwLWZyZWV6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFFSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixNQUFTO0FBQ1QseUNBQXlDO0FBQ3pDLHVCQUE0QztBQUM1Qyw0Q0FBNEM7QUFDNUMsTUFBTSxHQUFHLElBQUk7SUFFYixNQUFNLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDaEUsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUMsSUFBSSxvQkFBb0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25FLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzNELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekIsVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksTUFBTSxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO2dCQUNqQyxLQUFLLEVBQUUsU0FBUztnQkFDaEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsWUFBWSxFQUFFLEtBQUs7YUFDcEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQ25CLE1BQWU7SUFFZixPQUFPLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlZXAgZnJlZXplcyBhIHN0YXRlIG9iamVjdCBhbG9uZyBpdHMgcHJvcGVydGllcyB3aXRoIHByaW1pdGl2ZSB2YWx1ZXNcbiAqIG9uIHRoZSBmaXJzdCBsZXZlbC5cbiAqXG4gKiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgdGhlIGZpbmFsIHN0YXRlIGlzIGEgbWVyZ2Ugb2YgYWxsXG4gKiByb290IHByb3BlcnRpZXMgb2YgYWxsIHN0YXRlcywgaS5lLiBgd2l0aFN0YXRlYCwuLi4uXG4gKlxuICogU2luY2UgdGhlIHJvb3Qgb2JqZWN0IHdpbGwgbm90IGJlIHBhcnQgb2YgdGhlIHN0YXRlIChzaGFkb3cgY2xvbmUpLFxuICogd2UgYXJlIG5vdCBmcmVlemluZyBpdC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZGVlcEZyZWV6ZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4+KFxuICB0YXJnZXQ6IFQsXG4gIC8vIGlmIGVtcHR5IGFsbCBwcm9wZXJ0aWVzIHdpbGwgYmUgZnJvemVuXG4gIHByb3BlcnR5TmFtZXNUb0JlRnJvemVuOiAoc3RyaW5nIHwgc3ltYm9sKVtdLFxuICAvLyBhbHNvIG1lYW5zIHRoYXQgd2UgYXJlIG9uIHRoZSBmaXJzdCBsZXZlbFxuICBpc1Jvb3QgPSB0cnVlLFxuKTogdm9pZCB7XG4gIGNvbnN0IHJ1blByb3BlcnR5TmFtZUNoZWNrID0gcHJvcGVydHlOYW1lc1RvQmVGcm96ZW4ubGVuZ3RoID4gMDtcbiAgZm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKHRhcmdldCkpIHtcbiAgICBpZiAocnVuUHJvcGVydHlOYW1lQ2hlY2sgJiYgIXByb3BlcnR5TmFtZXNUb0JlRnJvemVuLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BWYWx1ZSA9IHRhcmdldFtrZXldO1xuICAgIGlmIChpc1JlY29yZExpa2UocHJvcFZhbHVlKSAmJiAhT2JqZWN0LmlzRnJvemVuKHByb3BWYWx1ZSkpIHtcbiAgICAgIE9iamVjdC5mcmVlemUocHJvcFZhbHVlKTtcbiAgICAgIGRlZXBGcmVlemUocHJvcFZhbHVlLCBbXSwgZmFsc2UpO1xuICAgIH0gZWxzZSBpZiAoaXNSb290KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgdmFsdWU6IHByb3BWYWx1ZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzUmVjb3JkTGlrZShcbiAgdGFyZ2V0OiB1bmtub3duLFxuKTogdGFyZ2V0IGlzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIHVua25vd24+IHtcbiAgcmV0dXJuIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmIHRhcmdldCAhPT0gbnVsbDtcbn1cbiJdfQ==","import { isDevMode as ngIsInDevMode } from '@angular/core';\n// necessary wrapper function to test prod mode\nexport function isDevMode() {\n return ngIsInDevMode();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZGV2LW1vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2ltbXV0YWJsZS1zdGF0ZS9pcy1kZXYtbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxJQUFJLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCwrQ0FBK0M7QUFDL0MsTUFBTSxVQUFVLFNBQVM7SUFDdkIsT0FBTyxhQUFhLEVBQUUsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEZXZNb2RlIGFzIG5nSXNJbkRldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gbmVjZXNzYXJ5IHdyYXBwZXIgZnVuY3Rpb24gdG8gdGVzdCBwcm9kIG1vZGVcbmV4cG9ydCBmdW5jdGlvbiBpc0Rldk1vZGUoKSB7XG4gIHJldHVybiBuZ0lzSW5EZXZNb2RlKCk7XG59XG4iXX0=","import { getState, signalStoreFeature, watchState, withHooks, withState, } from '@ngrx/signals';\nimport { deepFreeze } from './deep-freeze';\nimport { isDevMode } from './is-dev-mode';\nexport function withImmutableState(stateOrFactory, options) {\n const immutableState = typeof stateOrFactory === 'function' ? stateOrFactory() : stateOrFactory;\n const stateKeys = Reflect.ownKeys(immutableState);\n const applyFreezing = isDevMode() || options?.enableInProduction === true;\n return signalStoreFeature(withState(immutableState), withHooks((store) => ({\n onInit() {\n if (!applyFreezing) {\n return;\n }\n /**\n * `immutableState` will be initially frozen. That is because\n * of potential mutations outside the SignalStore\n *\n * ```ts\n * const initialState = {user: {id: 1}};\n * signalStore(withImmutableState(initialState));\n *\n * initialState.user.id = 2; // must throw immutability\n * ```\n */\n deepFreeze(getState(store), stateKeys);\n watchState(store, (state) => {\n deepFreeze(state, stateKeys);\n });\n },\n })));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1pbW11dGFibGUtc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2ltbXV0YWJsZS1zdGF0ZS93aXRoLWltbXV0YWJsZS1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsUUFBUSxFQUNSLGtCQUFrQixFQUdsQixVQUFVLEVBQ1YsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFpRzFDLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsY0FBcUMsRUFDckMsT0FBMEM7SUFLMUMsTUFBTSxjQUFjLEdBQ2xCLE9BQU8sY0FBYyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUMzRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWxELE1BQU0sYUFBYSxHQUFHLFNBQVMsRUFBRSxJQUFJLE9BQU8sRUFBRSxrQkFBa0IsS0FBSyxJQUFJLENBQUM7SUFDMUUsT0FBTyxrQkFBa0IsQ0FDdkIsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUN6QixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEIsTUFBTTtZQUNKLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkIsT0FBTztZQUNULENBQUM7WUFDRDs7Ozs7Ozs7OztlQVVHO1lBQ0gsVUFBVSxDQUNSLFFBQVEsQ0FBQyxLQUFLLENBQXFDLEVBQ25ELFNBQVMsQ0FDVixDQUFDO1lBRUYsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMxQixVQUFVLENBQUMsS0FBeUMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDLENBQUMsQ0FDSixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVtcHR5RmVhdHVyZVJlc3VsdCxcbiAgZ2V0U3RhdGUsXG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIHdhdGNoU3RhdGUsXG4gIHdpdGhIb29rcyxcbiAgd2l0aFN0YXRlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGRlZXBGcmVlemUgfSBmcm9tICcuL2RlZXAtZnJlZXplJztcbmltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJy4vaXMtZGV2LW1vZGUnO1xuXG4vKipcbiAqIFN0YXJ0aW5nIGZyb20gdjIwLCB0aGUgcm9vdCBwcm9wZXJ0aWVzIG9mIHRoZSBzdGF0ZSBvYmplY3RcbiAqIGFyZSBhbGwgb2YgdHlwZSBgV3JpdGFibGVTaWduYWxgLlxuICpcbiAqIFRoYXQgbWVhbnMsIHdlIGNhbm5vdCBmcmVlemUgcm9vdCBwcm9wZXJ0aWVzLCB3aGljaCBhcmUgb2YgYVxuICogcHJpbWl0aXZlIGRhdGEgdHlwZS5cbiAqXG4gKiBUaGlzIGlzIGEgYnJlYWtpbmcgY2hhbmdlLCBiZWNhdXNlIGluIHYxOSB0aGUgc3RhdGUgd2FzIGEgU2lnbmFsLlxuICogV2UgaGFkIHRoZSBwb3NzaWJpbGl0eSB0byBmcmVlemUgdGhhdCBTaWduYWwnc1xuICogb2JqZWN0IGFuZCBjb3VsZCB0aGVyZWZvcmUgcHJvdmlkZSBpbW11dGFiaWxpdHkgZm9yXG4gKiByb290IHByb3BlcnRpZXMgb2YgcHJpbWl0aXZlIGRhdGEgdHlwZXMuXG4gKlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IHN0YXRlID0ge1xuICogICBpZDogMSwgLy8gd2FzIGZyb3plbiBpbiB2MTksIGJ1dCBub3QgaW4gPj0gdjIwXG4gKiAgIGFkZHJlc3M6IHtcbiAqICAgICBzdHJlZXQ6ICdNYWluIFN0JyxcbiAqICAgICBjaXR5OiAnU3ByaW5nZmllbGQnLFxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIFByZXZlbnRzIG11dGF0aW9uIG9mIHRoZSBzdGF0ZS5cbiAqXG4gKiBUaGlzIGlzIGRvbmUgYnkgYXBwbHlpbmcgYE9iamVjdC5mcmVlemVgIHRvIGVhY2ggcm9vdFxuICogcHJvcGVydHkgb2YgdGhlIHN0YXRlLiBBbnkgbXV0YWJsZSBjaGFuZ2Ugd2l0aGluXG4gKiBvciBvdXRzaWRlIHRoZSBgU2lnbmFsU3RvcmVgIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gKlxuICogUm9vdCBwcm9wZXJ0aWVzIG9mIHRoZSBzdGF0ZSBoYXZpbmcgYSBwcmltaXRpdmUgZGF0YSB0eXBlXG4gKiBhcmUgbm90IHN1cHBvcnRlZC5cbiAqXG4gKiAgKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgc3RhdGUgPSB7XG4gKiAgIC8vIOKblO+4jyBhcmUgbm90IGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgcG9zc2libGVcbiAqICAgaWQ6IDEsXG4gKlxuICogICAvLyDinIUgYXJlIGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgdGhyb3dcbiAqICAgYWRkcmVzczoge1xuICogICAgIHN0cmVldDogJ01haW4gU3QnLFxuICogICAgIGNpdHk6ICdTcHJpbmdmaWVsZCcsXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdGF0ZSB0aGUgc3RhdGUgb2JqZWN0XG4gKiBAcGFyYW0gb3B0aW9ucyBlbmFibGUgcHJvdGVjdGlvbiBpbiBwcm9kdWN0aW9uIChkZWZhdWx0OiBmYWxzZSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhJbW11dGFibGVTdGF0ZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0YXRlOiBTdGF0ZSxcbiAgb3B0aW9ucz86IHsgZW5hYmxlSW5Qcm9kdWN0aW9uPzogYm9vbGVhbiB9LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHsgc3RhdGU6IFN0YXRlIH1cbj47XG4vKipcbiAqIFByZXZlbnRzIG11dGF0aW9uIG9mIHRoZSBzdGF0ZS5cbiAqXG4gKiBUaGlzIGlzIGRvbmUgYnkgYXBwbHlpbmcgYE9iamVjdC5mcmVlemVgIHRvIGVhY2ggcm9vdFxuICogcHJvcGVydHkgb2YgdGhlIHN0YXRlLiBBbnkgbXV0YWJsZSBjaGFuZ2Ugd2l0aGluXG4gKiBvciBvdXRzaWRlIHRoZSBgU2lnbmFsU3RvcmVgIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gKlxuICogUm9vdCBwcm9wZXJ0aWVzIG9mIHRoZSBzdGF0ZSBoYXZpbmcgYSBwcmltaXRpdmUgZGF0YSB0eXBlXG4gKiBhcmUgbm90IHN1cHBvcnRlZC5cbiAqXG4gKiAgKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgc3RhdGUgPSB7XG4gKiAgIC8vIOKblO+4jyBhcmUgbm90IGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgcG9zc2libGVcbiAqICAgaWQ6IDEsXG4gKlxuICogICAvLyDinIUgYXJlIGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgdGhyb3dcbiAqICAgYWRkcmVzczoge1xuICogICAgIHN0cmVldDogJ01haW4gU3QnLFxuICogICAgIGNpdHk6ICdTcHJpbmdmaWVsZCcsXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdGF0ZUZhY3RvcnkgYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIHN0YXRlIG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnMgZW5hYmxlIHByb3RlY3Rpb24gaW4gcHJvZHVjdGlvbiAoZGVmYXVsdDogZmFsc2UpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoSW1tdXRhYmxlU3RhdGU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBzdGF0ZUZhY3Rvcnk6ICgpID0+IFN0YXRlLFxuICBvcHRpb25zPzogeyBlbmFibGVJblByb2R1Y3Rpb24/OiBib29sZWFuIH0sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBzdGF0ZTogU3RhdGUgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoSW1tdXRhYmxlU3RhdGU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBzdGF0ZU9yRmFjdG9yeTogU3RhdGUgfCAoKCkgPT4gU3RhdGUpLFxuICBvcHRpb25zPzogeyBlbmFibGVJblByb2R1Y3Rpb24/OiBib29sZWFuIH0sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBzdGF0ZTogU3RhdGUgfVxuPiB7XG4gIGNvbnN0IGltbXV0YWJsZVN0YXRlID1cbiAgICB0eXBlb2Ygc3RhdGVPckZhY3RvcnkgPT09ICdmdW5jdGlvbicgPyBzdGF0ZU9yRmFjdG9yeSgpIDogc3RhdGVPckZhY3Rvcnk7XG4gIGNvbnN0IHN0YXRlS2V5cyA9IFJlZmxlY3Qub3duS2V5cyhpbW11dGFibGVTdGF0ZSk7XG5cbiAgY29uc3QgYXBwbHlGcmVlemluZyA9IGlzRGV2TW9kZSgpIHx8IG9wdGlvbnM/LmVuYWJsZUluUHJvZHVjdGlvbiA9PT0gdHJ1ZTtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoaW1tdXRhYmxlU3RhdGUpLFxuICAgIHdpdGhIb29rcygoc3RvcmUpID0+ICh7XG4gICAgICBvbkluaXQoKSB7XG4gICAgICAgIGlmICghYXBwbHlGcmVlemluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogYGltbXV0YWJsZVN0YXRlYCB3aWxsIGJlIGluaXRpYWxseSBmcm96ZW4uIFRoYXQgaXMgYmVjYXVzZVxuICAgICAgICAgKiBvZiBwb3RlbnRpYWwgbXV0YXRpb25zIG91dHNpZGUgdGhlIFNpZ25hbFN0b3JlXG4gICAgICAgICAqXG4gICAgICAgICAqIGBgYHRzXG4gICAgICAgICAqIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHt1c2VyOiB7aWQ6IDF9fTtcbiAgICAgICAgICogc2lnbmFsU3RvcmUod2l0aEltbXV0YWJsZVN0YXRlKGluaXRpYWxTdGF0ZSkpO1xuICAgICAgICAgKlxuICAgICAgICAgKiBpbml0aWFsU3RhdGUudXNlci5pZCA9IDI7IC8vIG11c3QgdGhyb3cgaW1tdXRhYmlsaXR5XG4gICAgICAgICAqIGBgYFxuICAgICAgICAgKi9cbiAgICAgICAgZGVlcEZyZWV6ZShcbiAgICAgICAgICBnZXRTdGF0ZShzdG9yZSkgYXMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4sXG4gICAgICAgICAgc3RhdGVLZXlzLFxuICAgICAgICApO1xuXG4gICAgICAgIHdhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgIGRlZXBGcmVlemUoc3RhdGUgYXMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4sIHN0YXRlS2V5cyk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KSksXG4gICk7XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport const keyPath = 'ngrxToolkitKeyPath';\nexport const dbName = 'ngrxToolkitDb';\nexport const storeName = 'ngrxToolkitStore';\nexport const VERSION = 1;\nexport class IndexedDBService {\n /**\n * write to indexedDB\n * @param key\n * @param data\n */\n async setItem(key, data) {\n const db = await this.openDB();\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n store.put({\n [keyPath]: key,\n value: data,\n });\n return new Promise((resolve, reject) => {\n tx.oncomplete = () => {\n db.close();\n resolve();\n };\n tx.onerror = () => {\n db.close();\n reject();\n };\n });\n }\n /**\n * read from indexedDB\n * @param key\n */\n async getItem(key) {\n const db = await this.openDB();\n const tx = db.transaction(storeName, 'readonly');\n const store = tx.objectStore(storeName);\n const request = store.get(key);\n return new Promise((resolve, reject) => {\n request.onsuccess = () => {\n db.close();\n // localStorage(sessionStorage) returns null if the key does not exist\n // Similarly, indexedDB should return null\n if (request.result === undefined) {\n resolve(null);\n }\n resolve(request.result?.['value']);\n };\n request.onerror = () => {\n db.close();\n reject();\n };\n });\n }\n /**\n * delete indexedDB\n * @param key\n */\n async clear(key) {\n const db = await this.openDB();\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n const request = store.delete(key);\n return new Promise((resolve, reject) => {\n request.onsuccess = () => {\n db.close();\n resolve();\n };\n request.onerror = () => {\n db.close();\n reject();\n };\n });\n }\n /**\n * open indexedDB\n */\n async openDB() {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(dbName, VERSION);\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName, { keyPath });\n }\n };\n request.onsuccess = () => {\n resolve(request.result);\n };\n request.onerror = () => {\n reject(request.error);\n };\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: IndexedDBService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: IndexedDBService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: IndexedDBService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZGRiLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3N0b3JhZ2Utc3luYy9pbnRlcm5hbC9pbmRleGVkZGIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFXLENBQVUsQ0FBQztBQUcxQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRS9CLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWxELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNSLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztZQUNkLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxFQUFFLENBQUMsVUFBVSxHQUFHLEdBQVMsRUFBRTtnQkFDekIsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDO1lBRUYsRUFBRSxDQUFDLE9BQU8sR0FBRyxHQUFTLEVBQUU7Z0JBQ3RCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxNQUFNLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBVztRQUN2QixNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUUvQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVqRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFL0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxPQUFPLENBQUMsU0FBUyxHQUFHLEdBQVMsRUFBRTtnQkFDN0IsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLHNFQUFzRTtnQkFDdEUsMENBQTBDO2dCQUMxQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsQ0FBQztnQkFDRCxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDckMsQ0FBQyxDQUFDO1lBRUYsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFTLEVBQUU7Z0JBQzNCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxNQUFNLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBVztRQUNyQixNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUUvQixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVsRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXhDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxPQUFPLENBQUMsU0FBUyxHQUFHLEdBQVMsRUFBRTtnQkFDN0IsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDO1lBRUYsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFTLEVBQUU7Z0JBQzNCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWCxNQUFNLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLE1BQU07UUFDbEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztZQUVoRCxPQUFPLENBQUMsZUFBZSxHQUFHLEdBQUcsRUFBRTtnQkFDN0IsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFFMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDN0MsRUFBRSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQy9DLENBQUM7WUFDSCxDQUFDLENBQUM7WUFFRixPQUFPLENBQUMsU0FBUyxHQUFHLEdBQVMsRUFBRTtnQkFDN0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUM7WUFFRixPQUFPLENBQUMsT0FBTyxHQUFHLEdBQVMsRUFBRTtnQkFDM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBL0dVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTs7MkZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBrZXlQYXRoID0gJ25ncnhUb29sa2l0S2V5UGF0aCc7XG5cbmV4cG9ydCBjb25zdCBkYk5hbWUgPSAnbmdyeFRvb2xraXREYic7XG5cbmV4cG9ydCBjb25zdCBzdG9yZU5hbWUgPSAnbmdyeFRvb2xraXRTdG9yZSc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OOiBudW1iZXIgPSAxIGFzIGNvbnN0O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEluZGV4ZWREQlNlcnZpY2Uge1xuICAvKipcbiAgICogd3JpdGUgdG8gaW5kZXhlZERCXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIGFzeW5jIHNldEl0ZW0oa2V5OiBzdHJpbmcsIGRhdGE6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5vcGVuREIoKTtcblxuICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24oc3RvcmVOYW1lLCAncmVhZHdyaXRlJyk7XG5cbiAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKHN0b3JlTmFtZSk7XG5cbiAgICBzdG9yZS5wdXQoe1xuICAgICAgW2tleVBhdGhdOiBrZXksXG4gICAgICB2YWx1ZTogZGF0YSxcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0eC5vbmNvbXBsZXRlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICB0eC5vbmVycm9yID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICByZWplY3QoKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogcmVhZCBmcm9tIGluZGV4ZWREQlxuICAgKiBAcGFyYW0ga2V5XG4gICAqL1xuICBhc3luYyBnZXRJdGVtKGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLm9wZW5EQigpO1xuXG4gICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbihzdG9yZU5hbWUsICdyZWFkb25seScpO1xuXG4gICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZShzdG9yZU5hbWUpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLmdldChrZXkpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICAvLyBsb2NhbFN0b3JhZ2Uoc2Vzc2lvblN0b3JhZ2UpIHJldHVybnMgbnVsbCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0XG4gICAgICAgIC8vIFNpbWlsYXJseSwgaW5kZXhlZERCIHNob3VsZCByZXR1cm4gbnVsbFxuICAgICAgICBpZiAocmVxdWVzdC5yZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdD8uWyd2YWx1ZSddKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgZGIuY2xvc2UoKTtcbiAgICAgICAgcmVqZWN0KCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlbGV0ZSBpbmRleGVkREJcbiAgICogQHBhcmFtIGtleVxuICAgKi9cbiAgYXN5bmMgY2xlYXIoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYiA9IGF3YWl0IHRoaXMub3BlbkRCKCk7XG5cbiAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKHN0b3JlTmFtZSwgJ3JlYWR3cml0ZScpO1xuXG4gICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZShzdG9yZU5hbWUpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLmRlbGV0ZShrZXkpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgIHJlamVjdCgpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvcGVuIGluZGV4ZWREQlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBvcGVuREIoKTogUHJvbWlzZTxJREJEYXRhYmFzZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lLCBWRVJTSU9OKTtcblxuICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRiID0gcmVxdWVzdC5yZXN1bHQ7XG5cbiAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKHN0b3JlTmFtZSkpIHtcbiAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZShzdG9yZU5hbWUsIHsga2V5UGF0aCB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHJlc29sdmUocmVxdWVzdC5yZXN1bHQpO1xuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=","/**\n * AsyncFeatureResult is used as the public interface that users interact with\n * when calling `withIndexedDB`. It intentionally omits the internal SYNC_STATUS\n * property to avoid TypeScript error TS4058 (return type of public method\n * includes private type).\n *\n * For internal implementation, we use AsyncStoreForFactory which includes\n * the SYNC_STATUS property needed for state management.\n */\nexport const SYNC_STATUS = Symbol('SYNC_STATUS');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvaW50ZXJuYWwvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZCQTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbXB0eUZlYXR1cmVSZXN1bHQsIFdyaXRhYmxlU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IFN5bmNDb25maWcgfSBmcm9tICcuLi93aXRoLXN0b3JhZ2Utc3luYyc7XG5cbmV4cG9ydCB0eXBlIFN5bmNNZXRob2RzID0ge1xuICBjbGVhclN0b3JhZ2UoKTogdm9pZDtcbiAgcmVhZEZyb21TdG9yYWdlKCk6IHZvaWQ7XG4gIHdyaXRlVG9TdG9yYWdlKCk6IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBTeW5jRmVhdHVyZVJlc3VsdCA9IEVtcHR5RmVhdHVyZVJlc3VsdCAmIHtcbiAgbWV0aG9kczogU3luY01ldGhvZHM7XG59O1xuXG5leHBvcnQgdHlwZSBTeW5jU3RvcmVGb3JGYWN0b3J5PFN0YXRlIGV4dGVuZHMgb2JqZWN0PiA9XG4gIFdyaXRhYmxlU3RhdGVTb3VyY2U8U3RhdGU+O1xuXG5leHBvcnQgdHlwZSBTeW5jU3RvcmFnZVN0cmF0ZWd5PFN0YXRlIGV4dGVuZHMgb2JqZWN0PiA9ICgoXG4gIGNvbmZpZzogUmVxdWlyZWQ8U3luY0NvbmZpZzxTdGF0ZT4+LFxuICBzdG9yZTogU3luY1N0b3JlRm9yRmFjdG9yeTxTdGF0ZT4sXG4gIHVzZVN0dWJzOiBib29sZWFuLFxuKSA9PiBTeW5jTWV0aG9kcykgJiB7IHR5cGU6ICdzeW5jJyB9O1xuXG5leHBvcnQgdHlwZSBBc3luY01ldGhvZHMgPSB7XG4gIGNsZWFyU3RvcmFnZSgpOiBQcm9taXNlPHZvaWQ+O1xuICByZWFkRnJvbVN0b3JhZ2UoKTogUHJvbWlzZTx2b2lkPjtcbiAgd3JpdGVUb1N0b3JhZ2UoKTogUHJvbWlzZTx2b2lkPjtcbn07XG5cbi8qKlxuICogQXN5bmNGZWF0dXJlUmVzdWx0IGlzIHVzZWQgYXMgdGhlIHB1YmxpYyBpbnRlcmZhY2UgdGhhdCB1c2VycyBpbnRlcmFjdCB3aXRoXG4gKiB3aGVuIGNhbGxpbmcgYHdpdGhJbmRleGVkREJgLiBJdCBpbnRlbnRpb25hbGx5IG9taXRzIHRoZSBpbnRlcm5hbCBTWU5DX1NUQVRVU1xuICogcHJvcGVydHkgdG8gYXZvaWQgVHlwZVNjcmlwdCBlcnJvciBUUzQwNTggKHJldHVybiB0eXBlIG9mIHB1YmxpYyBtZXRob2RcbiAqIGluY2x1ZGVzIHByaXZhdGUgdHlwZSkuXG4gKlxuICogRm9yIGludGVybmFsIGltcGxlbWVudGF0aW9uLCB3ZSB1c2UgQXN5bmNTdG9yZUZvckZhY3Rvcnkgd2hpY2ggaW5jbHVkZXNcbiAqIHRoZSBTWU5DX1NUQVRVUyBwcm9wZXJ0eSBuZWVkZWQgZm9yIHN0YXRlIG1hbmFnZW1lbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBTWU5DX1NUQVRVUyA9IFN5bWJvbCgnU1lOQ19TVEFUVVMnKTtcbmV4cG9ydCB0eXBlIFN5bmNTdGF0dXMgPSAnaWRsZScgfCAnc3luY2luZycgfCAnc3luY2VkJztcblxuLy8gS2VlcGluZyBpdCBpbnRlcm5hbCBhdm9pZHMgVFM0MDU4IGVycm9yXG5leHBvcnQgdHlwZSBJbnRlcm5hbEFzeW5jUHJvcHMgPSBBc3luY0ZlYXR1cmVSZXN1bHRbJ3Byb3BzJ10gJiB7XG4gIFtTWU5DX1NUQVRVU106IFdyaXRhYmxlU2lnbmFsPFN5bmNTdGF0dXM+O1xufTtcblxuZXhwb3J0IHR5cGUgQXN5bmNGZWF0dXJlUmVzdWx0ID0gRW1wdHlGZWF0dXJlUmVzdWx0ICYge1xuICBtZXRob2RzOiBBc3luY01ldGhvZHM7XG4gIHByb3BzOiB7XG4gICAgaXNTeW5jZWQ6IFNpZ25hbDxib29sZWFuPjtcbiAgICB3aGVuU3luY2VkOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgQXN5bmNTdG9yZUZvckZhY3Rvcnk8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+ID1cbiAgV3JpdGFibGVTdGF0ZVNvdXJjZTxTdGF0ZT4gJiBJbnRlcm5hbEFzeW5jUHJvcHM7XG5cbmV4cG9ydCB0eXBlIEFzeW5jU3RvcmFnZVN0cmF0ZWd5PFN0YXRlIGV4dGVuZHMgb2JqZWN0PiA9ICgoXG4gIGNvbmZpZzogUmVxdWlyZWQ8U3luY0NvbmZpZzxTdGF0ZT4+LFxuICBzdG9yZTogQXN5bmNTdG9yZUZvckZhY3Rvcnk8U3RhdGU+LFxuICB1c2VTdHViczogYm9vbGVhbixcbikgPT4gQXN5bmNNZXRob2RzKSAmIHsgdHlwZTogJ2FzeW5jJyB9O1xuIl19","import { inject } from '@angular/core';\nimport { getState, patchState } from '@ngrx/signals';\nimport { IndexedDBService } from '../internal/indexeddb.service';\nimport { SYNC_STATUS, } from '../internal/models';\nexport function withIndexedDB() {\n function factory({ key, parse, select, stringify }, store, useStubs) {\n if (useStubs) {\n return {\n clearStorage: () => Promise.resolve(),\n readFromStorage: () => Promise.resolve(),\n writeToStorage: () => Promise.resolve(),\n };\n }\n const indexeddbService = inject(IndexedDBService);\n function warnOnSyncing(mode) {\n if (store[SYNC_STATUS]() === 'syncing') {\n const prettyMode = mode === 'read' ? 'Reading' : 'Writing';\n console.warn(`${prettyMode} to Store (${key}) happened during an ongoing synchronization process.`, 'Please ensure that the store is not in syncing state via `store.whenSynced()`.', 'Alternatively, you can disable the autoSync by passing `autoSync: false` in the config.');\n }\n }\n return {\n /**\n * Removes the item stored in storage.\n */\n async clearStorage() {\n warnOnSyncing('write');\n store[SYNC_STATUS].set('syncing');\n patchState(store, {});\n await indexeddbService.clear(key);\n store[SYNC_STATUS].set('synced');\n },\n /**\n * Reads item from storage and patches the state.\n */\n async readFromStorage() {\n warnOnSyncing('read');\n store[SYNC_STATUS].set('syncing');\n const stateString = await indexeddbService.getItem(key);\n if (stateString) {\n patchState(store, parse(stateString));\n }\n store[SYNC_STATUS].set('synced');\n },\n /**\n * Writes selected portion to storage.\n */\n async writeToStorage() {\n warnOnSyncing('write');\n store[SYNC_STATUS].set('syncing');\n const slicedState = select(getState(store));\n await indexeddbService.setItem(key, stringify(slicedState));\n store[SYNC_STATUS].set('synced');\n },\n };\n }\n factory.type = 'async';\n return factory;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1pbmRleGVkLWRiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvZmVhdHVyZXMvd2l0aC1pbmRleGVkLWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUlMLFdBQVcsR0FDWixNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE1BQU0sVUFBVSxhQUFhO0lBRzNCLFNBQVMsT0FBTyxDQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUErQixFQUM5RCxLQUFrQyxFQUNsQyxRQUFpQjtRQUVqQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTztnQkFDTCxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDckMsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQ3hDLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO2FBQ3hDLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVsRCxTQUFTLGFBQWEsQ0FBQyxJQUFzQjtZQUMzQyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDM0QsT0FBTyxDQUFDLElBQUksQ0FDVixHQUFHLFVBQVUsY0FBYyxHQUFHLHVEQUF1RCxFQUNyRixnRkFBZ0YsRUFDaEYseUZBQXlGLENBQzFGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU87WUFDTDs7ZUFFRztZQUNILEtBQUssQ0FBQyxZQUFZO2dCQUNoQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RCLE1BQU0sZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFFRDs7ZUFFRztZQUNILEtBQUssQ0FBQyxlQUFlO2dCQUNuQixhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xDLE1BQU0sV0FBVyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO2dCQUNELEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUVEOztlQUVHO1lBQ0gsS0FBSyxDQUFDLGNBQWM7Z0JBQ2xCLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBVSxDQUFDO2dCQUNyRCxNQUFNLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFnQixDQUFDO0lBRWhDLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFN0YXRlLCBwYXRjaFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBJbmRleGVkREJTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW5kZXhlZGRiLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQXN5bmNNZXRob2RzLFxuICBBc3luY1N0b3JhZ2VTdHJhdGVneSxcbiAgQXN5bmNTdG9yZUZvckZhY3RvcnksXG4gIFNZTkNfU1RBVFVTLFxufSBmcm9tICcuLi9pbnRlcm5hbC9tb2RlbHMnO1xuaW1wb3J0IHsgU3luY0NvbmZpZyB9IGZyb20gJy4uL3dpdGgtc3RvcmFnZS1zeW5jJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhJbmRleGVkREI8XG4gIFN0YXRlIGV4dGVuZHMgb2JqZWN0LFxuPigpOiBBc3luY1N0b3JhZ2VTdHJhdGVneTxTdGF0ZT4ge1xuICBmdW5jdGlvbiBmYWN0b3J5KFxuICAgIHsga2V5LCBwYXJzZSwgc2VsZWN0LCBzdHJpbmdpZnkgfTogUmVxdWlyZWQ8U3luY0NvbmZpZzxTdGF0ZT4+LFxuICAgIHN0b3JlOiBBc3luY1N0b3JlRm9yRmFjdG9yeTxTdGF0ZT4sXG4gICAgdXNlU3R1YnM6IGJvb2xlYW4sXG4gICk6IEFzeW5jTWV0aG9kcyB7XG4gICAgaWYgKHVzZVN0dWJzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjbGVhclN0b3JhZ2U6ICgpID0+IFByb21pc2UucmVzb2x2ZSgpLFxuICAgICAgICByZWFkRnJvbVN0b3JhZ2U6ICgpID0+IFByb21pc2UucmVzb2x2ZSgpLFxuICAgICAgICB3cml0ZVRvU3RvcmFnZTogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ZWRkYlNlcnZpY2UgPSBpbmplY3QoSW5kZXhlZERCU2VydmljZSk7XG5cbiAgICBmdW5jdGlvbiB3YXJuT25TeW5jaW5nKG1vZGU6ICdyZWFkJyB8ICd3cml0ZScpOiB2b2lkIHtcbiAgICAgIGlmIChzdG9yZVtTWU5DX1NUQVRVU10oKSA9PT0gJ3N5bmNpbmcnKSB7XG4gICAgICAgIGNvbnN0IHByZXR0eU1vZGUgPSBtb2RlID09PSAncmVhZCcgPyAnUmVhZGluZycgOiAnV3JpdGluZyc7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgJHtwcmV0dHlNb2RlfSB0byBTdG9yZSAoJHtrZXl9KSBoYXBwZW5lZCBkdXJpbmcgYW4gb25nb2luZyBzeW5jaHJvbml6YXRpb24gcHJvY2Vzcy5gLFxuICAgICAgICAgICdQbGVhc2UgZW5zdXJlIHRoYXQgdGhlIHN0b3JlIGlzIG5vdCBpbiBzeW5jaW5nIHN0YXRlIHZpYSBgc3RvcmUud2hlblN5bmNlZCgpYC4nLFxuICAgICAgICAgICdBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGRpc2FibGUgdGhlIGF1dG9TeW5jIGJ5IHBhc3NpbmcgYGF1dG9TeW5jOiBmYWxzZWAgaW4gdGhlIGNvbmZpZy4nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIFJlbW92ZXMgdGhlIGl0ZW0gc3RvcmVkIGluIHN0b3JhZ2UuXG4gICAgICAgKi9cbiAgICAgIGFzeW5jIGNsZWFyU3RvcmFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgd2Fybk9uU3luY2luZygnd3JpdGUnKTtcbiAgICAgICAgc3RvcmVbU1lOQ19TVEFUVVNdLnNldCgnc3luY2luZycpO1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7fSk7XG4gICAgICAgIGF3YWl0IGluZGV4ZWRkYlNlcnZpY2UuY2xlYXIoa2V5KTtcbiAgICAgICAgc3RvcmVbU1lOQ19TVEFUVVNdLnNldCgnc3luY2VkJyk7XG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFJlYWRzIGl0ZW0gZnJvbSBzdG9yYWdlIGFuZCBwYXRjaGVzIHRoZSBzdGF0ZS5cbiAgICAgICAqL1xuICAgICAgYXN5bmMgcmVhZEZyb21TdG9yYWdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB3YXJuT25TeW5jaW5nKCdyZWFkJyk7XG4gICAgICAgIHN0b3JlW1NZTkNfU1RBVFVTXS5zZXQoJ3N5bmNpbmcnKTtcbiAgICAgICAgY29uc3Qgc3RhdGVTdHJpbmcgPSBhd2FpdCBpbmRleGVkZGJTZXJ2aWNlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgaWYgKHN0YXRlU3RyaW5nKSB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgcGFyc2Uoc3RhdGVTdHJpbmcpKTtcbiAgICAgICAgfVxuICAgICAgICBzdG9yZVtTWU5DX1NUQVRVU10uc2V0KCdzeW5jZWQnKTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogV3JpdGVzIHNlbGVjdGVkIHBvcnRpb24gdG8gc3RvcmFnZS5cbiAgICAgICAqL1xuICAgICAgYXN5bmMgd3JpdGVUb1N0b3JhZ2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHdhcm5PblN5bmNpbmcoJ3dyaXRlJyk7XG4gICAgICAgIHN0b3JlW1NZTkNfU1RBVFVTXS5zZXQoJ3N5bmNpbmcnKTtcbiAgICAgICAgY29uc3Qgc2xpY2VkU3RhdGUgPSBzZWxlY3QoZ2V0U3RhdGUoc3RvcmUpKSBhcyBTdGF0ZTtcbiAgICAgICAgYXdhaXQgaW5kZXhlZGRiU2VydmljZS5zZXRJdGVtKGtleSwgc3RyaW5naWZ5KHNsaWNlZFN0YXRlKSk7XG4gICAgICAgIHN0b3JlW1NZTkNfU1RBVFVTXS5zZXQoJ3N5bmNlZCcpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIGZhY3RvcnkudHlwZSA9ICdhc3luYycgYXMgY29uc3Q7XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class LocalStorageService {\n getItem(key) {\n return localStorage.getItem(key);\n }\n setItem(key, data) {\n return localStorage.setItem(key, data);\n }\n clear(key) {\n return localStorage.removeItem(key);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: LocalStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: LocalStorageService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvaW50ZXJuYWwvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsT0FBTyxDQUFDLEdBQVc7UUFDakIsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDL0IsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVc7UUFDZixPQUFPLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs4R0FYVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt9IGZyb20gJy4vbW9kZWxzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZVNlcnZpY2Uge1xuICBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gIH1cblxuICBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBkYXRhKTtcbiAgfVxuXG4gIGNsZWFyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SessionStorageService {\n getItem(key) {\n return sessionStorage.getItem(key);\n }\n setItem(key, data) {\n return sessionStorage.setItem(key, data);\n }\n clear(key) {\n return sessionStorage.removeItem(key);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: SessionStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: SessionStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: SessionStorageService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3N0b3JhZ2Utc3luYy9pbnRlcm5hbC9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQy9CLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFXO1FBQ2YsT0FBTyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBWFUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25TdG9yYWdlU2VydmljZSB7XG4gIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICB9XG5cbiAgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oa2V5LCBkYXRhKTtcbiAgfVxuXG4gIGNsZWFyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { getState, patchState } from '@ngrx/signals';\nimport { LocalStorageService } from '../internal/local-storage.service';\nimport { SessionStorageService } from '../internal/session-storage.service';\nexport function withLocalStorage() {\n return createSyncMethods(LocalStorageService);\n}\nexport function withSessionStorage() {\n return createSyncMethods(SessionStorageService);\n}\nfunction createSyncMethods(Storage) {\n function factory({ key, parse, select, stringify }, store, useStubs) {\n if (useStubs) {\n return {\n clearStorage: () => undefined,\n readFromStorage: () => undefined,\n writeToStorage: () => undefined,\n };\n }\n const storage = inject(Storage);\n return {\n clearStorage() {\n storage.clear(key);\n },\n readFromStorage() {\n const stateString = storage.getItem(key);\n if (stateString) {\n patchState(store, parse(stateString));\n }\n },\n writeToStorage() {\n const slicedState = select(getState(store));\n storage.setItem(key, stringify(slicedState));\n },\n };\n }\n factory.type = 'sync';\n return factory;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1sb2NhbC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvZmVhdHVyZXMvd2l0aC1sb2NhbC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHNUUsTUFBTSxVQUFVLGdCQUFnQjtJQUc5QixPQUFPLGlCQUFpQixDQUFRLG1CQUFtQixDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxpQkFBaUIsQ0FBUSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUN4QixPQUEwRDtJQUUxRCxTQUFTLE9BQU8sQ0FDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBK0IsRUFDOUQsS0FBaUMsRUFDakMsUUFBaUI7UUFFakIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7Z0JBQzdCLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO2dCQUNoQyxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUzthQUNoQyxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoQyxPQUFPO1lBQ0wsWUFBWTtnQkFDVixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFFRCxlQUFlO2dCQUNiLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRXpDLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ2hCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDO1lBRUQsY0FBYztnQkFDWixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFVLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLEdBQUcsTUFBZSxDQUFDO0lBRS9CLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFN0YXRlLCBwYXRjaFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN5bmNTdG9yYWdlU3RyYXRlZ3ksIFN5bmNTdG9yZUZvckZhY3RvcnkgfSBmcm9tICcuLi9pbnRlcm5hbC9tb2RlbHMnO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3luY0NvbmZpZyB9IGZyb20gJy4uL3dpdGgtc3RvcmFnZS1zeW5jJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhMb2NhbFN0b3JhZ2U8XG4gIFN0YXRlIGV4dGVuZHMgb2JqZWN0LFxuPigpOiBTeW5jU3RvcmFnZVN0cmF0ZWd5PFN0YXRlPiB7XG4gIHJldHVybiBjcmVhdGVTeW5jTWV0aG9kczxTdGF0ZT4oTG9jYWxTdG9yYWdlU2VydmljZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU2Vzc2lvblN0b3JhZ2U8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KCkge1xuICByZXR1cm4gY3JlYXRlU3luY01ldGhvZHM8U3RhdGU+KFNlc3Npb25TdG9yYWdlU2VydmljZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN5bmNNZXRob2RzPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgU3RvcmFnZTogVHlwZTxMb2NhbFN0b3JhZ2VTZXJ2aWNlIHwgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlPixcbik6IFN5bmNTdG9yYWdlU3RyYXRlZ3k8U3RhdGU+IHtcbiAgZnVuY3Rpb24gZmFjdG9yeShcbiAgICB7IGtleSwgcGFyc2UsIHNlbGVjdCwgc3RyaW5naWZ5IH06IFJlcXVpcmVkPFN5bmNDb25maWc8U3RhdGU+PixcbiAgICBzdG9yZTogU3luY1N0b3JlRm9yRmFjdG9yeTxTdGF0ZT4sXG4gICAgdXNlU3R1YnM6IGJvb2xlYW4sXG4gICkge1xuICAgIGlmICh1c2VTdHVicykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXJTdG9yYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgIHJlYWRGcm9tU3RvcmFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICB3cml0ZVRvU3RvcmFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdG9yYWdlID0gaW5qZWN0KFN0b3JhZ2UpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsZWFyU3RvcmFnZSgpOiB2b2lkIHtcbiAgICAgICAgc3RvcmFnZS5jbGVhcihrZXkpO1xuICAgICAgfSxcblxuICAgICAgcmVhZEZyb21TdG9yYWdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGF0ZVN0cmluZyA9IHN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgIGlmIChzdGF0ZVN0cmluZykge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHBhcnNlKHN0YXRlU3RyaW5nKSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIHdyaXRlVG9TdG9yYWdlKCkge1xuICAgICAgICBjb25zdCBzbGljZWRTdGF0ZSA9IHNlbGVjdChnZXRTdGF0ZShzdG9yZSkpIGFzIFN0YXRlO1xuICAgICAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCBzdHJpbmdpZnkoc2xpY2VkU3RhdGUpKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICBmYWN0b3J5LnR5cGUgPSAnc3luYycgYXMgY29uc3Q7XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG4iXX0=","import { isPlatformServer } from '@angular/common';\nimport { computed, effect, inject, PLATFORM_ID, signal } from '@angular/core';\nimport { getState, signalStoreFeature, watchState, withHooks, withMethods, withProps, } from '@ngrx/signals';\nimport { withLocalStorage, withSessionStorage, } from './features/with-local-storage';\nimport { SYNC_STATUS, } from './internal/models';\nexport function withStorageSync(configOrKey, storageStrategy) {\n if (typeof configOrKey !== 'string' &&\n configOrKey.storage &&\n storageStrategy) {\n throw new Error('You can either pass a storage strategy or a config with storage, but not both.');\n }\n const config = {\n autoSync: true,\n select: (state) => state,\n parse: JSON.parse,\n stringify: JSON.stringify,\n storage: () => localStorage,\n ...(typeof configOrKey === 'string' ? { key: configOrKey } : configOrKey),\n };\n const factory = storageStrategy ??\n (config.storage() === localStorage\n ? withLocalStorage()\n : withSessionStorage());\n if (factory.type === 'sync') {\n return createSyncStorageSync(factory, config);\n }\n else {\n return createAsyncStorageSync(factory, config);\n }\n}\nfunction createSyncStorageSync(factory, config) {\n return signalStoreFeature(withMethods((store, platformId = inject(PLATFORM_ID)) => {\n return factory(config, store, isPlatformServer(platformId));\n }), withHooks({\n onInit(store, platformId = inject(PLATFORM_ID)) {\n if (isPlatformServer(platformId)) {\n return;\n }\n if (config.autoSync) {\n store.readFromStorage();\n watchState(store, () => store.writeToStorage());\n }\n },\n }));\n}\nfunction createAsyncStorageSync(factory, config) {\n return signalStoreFeature(withProps(() => {\n const props = {\n /*\n // we need to have that as property (and not state)\n // Otherwise the state watcher fires when updating the sync status\n */\n [SYNC_STATUS]: signal('idle'),\n };\n const resolves = [];\n effect(() => {\n const syncStatus = props[SYNC_STATUS]();\n if (syncStatus === 'synced') {\n resolves.forEach((resolve) => resolve());\n resolves.splice(0, resolves.length);\n }\n });\n return {\n ...props,\n isSynced: computed(() => props[SYNC_STATUS]() === 'synced'),\n whenSynced: () => new Promise((resolve) => {\n if (props[SYNC_STATUS]() === 'synced') {\n resolve();\n }\n else {\n resolves.push(resolve);\n }\n }),\n };\n }), withMethods((store, platformId = inject(PLATFORM_ID)) => {\n return factory(config, store, isPlatformServer(platformId));\n }), withHooks({\n async onInit(store, platformId = inject(PLATFORM_ID)) {\n if (isPlatformServer(platformId)) {\n return;\n }\n const initialState = JSON.stringify(getState(store));\n if (config.autoSync) {\n let startWatching = false;\n watchState(store, () => {\n if (!startWatching) {\n const currentState = JSON.stringify(getState(store));\n // Necessary because getState returns always a new object\n if (currentState === initialState) {\n return;\n }\n console.warn(`Writing to Store (${config.key}) happened before the state was initially read from storage.`, 'Please ensure that the store is not in syncing state via `store.whenSynced()` before writing to the state.', 'Alternatively, you can disable autoSync by passing `autoSync: false` in the config.');\n return;\n }\n return store.writeToStorage();\n });\n await store.readFromStorage();\n startWatching = true;\n }\n },\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zdG9yYWdlLXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3N0b3JhZ2Utc3luYy93aXRoLXN0b3JhZ2Utc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBRUwsUUFBUSxFQUNSLGtCQUFrQixFQUdsQixVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsR0FDbkIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBR0wsV0FBVyxHQUdaLE1BQU0sbUJBQW1CLENBQUM7QUEyRTNCLE1BQU0sVUFBVSxlQUFlLENBQzdCLFdBQWdELEVBQ2hELGVBRXVDO0lBS3ZDLElBQ0UsT0FBTyxXQUFXLEtBQUssUUFBUTtRQUMvQixXQUFXLENBQUMsT0FBTztRQUNuQixlQUFlLEVBQ2YsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0ZBQWdGLENBQ2pGLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQXlDO1FBQ25ELFFBQVEsRUFBRSxJQUFJO1FBQ2QsTUFBTSxFQUFFLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQUMsS0FBSztRQUN4QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZO1FBQzNCLEdBQUcsQ0FBQyxPQUFPLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQyxD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LENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIGdldFN0YXRlLFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICB3YXRjaFN0YXRlLFxuICB3aXRoSG9va3MsXG4gIHdpdGhNZXRob2RzLFxuICB3aXRoUHJvcHMsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHtcbiAgd2l0aExvY2FsU3RvcmFnZSxcbiAgd2l0aFNlc3Npb25TdG9yYWdlLFxufSBmcm9tICcuL2ZlYXR1cmVzL3dpdGgtbG9jYWwtc3RvcmFnZSc7XG5pbXBvcnQge1xuICBBc3luY0ZlYXR1cmVSZXN1bHQsXG4gIEFzeW5jU3RvcmFnZVN0cmF0ZWd5LFxuICBTWU5DX1NUQVRVUyxcbiAgU3luY0ZlYXR1cmVSZXN1bHQsXG4gIFN5bmNTdG9yYWdlU3RyYXRlZ3ksXG59IGZyb20gJy4vaW50ZXJuYWwvbW9kZWxzJztcblxuZXhwb3J0IHR5cGUgU3luY0NvbmZpZzxTdGF0ZT4gPSB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHdoaWNoIGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBzdG9yYWdlLlxuICAgKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHN0b3JlIHNob3VsZCByZWFkIGZyb20gc3RvcmFnZSBvbiBpbml0IGFuZCB3cml0ZSB0byBzdG9yYWdlIG9uIGV2ZXJ5IHN0YXRlIGNoYW5nZS5cbiAgICpcbiAgICogYHRydWVgIGJ5IGRlZmF1bHRcbiAgICovXG4gIGF1dG9TeW5jPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIHNlbGVjdCB0aGF0IHBvcnRpb24gb2YgdGhlIHN0YXRlIHdoaWNoIHNob3VsZCBiZSBzdG9yZWQuXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHdob2xlIHN0YXRlIG9iamVjdCBieSBkZWZhdWx0XG4gICAqL1xuICBzZWxlY3Q/OiAoc3RhdGU6IFN0YXRlKSA9PiB1bmtub3duO1xuICAvKipcbiAgICogRnVuY3Rpb24gdXNlZCB0byBwYXJzZSB0aGUgc3RhdGUgY29taW5nIGZyb20gc3RvcmFnZS5cbiAgICpcbiAgICogYEpTT04ucGFyc2UoKWAgYnkgZGVmYXVsdFxuICAgKi9cbiAgcGFyc2U/OiAoc3RhdGVTdHJpbmc6IHN0cmluZykgPT4gU3RhdGU7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIHRyYW5zZm9ybSB0aGUgc3RhdGUgaW50byBhIHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAgICpcbiAgICogYEpTT04uc3RyaW5naWZ5KClgIGJ5IGRlZmF1bHRcbiAgICovXG4gIHN0cmluZ2lmeT86IChzdGF0ZTogU3RhdGUpID0+IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayB3aXRoU2Vzc2lvblN0b3JhZ2V9IGluc3RlYWQuXG4gICAqIEZhY3RvcnkgZnVuY3Rpb24gdXNlZCB0byBzd2l0Y2ggdG8gc2Vzc2lvblN0b3JhZ2UuXG4gICAqXG4gICAqIGBsb2NhbFN0b3JhZ2VgIGJ5IGRlZmF1bHRcbiAgICovXG4gIHN0b3JhZ2U/OiAoKSA9PiBTdG9yYWdlO1xufTtcblxuLy8gb25seSBrZXlcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBrZXk6IHN0cmluZyxcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG4vLyBrZXkgKyBpbmRleGVkZGJcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBrZXk6IHN0cmluZyxcbiAgc3RvcmFnZVN0cmF0ZWd5OiBBc3luY1N0b3JhZ2VTdHJhdGVneTxJbnB1dFsnc3RhdGUnXT4sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIEFzeW5jRmVhdHVyZVJlc3VsdD47XG5cbi8vIGtleSArIGxvY2FsU3RvcmFnZShvciBzZXNzaW9uU3RvcmFnZSlcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBrZXk6IHN0cmluZyxcbiAgc3RvcmFnZVN0cmF0ZWd5OiBTeW5jU3RvcmFnZVN0cmF0ZWd5PElucHV0WydzdGF0ZSddPixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG4vLyBjb25maWcgKyBsb2NhbFN0b3JhZ2VcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBjb25maWc6IFN5bmNDb25maWc8SW5wdXRbJ3N0YXRlJ10+LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBTeW5jRmVhdHVyZVJlc3VsdD47XG5cbi8vIGNvbmZpZyArIGluZGV4ZWRkYlxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTdG9yYWdlU3luYzxJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oXG4gIGNvbmZpZzogU3luY0NvbmZpZzxJbnB1dFsnc3RhdGUnXT4sXG4gIHN0b3JhZ2VTdHJhdGVneTogQXN5bmNTdG9yYWdlU3RyYXRlZ3k8SW5wdXRbJ3N0YXRlJ10+LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBBc3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG4vLyBjb25maWcgKyBsb2NhbFN0b3JhZ2Uob3Igc2Vzc2lvblN0b3JhZ2UpXG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0b3JhZ2VTeW5jPElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PihcbiAgY29uZmlnOiBTeW5jQ29uZmlnPElucHV0WydzdGF0ZSddPixcbiAgc3RvcmFnZVN0cmF0ZWd5OiBTeW5jU3RvcmFnZVN0cmF0ZWd5PElucHV0WydzdGF0ZSddPixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0b3JhZ2VTeW5jPElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PihcbiAgY29uZmlnT3JLZXk6IFN5bmNDb25maWc8SW5wdXRbJ3N0YXRlJ10+IHwgc3RyaW5nLFxuICBzdG9yYWdlU3RyYXRlZ3k/OlxuICAgIHwgQXN5bmNTdG9yYWdlU3RyYXRlZ3k8SW5wdXRbJ3N0YXRlJ10+XG4gICAgfCBTeW5jU3RvcmFnZVN0cmF0ZWd5PElucHV0WydzdGF0ZSddPixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgSW5wdXQsXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIChTeW5jRmVhdHVyZVJlc3VsdCB8IEFzeW5jRmVhdHVyZVJlc3VsdClcbj4ge1xuICBpZiAoXG4gICAgdHlwZW9mIGNvbmZpZ09yS2V5ICE9PSAnc3RyaW5nJyAmJlxuICAgIGNvbmZpZ09yS2V5LnN0b3JhZ2UgJiZcbiAgICBzdG9yYWdlU3RyYXRlZ3lcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1lvdSBjYW4gZWl0aGVyIHBhc3MgYSBzdG9yYWdlIHN0cmF0ZWd5IG9yIGEgY29uZmlnIHdpdGggc3RvcmFnZSwgYnV0IG5vdCBib3RoLicsXG4gICAgKTtcbiAgfVxuICBjb25zdCBjb25maWc6IFJlcXVpcmVkPFN5bmNDb25maWc8SW5wdXRbJ3N0YXRlJ10+PiA9IHtcbiAgICBhdXRvU3luYzogdHJ1ZSxcbiAgICBzZWxlY3Q6IChzdGF0ZTogSW5wdXRbJ3N0YXRlJ10pID0+IHN0YXRlLFxuICAgIHBhcnNlOiBKU09OLnBhcnNlLFxuICAgIHN0cmluZ2lmeTogSlNPTi5zdHJpbmdpZnksXG4gICAgc3RvcmFnZTogKCkgPT4gbG9jYWxTdG9yYWdlLFxuICAgIC4uLih0eXBlb2YgY29uZmlnT3JLZXkgPT09ICdzdHJpbmcnID8geyBrZXk6IGNvbmZpZ09yS2V5IH0gOiBjb25maWdPcktleSksXG4gIH07XG5cbiAgY29uc3QgZmFjdG9yeSA9XG4gICAgc3RvcmFnZVN0cmF0ZWd5ID8/XG4gICAgKGNvbmZpZy5zdG9yYWdlKCkgPT09IGxvY2FsU3RvcmFnZVxuICAgICAgPyB3aXRoTG9jYWxTdG9yYWdlKClcbiAgICAgIDogd2l0aFNlc3Npb25TdG9yYWdlKCkpO1xuXG4gIGlmIChmYWN0b3J5LnR5cGUgPT09ICdzeW5jJykge1xuICAgIHJldHVybiBjcmVhdGVTeW5jU3RvcmFnZVN5bmMoZmFjdG9yeSwgY29uZmlnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3JlYXRlQXN5bmNTdG9yYWdlU3luYyhmYWN0b3J5LCBjb25maWcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN5bmNTdG9yYWdlU3luYyhcbiAgZmFjdG9yeTogU3luY1N0b3JhZ2VTdHJhdGVneTxvYmplY3Q+LFxuICBjb25maWc6IFJlcXVpcmVkPFN5bmNDb25maWc8b2JqZWN0Pj4sXG4pIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoTWV0aG9kcygoc3RvcmUsIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpKSA9PiB7XG4gICAgICByZXR1cm4gZmFjdG9yeShjb25maWcsIHN0b3JlLCBpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpKTtcbiAgICB9KSxcbiAgICB3aXRoSG9va3Moe1xuICAgICAgb25Jbml0KHN0b3JlLCBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKSkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybVNlcnZlcihwbGF0Zm9ybUlkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuYXV0b1N5bmMpIHtcbiAgICAgICAgICBzdG9yZS5yZWFkRnJvbVN0b3JhZ2UoKTtcbiAgICAgICAgICB3YXRjaFN0YXRlKHN0b3JlLCAoKSA9PiBzdG9yZS53cml0ZVRvU3RvcmFnZSgpKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KSxcbiAgKSBzYXRpc2ZpZXMgU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBc3luY1N0b3JhZ2VTeW5jKFxuICBmYWN0b3J5OiBBc3luY1N0b3JhZ2VTdHJhdGVneTxvYmplY3Q+LFxuICBjb25maWc6IFJlcXVpcmVkPFN5bmNDb25maWc8b2JqZWN0Pj4sXG4pIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoUHJvcHMoKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIC8qXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gaGF2ZSB0aGF0IGFzIHByb3BlcnR5IChhbmQgbm90IHN0YXRlKVxuICAgICAgICAvLyBPdGhlcndpc2UgdGhlIHN0YXRlIHdhdGNoZXIgZmlyZXMgd2hlbiB1cGRhdGluZyB0aGUgc3luYyBzdGF0dXNcbiAgICAgICAgKi9cbiAgICAgICAgW1NZTkNfU1RBVFVTXTogc2lnbmFsPCdpZGxlJyB8ICdzeW5jaW5nJyB8ICdzeW5jZWQnPignaWRsZScpLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzb2x2ZXMgPSBbXSBhcyAoKCkgPT4gdm9pZClbXTtcblxuICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3luY1N0YXR1cyA9IHByb3BzW1NZTkNfU1RBVFVTXSgpO1xuICAgICAgICBpZiAoc3luY1N0YXR1cyA9PT0gJ3N5bmNlZCcpIHtcbiAgICAgICAgICByZXNvbHZlcy5mb3JFYWNoKChyZXNvbHZlKSA9PiByZXNvbHZlKCkpO1xuICAgICAgICAgIHJlc29sdmVzLnNwbGljZSgwLCByZXNvbHZlcy5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGlzU3luY2VkOiBjb21wdXRlZCgoKSA9PiBwcm9wc1tTWU5DX1NUQVRVU10oKSA9PT0gJ3N5bmNlZCcpLFxuICAgICAgICB3aGVuU3luY2VkOiAoKSA9PlxuICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvcHNbU1lOQ19TVEFUVVNdKCkgPT09ICdzeW5jZWQnKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmVzLnB1c2gocmVzb2x2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhNZXRob2RzKChzdG9yZSwgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCkpID0+IHtcbiAgICAgIHJldHVybiBmYWN0b3J5KGNvbmZpZywgc3RvcmUsIGlzUGxhdGZvcm1TZXJ2ZXIocGxhdGZvcm1JZCkpO1xuICAgIH0pLFxuICAgIHdpdGhIb29rcyh7XG4gICAgICBhc3luYyBvbkluaXQoc3RvcmUsIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5pdGlhbFN0YXRlID0gSlNPTi5zdHJpbmdpZnkoZ2V0U3RhdGUoc3RvcmUpKTtcbiAgICAgICAgaWYgKGNvbmZpZy5hdXRvU3luYykge1xuICAgICAgICAgIGxldCBzdGFydFdhdGNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgd2F0Y2hTdGF0ZShzdG9yZSwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFzdGFydFdhdGNoaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IEpTT04uc3RyaW5naWZ5KGdldFN0YXRlKHN0b3JlKSk7XG5cbiAgICAgICAgICAgICAgLy8gTmVjZXNzYXJ5IGJlY2F1c2UgZ2V0U3RhdGUgcmV0dXJucyBhbHdheXMgYSBuZXcgb2JqZWN0XG4gICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUgPT09IGluaXRpYWxTdGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBgV3JpdGluZyB0byBTdG9yZSAoJHtjb25maWcua2V5fSkgaGFwcGVuZWQgYmVmb3JlIHRoZSBzdGF0ZSB3YXMgaW5pdGlhbGx5IHJlYWQgZnJvbSBzdG9yYWdlLmAsXG4gICAgICAgICAgICAgICAgJ1BsZWFzZSBlbnN1cmUgdGhhdCB0aGUgc3RvcmUgaXMgbm90IGluIHN5bmNpbmcgc3RhdGUgdmlhIGBzdG9yZS53aGVuU3luY2VkKClgIGJlZm9yZSB3cml0aW5nIHRvIHRoZSBzdGF0ZS4nLFxuICAgICAgICAgICAgICAgICdBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGRpc2FibGUgYXV0b1N5bmMgYnkgcGFzc2luZyBgYXV0b1N5bmM6IGZhbHNlYCBpbiB0aGUgY29uZmlnLicsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdG9yZS53cml0ZVRvU3RvcmFnZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYXdhaXQgc3RvcmUucmVhZEZyb21TdG9yYWdlKCk7XG4gICAgICAgICAgc3RhcnRXYXRjaGluZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSksXG4gICkgc2F0aXNmaWVzIFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEFzeW5jRmVhdHVyZVJlc3VsdD47XG59XG4iXX0=","import { signalStoreFeature, withState, } from '@ngrx/signals';\n/**\n * `withConditional` activates a feature based on a given condition.\n *\n * **Use Cases**\n * - Conditionally activate features based on the **store state** or other criteria.\n * - Choose between **two different implementations** of a feature.\n *\n * **Type Constraints**\n * Both features must have **exactly the same state, props, and methods**.\n * Otherwise, a type error will occur.\n *\n *\n * **Usage**\n *\n * ```typescript\n * const withUser = signalStoreFeature(\n * withState({ id: 1, name: 'Konrad' }),\n * withHooks(store => ({\n * onInit() {\n * // user loading logic\n * }\n * }))\n * );\n *\n * function withFakeUser() {\n * return signalStoreFeature(\n * withState({ id: 0, name: 'anonymous' })\n * );\n * }\n *\n * signalStore(\n * withMethods(() => ({\n * useRealUser: () => true\n * })),\n * withConditional((store) => store.useRealUser(), withUser, withFakeUser)\n * )\n * ```\n *\n * @param condition - A function that determines which feature to activate based on the store state.\n * @param featureIfTrue - The feature to activate if the condition evaluates to `true`.\n * @param featureIfFalse - The feature to activate if the condition evaluates to `false`.\n * @returns A `SignalStoreFeature` that applies the selected feature based on the condition.\n */\nexport function withConditional(condition, featureIfTrue, featureIfFalse) {\n return (store) => {\n const conditionStore = {\n ...store['stateSignals'],\n ...store['props'],\n ...store['methods'],\n };\n return condition(conditionStore)\n ? featureIfTrue(store)\n : featureIfFalse(store);\n };\n}\nexport const emptyFeature = signalStoreFeature(withState({}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jb25kaXRpb25hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1jb25kaXRpb25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsa0JBQWtCLEVBSWxCLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FJN0IsU0FFWSxFQUNaLGFBQXlELEVBQ3pELGNBQW1FO0lBRW5FLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNmLE1BQU0sY0FBYyxHQUFHO1lBQ3JCLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUN4QixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1NBQ3BCLENBQUM7UUFDRixPQUFPLFNBQVMsQ0FBQyxjQUFjLENBQUM7WUFDOUIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDdEIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU3RhdGVTaWduYWxzLFxuICB3aXRoU3RhdGUsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuXG4vKipcbiAqIGB3aXRoQ29uZGl0aW9uYWxgIGFjdGl2YXRlcyBhIGZlYXR1cmUgYmFzZWQgb24gYSBnaXZlbiBjb25kaXRpb24uXG4gKlxuICogKipVc2UgQ2FzZXMqKlxuICogLSBDb25kaXRpb25hbGx5IGFjdGl2YXRlIGZlYXR1cmVzIGJhc2VkIG9uIHRoZSAqKnN0b3JlIHN0YXRlKiogb3Igb3RoZXIgY3JpdGVyaWEuXG4gKiAtIENob29zZSBiZXR3ZWVuICoqdHdvIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMqKiBvZiBhIGZlYXR1cmUuXG4gKlxuICogKipUeXBlIENvbnN0cmFpbnRzKipcbiAqIEJvdGggZmVhdHVyZXMgbXVzdCBoYXZlICoqZXhhY3RseSB0aGUgc2FtZSBzdGF0ZSwgcHJvcHMsIGFuZCBtZXRob2RzKiouXG4gKiBPdGhlcndpc2UsIGEgdHlwZSBlcnJvciB3aWxsIG9jY3VyLlxuICpcbiAqXG4gKiAqKlVzYWdlKipcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB3aXRoVXNlciA9IHNpZ25hbFN0b3JlRmVhdHVyZShcbiAqICAgd2l0aFN0YXRlKHsgaWQ6IDEsIG5hbWU6ICdLb25yYWQnIH0pLFxuICogICB3aXRoSG9va3Moc3RvcmUgPT4gKHtcbiAqICAgICBvbkluaXQoKSB7XG4gKiAgICAgICAvLyB1c2VyIGxvYWRpbmcgbG9naWNcbiAqICAgICB9XG4gKiAgIH0pKVxuICogKTtcbiAqXG4gKiBmdW5jdGlvbiB3aXRoRmFrZVVzZXIoKSB7XG4gKiAgIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXG4gKiAgICAgd2l0aFN0YXRlKHsgaWQ6IDAsIG5hbWU6ICdhbm9ueW1vdXMnIH0pXG4gKiAgICk7XG4gKiB9XG4gKlxuICogc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhNZXRob2RzKCgpID0+ICh7XG4gKiAgICAgdXNlUmVhbFVzZXI6ICgpID0+IHRydWVcbiAqICAgfSkpLFxuICogICB3aXRoQ29uZGl0aW9uYWwoKHN0b3JlKSA9PiBzdG9yZS51c2VSZWFsVXNlcigpLCB3aXRoVXNlciwgd2l0aEZha2VVc2VyKVxuICogKVxuICogYGBgXG4gKlxuICogQHBhcmFtIGNvbmRpdGlvbiAtIEEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoaWNoIGZlYXR1cmUgdG8gYWN0aXZhdGUgYmFzZWQgb24gdGhlIHN0b3JlIHN0YXRlLlxuICogQHBhcmFtIGZlYXR1cmVJZlRydWUgLSBUaGUgZmVhdHVyZSB0byBhY3RpdmF0ZSBpZiB0aGUgY29uZGl0aW9uIGV2YWx1YXRlcyB0byBgdHJ1ZWAuXG4gKiBAcGFyYW0gZmVhdHVyZUlmRmFsc2UgLSBUaGUgZmVhdHVyZSB0byBhY3RpdmF0ZSBpZiB0aGUgY29uZGl0aW9uIGV2YWx1YXRlcyB0byBgZmFsc2VgLlxuICogQHJldHVybnMgQSBgU2lnbmFsU3RvcmVGZWF0dXJlYCB0aGF0IGFwcGxpZXMgdGhlIHNlbGVjdGVkIGZlYXR1cmUgYmFzZWQgb24gdGhlIGNvbmRpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDb25kaXRpb25hbDxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIE91dHB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbj4oXG4gIGNvbmRpdGlvbjogKFxuICAgIHN0b3JlOiBTdGF0ZVNpZ25hbHM8SW5wdXRbJ3N0YXRlJ10+ICYgSW5wdXRbJ3Byb3BzJ10gJiBJbnB1dFsnbWV0aG9kcyddLFxuICApID0+IGJvb2xlYW4sXG4gIGZlYXR1cmVJZlRydWU6IFNpZ25hbFN0b3JlRmVhdHVyZTxOb0luZmVyPElucHV0PiwgT3V0cHV0PixcbiAgZmVhdHVyZUlmRmFsc2U6IFNpZ25hbFN0b3JlRmVhdHVyZTxOb0luZmVyPElucHV0PiwgTm9JbmZlcjxPdXRwdXQ+Pixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgT3V0cHV0PiB7XG4gIHJldHVybiAoc3RvcmUpID0+IHtcbiAgICBjb25zdCBjb25kaXRpb25TdG9yZSA9IHtcbiAgICAgIC4uLnN0b3JlWydzdGF0ZVNpZ25hbHMnXSxcbiAgICAgIC4uLnN0b3JlWydwcm9wcyddLFxuICAgICAgLi4uc3RvcmVbJ21ldGhvZHMnXSxcbiAgICB9O1xuICAgIHJldHVybiBjb25kaXRpb24oY29uZGl0aW9uU3RvcmUpXG4gICAgICA/IGZlYXR1cmVJZlRydWUoc3RvcmUpXG4gICAgICA6IGZlYXR1cmVJZkZhbHNlKHN0b3JlKTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGVtcHR5RmVhdHVyZSA9IHNpZ25hbFN0b3JlRmVhdHVyZSh3aXRoU3RhdGUoe30pKTtcbiJdfQ==","/**\n * @deprecated Use `import { withFeature } from '@ngrx/signals'` instead, starting with `ngrx/signals` 19.1: https://ngrx.io/guide/signals/signal-store/custom-store-features#connecting-a-custom-feature-with-the-store\n *\n * Allows to pass properties, methods, or signals from a SignalStore\n * to a feature.\n *\n * Typically, a `signalStoreFeature` can have input constraints on\n *\n * ```typescript\n * function withSum(a: Signal<number>, b: Signal<number>) {\n * return signalStoreFeature(\n * withComputed(() => ({\n * sum: computed(() => a() + b())\n * }))\n * );\n * }\n *\n * signalStore(\n * withState({ a: 1, b: 2 }),\n * withFeatureFactory((store) => withSum(store.a, store.b))\n * );\n * ```\n * @param factoryFn\n */\nexport function withFeatureFactory(factoryFn) {\n return (store) => {\n const storeForFactory = {\n ...store['stateSignals'],\n ...store['props'],\n ...store['methods'],\n };\n const feature = factoryFn(storeForFactory);\n return feature(store);\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1mZWF0dXJlLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtZmVhdHVyZS1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FJaEMsU0FFc0M7SUFFdEMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2YsTUFBTSxlQUFlLEdBQUc7WUFDdEIsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQ3hCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNqQixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDTSxDQUFDO1FBRTVCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFN0YXRlU2lnbmFscyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5cbnR5cGUgU3RvcmVGb3JGYWN0b3J5PElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PiA9IFN0YXRlU2lnbmFsczxcbiAgSW5wdXRbJ3N0YXRlJ11cbj4gJlxuICBJbnB1dFsncHJvcHMnXSAmXG4gIElucHV0WydtZXRob2RzJ107XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBpbXBvcnQgeyB3aXRoRmVhdHVyZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnYCBpbnN0ZWFkLCBzdGFydGluZyB3aXRoIGBuZ3J4L3NpZ25hbHNgIDE5LjE6IGh0dHBzOi8vbmdyeC5pby9ndWlkZS9zaWduYWxzL3NpZ25hbC1zdG9yZS9jdXN0b20tc3RvcmUtZmVhdHVyZXMjY29ubmVjdGluZy1hLWN1c3RvbS1mZWF0dXJlLXdpdGgtdGhlLXN0b3JlXG4gKlxuICogQWxsb3dzIHRvIHBhc3MgcHJvcGVydGllcywgbWV0aG9kcywgb3Igc2lnbmFscyBmcm9tIGEgU2lnbmFsU3RvcmVcbiAqIHRvIGEgZmVhdHVyZS5cbiAqXG4gKiBUeXBpY2FsbHksIGEgYHNpZ25hbFN0b3JlRmVhdHVyZWAgY2FuIGhhdmUgaW5wdXQgY29uc3RyYWludHMgb25cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBmdW5jdGlvbiB3aXRoU3VtKGE6IFNpZ25hbDxudW1iZXI+LCBiOiBTaWduYWw8bnVtYmVyPikge1xuICogICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICogICAgIHdpdGhDb21wdXRlZCgoKSA9PiAoe1xuICogICAgICAgc3VtOiBjb21wdXRlZCgoKSA9PiBhKCkgKyBiKCkpXG4gKiAgICAgfSkpXG4gKiAgICk7XG4gKiB9XG4gKlxuICogc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhTdGF0ZSh7IGE6IDEsIGI6IDIgfSksXG4gKiAgIHdpdGhGZWF0dXJlRmFjdG9yeSgoc3RvcmUpID0+IHdpdGhTdW0oc3RvcmUuYSwgc3RvcmUuYikpXG4gKiApO1xuICogYGBgXG4gKiBAcGFyYW0gZmFjdG9yeUZuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRmVhdHVyZUZhY3Rvcnk8XG4gIElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBPdXRwdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4+KFxuICBmYWN0b3J5Rm46IChcbiAgICBzdG9yZTogU3RvcmVGb3JGYWN0b3J5PElucHV0PixcbiAgKSA9PiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIE91dHB1dD4sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIE91dHB1dD4ge1xuICByZXR1cm4gKHN0b3JlKSA9PiB7XG4gICAgY29uc3Qgc3RvcmVGb3JGYWN0b3J5ID0ge1xuICAgICAgLi4uc3RvcmVbJ3N0YXRlU2lnbmFscyddLFxuICAgICAgLi4uc3RvcmVbJ3Byb3BzJ10sXG4gICAgICAuLi5zdG9yZVsnbWV0aG9kcyddLFxuICAgIH0gYXMgU3RvcmVGb3JGYWN0b3J5PElucHV0PjtcblxuICAgIGNvbnN0IGZlYXR1cmUgPSBmYWN0b3J5Rm4oc3RvcmVGb3JGYWN0b3J5KTtcblxuICAgIHJldHVybiBmZWF0dXJlKHN0b3JlKTtcbiAgfTtcbn1cbiJdfQ==","import { concatMap, exhaustMap, mergeMap, switchMap, } from 'rxjs';\nexport const switchOp = {\n rxJsOperator: switchMap,\n exhaustSemantics: false,\n};\nexport const mergeOp = {\n rxJsOperator: mergeMap,\n exhaustSemantics: false,\n};\nexport const concatOp = {\n rxJsOperator: concatMap,\n exhaustSemantics: false,\n};\nexport const exhaustOp = {\n rxJsOperator: exhaustMap,\n exhaustSemantics: true,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbmluZy1vcGVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZmxhdHRlbmluZy1vcGVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixRQUFRLEVBSVIsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBZWQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUF1QjtJQUMxQyxZQUFZLEVBQUUsU0FBUztJQUN2QixnQkFBZ0IsRUFBRSxLQUFLO0NBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQXVCO0lBQ3pDLFlBQVksRUFBRSxRQUFRO0lBQ3RCLGdCQUFnQixFQUFFLEtBQUs7Q0FDeEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBdUI7SUFDMUMsWUFBWSxFQUFFLFNBQVM7SUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztDQUN4QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUF1QjtJQUMzQyxZQUFZLEVBQUUsVUFBVTtJQUN4QixnQkFBZ0IsRUFBRSxJQUFJO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb25jYXRNYXAsXG4gIGV4aGF1c3RNYXAsXG4gIG1lcmdlTWFwLFxuICBPYnNlcnZhYmxlSW5wdXQsXG4gIE9ic2VydmVkVmFsdWVPZixcbiAgT3BlcmF0b3JGdW5jdGlvbixcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgUnhKc0ZsYXR0ZW5pbmdPcGVyYXRvciA9IDxULCBPIGV4dGVuZHMgT2JzZXJ2YWJsZUlucHV0PHVua25vd24+PihcbiAgcHJvamVjdDogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyKSA9PiBPLFxuKSA9PiBPcGVyYXRvckZ1bmN0aW9uPFQsIE9ic2VydmVkVmFsdWVPZjxPPj47XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciBhbiBSeEpTIGZsYXR0ZW5pbmcgb3BlcmF0b3IuXG4gKiBUaGlzIHdyYXBwZXIgaW5mb3JtcyBhYm91dCB3aGV0aGVyIHRoZSBvcGVyYXRvciBoYXMgZXhoYXVzdCBzZW1hbnRpY3Mgb3Igbm90LlxuICovXG5leHBvcnQgdHlwZSBGbGF0dGVuaW5nT3BlcmF0b3IgPSB7XG4gIHJ4SnNPcGVyYXRvcjogUnhKc0ZsYXR0ZW5pbmdPcGVyYXRvcjtcbiAgZXhoYXVzdFNlbWFudGljczogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBzd2l0Y2hPcDogRmxhdHRlbmluZ09wZXJhdG9yID0ge1xuICByeEpzT3BlcmF0b3I6IHN3aXRjaE1hcCxcbiAgZXhoYXVzdFNlbWFudGljczogZmFsc2UsXG59O1xuXG5leHBvcnQgY29uc3QgbWVyZ2VPcDogRmxhdHRlbmluZ09wZXJhdG9yID0ge1xuICByeEpzT3BlcmF0b3I6IG1lcmdlTWFwLFxuICBleGhhdXN0U2VtYW50aWNzOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBjb25zdCBjb25jYXRPcDogRmxhdHRlbmluZ09wZXJhdG9yID0ge1xuICByeEpzT3BlcmF0b3I6IGNvbmNhdE1hcCxcbiAgZXhoYXVzdFNlbWFudGljczogZmFsc2UsXG59O1xuXG5leHBvcnQgY29uc3QgZXhoYXVzdE9wOiBGbGF0dGVuaW5nT3BlcmF0b3IgPSB7XG4gIHJ4SnNPcGVyYXRvcjogZXhoYXVzdE1hcCxcbiAgZXhoYXVzdFNlbWFudGljczogdHJ1ZSxcbn07XG4iXX0=","import { computed, DestroyRef, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { catchError, defer, EMPTY, finalize, Subject, tap, } from 'rxjs';\nimport { concatOp } from '../flattening-operator';\n/**\n * Creates a mutation that leverages RxJS.\n *\n * For each mutation the following options can be defined:\n * - `operation`: A function that defines the mutation logic. It returns an Observable.\n * - `onSuccess`: A callback that is called when the mutation is successful.\n * - `onError`: A callback that is called when the mutation fails.\n * - `operator`: An optional wrapper of an RxJS flattening operator. By default `concat` sematics are used.\n * - `injector`: An optional Angular injector to use for dependency injection.\n *\n * The `operation` is the only mandatory option.\n *\n * The returned mutation can be called as an async function and returns a Promise.\n * This promise informs about whether the mutation was successful, failed, or aborted\n * (due to switchMap or exhaustMap semantics).\n *\n * The mutation also provides several Signals such as error, status or isPending (see below).\n *\n * Example usage without Store:\n *\n * ```typescript\n * const counterSignal = signal(0);\n *\n * const increment = rxMutation({\n * operation: (param: Param) => {\n * return calcSum(this.counterSignal(), param.value);\n * },\n * operator: concatOp,\n * onSuccess: (result) => {\n * this.counterSignal.set(result);\n * },\n * onError: (error) => {\n * console.error('Error occurred:', error);\n * },\n * });\n *\n * const error = increment.error;\n * const isPending = increment.isPending;\n * const status = increment.status;\n * const value = increment.value;\n * const hasValue = increment.hasValue;\n *\n * async function incrementCounter() {\n * const result = await increment({ value: 1 });\n * if (result.status === 'success') {\n * console.log('Success:', result.value);\n * }\n * if (result.status === 'error') {\n * console.log('Error:', result.error);\n * }\n * if (result.status === 'aborted') {\n * console.log('Operation aborted');\n * }\n * }\n *\n * function calcSum(a: number, b: number): Observable<number> {\n * return of(result).pipe(delay(500));\n * }\n * ```\n *\n * @param options\n * @returns the actual mutation function along tracking data as properties/methods\n */\nexport function rxMutation(optionsOrOperation) {\n const inputSubject = new Subject();\n const options = typeof optionsOrOperation === 'function'\n ? { operation: optionsOrOperation }\n : optionsOrOperation;\n const flatteningOp = options.operator ?? concatOp;\n const destroyRef = options.injector?.get(DestroyRef) ?? inject(DestroyRef);\n const callCount = signal(0, ...(ngDevMode ? [{ debugName: \"callCount\" }] : []));\n const errorSignal = signal(undefined, ...(ngDevMode ? [{ debugName: \"errorSignal\" }] : []));\n const idle = signal(true, ...(ngDevMode ? [{ debugName: \"idle\" }] : []));\n const isPending = computed(() => callCount() > 0, ...(ngDevMode ? [{ debugName: \"isPending\" }] : []));\n const value = signal(undefined, ...(ngDevMode ? [{ debugName: \"value\" }] : []));\n const isSuccess = computed(() => !idle() && !isPending() && !errorSignal(), ...(ngDevMode ? [{ debugName: \"isSuccess\" }] : []));\n const hasValue = function () {\n return typeof value() !== 'undefined';\n };\n const status = computed(() => {\n if (idle()) {\n return 'idle';\n }\n if (callCount() > 0) {\n return 'pending';\n }\n if (errorSignal()) {\n return 'error';\n }\n return 'success';\n }, ...(ngDevMode ? [{ debugName: \"status\" }] : []));\n const initialInnerStatus = 'idle';\n let innerStatus = initialInnerStatus;\n inputSubject\n .pipe(flatteningOp.rxJsOperator((input) => defer(() => {\n callCount.update((c) => c + 1);\n idle.set(false);\n return options.operation(input.param).pipe(tap((result) => {\n options.onSuccess?.(result, input.param);\n innerStatus = 'success';\n errorSignal.set(undefined);\n value.set(result);\n }), catchError((error) => {\n options.onError?.(error, input.param);\n errorSignal.set(error);\n value.set(undefined);\n innerStatus = 'error';\n return EMPTY;\n }), finalize(() => {\n callCount.update((c) => c - 1);\n if (innerStatus === 'success') {\n input.resolve({\n status: 'success',\n value: value(),\n });\n }\n else if (innerStatus === 'error') {\n input.resolve({\n status: 'error',\n error: errorSignal(),\n });\n }\n else {\n input.resolve({\n status: 'aborted',\n });\n }\n innerStatus = initialInnerStatus;\n }));\n })), takeUntilDestroyed(destroyRef))\n .subscribe();\n const mutationFn = (param) => {\n return new Promise((resolve) => {\n if (callCount() > 0 && flatteningOp.exhaustSemantics) {\n resolve({\n status: 'aborted',\n });\n }\n else {\n inputSubject.next({\n param,\n resolve,\n });\n }\n });\n };\n const mutation = mutationFn;\n mutation.status = status;\n mutation.isPending = isPending;\n mutation.error = errorSignal;\n mutation.value = value;\n mutation.hasValue = hasValue;\n mutation.isSuccess = isSuccess;\n return mutation;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtbXV0YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL211dGF0aW9uL3J4LW11dGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBWSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBQ0wsS0FBSyxFQUNMLFFBQVEsRUFFUixPQUFPLEVBQ1AsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFFBQVEsRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQztBQWF0RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4REc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixrQkFFNEM7SUFFNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBRzVCLENBQUM7SUFFTCxNQUFNLE9BQU8sR0FDWCxPQUFPLGtCQUFrQixLQUFLLFVBQVU7UUFDdEMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFO1FBQ25DLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztJQUV6QixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQztJQUVsRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFM0UsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMscURBQUMsQ0FBQztJQUM1QixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQVUsU0FBUyx1REFBQyxD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ZWYsIGluamVjdCwgSW5qZWN0b3IsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZGVmZXIsXG4gIEVNUFRZLFxuICBmaW5hbGl6ZSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgY29uY2F0T3AsIEZsYXR0ZW5pbmdPcGVyYXRvciB9IGZyb20gJy4uL2ZsYXR0ZW5pbmctb3BlcmF0b3InO1xuaW1wb3J0IHsgTXV0YXRpb24sIE11dGF0aW9uUmVzdWx0LCBNdXRhdGlvblN0YXR1cyB9IGZyb20gJy4vbXV0YXRpb24nO1xuXG5leHBvcnQgdHlwZSBPcGVyYXRpb248UGFyYW1ldGVyLCBSZXN1bHQ+ID0gKHBhcmFtOiBQYXJhbWV0ZXIpID0+IFJlc3VsdDtcblxuZXhwb3J0IGludGVyZmFjZSBSeE11dGF0aW9uT3B0aW9uczxQYXJhbWV0ZXIsIFJlc3VsdD4ge1xuICBvcGVyYXRpb246IE9wZXJhdGlvbjxQYXJhbWV0ZXIsIE9ic2VydmFibGU8UmVzdWx0Pj47XG4gIG9uU3VjY2Vzcz86IChyZXN1bHQ6IFJlc3VsdCwgcGFyYW06IFBhcmFtZXRlcikgPT4gdm9pZDtcbiAgb25FcnJvcj86IChlcnJvcjogdW5rbm93biwgcGFyYW06IFBhcmFtZXRlcikgPT4gdm9pZDtcbiAgb3BlcmF0b3I/OiBGbGF0dGVuaW5nT3BlcmF0b3I7XG4gIGluamVjdG9yPzogSW5qZWN0b3I7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG11dGF0aW9uIHRoYXQgbGV2ZXJhZ2VzIFJ4SlMuXG4gKlxuICogRm9yIGVhY2ggbXV0YXRpb24gdGhlIGZvbGxvd2luZyBvcHRpb25zIGNhbiBiZSBkZWZpbmVkOlxuICogLSBgb3BlcmF0aW9uYDogQSBmdW5jdGlvbiB0aGF0IGRlZmluZXMgdGhlIG11dGF0aW9uIGxvZ2ljLiBJdCByZXR1cm5zIGFuIE9ic2VydmFibGUuXG4gKiAtIGBvblN1Y2Nlc3NgOiBBIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIG11dGF0aW9uIGlzIHN1Y2Nlc3NmdWwuXG4gKiAtIGBvbkVycm9yYDogQSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBtdXRhdGlvbiBmYWlscy5cbiAqIC0gYG9wZXJhdG9yYDogQW4gb3B0aW9uYWwgd3JhcHBlciBvZiBhbiBSeEpTIGZsYXR0ZW5pbmcgb3BlcmF0b3IuIEJ5IGRlZmF1bHQgYGNvbmNhdGAgc2VtYXRpY3MgYXJlIHVzZWQuXG4gKiAtIGBpbmplY3RvcmA6IEFuIG9wdGlvbmFsIEFuZ3VsYXIgaW5qZWN0b3IgdG8gdXNlIGZvciBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAqXG4gKiBUaGUgYG9wZXJhdGlvbmAgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IG9wdGlvbi5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgbXV0YXRpb24gY2FuIGJlIGNhbGxlZCBhcyBhbiBhc3luYyBmdW5jdGlvbiBhbmQgcmV0dXJucyBhIFByb21pc2UuXG4gKiBUaGlzIHByb21pc2UgaW5mb3JtcyBhYm91dCB3aGV0aGVyIHRoZSBtdXRhdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgZmFpbGVkLCBvciBhYm9ydGVkXG4gKiAoZHVlIHRvIHN3aXRjaE1hcCBvciBleGhhdXN0TWFwIHNlbWFudGljcykuXG4gKlxuICogVGhlIG11dGF0aW9uIGFsc28gcHJvdmlkZXMgc2V2ZXJhbCBTaWduYWxzIHN1Y2ggYXMgZXJyb3IsIHN0YXR1cyBvciBpc1BlbmRpbmcgKHNlZSBiZWxvdykuXG4gKlxuICogRXhhbXBsZSB1c2FnZSB3aXRob3V0IFN0b3JlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvdW50ZXJTaWduYWwgPSBzaWduYWwoMCk7XG4gKlxuICogY29uc3QgaW5jcmVtZW50ID0gcnhNdXRhdGlvbih7XG4gKiAgIG9wZXJhdGlvbjogKHBhcmFtOiBQYXJhbSkgPT4ge1xuICogICAgIHJldHVybiBjYWxjU3VtKHRoaXMuY291bnRlclNpZ25hbCgpLCBwYXJhbS52YWx1ZSk7XG4gKiAgIH0sXG4gKiAgIG9wZXJhdG9yOiBjb25jYXRPcCxcbiAqICAgb25TdWNjZXNzOiAocmVzdWx0KSA9PiB7XG4gKiAgICAgdGhpcy5jb3VudGVyU2lnbmFsLnNldChyZXN1bHQpO1xuICogICB9LFxuICogICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvY2N1cnJlZDonLCBlcnJvcik7XG4gKiAgIH0sXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBlcnJvciA9IGluY3JlbWVudC5lcnJvcjtcbiAqIGNvbnN0IGlzUGVuZGluZyA9IGluY3JlbWVudC5pc1BlbmRpbmc7XG4gKiBjb25zdCBzdGF0dXMgPSBpbmNyZW1lbnQuc3RhdHVzO1xuICogY29uc3QgdmFsdWUgPSBpbmNyZW1lbnQudmFsdWU7XG4gKiBjb25zdCBoYXNWYWx1ZSA9IGluY3JlbWVudC5oYXNWYWx1ZTtcbiAqXG4gKiBhc3luYyBmdW5jdGlvbiBpbmNyZW1lbnRDb3VudGVyKCkge1xuICogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluY3JlbWVudCh7IHZhbHVlOiAxIH0pO1xuICogICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAqICAgICAgIGNvbnNvbGUubG9nKCdTdWNjZXNzOicsIHJlc3VsdC52YWx1ZSk7XG4gKiAgICAgfVxuICogICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gKiAgICAgICBjb25zb2xlLmxvZygnRXJyb3I6JywgcmVzdWx0LmVycm9yKTtcbiAqICAgICB9XG4gKiAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdhYm9ydGVkJykge1xuICogICAgICAgY29uc29sZS5sb2coJ09wZXJhdGlvbiBhYm9ydGVkJyk7XG4gKiAgICAgfVxuICogfVxuICpcbiAqIGZ1bmN0aW9uIGNhbGNTdW0oYTogbnVtYmVyLCBiOiBudW1iZXIpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICogICByZXR1cm4gb2YocmVzdWx0KS5waXBlKGRlbGF5KDUwMCkpO1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIHRoZSBhY3R1YWwgbXV0YXRpb24gZnVuY3Rpb24gYWxvbmcgdHJhY2tpbmcgZGF0YSBhcyBwcm9wZXJ0aWVzL21ldGhvZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ4TXV0YXRpb248UGFyYW1ldGVyLCBSZXN1bHQ+KFxuICBvcHRpb25zT3JPcGVyYXRpb246XG4gICAgfCBSeE11dGF0aW9uT3B0aW9uczxQYXJhbWV0ZXIsIFJlc3VsdD5cbiAgICB8IE9wZXJhdGlvbjxQYXJhbWV0ZXIsIE9ic2VydmFibGU8UmVzdWx0Pj4sXG4pOiBNdXRhdGlvbjxQYXJhbWV0ZXIsIFJlc3VsdD4ge1xuICBjb25zdCBpbnB1dFN1YmplY3QgPSBuZXcgU3ViamVjdDx7XG4gICAgcGFyYW06IFBhcmFtZXRlcjtcbiAgICByZXNvbHZlOiAocmVzdWx0OiBNdXRhdGlvblJlc3VsdDxSZXN1bHQ+KSA9PiB2b2lkO1xuICB9PigpO1xuXG4gIGNvbnN0IG9wdGlvbnMgPVxuICAgIHR5cGVvZiBvcHRpb25zT3JPcGVyYXRpb24gPT09ICdmdW5jdGlvbidcbiAgICAgID8geyBvcGVyYXRpb246IG9wdGlvbnNPck9wZXJhdGlvbiB9XG4gICAgICA6IG9wdGlvbnNPck9wZXJhdGlvbjtcblxuICBjb25zdCBmbGF0dGVuaW5nT3AgPSBvcHRpb25zLm9wZXJhdG9yID8/IGNvbmNhdE9wO1xuXG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBvcHRpb25zLmluamVjdG9yPy5nZXQoRGVzdHJveVJlZikgPz8gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0IGNhbGxDb3VudCA9IHNpZ25hbCgwKTtcbiAgY29uc3QgZXJyb3JTaWduYWwgPSBzaWduYWw8dW5rbm93bj4odW5kZWZpbmVkKTtcbiAgY29uc3QgaWRsZSA9IHNpZ25hbCh0cnVlKTtcbiAgY29uc3QgaXNQZW5kaW5nID0gY29tcHV0ZWQoKCkgPT4gY2FsbENvdW50KCkgPiAwKTtcbiAgY29uc3QgdmFsdWUgPSBzaWduYWw8UmVzdWx0IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBpc1N1Y2Nlc3MgPSBjb21wdXRlZCgoKSA9PiAhaWRsZSgpICYmICFpc1BlbmRpbmcoKSAmJiAhZXJyb3JTaWduYWwoKSk7XG5cbiAgY29uc3QgaGFzVmFsdWUgPSBmdW5jdGlvbiAoXG4gICAgdGhpczogTXV0YXRpb248UGFyYW1ldGVyLCBSZXN1bHQ+LFxuICApOiB0aGlzIGlzIE11dGF0aW9uPEV4Y2x1ZGU8UGFyYW1ldGVyLCB1bmRlZmluZWQ+LCBSZXN1bHQ+IHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlKCkgIT09ICd1bmRlZmluZWQnO1xuICB9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGNvbXB1dGVkPE11dGF0aW9uU3RhdHVzPigoKSA9PiB7XG4gICAgaWYgKGlkbGUoKSkge1xuICAgICAgcmV0dXJuICdpZGxlJztcbiAgICB9XG4gICAgaWYgKGNhbGxDb3VudCgpID4gMCkge1xuICAgICAgcmV0dXJuICdwZW5kaW5nJztcbiAgICB9XG4gICAgaWYgKGVycm9yU2lnbmFsKCkpIHtcbiAgICAgIHJldHVybiAnZXJyb3InO1xuICAgIH1cbiAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICB9KTtcblxuICBjb25zdCBpbml0aWFsSW5uZXJTdGF0dXM6IE11dGF0aW9uU3RhdHVzID0gJ2lkbGUnO1xuICBsZXQgaW5uZXJTdGF0dXM6IE11dGF0aW9uU3RhdHVzID0gaW5pdGlhbElubmVyU3RhdHVzO1xuXG4gIGlucHV0U3ViamVjdFxuICAgIC5waXBlKFxuICAgICAgZmxhdHRlbmluZ09wLnJ4SnNPcGVyYXRvcigoaW5wdXQpID0+XG4gICAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgICBjYWxsQ291bnQudXBkYXRlKChjKSA9PiBjICsgMSk7XG4gICAgICAgICAgaWRsZS5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLm9wZXJhdGlvbihpbnB1dC5wYXJhbSkucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzdWx0OiBSZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3M/LihyZXN1bHQsIGlucHV0LnBhcmFtKTtcbiAgICAgICAgICAgICAgaW5uZXJTdGF0dXMgPSAnc3VjY2Vzcyc7XG4gICAgICAgICAgICAgIGVycm9yU2lnbmFsLnNldCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICB2YWx1ZS5zZXQocmVzdWx0KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5vbkVycm9yPy4oZXJyb3IsIGlucHV0LnBhcmFtKTtcbiAgICAgICAgICAgICAgZXJyb3JTaWduYWwuc2V0KGVycm9yKTtcbiAgICAgICAgICAgICAgdmFsdWUuc2V0KHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgIGlubmVyU3RhdHVzID0gJ2Vycm9yJztcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgIGNhbGxDb3VudC51cGRhdGUoKGMpID0+IGMgLSAxKTtcblxuICAgICAgICAgICAgICBpZiAoaW5uZXJTdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgICAgIGlucHV0LnJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUoKSBhcyBSZXN1bHQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5uZXJTdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICBpbnB1dC5yZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvclNpZ25hbCgpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlucHV0LnJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnYWJvcnRlZCcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpbm5lclN0YXR1cyA9IGluaXRpYWxJbm5lclN0YXR1cztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZChkZXN0cm95UmVmKSxcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuXG4gIGNvbnN0IG11dGF0aW9uRm4gPSAocGFyYW06IFBhcmFtZXRlcikgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxNdXRhdGlvblJlc3VsdDxSZXN1bHQ+PigocmVzb2x2ZSkgPT4ge1xuICAgICAgaWYgKGNhbGxDb3VudCgpID4gMCAmJiBmbGF0dGVuaW5nT3AuZXhoYXVzdFNlbWFudGljcykge1xuICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICBzdGF0dXM6ICdhYm9ydGVkJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnB1dFN1YmplY3QubmV4dCh7XG4gICAgICAgICAgcGFyYW0sXG4gICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgbXV0YXRpb24gPSBtdXRhdGlvbkZuIGFzIE11dGF0aW9uPFBhcmFtZXRlciwgUmVzdWx0PjtcbiAgbXV0YXRpb24uc3RhdHVzID0gc3RhdHVzO1xuICBtdXRhdGlvbi5pc1BlbmRpbmcgPSBpc1BlbmRpbmc7XG4gIG11dGF0aW9uLmVycm9yID0gZXJyb3JTaWduYWw7XG4gIG11dGF0aW9uLnZhbHVlID0gdmFsdWU7XG4gIG11dGF0aW9uLmhhc1ZhbHVlID0gaGFzVmFsdWU7XG4gIG11dGF0aW9uLmlzU3VjY2VzcyA9IGlzU3VjY2VzcztcbiAgcmV0dXJuIG11dGF0aW9uO1xufVxuIl19","import { signalStoreFeature, withComputed, withMethods, } from '@ngrx/signals';\nexport function withMutations(mutationsFactory) {\n return (store) => {\n // TODO: Is this the correct usage?\n const source = store;\n const mutations = mutationsFactory({\n ...source,\n ...store.props,\n ...store.methods,\n ...store.stateSignals,\n });\n const feature = createMutationsFeature(mutations);\n return feature(store);\n };\n}\nfunction createMutationsFeature(mutations) {\n const keys = Object.keys(mutations);\n const feature = signalStoreFeature(withMethods(() => keys.reduce((acc, key) => ({\n ...acc,\n [key]: async (params) => {\n const mutation = mutations[key];\n if (!mutation) {\n throw new Error(`Mutation ${key} not found`);\n }\n const result = await mutation(params);\n return result;\n },\n }), {})), withComputed(() => keys.reduce((acc, key) => ({\n ...acc,\n [`${key}IsPending`]: mutations[key].isPending,\n [`${key}Status`]: mutations[key].status,\n [`${key}Error`]: mutations[key].error,\n }), {})));\n return feature;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tdXRhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtbXV0YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFTCxrQkFBa0IsRUFLbEIsWUFBWSxFQUNaLFdBQVcsR0FFWixNQUFNLGVBQWUsQ0FBQztBQTRFdkIsTUFBTSxVQUFVLGFBQWEsQ0FJM0IsZ0JBRVc7SUFFWCxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixtQ0FBbUM7UUFDbkMsTUFBTSxNQUFNLEdBQUcsS0FBK0MsQ0FBQztRQUMvRCxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztZQUNqQyxHQUFHLE1BQU07WUFDVCxHQUFHLEtBQUssQ0FBQyxLQUFLO1lBQ2QsR0FBRyxLQUFLLENBQUMsT0FBTztZQUNoQixHQUFHLEtBQUssQ0FBQyxZQUFZO1NBQ3RCLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFHLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUM3QixTQUFpQjtJQUVqQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXBDLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUNoQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDYixHQUFHLEdBQUc7UUFDTixDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFhLEVBQUUsRUFBRTtZQUM3QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO0tBQ0YsQ0FBQyxFQUNGLEVBQXVCLENBQ3hCLENBQ0YsRUFDRCxZQUFZLENBQUMsR0FBRyxFQUFFLENBQ2hCLElBQUksQ0FBQyxNQUFNLENBQ1QsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsR0FBRyxHQUFHO1FBQ04sQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVM7UUFDN0MsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU07UUFDdkMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUs7S0FDdEMsQ0FBQyxFQUNGLEVBQWdDLENBQ2pDLENBQ0YsQ0FDRixDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBTdGF0ZVNpZ25hbHMsXG4gIFN0YXRlU291cmNlLFxuICB3aXRoQ29tcHV0ZWQsXG4gIHdpdGhNZXRob2RzLFxuICBXcml0YWJsZVN0YXRlU291cmNlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IE11dGF0aW9uLCBNdXRhdGlvblN0YXR1cyB9IGZyb20gJy4vbXV0YXRpb24vbXV0YXRpb24nO1xuXG4vLyBOYW1lZE11dGF0aW9uTWV0aG9kcyBiZWxvdyB3aWxsIGluZmVyIHRoZSBhY3R1YWwgcGFyYW1ldGVyIGFuZCByZXR1cm4gdHlwZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG50eXBlIE11dGF0aW9uc0RpY3Rpb25hcnkgPSBSZWNvcmQ8c3RyaW5nLCBNdXRhdGlvbjxhbnksIGFueT4+O1xuXG4vLyB3aXRoTWV0aG9kcyB1c2VzIFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPiBpbnRlcm5hbGx5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlXG5leHBvcnQgdHlwZSBNZXRob2RzRGljdGlvbmFyeSA9IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPjtcblxudHlwZSBOYW1lZE11dGF0aW9uUHJvcHM8VCBleHRlbmRzIE11dGF0aW9uc0RpY3Rpb25hcnk+ID0ge1xuICBbUHJvcCBpbiBrZXlvZiBUIGFzIGAke1Byb3AgJiBzdHJpbmd9SXNQZW5kaW5nYF06IFNpZ25hbDxib29sZWFuPjtcbn0gJiB7XG4gIFtQcm9wIGluIGtleW9mIFQgYXMgYCR7UHJvcCAmIHN0cmluZ31TdGF0dXNgXTogU2lnbmFsPE11dGF0aW9uU3RhdHVzPjtcbn0gJiB7XG4gIFtQcm9wIGluIGtleW9mIFQgYXMgYCR7UHJvcCAmIHN0cmluZ31FcnJvcmBdOiBTaWduYWw8RXJyb3IgfCB1bmRlZmluZWQ+O1xufTtcblxudHlwZSBOYW1lZE11dGF0aW9uTWV0aG9kczxUIGV4dGVuZHMgTXV0YXRpb25zRGljdGlvbmFyeT4gPSB7XG4gIFtQcm9wIGluIGtleW9mIFQgYXMgYCR7UHJvcCAmIHN0cmluZ31gXTogVFtQcm9wXSBleHRlbmRzIE11dGF0aW9uPFxuICAgIGluZmVyIFAsXG4gICAgaW5mZXIgUlxuICA+XG4gICAgPyBNdXRhdGlvbjxQLCBSPlxuICAgIDogbmV2ZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOYW1lZE11dGF0aW9uUmVzdWx0PFQgZXh0ZW5kcyBNdXRhdGlvbnNEaWN0aW9uYXJ5PiA9XG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHtcbiAgICBwcm9wczogTmFtZWRNdXRhdGlvblByb3BzPFQ+O1xuICAgIG1ldGhvZHM6IE5hbWVkTXV0YXRpb25NZXRob2RzPFQ+O1xuICB9O1xuXG4vKipcbiAqIEFkZHMgbXV0YXRpb24gbWV0aG9kcyB0byB0aGUgc3RvcmUuIEFsc28sIGZvciBlYWNoIG11dGF0aW9uIG1ldGhvZCwgc2V2ZXJhbFxuICogU2lnbmFscyBhcmUgYWRkZWQgaW5mb3JtaW5nIGFib3V0IHRoZSBtdXRhdGlvbidzIHN0YXR1cyBhbmQgZXJyb3JzLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCB0eXBlIFBhcmFtcyA9IHtcbiAqICAgdmFsdWU6IG51bWJlcjtcbiAqIH07XG4gKlxuICogZXhwb3J0IGNvbnN0IENvdW50ZXJTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB7IHByb3ZpZGVkSW46ICdyb290JyB9LFxuICogICB3aXRoU3RhdGUoeyBjb3VudGVyOiAwIH0pLFxuICogICB3aXRoTXV0YXRpb25zKChzdG9yZSkgPT4gKHtcbiAqICAgICBpbmNyZW1lbnQ6IHJ4TXV0YXRpb24oeyAuLi4gfSksXG4gKiAgIH0pKSxcbiAqICk7XG4gKiBgYGBcbiAqXG4gKiBUaGVyZSBhcmUgc2V2ZXJhbCB0eXBlcyBvZiBtdXRhdGlvbnMuIEluIHRoZSBleGFtcGxlIHNob3duLCBhbiB7QGxpbmsgbW9kdWxlOnJ4LW11dGF0aW9uLnJ4TXV0YXRpb24gfCByeE11dGF0aW9ufVxuICogbGV2ZXJhZ2luZyBSeEpTIGlzIHVzZWRcbiAqXG4gKiBGb3IgdGhlIGRlZmluZWQgYGluY3JlbWVudGAgbXV0YXRpb24sIHNldmVyYWwgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFuZFxuICogbWV0aG9kcyBhcmUgYWRkZWQgdG8gdGhlIHN0b3JlOlxuICogLSBgaW5jcmVtZW50KHBhcmFtczogUGFyYW1zKTogUHJvbWlzZTxNdXRhdGlvblJlc3VsdDxudW1iZXI+PmA6IFRoZSBtdXRhdGlvbiBtZXRob2QuXG4gKiAtIGBpbmNyZW1lbnRJc1BlbmRpbmdgOiBBIHNpZ25hbCBpbmRpY2F0aW5nIGlmIHRoZSBtdXRhdGlvbiBpcyBpbiBwcm9ncmVzcy5cbiAqIC0gYGluY3JlbWVudFN0YXR1c2A6IEEgc2lnbmFsIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIG11dGF0aW9uLlxuICogLSBgaW5jcmVtZW50RXJyb3JgOiBBIHNpZ25hbCBjb250YWluaW5nIGFueSBlcnJvciB0aGF0IG9jY3VycmVkIGR1cmluZyB0aGUgbXV0YXRpb24uXG4gKlxuICogQHBhcmFtIG11dGF0aW9uc0ZhY3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhNdXRhdGlvbnM8XG4gIElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSZXN1bHQgZXh0ZW5kcyBNdXRhdGlvbnNEaWN0aW9uYXJ5LFxuPihcbiAgbXV0YXRpb25zRmFjdG9yeTogKFxuICAgIHN0b3JlOiBJbnB1dFsncHJvcHMnXSAmXG4gICAgICBJbnB1dFsnbWV0aG9kcyddICZcbiAgICAgIFdyaXRhYmxlU3RhdGVTb3VyY2U8SW5wdXRbJ3N0YXRlJ10+ICZcbiAgICAgIFN0YXRlU2lnbmFsczxJbnB1dFsnc3RhdGUnXT4sXG4gICkgPT4gUmVzdWx0LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBOYW1lZE11dGF0aW9uUmVzdWx0PFJlc3VsdD4+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aE11dGF0aW9uczxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFJlc3VsdCBleHRlbmRzIE11dGF0aW9uc0RpY3Rpb25hcnksXG4+KFxuICBtdXRhdGlvbnNGYWN0b3J5OiAoXG4gICAgc3RvcmU6IElucHV0Wydwcm9wcyddICYgSW5wdXRbJ21ldGhvZHMnXSAmIFN0YXRlU291cmNlPElucHV0WydzdGF0ZSddPixcbiAgKSA9PiBSZXN1bHQsXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQ+IHtcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xuICAgIC8vIFRPRE86IElzIHRoaXMgdGhlIGNvcnJlY3QgdXNhZ2U/XG4gICAgY29uc3Qgc291cmNlID0gc3RvcmUgYXMgU3RhdGVTb3VyY2U8dHlwZW9mIHN0b3JlLnN0YXRlU2lnbmFscz47XG4gICAgY29uc3QgbXV0YXRpb25zID0gbXV0YXRpb25zRmFjdG9yeSh7XG4gICAgICAuLi5zb3VyY2UsXG4gICAgICAuLi5zdG9yZS5wcm9wcyxcbiAgICAgIC4uLnN0b3JlLm1ldGhvZHMsXG4gICAgICAuLi5zdG9yZS5zdGF0ZVNpZ25hbHMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBmZWF0dXJlID0gY3JlYXRlTXV0YXRpb25zRmVhdHVyZShtdXRhdGlvbnMpO1xuICAgIHJldHVybiBmZWF0dXJlKHN0b3JlKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTXV0YXRpb25zRmVhdHVyZTxSZXN1bHQgZXh0ZW5kcyBNdXRhdGlvbnNEaWN0aW9uYXJ5PihcbiAgbXV0YXRpb25zOiBSZXN1bHQsXG4pIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG11dGF0aW9ucyk7XG5cbiAgY29uc3QgZmVhdHVyZSA9IHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoTWV0aG9kcygoKSA9PlxuICAgICAga2V5cy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIGtleSkgPT4gKHtcbiAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgW2tleV06IGFzeW5jIChwYXJhbXM6IG5ldmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG11dGF0aW9uc1trZXldO1xuICAgICAgICAgICAgaWYgKCFtdXRhdGlvbikge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE11dGF0aW9uICR7a2V5fSBub3QgZm91bmRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG11dGF0aW9uKHBhcmFtcyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICB7fSBhcyBNZXRob2RzRGljdGlvbmFyeSxcbiAgICAgICksXG4gICAgKSxcbiAgICB3aXRoQ29tcHV0ZWQoKCkgPT5cbiAgICAgIGtleXMucmVkdWNlKFxuICAgICAgICAoYWNjLCBrZXkpID0+ICh7XG4gICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgIFtgJHtrZXl9SXNQZW5kaW5nYF06IG11dGF0aW9uc1trZXldLmlzUGVuZGluZyxcbiAgICAgICAgICBbYCR7a2V5fVN0YXR1c2BdOiBtdXRhdGlvbnNba2V5XS5zdGF0dXMsXG4gICAgICAgICAgW2Ake2tleX1FcnJvcmBdOiBtdXRhdGlvbnNba2V5XS5lcnJvcixcbiAgICAgICAgfSksXG4gICAgICAgIHt9IGFzIE5hbWVkTXV0YXRpb25Qcm9wczxSZXN1bHQ+LFxuICAgICAgKSxcbiAgICApLFxuICApO1xuICByZXR1cm4gZmVhdHVyZTtcbn1cbiJdfQ==","//** Types for `withResource` */\nimport { isSignal, } from '@angular/core';\nimport { signalStoreFeature, withLinkedState, withMethods, withProps, } from '@ngrx/signals';\nexport function withResource(resourceFactory) {\n return (store) => {\n const resourceOrDictionary = resourceFactory({\n ...store.stateSignals,\n ...store.props,\n ...store.methods,\n });\n if (isResourceRef(resourceOrDictionary)) {\n return createUnnamedResource(resourceOrDictionary)(store);\n }\n else {\n return createNamedResource(resourceOrDictionary)(store);\n }\n };\n}\nfunction createUnnamedResource(resource) {\n function hasValue() {\n return resource.hasValue();\n }\n return signalStoreFeature(withLinkedState(() => ({ value: resource.value })), withProps(() => ({\n status: resource.status,\n error: resource.error,\n isLoading: resource.isLoading,\n })), withMethods(() => ({\n hasValue,\n _reload: () => resource.reload(),\n })));\n}\nfunction createNamedResource(dictionary) {\n const keys = Object.keys(dictionary);\n const state = keys.reduce((state, resourceName) => ({\n ...state,\n [`${resourceName}Value`]: dictionary[resourceName].value,\n }), {});\n const props = keys.reduce((props, resourceName) => ({\n ...props,\n [`${resourceName}Status`]: dictionary[resourceName].status,\n [`${resourceName}Error`]: dictionary[resourceName].error,\n [`${resourceName}IsLoading`]: dictionary[resourceName].isLoading,\n }), {});\n const methods = keys.reduce((methods, resourceName) => {\n return {\n ...methods,\n [`${resourceName}HasValue`]: () => dictionary[resourceName].hasValue(),\n [`_${resourceName}Reload`]: () => dictionary[resourceName].reload(),\n };\n }, {});\n return signalStoreFeature(withLinkedState(() => state), withProps(() => props), withMethods(() => methods));\n}\nfunction isResourceRef(value) {\n return (value !== null &&\n typeof value === 'object' &&\n 'value' in value &&\n isSignal(value.value) &&\n 'status' in value &&\n 'error' in value &&\n 'isLoading' in value &&\n 'hasValue' in value &&\n 'reload' in value);\n}\n//** Implementation of `mapToResource` */\n/**\n * @experimental\n * @description\n *\n * Maps a named resource to type `Resource<T>`.\n *\n * @usageNotes\n *\n * ```ts\n * const store = signalStore(\n * withState({ userId: undefined as number | undefined }),\n * withResource(({ userId }) => ({\n * user: httpResource<User[]>(() => '/users', { defaultValue: [] }),\n * }))\n * );\n * const userResource = mapToResource(store, 'user');\n * userResource satisfies Resource<User[]>;\n * ```\n *\n * @param store The store instance to map the resource to.\n * @param name The name of the resource to map.\n * @returns `ResourceRef<T>`\n */\nexport function mapToResource(store, name) {\n const resourceName = String(name);\n function hasValue() {\n return store[`${resourceName}HasValue`]();\n }\n return {\n value: store[`${resourceName}Value`],\n status: store[`${resourceName}Status`],\n error: store[`${resourceName}Error`],\n isLoading: store[`${resourceName}IsLoading`],\n hasValue,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7QUFFaEMsT0FBTyxFQUNMLFFBQVEsR0FNVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsa0JBQWtCLEVBSWxCLGVBQWUsRUFDZixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBMEh2QixNQUFNLFVBQVUsWUFBWSxDQUkxQixlQUVvRDtJQUVwRCxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztZQUMzQyxHQUFHLEtBQUssQ0FBQyxZQUFZO1lBQ3JCLEdBQUcsS0FBSyxDQUFDLEtBQUs7WUFDZCxHQUFHLEtBQUssQ0FBQyxPQUFPO1NBQ2pCLENBQUMsQ0FBQztRQUVILElBQUksYUFBYSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztZQUN4QyxPQUFPLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUM1QixRQUFvQztJQUVwQyxTQUFTLFFBQVE7UUFDZixPQUFPLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxrQkFBa0IsQ0FDdkIsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFDbEQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7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TztRQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxZQUFZLE9BQU8sQ0FBQztRQUNwQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsWUFBWSxRQUFRLENBQUM7UUFDdEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLFlBQVksT0FBTyxDQUFDO1FBQ3BDLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxZQUFZLFdBQVcsQ0FBQztRQUM1QyxRQUFRO0tBQ3NCLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vKiogVHlwZXMgZm9yIGB3aXRoUmVzb3VyY2VgICovXG5cbmltcG9ydCB7XG4gIGlzU2lnbmFsLFxuICBSZXNvdXJjZSxcbiAgUmVzb3VyY2VSZWYsXG4gIFJlc291cmNlU3RhdHVzLFxuICBTaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFN0YXRlU2lnbmFscyxcbiAgd2l0aExpbmtlZFN0YXRlLFxuICB3aXRoTWV0aG9kcyxcbiAgd2l0aFByb3BzLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VSZXN1bHQ8VD4gPSB7XG4gIHN0YXRlOiB7IHZhbHVlOiBUIH07XG4gIHByb3BzOiB7XG4gICAgc3RhdHVzOiBTaWduYWw8UmVzb3VyY2VTdGF0dXM+O1xuICAgIGVycm9yOiBTaWduYWw8RXJyb3IgfCB1bmRlZmluZWQ+O1xuICAgIGlzTG9hZGluZzogU2lnbmFsPGJvb2xlYW4+O1xuICB9O1xuICBtZXRob2RzOiB7XG4gICAgaGFzVmFsdWUoKTogdGhpcyBpcyBSZXNvdXJjZTxFeGNsdWRlPFQsIHVuZGVmaW5lZD4+O1xuICAgIF9yZWxvYWQoKTogYm9vbGVhbjtcbiAgfTtcbn07XG5cbnR5cGUgUmVzb3VyY2VEaWN0aW9uYXJ5ID0gUmVjb3JkPHN0cmluZywgUmVzb3VyY2VSZWY8dW5rbm93bj4+O1xuXG50eXBlIE5hbWVkUmVzb3VyY2VSZXN1bHQ8VCBleHRlbmRzIFJlc291cmNlRGljdGlvbmFyeT4gPSB7XG4gIHN0YXRlOiB7XG4gICAgW1Byb3AgaW4ga2V5b2YgVCBhcyBgJHtQcm9wICZcbiAgICAgIHN0cmluZ31WYWx1ZWBdOiBUW1Byb3BdWyd2YWx1ZSddIGV4dGVuZHMgU2lnbmFsPGluZmVyIFM+ID8gUyA6IG5ldmVyO1xuICB9O1xuICBwcm9wczoge1xuICAgIFtQcm9wIGluIGtleW9mIFQgYXMgYCR7UHJvcCAmIHN0cmluZ31TdGF0dXNgXTogU2lnbmFsPFJlc291cmNlU3RhdHVzPjtcbiAgfSAmIHtcbiAgICBbUHJvcCBpbiBrZXlvZiBUIGFzIGAke1Byb3AgJiBzdHJpbmd9RXJyb3JgXTogU2lnbmFsPEVycm9yIHwgdW5kZWZpbmVkPjtcbiAgfSAmIHtcbiAgICBbUHJvcCBpbiBrZXlvZiBUIGFzIGAke1Byb3AgJiBzdHJpbmd9SXNMb2FkaW5nYF06IFNpZ25hbDxib29sZWFuPjtcbiAgfTtcbiAgbWV0aG9kczoge1xuICAgIFtQcm9wIGluIGtleW9mIFQgYXMgYCR7UHJvcCAmIHN0cmluZ31IYXNWYWx1ZWBdOiAoKSA9PiB0aGlzIGlzIFJlc291cmNlPFxuICAgICAgRXhjbHVkZTxUW1Byb3BdWyd2YWx1ZSddLCB1bmRlZmluZWQ+XG4gICAgPjtcbiAgfSAmIHtcbiAgICBbUHJvcCBpbiBrZXlvZiBUIGFzIGBfJHtQcm9wICYgc3RyaW5nfVJlbG9hZGBdOiAoKSA9PiBib29sZWFuO1xuICB9O1xufTtcblxuLy8qKiBJbXBsZW1lbnRhdGlvbiBvZiBgd2l0aFJlc291cmNlYCAqL1xuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIEludGVncmF0ZXMgYSBgUmVzb3VyY2VgIGludG8gdGhlIFNpZ25hbFN0b3JlIGFuZCBtYWtlcyB0aGUgc3RvcmUgaW5zdGFuY2VcbiAqIGltcGxlbWVudCB0aGUgYFJlc291cmNlYCBpbnRlcmZhY2UuXG4gKlxuICogVGhlIHJlc291cmNl4oCZcyB2YWx1ZSBpcyBzdG9yZWQgdW5kZXIgdGhlIGB2YWx1ZWAga2V5IGluIHRoZSBzdGF0ZVxuICogYW5kIGlzIGV4cG9zZWQgYXMgYSBgRGVlcFNpZ25hbGAuXG4gKlxuICogSXQgY2FuIGFsc28gYmUgdXBkYXRlZCB2aWEgYHBhdGNoU3RhdGVgLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IFVzZXJTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB3aXRoU3RhdGUoeyB1c2VySWQ6IHVuZGVmaW5lZCBhcyBudW1iZXIgfCB1bmRlZmluZWQgfSksXG4gKiAgIHdpdGhSZXNvdXJjZSgoeyB1c2VySWQgfSkgPT5cbiAqICAgICBodHRwUmVzb3VyY2U8VXNlcj4oKCkgPT5cbiAqICAgICAgIHVzZXJJZCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYC91c2Vycy8ke3VzZXJJZH1gXG4gKiAgICAgKVxuICogICApXG4gKiApO1xuICpcbiAqIGNvbnN0IHVzZXJTdG9yZSA9IG5ldyBVc2VyU3RvcmUoKTtcbiAqIHVzZXJTdG9yZS52YWx1ZSgpOyAvLyBVc2VyIHwgdW5kZWZpbmVkXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcmVzb3VyY2VGYWN0b3J5IEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIHRoZSBzdG9yZSdzIHN0YXRlIHNpZ25hbHMsXG4gKiBtZXRob2RzLCBhbmQgcHJvcHMuIE5lZWRzIHRvIHJldHVybiBhIGBSZXNvdXJjZVJlZmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVzb3VyY2U8XG4gIElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSZXNvdXJjZVZhbHVlLFxuPihcbiAgcmVzb3VyY2VGYWN0b3J5OiAoXG4gICAgc3RvcmU6IElucHV0Wydwcm9wcyddICYgSW5wdXRbJ21ldGhvZHMnXSAmIFN0YXRlU2lnbmFsczxJbnB1dFsnc3RhdGUnXT4sXG4gICkgPT4gUmVzb3VyY2VSZWY8UmVzb3VyY2VWYWx1ZT4sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIFJlc291cmNlUmVzdWx0PFJlc291cmNlVmFsdWU+PjtcblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBJbnRlZ3JhdGVzIG11bHRpcGxlIHJlc291cmNlcyBpbnRvIHRoZSBTaWduYWxTdG9yZS4gRWFjaCByZXNvdXJjZSBpc1xuICogcmVnaXN0ZXJlZCBieSBuYW1lLCB3aGljaCBpcyB1c2VkIGFzIGEgcHJlZml4IHdoZW4gc3ByZWFkaW5nIHRoZSBtZW1iZXJzXG4gKiBvZiBgUmVzb3VyY2VgIG9udG8gdGhlIHN0b3JlLlxuICpcbiAqIEVhY2ggcmVzb3VyY2XigJlzIHZhbHVlIGlzIHBhcnQgb2YgdGhlIHN0YXRlLCBzdG9yZWQgdW5kZXIgdGhlIGB2YWx1ZWAga2V5XG4gKiB3aXRoIHRoZSByZXNvdXJjZSBuYW1lIGFzIHByZWZpeC4gVmFsdWVzIGFyZSBleHBvc2VkIGFzIGBEZWVwU2lnbmFsYHMgYW5kXG4gKiBjYW4gYmUgdXBkYXRlZCB2aWEgYHBhdGNoU3RhdGVgLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IFVzZXJTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB3aXRoU3RhdGUoeyB1c2VySWQ6IHVuZGVmaW5lZCBhcyBudW1iZXIgfCB1bmRlZmluZWQgfSksXG4gKiAgIHdpdGhSZXNvdXJjZSgoeyB1c2VySWQgfSkgPT4gKHtcbiAqICAgICBsaXN0OiBodHRwUmVzb3VyY2U8VXNlcltdPigoKSA9PiAnL3VzZXJzJywgeyBkZWZhdWx0VmFsdWU6IFtdIH0pLFxuICogICAgIGRldGFpbDogaHR0cFJlc291cmNlPFVzZXI+KCgpID0+XG4gKiAgICAgICB1c2VySWQgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGAvdXNlcnMvJHt1c2VySWR9YFxuICogICAgICksXG4gKiAgIH0pKVxuICogKTtcbiAqXG4gKiBjb25zdCB1c2VyU3RvcmUgPSBuZXcgVXNlclN0b3JlKCk7XG4gKiB1c2VyU3RvcmUubGlzdFZhbHVlKCk7IC8vIFtdXG4gKiB1c2VyU3RvcmUuZGV0YWlsVmFsdWUoKTsgLy8gVXNlciB8IHVuZGVmaW5lZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHJlc291cmNlRmFjdG9yeSBBIGZhY3RvcnkgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyB0aGUgc3RvcmUncyBwcm9wcyxcbiAqIG1ldGhvZHMsIGFuZCBzdGF0ZSBzaWduYWxzLiBJdCBtdXN0IHJldHVybiBhIGBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZVJlZj5gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc291cmNlPFxuICBJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRGljdGlvbmFyeSBleHRlbmRzIFJlc291cmNlRGljdGlvbmFyeSxcbj4oXG4gIHJlc291cmNlRmFjdG9yeTogKFxuICAgIHN0b3JlOiBJbnB1dFsncHJvcHMnXSAmIElucHV0WydtZXRob2RzJ10gJiBTdGF0ZVNpZ25hbHM8SW5wdXRbJ3N0YXRlJ10+LFxuICApID0+IERpY3Rpb25hcnksXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIE5hbWVkUmVzb3VyY2VSZXN1bHQ8RGljdGlvbmFyeT4+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc291cmNlPFxuICBJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUmVzb3VyY2VWYWx1ZSxcbj4oXG4gIHJlc291cmNlRmFjdG9yeTogKFxuICAgIHN0b3JlOiBJbnB1dFsncHJvcHMnXSAmIElucHV0WydtZXRob2RzJ10gJiBTdGF0ZVNpZ25hbHM8SW5wdXRbJ3N0YXRlJ10+LFxuICApID0+IFJlc291cmNlUmVmPFJlc291cmNlVmFsdWU+IHwgUmVzb3VyY2VEaWN0aW9uYXJ5LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0PiB7XG4gIHJldHVybiAoc3RvcmUpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZU9yRGljdGlvbmFyeSA9IHJlc291cmNlRmFjdG9yeSh7XG4gICAgICAuLi5zdG9yZS5zdGF0ZVNpZ25hbHMsXG4gICAgICAuLi5zdG9yZS5wcm9wcyxcbiAgICAgIC4uLnN0b3JlLm1ldGhvZHMsXG4gICAgfSk7XG5cbiAgICBpZiAoaXNSZXNvdXJjZVJlZihyZXNvdXJjZU9yRGljdGlvbmFyeSkpIHtcbiAgICAgIHJldHVybiBjcmVhdGVVbm5hbWVkUmVzb3VyY2UocmVzb3VyY2VPckRpY3Rpb25hcnkpKHN0b3JlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNyZWF0ZU5hbWVkUmVzb3VyY2UocmVzb3VyY2VPckRpY3Rpb25hcnkpKHN0b3JlKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVVubmFtZWRSZXNvdXJjZTxSZXNvdXJjZVZhbHVlPihcbiAgcmVzb3VyY2U6IFJlc291cmNlUmVmPFJlc291cmNlVmFsdWU+LFxuKSB7XG4gIGZ1bmN0aW9uIGhhc1ZhbHVlKCk6IHRoaXMgaXMgUmVzb3VyY2U8RXhjbHVkZTxSZXNvdXJjZVZhbHVlLCB1bmRlZmluZWQ+PiB7XG4gICAgcmV0dXJuIHJlc291cmNlLmhhc1ZhbHVlKCk7XG4gIH1cblxuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhMaW5rZWRTdGF0ZSgoKSA9PiAoeyB2YWx1ZTogcmVzb3VyY2UudmFsdWUgfSkpLFxuICAgIHdpdGhQcm9wcygoKSA9PiAoe1xuICAgICAgc3RhdHVzOiByZXNvdXJjZS5zdGF0dXMsXG4gICAgICBlcnJvcjogcmVzb3VyY2UuZXJyb3IsXG4gICAgICBpc0xvYWRpbmc6IHJlc291cmNlLmlzTG9hZGluZyxcbiAgICB9KSksXG4gICAgd2l0aE1ldGhvZHMoKCkgPT4gKHtcbiAgICAgIGhhc1ZhbHVlLFxuICAgICAgX3JlbG9hZDogKCkgPT4gcmVzb3VyY2UucmVsb2FkKCksXG4gICAgfSkpLFxuICApO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVOYW1lZFJlc291cmNlPERpY3Rpb25hcnkgZXh0ZW5kcyBSZXNvdXJjZURpY3Rpb25hcnk+KFxuICBkaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5LFxuKSB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhkaWN0aW9uYXJ5KTtcblxuICBjb25zdCBzdGF0ZTogUmVjb3JkPHN0cmluZywgV3JpdGFibGVTaWduYWw8dW5rbm93bj4+ID0ga2V5cy5yZWR1Y2UoXG4gICAgKHN0YXRlLCByZXNvdXJjZU5hbWUpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIFtgJHtyZXNvdXJjZU5hbWV9VmFsdWVgXTogZGljdGlvbmFyeVtyZXNvdXJjZU5hbWVdLnZhbHVlLFxuICAgIH0pLFxuICAgIHt9LFxuICApO1xuXG4gIGNvbnN0IHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+ID0ga2V5cy5yZWR1Y2UoXG4gICAgKHByb3BzLCByZXNvdXJjZU5hbWUpID0+ICh7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIFtgJHtyZXNvdXJjZU5hbWV9U3RhdHVzYF06IGRpY3Rpb25hcnlbcmVzb3VyY2VOYW1lXS5zdGF0dXMsXG4gICAgICBbYCR7cmVzb3VyY2VOYW1lfUVycm9yYF06IGRpY3Rpb25hcnlbcmVzb3VyY2VOYW1lXS5lcnJvcixcbiAgICAgIFtgJHtyZXNvdXJjZU5hbWV9SXNMb2FkaW5nYF06IGRpY3Rpb25hcnlbcmVzb3VyY2VOYW1lXS5pc0xvYWRpbmcsXG4gICAgfSksXG4gICAge30sXG4gICk7XG5cbiAgY29uc3QgbWV0aG9kczogUmVjb3JkPHN0cmluZywgKCkgPT4gYm9vbGVhbj4gPSBrZXlzLnJlZHVjZShcbiAgICAobWV0aG9kcywgcmVzb3VyY2VOYW1lKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5tZXRob2RzLFxuICAgICAgICBbYCR7cmVzb3VyY2VOYW1lfUhhc1ZhbHVlYF06ICgpID0+IGRpY3Rpb25hcnlbcmVzb3VyY2VOYW1lXS5oYXNWYWx1ZSgpLFxuICAgICAgICBbYF8ke3Jlc291cmNlTmFtZX1SZWxvYWRgXTogKCkgPT4gZGljdGlvbmFyeVtyZXNvdXJjZU5hbWVdLnJlbG9hZCgpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIHt9LFxuICApO1xuXG4gIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXG4gICAgd2l0aExpbmtlZFN0YXRlKCgpID0+IHN0YXRlKSxcbiAgICB3aXRoUHJvcHMoKCkgPT4gcHJvcHMpLFxuICAgIHdpdGhNZXRob2RzKCgpID0+IG1ldGhvZHMpLFxuICApO1xufVxuXG5mdW5jdGlvbiBpc1Jlc291cmNlUmVmKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVzb3VyY2VSZWY8dW5rbm93bj4ge1xuICByZXR1cm4gKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICd2YWx1ZScgaW4gdmFsdWUgJiZcbiAgICBpc1NpZ25hbCh2YWx1ZS52YWx1ZSkgJiZcbiAgICAnc3RhdHVzJyBpbiB2YWx1ZSAmJlxuICAgICdlcnJvcicgaW4gdmFsdWUgJiZcbiAgICAnaXNMb2FkaW5nJyBpbiB2YWx1ZSAmJlxuICAgICdoYXNWYWx1ZScgaW4gdmFsdWUgJiZcbiAgICAncmVsb2FkJyBpbiB2YWx1ZVxuICApO1xufVxuXG4vLyoqIFR5cGVzIGZvciBgbWFwVG9SZXNvdXJjZWAgKi9cblxudHlwZSBOYW1lZFJlc291cmNlPE5hbWUgZXh0ZW5kcyBzdHJpbmcsIFQ+ID0ge1xuICBbUHJvcCBpbiBgJHtOYW1lfVZhbHVlYF06IFNpZ25hbDxUPjtcbn0gJiB7XG4gIFtQcm9wIGluIGAke05hbWV9U3RhdHVzYF06IFNpZ25hbDxSZXNvdXJjZVN0YXR1cz47XG59ICYge1xuICBbUHJvcCBpbiBgJHtOYW1lfUVycm9yYF06IFNpZ25hbDxFcnJvciB8IHVuZGVmaW5lZD47XG59ICYge1xuICBbUHJvcCBpbiBgJHtOYW1lfUlzTG9hZGluZ2BdOiBTaWduYWw8Ym9vbGVhbj47XG59ICYge1xuICBbUHJvcCBpbiBgJHtOYW1lfUhhc1ZhbHVlYF06ICgpID0+IGJvb2xlYW47XG59O1xuXG50eXBlIElzVmFsaWRSZXNvdXJjZU5hbWU8XG4gIE5hbWUgZXh0ZW5kcyBzdHJpbmcsXG4gIFN0b3JlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+ID1cbiAgU3RvcmVbYCR7TmFtZX1WYWx1ZWBdIGV4dGVuZHMgU2lnbmFsPGluZmVyIFM+XG4gICAgPyBTdG9yZSBleHRlbmRzIE5hbWVkUmVzb3VyY2U8TmFtZSwgUz5cbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZVxuICAgIDogZmFsc2U7XG5cbnR5cGUgUmVzb3VyY2VOYW1lczxTdG9yZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IGtleW9mIHtcbiAgW1Byb3AgaW4ga2V5b2YgU3RvcmUgYXMgUHJvcCBleHRlbmRzIGAke2luZmVyIE5hbWV9VmFsdWVgXG4gICAgPyBJc1ZhbGlkUmVzb3VyY2VOYW1lPE5hbWUsIFN0b3JlPiBleHRlbmRzIHRydWVcbiAgICAgID8gTmFtZVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXJdOiBTdG9yZVtQcm9wXSBleHRlbmRzIFNpZ25hbDxpbmZlciBTPiA/IFMgOiBuZXZlcjtcbn07XG5cbnR5cGUgTWFwcGVkUmVzb3VyY2U8XG4gIFN0b3JlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIE5hbWUgZXh0ZW5kcyBzdHJpbmcsXG4+ID0gUmVzb3VyY2U8U3RvcmVbYCR7TmFtZX1WYWx1ZWBdIGV4dGVuZHMgU2lnbmFsPGluZmVyIFM+ID8gUyA6IG5ldmVyPjtcblxuLy8qKiBJbXBsZW1lbnRhdGlvbiBvZiBgbWFwVG9SZXNvdXJjZWAgKi9cblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBNYXBzIGEgbmFtZWQgcmVzb3VyY2UgdG8gdHlwZSBgUmVzb3VyY2U8VD5gLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IHN0b3JlID0gc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhTdGF0ZSh7IHVzZXJJZDogdW5kZWZpbmVkIGFzIG51bWJlciB8IHVuZGVmaW5lZCB9KSxcbiAqICAgd2l0aFJlc291cmNlKCh7IHVzZXJJZCB9KSA9PiAoe1xuICogICAgIHVzZXI6IGh0dHBSZXNvdXJjZTxVc2VyW10+KCgpID0+ICcvdXNlcnMnLCB7IGRlZmF1bHRWYWx1ZTogW10gfSksXG4gKiAgIH0pKVxuICogKTtcbiAqIGNvbnN0IHVzZXJSZXNvdXJjZSA9IG1hcFRvUmVzb3VyY2Uoc3RvcmUsICd1c2VyJyk7XG4gKiB1c2VyUmVzb3VyY2Ugc2F0aXNmaWVzIFJlc291cmNlPFVzZXJbXT47XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RvcmUgVGhlIHN0b3JlIGluc3RhbmNlIHRvIG1hcCB0aGUgcmVzb3VyY2UgdG8uXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgdG8gbWFwLlxuICogQHJldHVybnMgYFJlc291cmNlUmVmPFQ+YFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9SZXNvdXJjZTxcbiAgTmFtZSBleHRlbmRzIFJlc291cmNlTmFtZXM8U3RvcmU+LFxuICBTdG9yZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPihzdG9yZTogU3RvcmUsIG5hbWU6IE5hbWUpOiBNYXBwZWRSZXNvdXJjZTxTdG9yZSwgTmFtZT4ge1xuICBjb25zdCByZXNvdXJjZU5hbWUgPSBTdHJpbmcobmFtZSk7XG5cbiAgZnVuY3Rpb24gaGFzVmFsdWUoKTogdGhpcyBpcyBSZXNvdXJjZTxcbiAgICBFeGNsdWRlPE1hcHBlZFJlc291cmNlPFN0b3JlLCBOYW1lPiwgdW5kZWZpbmVkPlxuICA+IHtcbiAgICByZXR1cm4gKHN0b3JlW2Ake3Jlc291cmNlTmFtZX1IYXNWYWx1ZWBdIGFzICgpID0+IGJvb2xlYW4pKCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHZhbHVlOiBzdG9yZVtgJHtyZXNvdXJjZU5hbWV9VmFsdWVgXSxcbiAgICBzdGF0dXM6IHN0b3JlW2Ake3Jlc291cmNlTmFtZX1TdGF0dXNgXSxcbiAgICBlcnJvcjogc3RvcmVbYCR7cmVzb3VyY2VOYW1lfUVycm9yYF0sXG4gICAgaXNMb2FkaW5nOiBzdG9yZVtgJHtyZXNvdXJjZU5hbWV9SXNMb2FkaW5nYF0sXG4gICAgaGFzVmFsdWUsXG4gIH0gYXMgTWFwcGVkUmVzb3VyY2U8U3RvcmUsIE5hbWU+O1xufVxuIl19","import { HttpClient, HttpEventType, HttpResponse, } from '@angular/common/http';\nimport { inject, signal } from '@angular/core';\nimport { defer, filter, map, tap } from 'rxjs';\nimport { rxMutation } from './rx-mutation';\n/**\n * Creates an HTTP mutation.\n *\n * ```typescript\n * export type Params = {\n * value: number;\n * };\n *\n * export type CounterResponse = {\n * // httpbin.org echos the request using the\n * // json property\n * json: { counter: number };\n * };\n *\n * const simpleSaveUser = httpMutation({\n * request: (userData: AddUserEntry) => ({\n * url: 'api/users',\n * body: userData,\n * }),\n * parse: Boolean,\n * })\n *\n * const saveUser = httpMutation({\n * request: (p: Params) => ({\n * url: `https://httpbin.org/post`,\n * method: 'POST',\n * body: { counter: p.value },\n * headers: { 'Content-Type': 'application/json' },\n * }),\n * onSuccess: (response: CounterResponse) => {\n * console.log('Counter sent to server:', response);\n * },\n * onError: (error) => {\n * console.error('Failed to send counter:', error);\n * },\n * });\n *\n * const result = await this.saveUser({ value: 17 });\n * if (result.status === 'success') {\n * console.log('Successfully saved to server:', result.value);\n * }\n * else if (result.status === 'error') {\n * console.log('Failed to save:', result.error);\n * }\n * else {\n * console.log('Operation aborted');\n * }\n * ```\n *\n * @param options The options for the HTTP mutation.\n * @returns The HTTP mutation.\n */\nexport function httpMutation(optionsOrRequest) {\n const httpClient = inject(HttpClient);\n const options = typeof optionsOrRequest === 'function'\n ? { request: optionsOrRequest }\n : optionsOrRequest;\n const parse = options.parse ?? ((raw) => raw);\n const uploadProgress = signal(undefined, ...(ngDevMode ? [{ debugName: \"uploadProgress\" }] : []));\n const downloadProgress = signal(undefined, ...(ngDevMode ? [{ debugName: \"downloadProgress\" }] : []));\n const headers = signal(undefined, ...(ngDevMode ? [{ debugName: \"headers\" }] : []));\n const statusCode = signal(undefined, ...(ngDevMode ? [{ debugName: \"statusCode\" }] : []));\n const mutation = rxMutation({\n ...options,\n operation: (param) => {\n const httpRequest = options.request(param);\n return defer(() => {\n uploadProgress.set(undefined);\n downloadProgress.set(undefined);\n headers.set(undefined);\n statusCode.set(undefined);\n return httpClient\n .request(httpRequest.method, httpRequest.url, {\n ...httpRequest,\n observe: 'events',\n responseType: 'json',\n })\n .pipe(tap((response) => {\n if (response.type === HttpEventType.UploadProgress) {\n uploadProgress.set(response);\n }\n else if (response.type === HttpEventType.DownloadProgress) {\n downloadProgress.set(response);\n }\n }), filter((event) => event instanceof HttpResponse), tap((response) => {\n headers.set(response.headers);\n statusCode.set(response.status.toString());\n }), map((event) => parse(event.body)));\n });\n },\n });\n mutation.uploadProgress = uploadProgress;\n mutation.downloadProgress = downloadProgress;\n mutation.statusCode = statusCode;\n mutation.headers = headers;\n return mutation;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tdXRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvbXV0YXRpb24vaHR0cC1tdXRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLGFBQWEsRUFJYixZQUFZLEdBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBOEM5RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbURHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsZ0JBRStDO0lBRS9DLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV0QyxNQUFNLE9BQU8sR0FDWCxPQUFPLGdCQUFnQixLQUFLLFVBQVU7UUFDcEMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFO1FBQy9CLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUV2QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFZLEVBQUUsRUFBRSxDQUFDLEdBQWEsQ0FBQyxDQUFDO0lBRWpFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBZ0MsU0FBUywwREFBQyxDQUFDO0lBQ3hFLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFnQyxTQUFTLDREQUFDLENBQUM7SUFDMUUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUEwQixTQUFTLG1EQUFDLENBQUM7SUFDM0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFxQixTQUFTLHNEQUFDLENBQUM7SUFFekQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzFCLEdBQUcsT0FBTztRQUNWLFNBQVMsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBRTtZQUM5QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTNDLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDaEIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2QixVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUUxQixPQUFPLFVBQVU7cUJBQ2QsT0FBTyxDQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRTtvQkFDcEQsR0FBRyxXQUFXO29CQUNkLE9BQU8sRUFBRSxRQUFRO29CQUNqQixZQUFZLEVBQUUsTUFBTTtpQkFDckIsQ0FBQztxQkFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ2YsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDbkQsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDL0IsQ0FBQzt5QkFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUM7d0JBQzVELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDakMsQ0FBQztnQkFDSCxDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxZQUFZLENBQUMsRUFDaEQsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzlCLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDbEMsQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQW9DLENBQUM7SUFFdEMsUUFBUSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDekMsUUFBUSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzdDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBRTNCLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBIdHRwQ2xpZW50LFxuICBIdHRwQ29udGV4dCxcbiAgSHR0cEV2ZW50VHlwZSxcbiAgSHR0cEhlYWRlcnMsXG4gIEh0dHBQYXJhbXMsXG4gIEh0dHBQcm9ncmVzc0V2ZW50LFxuICBIdHRwUmVzcG9uc2UsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlZmVyLCBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNdXRhdGlvbiB9IGZyb20gJy4vbXV0YXRpb24nO1xuaW1wb3J0IHsgcnhNdXRhdGlvbiwgUnhNdXRhdGlvbk9wdGlvbnMgfSBmcm9tICcuL3J4LW11dGF0aW9uJztcblxuLy8gVGhlIEh0dHBDbGllbnQgZGVmaW5lcyB0aGVzZSB0eXBlcyBhcyBwYXJ0IG9mIHRoZSBtZXRob2Qgc2lnbmF0dXJlIGFuZFxuLy8gbm90IGFzIGEgbmFtZWQgdHlwZVxuZXhwb3J0IHR5cGUgSHR0cE11dGF0aW9uUmVxdWVzdCA9IHtcbiAgdXJsOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBib2R5PzogdW5rbm93bjtcbiAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+O1xuICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgcGFyYW1zPzpcbiAgICB8IEh0dHBQYXJhbXNcbiAgICB8IFJlY29yZDxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPlxuICAgICAgPjtcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgY3JlZGVudGlhbHM/OiBSZXF1ZXN0Q3JlZGVudGlhbHM7XG4gIGtlZXBhbGl2ZT86IGJvb2xlYW47XG4gIHByaW9yaXR5PzogUmVxdWVzdFByaW9yaXR5O1xuICBjYWNoZT86IFJlcXVlc3RDYWNoZTtcbiAgbW9kZT86IFJlcXVlc3RNb2RlO1xuICByZWRpcmVjdD86IFJlcXVlc3RSZWRpcmVjdDtcbiAgdHJhbnNmZXJDYWNoZT86XG4gICAgfCB7XG4gICAgICAgIGluY2x1ZGVIZWFkZXJzPzogc3RyaW5nW107XG4gICAgICB9XG4gICAgfCBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgSHR0cE11dGF0aW9uT3B0aW9uczxQYXJhbWV0ZXIsIFJlc3VsdD4gPSBPbWl0PFxuICBSeE11dGF0aW9uT3B0aW9uczxQYXJhbWV0ZXIsIE5vSW5mZXI8UmVzdWx0Pj4sXG4gICdvcGVyYXRpb24nXG4+ICYge1xuICByZXF1ZXN0OiAocGFyYW06IFBhcmFtZXRlcikgPT4gSHR0cE11dGF0aW9uUmVxdWVzdDtcbiAgcGFyc2U/OiAocmVzcG9uc2U6IHVua25vd24pID0+IFJlc3VsdDtcbn07XG5cbmV4cG9ydCB0eXBlIEh0dHBNdXRhdGlvbjxQYXJhbWV0ZXIsIFJlc3VsdD4gPSBNdXRhdGlvbjxQYXJhbWV0ZXIsIFJlc3VsdD4gJiB7XG4gIHVwbG9hZFByb2dyZXNzOiBTaWduYWw8SHR0cFByb2dyZXNzRXZlbnQgfCB1bmRlZmluZWQ+O1xuICBkb3dubG9hZFByb2dyZXNzOiBTaWduYWw8SHR0cFByb2dyZXNzRXZlbnQgfCB1bmRlZmluZWQ+O1xuICBoZWFkZXJzOiBTaWduYWw8SHR0cEhlYWRlcnMgfCB1bmRlZmluZWQ+O1xuICBzdGF0dXNDb2RlOiBTaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBIVFRQIG11dGF0aW9uLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCB0eXBlIFBhcmFtcyA9IHtcbiAqICAgdmFsdWU6IG51bWJlcjtcbiAqIH07XG4gKlxuICogZXhwb3J0IHR5cGUgQ291bnRlclJlc3BvbnNlID0ge1xuICogICAvLyBodHRwYmluLm9yZyBlY2hvcyB0aGUgcmVxdWVzdCB1c2luZyB0aGVcbiAqICAgLy8ganNvbiBwcm9wZXJ0eVxuICogICBqc29uOiB7IGNvdW50ZXI6IG51bWJlciB9O1xuICogfTtcbiAqXG4gKiBjb25zdCBzaW1wbGVTYXZlVXNlciA9IGh0dHBNdXRhdGlvbih7XG4gKiAgIHJlcXVlc3Q6ICh1c2VyRGF0YTogQWRkVXNlckVudHJ5KSA9PiAoe1xuICogICAgIHVybDogJ2FwaS91c2VycycsXG4gKiAgICAgYm9keTogdXNlckRhdGEsXG4gKiAgIH0pLFxuICogICBwYXJzZTogQm9vbGVhbixcbiAqIH0pXG4gKlxuICogY29uc3Qgc2F2ZVVzZXIgPSBodHRwTXV0YXRpb24oe1xuICogICByZXF1ZXN0OiAocDogUGFyYW1zKSA9PiAoe1xuICogICAgIHVybDogYGh0dHBzOi8vaHR0cGJpbi5vcmcvcG9zdGAsXG4gKiAgICAgbWV0aG9kOiAnUE9TVCcsXG4gKiAgICAgYm9keTogeyBjb3VudGVyOiBwLnZhbHVlIH0sXG4gKiAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gKiAgIH0pLFxuICogICBvblN1Y2Nlc3M6IChyZXNwb25zZTogQ291bnRlclJlc3BvbnNlKSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coJ0NvdW50ZXIgc2VudCB0byBzZXJ2ZXI6JywgcmVzcG9uc2UpO1xuICogICB9LFxuICogICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc2VuZCBjb3VudGVyOicsIGVycm9yKTtcbiAqICAgfSxcbiAqIH0pO1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2F2ZVVzZXIoeyB2YWx1ZTogMTcgfSk7XG4gKiBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gKiAgIGNvbnNvbGUubG9nKCdTdWNjZXNzZnVsbHkgc2F2ZWQgdG8gc2VydmVyOicsIHJlc3VsdC52YWx1ZSk7XG4gKiB9XG4gKiBlbHNlIGlmIChyZXN1bHQuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gKiAgIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gc2F2ZTonLCByZXN1bHQuZXJyb3IpO1xuICogfVxuICogZWxzZSB7XG4gKiAgIGNvbnNvbGUubG9nKCdPcGVyYXRpb24gYWJvcnRlZCcpO1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBIVFRQIG11dGF0aW9uLlxuICogQHJldHVybnMgVGhlIEhUVFAgbXV0YXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBodHRwTXV0YXRpb248UGFyYW1ldGVyLCBSZXN1bHQ+KFxuICBvcHRpb25zT3JSZXF1ZXN0OlxuICAgIHwgSHR0cE11dGF0aW9uT3B0aW9uczxQYXJhbWV0ZXIsIFJlc3VsdD5cbiAgICB8ICgocGFyYW06IFBhcmFtZXRlcikgPT4gSHR0cE11dGF0aW9uUmVxdWVzdCksXG4pOiBIdHRwTXV0YXRpb248UGFyYW1ldGVyLCBSZXN1bHQ+IHtcbiAgY29uc3QgaHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICBjb25zdCBvcHRpb25zID1cbiAgICB0eXBlb2Ygb3B0aW9uc09yUmVxdWVzdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyB7IHJlcXVlc3Q6IG9wdGlvbnNPclJlcXVlc3QgfVxuICAgICAgOiBvcHRpb25zT3JSZXF1ZXN0O1xuXG4gIGNvbnN0IHBhcnNlID0gb3B0aW9ucy5wYXJzZSA/PyAoKHJhdzogdW5rbm93bikgPT4gcmF3IGFzIFJlc3VsdCk7XG5cbiAgY29uc3QgdXBsb2FkUHJvZ3Jlc3MgPSBzaWduYWw8SHR0cFByb2dyZXNzRXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGRvd25sb2FkUHJvZ3Jlc3MgPSBzaWduYWw8SHR0cFByb2dyZXNzRXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGhlYWRlcnMgPSBzaWduYWw8SHR0cEhlYWRlcnMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IHN0YXR1c0NvZGUgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0IG11dGF0aW9uID0gcnhNdXRhdGlvbih7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBvcGVyYXRpb246IChwYXJhbTogUGFyYW1ldGVyKSA9PiB7XG4gICAgICBjb25zdCBodHRwUmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdChwYXJhbSk7XG5cbiAgICAgIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgICAgIHVwbG9hZFByb2dyZXNzLnNldCh1bmRlZmluZWQpO1xuICAgICAgICBkb3dubG9hZFByb2dyZXNzLnNldCh1bmRlZmluZWQpO1xuICAgICAgICBoZWFkZXJzLnNldCh1bmRlZmluZWQpO1xuICAgICAgICBzdGF0dXNDb2RlLnNldCh1bmRlZmluZWQpO1xuXG4gICAgICAgIHJldHVybiBodHRwQ2xpZW50XG4gICAgICAgICAgLnJlcXVlc3Q8UmVzdWx0PihodHRwUmVxdWVzdC5tZXRob2QsIGh0dHBSZXF1ZXN0LnVybCwge1xuICAgICAgICAgICAgLi4uaHR0cFJlcXVlc3QsXG4gICAgICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgdXBsb2FkUHJvZ3Jlc3Muc2V0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS50eXBlID09PSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZFByb2dyZXNzLnNldChyZXNwb25zZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpLFxuICAgICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICBoZWFkZXJzLnNldChyZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgICAgICAgICAgc3RhdHVzQ29kZS5zZXQocmVzcG9uc2Uuc3RhdHVzLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKGV2ZW50KSA9PiBwYXJzZShldmVudC5ib2R5KSksXG4gICAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0pIGFzIEh0dHBNdXRhdGlvbjxQYXJhbWV0ZXIsIFJlc3VsdD47XG5cbiAgbXV0YXRpb24udXBsb2FkUHJvZ3Jlc3MgPSB1cGxvYWRQcm9ncmVzcztcbiAgbXV0YXRpb24uZG93bmxvYWRQcm9ncmVzcyA9IGRvd25sb2FkUHJvZ3Jlc3M7XG4gIG11dGF0aW9uLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICBtdXRhdGlvbi5oZWFkZXJzID0gaGVhZGVycztcblxuICByZXR1cm4gbXV0YXRpb247XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1hcmNoaXRlY3RzLW5ncngtdG9vbGtpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9hbmd1bGFyLWFyY2hpdGVjdHMtbmdyeC10b29sa2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["originalPatchState","patchState","ngIsInDevMode"],"mappings":"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"}
1
+ {"version":3,"file":"angular-architects-ngrx-toolkit.mjs","sources":["../tmp-esm2022/lib/devtools/internal/devtools-feature.js","../tmp-esm2022/lib/devtools/features/with-disabled-name-indicies.js","../tmp-esm2022/lib/shared/throw-if-null.js","../tmp-esm2022/lib/devtools/internal/glitch-tracker.service.js","../tmp-esm2022/lib/devtools/features/with-glitch-tracking.js","../tmp-esm2022/lib/devtools/features/with-mapper.js","../tmp-esm2022/lib/devtools/provide-devtools-config.js","../tmp-esm2022/lib/devtools/internal/default-tracker.js","../tmp-esm2022/lib/devtools/internal/current-action-names.js","../tmp-esm2022/lib/devtools/internal/devtools-syncer.service.js","../tmp-esm2022/lib/devtools/with-devtools.js","../tmp-esm2022/lib/devtools/rename-devtools-name.js","../tmp-esm2022/lib/devtools/update-state.js","../tmp-esm2022/lib/devtools/with-dev-tools-stub.js","../tmp-esm2022/lib/assertions/assertions.js","../tmp-esm2022/lib/with-redux.js","../tmp-esm2022/lib/with-call-state.js","../tmp-esm2022/lib/with-data-service.js","../tmp-esm2022/lib/with-pagination.js","../tmp-esm2022/lib/with-reset.js","../tmp-esm2022/lib/with-undo-redo.js","../tmp-esm2022/lib/immutable-state/deep-freeze.js","../tmp-esm2022/lib/immutable-state/is-dev-mode.js","../tmp-esm2022/lib/immutable-state/with-immutable-state.js","../tmp-esm2022/lib/storage-sync/internal/indexeddb.service.js","../tmp-esm2022/lib/storage-sync/internal/models.js","../tmp-esm2022/lib/storage-sync/features/with-indexed-db.js","../tmp-esm2022/lib/storage-sync/internal/local-storage.service.js","../tmp-esm2022/lib/storage-sync/internal/session-storage.service.js","../tmp-esm2022/lib/storage-sync/features/with-local-storage.js","../tmp-esm2022/lib/storage-sync/with-storage-sync.js","../tmp-esm2022/lib/with-conditional.js","../tmp-esm2022/lib/with-feature-factory.js","../tmp-esm2022/lib/flattening-operator.js","../tmp-esm2022/lib/mutation/rx-mutation.js","../tmp-esm2022/lib/with-mutations.js","../tmp-esm2022/lib/with-resource.js","../tmp-esm2022/lib/mutation/http-mutation.js","../tmp-esm2022/angular-architects-ngrx-toolkit.js"],"sourcesContent":["export const DEVTOOLS_FEATURE = Symbol('DEVTOOLS_FEATURE');\nexport function createDevtoolsFeature(options) {\n return {\n [DEVTOOLS_FEATURE]: true,\n ...options,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMtZmVhdHVyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQTJCM0QsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxPQUF3QjtJQUV4QixPQUFPO1FBQ0wsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUk7UUFDeEIsR0FBRyxPQUFPO0tBQ1gsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFja2VyIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG5leHBvcnQgY29uc3QgREVWVE9PTFNfRkVBVFVSRSA9IFN5bWJvbCgnREVWVE9PTFNfRkVBVFVSRScpO1xuXG5leHBvcnQgdHlwZSBNYXBwZXIgPSAoc3RhdGU6IG9iamVjdCkgPT4gb2JqZWN0O1xuXG5leHBvcnQgdHlwZSBEZXZ0b29sc09wdGlvbnMgPSB7XG4gIGluZGV4TmFtZXM/OiBib29sZWFuOyAvLyBkZWZpbmVzIGlmIG5hbWVzIHNob3VsZCBiZSBpbmRleGVkLlxuICBtYXA/OiBNYXBwZXI7IC8vIGRlZmluZXMgYSBtYXBwZXIgZm9yIHRoZSBzdGF0ZS5cbiAgdHJhY2tlcj86IG5ldyAoKSA9PiBUcmFja2VyOyAvLyBkZWZpbmVzIGEgdHJhY2tlciBmb3IgdGhlIHN0YXRlXG59O1xuXG5leHBvcnQgdHlwZSBEZXZ0b29sc0lubmVyT3B0aW9ucyA9IHtcbiAgaW5kZXhOYW1lczogYm9vbGVhbjtcbiAgbWFwOiBNYXBwZXI7XG4gIHRyYWNrZXI6IFRyYWNrZXI7XG59O1xuXG4vKipcbiAqIEEgRGV2dG9vbHNGZWF0dXJlIGFkZHMgb3IgbW9kaWZpZXMgdGhlIGJlaGF2aW9yIG9mIHRoZVxuICogZGV2dG9vbHMgZXh0ZW5zaW9uLlxuICpcbiAqIFdlIHVzZSB0aGVtIChmdW5jdGlvbiBjYWxscykgaW5zdGVhZCBvZiBhIGNvbmZpZyBvYmplY3QsXG4gKiBiZWNhdXNlIG9mIHRyZWUtc2hha2luZy5cbiAqL1xuZXhwb3J0IHR5cGUgRGV2dG9vbHNGZWF0dXJlID0ge1xuICBbREVWVE9PTFNfRkVBVFVSRV06IHRydWU7XG59ICYgUGFydGlhbDxEZXZ0b29sc09wdGlvbnM+O1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGV2dG9vbHNGZWF0dXJlKFxuICBvcHRpb25zOiBEZXZ0b29sc09wdGlvbnMsXG4pOiBEZXZ0b29sc0ZlYXR1cmUge1xuICByZXR1cm4ge1xuICAgIFtERVZUT09MU19GRUFUVVJFXTogdHJ1ZSxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xufVxuIl19","import { createDevtoolsFeature } from '../internal/devtools-feature';\n/**\n * If multiple instances of the same SignalStore class\n * exist, their devtool names are indexed.\n *\n * For example:\n *\n * ```typescript\n * const Store = signalStore(\n * withDevtools('flights')\n * )\n *\n * const store1 = new Store(); // will show up as 'flights'\n * const store2 = new Store(); // will show up as 'flights-1'\n * ```\n *\n * With adding `withDisabledNameIndices` to the store:\n * ```typescript\n * const Store = signalStore(\n * withDevtools('flights', withDisabledNameIndices())\n * )\n *\n * const store1 = new Store(); // will show up as 'flights'\n * const store2 = new Store(); //💥 throws an error\n * ```\n *\n */\nexport function withDisabledNameIndices() {\n return createDevtoolsFeature({ indexNames: false });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kaXNhYmxlZC1uYW1lLWluZGljaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9kZXZ0b29scy9mZWF0dXJlcy93aXRoLWRpc2FibGVkLW5hbWUtaW5kaWNpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFckU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCO0lBQ3JDLE9BQU8scUJBQXFCLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRGV2dG9vbHNGZWF0dXJlIH0gZnJvbSAnLi4vaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZSc7XG5cbi8qKlxuICogSWYgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIFNpZ25hbFN0b3JlIGNsYXNzXG4gKiBleGlzdCwgdGhlaXIgZGV2dG9vbCBuYW1lcyBhcmUgaW5kZXhlZC5cbiAqXG4gKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB3aXRoRGV2dG9vbHMoJ2ZsaWdodHMnKVxuICogKVxuICpcbiAqIGNvbnN0IHN0b3JlMSA9IG5ldyBTdG9yZSgpOyAvLyB3aWxsIHNob3cgdXAgYXMgJ2ZsaWdodHMnXG4gKiBjb25zdCBzdG9yZTIgPSBuZXcgU3RvcmUoKTsgLy8gd2lsbCBzaG93IHVwIGFzICdmbGlnaHRzLTEnXG4gKiBgYGBcbiAqXG4gKiBXaXRoIGFkZGluZyBgd2l0aERpc2FibGVkTmFtZUluZGljZXNgIHRvIHRoZSBzdG9yZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IFN0b3JlID0gc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhEZXZ0b29scygnZmxpZ2h0cycsIHdpdGhEaXNhYmxlZE5hbWVJbmRpY2VzKCkpXG4gKiApXG4gKlxuICogY29uc3Qgc3RvcmUxID0gbmV3IFN0b3JlKCk7IC8vIHdpbGwgc2hvdyB1cCBhcyAnZmxpZ2h0cydcbiAqIGNvbnN0IHN0b3JlMiA9IG5ldyBTdG9yZSgpOyAvL/CfkqUgdGhyb3dzIGFuIGVycm9yXG4gKiBgYGBcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGlzYWJsZWROYW1lSW5kaWNlcygpIHtcbiAgcmV0dXJuIGNyZWF0ZURldnRvb2xzRmVhdHVyZSh7IGluZGV4TmFtZXM6IGZhbHNlIH0pO1xufVxuIl19","export function throwIfNull(obj) {\n if (obj === null || obj === undefined) {\n throw new Error('');\n }\n return obj;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3ctaWYtbnVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvc2hhcmVkL3Rocm93LWlmLW51bGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFdBQVcsQ0FBSSxHQUFNO0lBQ25DLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHRocm93SWZOdWxsPFQ+KG9iajogVCk6IE5vbk51bGxhYmxlPFQ+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCBvYmogPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignJyk7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuIl19","import { Injectable } from '@angular/core';\nimport { getState, watchState } from '@ngrx/signals';\nimport { throwIfNull } from '../../shared/throw-if-null';\nimport * as i0 from \"@angular/core\";\n/**\n * Internal Service used by {@link withGlitchTracking}. It does not rely\n * on `effect` as {@link DefaultTracker} does but uses the NgRx function\n * `watchState` to track all state changes.\n */\nexport class GlitchTrackerService {\n #stores = {};\n #callback;\n get stores() {\n return Object.entries(this.#stores).reduce((acc, [id, { store }]) => {\n acc[id] = store;\n return acc;\n }, {});\n }\n onChange(callback) {\n this.#callback = callback;\n }\n removeStore(id) {\n this.#stores = Object.entries(this.#stores).reduce((newStore, [storeId, value]) => {\n if (storeId !== id) {\n newStore[storeId] = value;\n }\n else {\n value.destroyWatcher();\n }\n return newStore;\n }, {});\n throwIfNull(this.#callback)({});\n }\n track(id, store) {\n const watcher = watchState(store, (state) => {\n throwIfNull(this.#callback)({ [id]: state });\n });\n this.#stores[id] = { destroyWatcher: watcher.destroy, store };\n }\n notifyRenamedStore(id) {\n if (Object.keys(this.#stores).includes(id) && this.#callback) {\n this.#callback({ [id]: getState(this.#stores[id].store) });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: GlitchTrackerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: GlitchTrackerService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: GlitchTrackerService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xpdGNoLXRyYWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvaW50ZXJuYWwvZ2xpdGNoLXRyYWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQWUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFRekQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNyQixTQUFTLENBQStEO0lBRXhFLElBQUksTUFBTTtRQUNSLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDaEIsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBbUIsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxRQUFRLENBQUMsUUFBd0Q7UUFDL0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFVO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUNoRCxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzdCLElBQUksT0FBTyxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUNuQixRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFDRCxFQUFZLENBQ2IsQ0FBQztRQUVGLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBMEI7UUFDMUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVELGtCQUFrQixDQUFDLEVBQVU7UUFDM0IsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQzs4R0EzQ1Usb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FEUCxNQUFNOzsyRkFDbkIsb0JBQW9CO2tCQURoQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFN0YXRlLCBTdGF0ZVNvdXJjZSwgd2F0Y2hTdGF0ZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHsgdGhyb3dJZk51bGwgfSBmcm9tICcuLi8uLi9zaGFyZWQvdGhyb3ctaWYtbnVsbCc7XG5pbXBvcnQgeyBUcmFja2VyLCBUcmFja2VyU3RvcmVzIH0gZnJvbSAnLi9tb2RlbHMnO1xuXG50eXBlIFN0b3JlcyA9IFJlY29yZDxcbiAgc3RyaW5nLFxuICB7IGRlc3Ryb3lXYXRjaGVyOiAoKSA9PiB2b2lkOyBzdG9yZTogU3RhdGVTb3VyY2U8b2JqZWN0PiB9XG4+O1xuXG4vKipcbiAqIEludGVybmFsIFNlcnZpY2UgdXNlZCBieSB7QGxpbmsgd2l0aEdsaXRjaFRyYWNraW5nfS4gSXQgZG9lcyBub3QgcmVseVxuICogb24gYGVmZmVjdGAgYXMge0BsaW5rIERlZmF1bHRUcmFja2VyfSBkb2VzIGJ1dCB1c2VzIHRoZSBOZ1J4IGZ1bmN0aW9uXG4gKiBgd2F0Y2hTdGF0ZWAgdG8gdHJhY2sgYWxsIHN0YXRlIGNoYW5nZXMuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgR2xpdGNoVHJhY2tlclNlcnZpY2UgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgI3N0b3JlczogU3RvcmVzID0ge307XG4gICNjYWxsYmFjazogKChjaGFuZ2VkU3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4pID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuXG4gIGdldCBzdG9yZXMoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuI3N0b3JlcykucmVkdWNlKChhY2MsIFtpZCwgeyBzdG9yZSB9XSkgPT4ge1xuICAgICAgYWNjW2lkXSA9IHN0b3JlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBUcmFja2VyU3RvcmVzKTtcbiAgfVxuXG4gIG9uQ2hhbmdlKGNhbGxiYWNrOiAoY2hhbmdlZFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgfVxuXG4gIHJlbW92ZVN0b3JlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLiNzdG9yZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLiNzdG9yZXMpLnJlZHVjZShcbiAgICAgIChuZXdTdG9yZSwgW3N0b3JlSWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoc3RvcmVJZCAhPT0gaWQpIHtcbiAgICAgICAgICBuZXdTdG9yZVtzdG9yZUlkXSA9IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlLmRlc3Ryb3lXYXRjaGVyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1N0b3JlO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFN0b3JlcyxcbiAgICApO1xuXG4gICAgdGhyb3dJZk51bGwodGhpcy4jY2FsbGJhY2spKHt9KTtcbiAgfVxuXG4gIHRyYWNrKGlkOiBzdHJpbmcsIHN0b3JlOiBTdGF0ZVNvdXJjZTxvYmplY3Q+KTogdm9pZCB7XG4gICAgY29uc3Qgd2F0Y2hlciA9IHdhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgdGhyb3dJZk51bGwodGhpcy4jY2FsbGJhY2spKHsgW2lkXTogc3RhdGUgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiNzdG9yZXNbaWRdID0geyBkZXN0cm95V2F0Y2hlcjogd2F0Y2hlci5kZXN0cm95LCBzdG9yZSB9O1xuICB9XG5cbiAgbm90aWZ5UmVuYW1lZFN0b3JlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy4jc3RvcmVzKS5pbmNsdWRlcyhpZCkgJiYgdGhpcy4jY2FsbGJhY2spIHtcbiAgICAgIHRoaXMuI2NhbGxiYWNrKHsgW2lkXTogZ2V0U3RhdGUodGhpcy4jc3RvcmVzW2lkXS5zdG9yZSkgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=","import { createDevtoolsFeature } from '../internal/devtools-feature';\nimport { GlitchTrackerService } from '../internal/glitch-tracker.service';\n/**\n * It tracks all state changes of the State, including intermediary updates\n * that are typically suppressed by Angular's glitch-free mechanism.\n *\n * This feature is especially useful for debugging.\n *\n * Example:\n *\n * ```typescript\n * const Store = signalStore(\n * { providedIn: 'root' },\n * withState({ count: 0 }),\n * withDevtools('counter', withGlitchTracking()),\n * withMethods((store) => ({\n * increase: () =>\n * patchState(store, (value) => ({ count: value.count + 1 })),\n * }))\n * );\n *\n * // would show up in the DevTools with value 0\n * const store = inject(Store);\n *\n * store.increase(); // would show up in the DevTools with value 1\n * store.increase(); // would show up in the DevTools with value 2\n * store.increase(); // would show up in the DevTools with value 3\n * ```\n *\n * Without `withGlitchTracking`, the DevTools would only show the final value of 3.\n */\nexport function withGlitchTracking() {\n return createDevtoolsFeature({ tracker: GlitchTrackerService });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1nbGl0Y2gtdHJhY2tpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ZlYXR1cmVzL3dpdGgtZ2xpdGNoLXRyYWNraW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxPQUFPLHFCQUFxQixDQUFDLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRGV2dG9vbHNGZWF0dXJlIH0gZnJvbSAnLi4vaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZSc7XG5pbXBvcnQgeyBHbGl0Y2hUcmFja2VyU2VydmljZSB9IGZyb20gJy4uL2ludGVybmFsL2dsaXRjaC10cmFja2VyLnNlcnZpY2UnO1xuXG4vKipcbiAqIEl0IHRyYWNrcyBhbGwgc3RhdGUgY2hhbmdlcyBvZiB0aGUgU3RhdGUsIGluY2x1ZGluZyBpbnRlcm1lZGlhcnkgdXBkYXRlc1xuICogdGhhdCBhcmUgdHlwaWNhbGx5IHN1cHByZXNzZWQgYnkgQW5ndWxhcidzIGdsaXRjaC1mcmVlIG1lY2hhbmlzbS5cbiAqXG4gKiBUaGlzIGZlYXR1cmUgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIGRlYnVnZ2luZy5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IFN0b3JlID0gc2lnbmFsU3RvcmUoXG4gKiAgIHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXG4gKiAgIHdpdGhTdGF0ZSh7IGNvdW50OiAwIH0pLFxuICogICB3aXRoRGV2dG9vbHMoJ2NvdW50ZXInLCB3aXRoR2xpdGNoVHJhY2tpbmcoKSksXG4gKiAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAqICAgICBpbmNyZWFzZTogKCkgPT5cbiAqICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsICh2YWx1ZSkgPT4gKHsgY291bnQ6IHZhbHVlLmNvdW50ICsgMSB9KSksXG4gKiAgIH0pKVxuICogKTtcbiAqXG4gKiAvLyB3b3VsZCBzaG93IHVwIGluIHRoZSBEZXZUb29scyB3aXRoIHZhbHVlIDBcbiAqIGNvbnN0IHN0b3JlID0gaW5qZWN0KFN0b3JlKTtcbiAqXG4gKiBzdG9yZS5pbmNyZWFzZSgpOyAvLyB3b3VsZCBzaG93IHVwIGluIHRoZSBEZXZUb29scyB3aXRoIHZhbHVlIDFcbiAqIHN0b3JlLmluY3JlYXNlKCk7IC8vIHdvdWxkIHNob3cgdXAgaW4gdGhlIERldlRvb2xzIHdpdGggdmFsdWUgMlxuICogc3RvcmUuaW5jcmVhc2UoKTsgLy8gd291bGQgc2hvdyB1cCBpbiB0aGUgRGV2VG9vbHMgd2l0aCB2YWx1ZSAzXG4gKiBgYGBcbiAqXG4gKiBXaXRob3V0IGB3aXRoR2xpdGNoVHJhY2tpbmdgLCB0aGUgRGV2VG9vbHMgd291bGQgb25seSBzaG93IHRoZSBmaW5hbCB2YWx1ZSBvZiAzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEdsaXRjaFRyYWNraW5nKCkge1xuICByZXR1cm4gY3JlYXRlRGV2dG9vbHNGZWF0dXJlKHsgdHJhY2tlcjogR2xpdGNoVHJhY2tlclNlcnZpY2UgfSk7XG59XG4iXX0=","import { createDevtoolsFeature } from '../internal/devtools-feature';\n/**\n * Allows you to define a function to map the state.\n *\n * It is needed for huge states, that slows down the Devtools and where\n * you don't need to see the whole state or other reasons.\n *\n * Example:\n *\n * ```typescript\n * const initialState = {\n * id: 1,\n * email: 'john.list@host.com',\n * name: 'John List',\n * enteredPassword: ''\n * }\n *\n * const Store = signalStore(\n * withState(initialState),\n * withDevtools(\n * 'user',\n * withMapper(state => ({...state, enteredPassword: '***' }))\n * )\n * )\n * ```\n *\n * @param map function which maps the state\n */\nexport function withMapper(map) {\n return createDevtoolsFeature({ map: map });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ZlYXR1cmVzL3dpdGgtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBVSxNQUFNLDhCQUE4QixDQUFDO0FBRTdFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLEdBQThDO0lBRTlDLE9BQU8scUJBQXFCLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBYSxFQUFFLENBQUMsQ0FBQztBQUN2RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRGV2dG9vbHNGZWF0dXJlLCBNYXBwZXIgfSBmcm9tICcuLi9pbnRlcm5hbC9kZXZ0b29scy1mZWF0dXJlJztcblxuLyoqXG4gKiBBbGxvd3MgeW91IHRvIGRlZmluZSBhIGZ1bmN0aW9uIHRvIG1hcCB0aGUgc3RhdGUuXG4gKlxuICogSXQgaXMgbmVlZGVkIGZvciBodWdlIHN0YXRlcywgdGhhdCBzbG93cyBkb3duIHRoZSBEZXZ0b29scyBhbmQgd2hlcmVcbiAqIHlvdSBkb24ndCBuZWVkIHRvIHNlZSB0aGUgd2hvbGUgc3RhdGUgb3Igb3RoZXIgcmVhc29ucy5cbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAqICAgaWQ6IDEsXG4gKiAgIGVtYWlsOiAnam9obi5saXN0QGhvc3QuY29tJyxcbiAqICAgbmFtZTogJ0pvaG4gTGlzdCcsXG4gKiAgIGVudGVyZWRQYXNzd29yZDogJydcbiAqIH1cbiAqXG4gKiBjb25zdCBTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB3aXRoU3RhdGUoaW5pdGlhbFN0YXRlKSxcbiAqICAgd2l0aERldnRvb2xzKFxuICogICAgICd1c2VyJyxcbiAqICAgICB3aXRoTWFwcGVyKHN0YXRlID0+ICh7Li4uc3RhdGUsIGVudGVyZWRQYXNzd29yZDogJyoqKicgfSkpXG4gKiAgIClcbiAqIClcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBtYXAgZnVuY3Rpb24gd2hpY2ggbWFwcyB0aGUgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhNYXBwZXI8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBtYXA6IChzdGF0ZTogU3RhdGUpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKSB7XG4gIHJldHVybiBjcmVhdGVEZXZ0b29sc0ZlYXR1cmUoeyBtYXA6IG1hcCBhcyBNYXBwZXIgfSk7XG59XG4iXX0=","import { InjectionToken } from '@angular/core';\n/**\n * Provides the configuration options for connecting to the Redux DevTools Extension.\n */\nexport function provideDevtoolsConfig(config) {\n return {\n provide: REDUX_DEVTOOLS_CONFIG,\n useValue: config,\n };\n}\n/**\n * Injection token for the configuration options for connecting to the Redux DevTools Extension.\n */\nexport const REDUX_DEVTOOLS_CONFIG = new InjectionToken('ReduxDevtoolsConfig');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1kZXZ0b29scy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL3Byb3ZpZGUtZGV2dG9vbHMtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRTlEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxNQUEyQjtJQUUzQixPQUFPO1FBQ0wsT0FBTyxFQUFFLHFCQUFxQjtRQUM5QixRQUFRLEVBQUUsTUFBTTtLQUNqQixDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ3JELHFCQUFxQixDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4sIFZhbHVlUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBjb25uZWN0aW5nIHRvIHRoZSBSZWR1eCBEZXZUb29scyBFeHRlbnNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRGV2dG9vbHNDb25maWcoXG4gIGNvbmZpZzogUmVkdXhEZXZ0b29sc0NvbmZpZyxcbik6IFZhbHVlUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFJFRFVYX0RFVlRPT0xTX0NPTkZJRyxcbiAgICB1c2VWYWx1ZTogY29uZmlnLFxuICB9O1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgY29ubmVjdGluZyB0byB0aGUgUmVkdXggRGV2VG9vbHMgRXh0ZW5zaW9uLlxuICovXG5leHBvcnQgY29uc3QgUkVEVVhfREVWVE9PTFNfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFJlZHV4RGV2dG9vbHNDb25maWc+KFxuICAnUmVkdXhEZXZ0b29sc0NvbmZpZycsXG4pO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbm5lY3RpbmcgdG8gdGhlIFJlZHV4IERldlRvb2xzIEV4dGVuc2lvbi5cbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkZXZUb29sc09wdGlvbnM6IFJlZHV4RGV2dG9vbHNDb25maWcgPSB7XG4gKiAgIG5hbWU6ICdNeSBBcHAnLFxuICogfTtcbiAqL1xuZXhwb3J0IHR5cGUgUmVkdXhEZXZ0b29sc0NvbmZpZyA9IHtcbiAgLyoqIE9wdGlvbmFsIG5hbWUgZm9yIHRoZSBkZXZ0b29scyBpbnN0YW5jZS4gSWYgZW1wdHksIFwiTmdSeCBTaWduYWxTdG9yZVwiIHdpbGwgYmUgdXNlZC4gKi9cbiAgbmFtZT86IHN0cmluZztcbn07XG4iXX0=","import { effect, Injectable, signal } from '@angular/core';\nimport { getState } from '@ngrx/signals';\nimport * as i0 from \"@angular/core\";\nexport class DefaultTracker {\n #stores = signal({}, ...(ngDevMode ? [{ debugName: \"#stores\" }] : []));\n get stores() {\n return this.#stores();\n }\n #trackCallback;\n #trackingEffect = effect(() => {\n if (this.#trackCallback === undefined) {\n throw new Error('no callback function defined');\n }\n const stores = this.#stores();\n const fullState = Object.entries(stores).reduce((acc, [id, store]) => {\n return { ...acc, [id]: getState(store) };\n }, {});\n this.#trackCallback(fullState);\n }, ...(ngDevMode ? [{ debugName: \"#trackingEffect\" }] : []));\n track(id, store) {\n this.#stores.update((value) => ({\n ...value,\n [id]: store,\n }));\n }\n onChange(callback) {\n this.#trackCallback = callback;\n }\n removeStore(id) {\n this.#stores.update((stores) => Object.entries(stores).reduce((newStore, [storeId, state]) => {\n if (storeId !== id) {\n newStore[storeId] = state;\n }\n return newStore;\n }, {}));\n }\n notifyRenamedStore(id) {\n if (this.#stores()[id]) {\n this.#stores.update((stores) => {\n return { ...stores };\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DefaultTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DefaultTracker, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DefaultTracker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC10cmFja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9kZXZ0b29scy9pbnRlcm5hbC9kZWZhdWx0LXRyYWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxRQUFRLEVBQWUsTUFBTSxlQUFlLENBQUM7O0FBSXRELE1BQU0sT0FBTyxjQUFjO0lBQ2hCLE9BQU8sR0FBRyxNQUFNLENBQWdCLEVBQUUsbURBQUMsQ0FBQztJQUU3QyxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYyxDQUErRDtJQUU3RSxlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUM1QixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFOUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQzdDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxFQUNELEVBQTRCLENBQzdCLENBQUM7UUFFRixJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsMkRBQUMsQ0FBQztJQUVILEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBMEI7UUFDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUIsR0FBRyxLQUFLO1lBQ1IsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLO1NBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQXdEO1FBQy9ELElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBVTtRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDM0QsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ25CLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDNUIsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFBRSxFQUFtQixDQUFDLENBQ3hCLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCLENBQUMsRUFBVTtRQUMzQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzdCLE9BQU8sRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7OEdBckRVLGNBQWM7a0hBQWQsY0FBYyxjQURELE1BQU07OzJGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVmZmVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRTdGF0ZSwgU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IFRyYWNrZXIsIFRyYWNrZXJTdG9yZXMgfSBmcm9tICcuL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRGVmYXVsdFRyYWNrZXIgaW1wbGVtZW50cyBUcmFja2VyIHtcbiAgcmVhZG9ubHkgI3N0b3JlcyA9IHNpZ25hbDxUcmFja2VyU3RvcmVzPih7fSk7XG5cbiAgZ2V0IHN0b3JlcygpOiBUcmFja2VyU3RvcmVzIHtcbiAgICByZXR1cm4gdGhpcy4jc3RvcmVzKCk7XG4gIH1cblxuICAjdHJhY2tDYWxsYmFjazogdW5kZWZpbmVkIHwgKChjaGFuZ2VkU3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4pID0+IHZvaWQpO1xuXG4gICN0cmFja2luZ0VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuI3RyYWNrQ2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdubyBjYWxsYmFjayBmdW5jdGlvbiBkZWZpbmVkJyk7XG4gICAgfVxuICAgIGNvbnN0IHN0b3JlcyA9IHRoaXMuI3N0b3JlcygpO1xuXG4gICAgY29uc3QgZnVsbFN0YXRlID0gT2JqZWN0LmVudHJpZXMoc3RvcmVzKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaWQsIHN0b3JlXSkgPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtpZF06IGdldFN0YXRlKHN0b3JlKSB9O1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD4sXG4gICAgKTtcblxuICAgIHRoaXMuI3RyYWNrQ2FsbGJhY2soZnVsbFN0YXRlKTtcbiAgfSk7XG5cbiAgdHJhY2soaWQ6IHN0cmluZywgc3RvcmU6IFN0YXRlU291cmNlPG9iamVjdD4pOiB2b2lkIHtcbiAgICB0aGlzLiNzdG9yZXMudXBkYXRlKCh2YWx1ZSkgPT4gKHtcbiAgICAgIC4uLnZhbHVlLFxuICAgICAgW2lkXTogc3RvcmUsXG4gICAgfSkpO1xuICB9XG5cbiAgb25DaGFuZ2UoY2FsbGJhY2s6IChjaGFuZ2VkU3RhdGU6IFJlY29yZDxzdHJpbmcsIG9iamVjdD4pID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLiN0cmFja0NhbGxiYWNrID0gY2FsbGJhY2s7XG4gIH1cblxuICByZW1vdmVTdG9yZShpZDogc3RyaW5nKSB7XG4gICAgdGhpcy4jc3RvcmVzLnVwZGF0ZSgoc3RvcmVzKSA9PlxuICAgICAgT2JqZWN0LmVudHJpZXMoc3RvcmVzKS5yZWR1Y2UoKG5ld1N0b3JlLCBbc3RvcmVJZCwgc3RhdGVdKSA9PiB7XG4gICAgICAgIGlmIChzdG9yZUlkICE9PSBpZCkge1xuICAgICAgICAgIG5ld1N0b3JlW3N0b3JlSWRdID0gc3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1N0b3JlO1xuICAgICAgfSwge30gYXMgVHJhY2tlclN0b3JlcyksXG4gICAgKTtcbiAgfVxuXG4gIG5vdGlmeVJlbmFtZWRTdG9yZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI3N0b3JlcygpW2lkXSkge1xuICAgICAgdGhpcy4jc3RvcmVzLnVwZGF0ZSgoc3RvcmVzKSA9PiB7XG4gICAgICAgIHJldHVybiB7IC4uLnN0b3JlcyB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=","export const currentActionNames = new Set();\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC1hY3Rpb24tbmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ludGVybmFsL2N1cnJlbnQtYWN0aW9uLW5hbWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgY3VycmVudEFjdGlvbk5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4iXX0=","import { isPlatformBrowser } from '@angular/common';\nimport { inject, Injectable, NgZone, PLATFORM_ID, } from '@angular/core';\nimport { REDUX_DEVTOOLS_CONFIG } from '../provide-devtools-config';\nimport { currentActionNames } from './current-action-names';\nimport * as i0 from \"@angular/core\";\nconst dummyConnection = {\n send: () => void true,\n};\n/**\n * A service provided by the root injector is\n * required because the synchronization runs\n * globally.\n *\n * The SignalStore could be provided in a component.\n * If the effect starts in the injection\n * context of the SignalStore, the complete sync\n * process would shut down once the component gets\n * destroyed.\n */\nexport class DevtoolsSyncer {\n /**\n * Stores all SignalStores that are connected to the\n * DevTools along their options, names and id.\n */\n #stores = {};\n #isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n #trackers = [];\n #devtoolsConfig = {\n name: 'NgRx SignalStore',\n ...inject(REDUX_DEVTOOLS_CONFIG, { optional: true }),\n };\n /**\n * Maintains the current states of all stores to avoid conflicts\n * between glitch-free and glitched trackers when used simultaneously.\n *\n * The challenge lies in ensuring that glitched trackers do not\n * interfere with the synchronization process of glitch-free trackers.\n * Specifically, glitched trackers could cause the synchronization to\n * read the current state of stores managed by glitch-free trackers.\n *\n * Therefore, the synchronization process doesn't read the state from\n * each store, but relies on #currentState.\n *\n * Please note, that here the key is the name and not the id.\n */\n #currentState = {};\n #currentId = 1;\n #connection = inject(NgZone).runOutsideAngular(() => this.#isBrowser\n ? window.__REDUX_DEVTOOLS_EXTENSION__\n ? window.__REDUX_DEVTOOLS_EXTENSION__.connect(this.#devtoolsConfig)\n : dummyConnection\n : dummyConnection);\n constructor() {\n if (!this.#isBrowser) {\n return;\n }\n }\n ngOnDestroy() {\n currentActionNames.clear();\n }\n syncToDevTools(changedStatePerId) {\n const mappedChangedStatePerName = Object.entries(changedStatePerId).reduce((acc, [id, store]) => {\n const { options, name } = this.#stores[id];\n acc[name] = options.map(store);\n return acc;\n }, {});\n this.#currentState = {\n ...this.#currentState,\n ...mappedChangedStatePerName,\n };\n const names = Array.from(currentActionNames);\n const type = names.length ? names.join(', ') : 'Store Update';\n currentActionNames.clear();\n this.#connection.send({ type }, this.#currentState);\n }\n getNextId() {\n return String(this.#currentId++);\n }\n /**\n * Consumer provides the id. That is because we can only start\n * tracking the store in the init hook.\n * Unfortunately, methods for renaming having the final id\n * need to be defined already before.\n * That's why `withDevtools` requests first the id and\n * then registers itself later.\n */\n addStore(id, name, store, options) {\n let storeName = name;\n const names = Object.values(this.#stores).map((store) => store.name);\n if (names.includes(storeName)) {\n // const { options } = throwIfNull(\n // Object.values(this.#stores).find((store) => store.name === storeName)\n // );\n if (!options.indexNames) {\n throw new Error(`An instance of the store ${storeName} already exists. \\\nEnable automatic indexing via withDevTools('${storeName}', { indexNames: true }), or rename it upon instantiation.`);\n }\n }\n for (let i = 1; names.includes(storeName); i++) {\n storeName = `${name}-${i}`;\n }\n this.#stores[id] = { name: storeName, options };\n const tracker = options.tracker;\n if (!this.#trackers.includes(tracker)) {\n this.#trackers.push(tracker);\n }\n tracker.onChange((changedState) => this.syncToDevTools(changedState));\n tracker.track(id, store);\n }\n removeStore(id) {\n const name = this.#stores[id].name;\n this.#stores = Object.entries(this.#stores).reduce((newStore, [storeId, value]) => {\n if (storeId !== id) {\n newStore[storeId] = value;\n }\n return newStore;\n }, {});\n this.#currentState = Object.entries(this.#currentState).reduce((newState, [storeName, state]) => {\n if (storeName !== name) {\n newState[storeName] = state;\n }\n return newState;\n }, {});\n for (const tracker of this.#trackers) {\n tracker.removeStore(id);\n }\n }\n /**\n * Renames a store identified by its internal id. If the store has already\n * been removed (e.g. due to component destruction), this is a no-op.\n */\n renameStore(id, newName) {\n const storeEntry = this.#stores[id];\n if (!storeEntry) {\n return;\n }\n const oldName = storeEntry.name;\n if (oldName === newName) {\n return;\n }\n const otherStoreNames = Object.entries(this.#stores)\n .filter(([entryId]) => entryId !== id)\n .map(([, s]) => s.name);\n if (otherStoreNames.includes(newName)) {\n throw new Error(`NgRx Toolkit/DevTools: cannot rename from ${oldName} to ${newName}. ${newName} is already assigned to another SignalStore instance.`);\n }\n this.#stores = Object.entries(this.#stores).reduce((newStore, [entryId, value]) => {\n if (entryId === id) {\n newStore[entryId] = { ...value, name: newName };\n }\n else {\n newStore[entryId] = value;\n }\n return newStore;\n }, {});\n // we don't rename in #currentState but wait for tracker to notify\n // us with a changed state that contains that name.\n this.#currentState = Object.entries(this.#currentState).reduce((newState, [storeName, state]) => {\n if (storeName !== oldName) {\n newState[storeName] = state;\n }\n return newState;\n }, {});\n this.#trackers.forEach((tracker) => tracker.notifyRenamedStore(id));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DevtoolsSyncer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DevtoolsSyncer, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: DevtoolsSyncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHMtc3luY2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL2ludGVybmFsL2RldnRvb2xzLXN5bmNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFFTixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBSTVELE1BQU0sZUFBZSxHQUFlO0lBQ2xDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUk7Q0FDdEIsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUN6Qjs7O09BR0c7SUFDSCxPQUFPLEdBQWtCLEVBQUUsQ0FBQztJQUNuQixVQUFVLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsU0FBUyxHQUFHLEVBQWUsQ0FBQztJQUM1QixlQUFlLEdBQUc7UUFDekIsSUFBSSxFQUFFLGtCQUFrQjtRQUN4QixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUNyRCxDQUFDO0lBRUY7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILGFBQWEsR0FBMkIsRUFBRSxDQUFDO0lBQzNDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFFTixXQUFXLEdBQWUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUN2RSxJQUFJLENBQUMs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QUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDbEQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDNUIsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsRUFDRCxFQUFtQixDQUNwQixDQUFDO1FBRUYsa0VBQWtFO1FBQ2xFLG1EQUFtRDtRQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FDNUQsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUMvQixJQUFJLFNBQVMsS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDMUIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUM5QixDQUFDO1lBQ0QsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxFQUNELEVBQTRCLENBQzdCLENBQUM7UUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQzs4R0E5TFUsY0FBYztrSEFBZCxjQUFjLGNBREQsTUFBTTs7MkZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgaW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IFJFRFVYX0RFVlRPT0xTX0NPTkZJRyB9IGZyb20gJy4uL3Byb3ZpZGUtZGV2dG9vbHMtY29uZmlnJztcbmltcG9ydCB7IGN1cnJlbnRBY3Rpb25OYW1lcyB9IGZyb20gJy4vY3VycmVudC1hY3Rpb24tbmFtZXMnO1xuaW1wb3J0IHsgRGV2dG9vbHNJbm5lck9wdGlvbnMgfSBmcm9tICcuL2RldnRvb2xzLWZlYXR1cmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvbiwgU3RvcmVSZWdpc3RyeSwgVHJhY2tlciB9IGZyb20gJy4vbW9kZWxzJztcblxuY29uc3QgZHVtbXlDb25uZWN0aW9uOiBDb25uZWN0aW9uID0ge1xuICBzZW5kOiAoKSA9PiB2b2lkIHRydWUsXG59O1xuXG4vKipcbiAqIEEgc2VydmljZSBwcm92aWRlZCBieSB0aGUgcm9vdCBpbmplY3RvciBpc1xuICogcmVxdWlyZWQgYmVjYXVzZSB0aGUgc3luY2hyb25pemF0aW9uIHJ1bnNcbiAqIGdsb2JhbGx5LlxuICpcbiAqIFRoZSBTaWduYWxTdG9yZSBjb3VsZCBiZSBwcm92aWRlZCBpbiBhIGNvbXBvbmVudC5cbiAqIElmIHRoZSBlZmZlY3Qgc3RhcnRzIGluIHRoZSBpbmplY3Rpb25cbiAqIGNvbnRleHQgb2YgdGhlIFNpZ25hbFN0b3JlLCB0aGUgY29tcGxldGUgc3luY1xuICogcHJvY2VzcyB3b3VsZCBzaHV0IGRvd24gb25jZSB0aGUgY29tcG9uZW50IGdldHNcbiAqIGRlc3Ryb3llZC5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBEZXZ0b29sc1N5bmNlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBTdG9yZXMgYWxsIFNpZ25hbFN0b3JlcyB0aGF0IGFyZSBjb25uZWN0ZWQgdG8gdGhlXG4gICAqIERldlRvb2xzIGFsb25nIHRoZWlyIG9wdGlvbnMsIG5hbWVzIGFuZCBpZC5cbiAgICovXG4gICNzdG9yZXM6IFN0b3JlUmVnaXN0cnkgPSB7fTtcbiAgcmVhZG9ubHkgI2lzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKGluamVjdChQTEFURk9STV9JRCkpO1xuICByZWFkb25seSAjdHJhY2tlcnMgPSBbXSBhcyBUcmFja2VyW107XG4gIHJlYWRvbmx5ICNkZXZ0b29sc0NvbmZpZyA9IHtcbiAgICBuYW1lOiAnTmdSeCBTaWduYWxTdG9yZScsXG4gICAgLi4uaW5qZWN0KFJFRFVYX0RFVlRPT0xTX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KSxcbiAgfTtcblxuICAvKipcbiAgICogTWFpbnRhaW5zIHRoZSBjdXJyZW50IHN0YXRlcyBvZiBhbGwgc3RvcmVzIHRvIGF2b2lkIGNvbmZsaWN0c1xuICAgKiBiZXR3ZWVuIGdsaXRjaC1mcmVlIGFuZCBnbGl0Y2hlZCB0cmFja2VycyB3aGVuIHVzZWQgc2ltdWx0YW5lb3VzbHkuXG4gICAqXG4gICAqIFRoZSBjaGFsbGVuZ2UgbGllcyBpbiBlbnN1cmluZyB0aGF0IGdsaXRjaGVkIHRyYWNrZXJzIGRvIG5vdFxuICAgKiBpbnRlcmZlcmUgd2l0aCB0aGUgc3luY2hyb25pemF0aW9uIHByb2Nlc3Mgb2YgZ2xpdGNoLWZyZWUgdHJhY2tlcnMuXG4gICAqIFNwZWNpZmljYWxseSwgZ2xpdGNoZWQgdHJhY2tlcnMgY291bGQgY2F1c2UgdGhlIHN5bmNocm9uaXphdGlvbiB0b1xuICAgKiByZWFkIHRoZSBjdXJyZW50IHN0YXRlIG9mIHN0b3JlcyBtYW5hZ2VkIGJ5IGdsaXRjaC1mcmVlIHRyYWNrZXJzLlxuICAgKlxuICAgKiBUaGVyZWZvcmUsIHRoZSBzeW5jaHJvbml6YXRpb24gcHJvY2VzcyBkb2Vzbid0IHJlYWQgdGhlIHN0YXRlIGZyb21cbiAgICogZWFjaCBzdG9yZSwgYnV0IHJlbGllcyBvbiAjY3VycmVudFN0YXRlLlxuICAgKlxuICAgKiBQbGVhc2Ugbm90ZSwgdGhhdCBoZXJlIHRoZSBrZXkgaXMgdGhlIG5hbWUgYW5kIG5vdCB0aGUgaWQuXG4gICAqL1xuICAjY3VycmVudFN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+ID0ge307XG4gICNjdXJyZW50SWQgPSAxO1xuXG4gIHJlYWRvbmx5ICNjb25uZWN0aW9uOiBDb25uZWN0aW9uID0gaW5qZWN0KE5nWm9uZSkucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT5cbiAgICB0aGlzLiNpc0Jyb3dzZXJcbiAgICAgID8gd2luZG93Ll9fUkVEVVhfREVWVE9PTFNfRVhURU5TSU9OX19cbiAgICAgICAgPyB3aW5kb3cuX19SRURVWF9ERVZUT09MU19FWFRFTlNJT05fXy5jb25uZWN0KHRoaXMuI2RldnRvb2xzQ29uZmlnKVxuICAgICAgICA6IGR1bW15Q29ubmVjdGlvblxuICAgICAgOiBkdW1teUNvbm5lY3Rpb24sXG4gICk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLiNpc0Jyb3dzZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBjdXJyZW50QWN0aW9uTmFtZXMuY2xlYXIoKTtcbiAgfVxuXG4gIHN5bmNUb0RldlRvb2xzKGNoYW5nZWRTdGF0ZVBlcklkOiBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+KSB7XG4gICAgY29uc3QgbWFwcGVkQ2hhbmdlZFN0YXRlUGVyTmFtZSA9IE9iamVjdC5lbnRyaWVzKGNoYW5nZWRTdGF0ZVBlcklkKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBbaWQsIHN0b3JlXSkgPT4ge1xuICAgICAgICBjb25zdCB7IG9wdGlvbnMsIG5hbWUgfSA9IHRoaXMuI3N0b3Jlc1tpZF07XG4gICAgICAgIGFjY1tuYW1lXSA9IG9wdGlvbnMubWFwKHN0b3JlKTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+LFxuICAgICk7XG4gICAgdGhpcy4jY3VycmVudFN0YXRlID0ge1xuICAgICAgLi4udGhpcy4jY3VycmVudFN0YXRlLFxuICAgICAgLi4ubWFwcGVkQ2hhbmdlZFN0YXRlUGVyTmFtZSxcbiAgICB9O1xuXG4gICAgY29uc3QgbmFtZXMgPSBBcnJheS5mcm9tKGN1cnJlbnRBY3Rpb25OYW1lcyk7XG4gICAgY29uc3QgdHlwZSA9IG5hbWVzLmxlbmd0aCA/IG5hbWVzLmpvaW4oJywgJykgOiAnU3RvcmUgVXBkYXRlJztcbiAgICBjdXJyZW50QWN0aW9uTmFtZXMuY2xlYXIoKTtcblxuICAgIHRoaXMuI2Nvbm5lY3Rpb24uc2VuZCh7IHR5cGUgfSwgdGhpcy4jY3VycmVudFN0YXRlKTtcbiAgfVxuXG4gIGdldE5leHRJZCgpIHtcbiAgICByZXR1cm4gU3RyaW5nKHRoaXMuI2N1cnJlbnRJZCsrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdW1lciBwcm92aWRlcyB0aGUgaWQuIFRoYXQgaXMgYmVjYXVzZSB3ZSBjYW4gb25seSBzdGFydFxuICAgKiB0cmFja2luZyB0aGUgc3RvcmUgaW4gdGhlIGluaXQgaG9vay5cbiAgICogVW5mb3J0dW5hdGVseSwgbWV0aG9kcyBmb3IgcmVuYW1pbmcgaGF2aW5nIHRoZSBmaW5hbCBpZFxuICAgKiBuZWVkIHRvIGJlIGRlZmluZWQgYWxyZWFkeSBiZWZvcmUuXG4gICAqIFRoYXQncyB3aHkgYHdpdGhEZXZ0b29sc2AgcmVxdWVzdHMgZmlyc3QgdGhlIGlkIGFuZFxuICAgKiB0aGVuIHJlZ2lzdGVycyBpdHNlbGYgbGF0ZXIuXG4gICAqL1xuICBhZGRTdG9yZShcbiAgICBpZDogc3RyaW5nLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBzdG9yZTogU3RhdGVTb3VyY2U8b2JqZWN0PixcbiAgICBvcHRpb25zOiBEZXZ0b29sc0lubmVyT3B0aW9ucyxcbiAgKSB7XG4gICAgbGV0IHN0b3JlTmFtZSA9IG5hbWU7XG4gICAgY29uc3QgbmFtZXMgPSBPYmplY3QudmFsdWVzKHRoaXMuI3N0b3JlcykubWFwKChzdG9yZSkgPT4gc3RvcmUubmFtZSk7XG5cbiAgICBpZiAobmFtZXMuaW5jbHVkZXMoc3RvcmVOYW1lKSkge1xuICAgICAgLy8gY29uc3QgeyBvcHRpb25zIH0gPSB0aHJvd0lmTnVsbChcbiAgICAgIC8vICAgT2JqZWN0LnZhbHVlcyh0aGlzLiNzdG9yZXMpLmZpbmQoKHN0b3JlKSA9PiBzdG9yZS5uYW1lID09PSBzdG9yZU5hbWUpXG4gICAgICAvLyApO1xuICAgICAgaWYgKCFvcHRpb25zLmluZGV4TmFtZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBbiBpbnN0YW5jZSBvZiB0aGUgc3RvcmUgJHtzdG9yZU5hbWV9IGFscmVhZHkgZXhpc3RzLiBcXFxuRW5hYmxlIGF1dG9tYXRpYyBpbmRleGluZyB2aWEgd2l0aERldlRvb2xzKCcke3N0b3JlTmFtZX0nLCB7IGluZGV4TmFtZXM6IHRydWUgfSksIG9yIHJlbmFtZSBpdCB1cG9uIGluc3RhbnRpYXRpb24uYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDE7IG5hbWVzLmluY2x1ZGVzKHN0b3JlTmFtZSk7IGkrKykge1xuICAgICAgc3RvcmVOYW1lID0gYCR7bmFtZX0tJHtpfWA7XG4gICAgfVxuICAgIHRoaXMuI3N0b3Jlc1tpZF0gPSB7IG5hbWU6IHN0b3JlTmFtZSwgb3B0aW9ucyB9O1xuXG4gICAgY29uc3QgdHJhY2tlciA9IG9wdGlvbnMudHJhY2tlcjtcbiAgICBpZiAoIXRoaXMuI3RyYWNrZXJzLmluY2x1ZGVzKHRyYWNrZXIpKSB7XG4gICAgICB0aGlzLiN0cmFja2Vycy5wdXNoKHRyYWNrZXIpO1xuICAgIH1cblxuICAgIHRyYWNrZXIub25DaGFuZ2UoKGNoYW5nZWRTdGF0ZSkgPT4gdGhpcy5zeW5jVG9EZXZUb29scyhjaGFuZ2VkU3RhdGUpKTtcbiAgICB0cmFja2VyLnRyYWNrKGlkLCBzdG9yZSk7XG4gIH1cblxuICByZW1vdmVTdG9yZShpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuI3N0b3Jlc1tpZF0ubmFtZTtcbiAgICB0aGlzLiNzdG9yZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLiNzdG9yZXMpLnJlZHVjZShcbiAgICAgIChuZXdTdG9yZSwgW3N0b3JlSWQsIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoc3RvcmVJZCAhPT0gaWQpIHtcbiAgICAgICAgICBuZXdTdG9yZVtzdG9yZUlkXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdTdG9yZTtcbiAgICAgIH0sXG4gICAgICB7fSBhcyBTdG9yZVJlZ2lzdHJ5LFxuICAgICk7XG5cbiAgICB0aGlzLiNjdXJyZW50U3RhdGUgPSBPYmplY3QuZW50cmllcyh0aGlzLiNjdXJyZW50U3RhdGUpLnJlZHVjZShcbiAgICAgIChuZXdTdGF0ZSwgW3N0b3JlTmFtZSwgc3RhdGVdKSA9PiB7XG4gICAgICAgIGlmIChzdG9yZU5hbWUgIT09IG5hbWUpIHtcbiAgICAgICAgICBuZXdTdGF0ZVtzdG9yZU5hbWVdID0gc3RhdGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1N0YXRlO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIG9iamVjdD4sXG4gICAgKTtcblxuICAgIGZvciAoY29uc3QgdHJhY2tlciBvZiB0aGlzLiN0cmFja2Vycykge1xuICAgICAgdHJhY2tlci5yZW1vdmVTdG9yZShpZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmFtZXMgYSBzdG9yZSBpZGVudGlmaWVkIGJ5IGl0cyBpbnRlcm5hbCBpZC4gSWYgdGhlIHN0b3JlIGhhcyBhbHJlYWR5XG4gICAqIGJlZW4gcmVtb3ZlZCAoZS5nLiBkdWUgdG8gY29tcG9uZW50IGRlc3RydWN0aW9uKSwgdGhpcyBpcyBhIG5vLW9wLlxuICAgKi9cbiAgcmVuYW1lU3RvcmUoaWQ6IHN0cmluZywgbmV3TmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3RvcmVFbnRyeSA9IHRoaXMuI3N0b3Jlc1tpZF07XG4gICAgaWYgKCFzdG9yZUVudHJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9sZE5hbWUgPSBzdG9yZUVudHJ5Lm5hbWU7XG5cbiAgICBpZiAob2xkTmFtZSA9PT0gbmV3TmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG90aGVyU3RvcmVOYW1lcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuI3N0b3JlcylcbiAgICAgIC5maWx0ZXIoKFtlbnRyeUlkXSkgPT4gZW50cnlJZCAhPT0gaWQpXG4gICAgICAubWFwKChbLCBzXSkgPT4gcy5uYW1lKTtcbiAgICBpZiAob3RoZXJTdG9yZU5hbWVzLmluY2x1ZGVzKG5ld05hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBOZ1J4IFRvb2xraXQvRGV2VG9vbHM6IGNhbm5vdCByZW5hbWUgZnJvbSAke29sZE5hbWV9IHRvICR7bmV3TmFtZX0uICR7bmV3TmFtZX0gaXMgYWxyZWFkeSBhc3NpZ25lZCB0byBhbm90aGVyIFNpZ25hbFN0b3JlIGluc3RhbmNlLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuI3N0b3JlcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuI3N0b3JlcykucmVkdWNlKFxuICAgICAgKG5ld1N0b3JlLCBbZW50cnlJZCwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChlbnRyeUlkID09PSBpZCkge1xuICAgICAgICAgIG5ld1N0b3JlW2VudHJ5SWRdID0geyAuLi52YWx1ZSwgbmFtZTogbmV3TmFtZSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1N0b3JlW2VudHJ5SWRdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1N0b3JlO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFN0b3JlUmVnaXN0cnksXG4gICAgKTtcblxuICAgIC8vIHdlIGRvbid0IHJlbmFtZSBpbiAjY3VycmVudFN0YXRlIGJ1dCB3YWl0IGZvciB0cmFja2VyIHRvIG5vdGlmeVxuICAgIC8vIHVzIHdpdGggYSBjaGFuZ2VkIHN0YXRlIHRoYXQgY29udGFpbnMgdGhhdCBuYW1lLlxuICAgIHRoaXMuI2N1cnJlbnRTdGF0ZSA9IE9iamVjdC5lbnRyaWVzKHRoaXMuI2N1cnJlbnRTdGF0ZSkucmVkdWNlKFxuICAgICAgKG5ld1N0YXRlLCBbc3RvcmVOYW1lLCBzdGF0ZV0pID0+IHtcbiAgICAgICAgaWYgKHN0b3JlTmFtZSAhPT0gb2xkTmFtZSkge1xuICAgICAgICAgIG5ld1N0YXRlW3N0b3JlTmFtZV0gPSBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgb2JqZWN0PixcbiAgICApO1xuXG4gICAgdGhpcy4jdHJhY2tlcnMuZm9yRWFjaCgodHJhY2tlcikgPT4gdHJhY2tlci5ub3RpZnlSZW5hbWVkU3RvcmUoaWQpKTtcbiAgfVxufVxuIl19","import { inject, InjectionToken } from '@angular/core';\nimport { signalStoreFeature, withHooks, withMethods, } from '@ngrx/signals';\nimport { DefaultTracker } from './internal/default-tracker';\nimport { DevtoolsSyncer } from './internal/devtools-syncer.service';\nexport const renameDevtoolsMethodName = '___renameDevtoolsName';\nexport const uniqueDevtoolsId = '___uniqueDevtoolsId';\nconst EXISTING_NAMES = new InjectionToken('Array contain existing names for the signal stores', { factory: () => [], providedIn: 'root' });\n/**\n * Adds this store as a feature state to the Redux DevTools.\n *\n * By default, the action name is 'Store Update'. You can\n * change that via the {@link updateState} method, which has as second\n * parameter the action name.\n *\n * The standalone function {@link renameDevtoolsName} can rename\n * the store name.\n *\n * @param name name of the store as it should appear in the DevTools\n * @param features features to extend or modify the behavior of the Devtools\n */\nexport function withDevtools(name, ...features) {\n return signalStoreFeature(withMethods(() => {\n const syncer = inject(DevtoolsSyncer);\n const id = syncer.getNextId();\n // TODO: use withProps and symbols\n return {\n [renameDevtoolsMethodName]: (newName) => {\n syncer.renameStore(id, newName);\n },\n [uniqueDevtoolsId]: () => id,\n };\n }), withHooks((store) => {\n const syncer = inject(DevtoolsSyncer);\n const id = String(store[uniqueDevtoolsId]());\n return {\n onInit() {\n const id = String(store[uniqueDevtoolsId]());\n const finalOptions = {\n indexNames: !features.some((f) => f.indexNames === false),\n map: features.find((f) => f.map)?.map ?? ((state) => state),\n tracker: inject(features.find((f) => f.tracker)?.tracker || DefaultTracker),\n };\n syncer.addStore(id, name, store, finalOptions);\n },\n onDestroy() {\n syncer.removeStore(id);\n },\n };\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kZXZ0b29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvd2l0aC1kZXZ0b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBSzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQVNwRSxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyx1QkFBdUIsQ0FBQztBQUNoRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztBQUV0RCxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FDdkMsb0RBQW9ELEVBQ3BELEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQ3RELENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLElBQVksRUFBRSxHQUFHLFFBQTJCO0lBQ3ZFLE9BQU8sa0JBQWtCLENBQ3ZCLFdBQVcsQ0FBQyxHQUFHLEVBQUU7UUFDZixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFdEMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRTlCLGtDQUFrQztRQUNsQyxPQUFPO1lBQ0wsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsT0FBZSxFQUFFLEVBQUU7Z0JBQzlDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLENBQUM7WUFDRCxDQUFDLGdCQUFnQixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtTQUNxQixDQUFDO0lBQ3RELENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLE9BQU87WUFDTCxNQUFNO2dCQUNKLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdDLE1BQU0sWUFBWSxHQUF5QjtvQkFDekMsVUFBVSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUM7b0JBQ3pELEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQztvQkFDM0QsT0FBTyxFQUFFLE1BQU0sQ0FDYixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxJQUFJLGNBQWMsQ0FDM0Q7aUJBQ0YsQ0FBQztnQkFFRixNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCxTQUFTO2dCQUNQLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDLENBQUMsQ0FDMkQsQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgd2l0aEhvb2tzLFxuICB3aXRoTWV0aG9kcyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBEZWZhdWx0VHJhY2tlciB9IGZyb20gJy4vaW50ZXJuYWwvZGVmYXVsdC10cmFja2VyJztcbmltcG9ydCB7XG4gIERldnRvb2xzRmVhdHVyZSxcbiAgRGV2dG9vbHNJbm5lck9wdGlvbnMsXG59IGZyb20gJy4vaW50ZXJuYWwvZGV2dG9vbHMtZmVhdHVyZSc7XG5pbXBvcnQgeyBEZXZ0b29sc1N5bmNlciB9IGZyb20gJy4vaW50ZXJuYWwvZGV2dG9vbHMtc3luY2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVkdXhEZXZ0b29sc0V4dGVuc2lvbiB9IGZyb20gJy4vaW50ZXJuYWwvbW9kZWxzJztcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBfX1JFRFVYX0RFVlRPT0xTX0VYVEVOU0lPTl9fOiBSZWR1eERldnRvb2xzRXh0ZW5zaW9uIHwgdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCByZW5hbWVEZXZ0b29sc01ldGhvZE5hbWUgPSAnX19fcmVuYW1lRGV2dG9vbHNOYW1lJztcbmV4cG9ydCBjb25zdCB1bmlxdWVEZXZ0b29sc0lkID0gJ19fX3VuaXF1ZURldnRvb2xzSWQnO1xuXG5jb25zdCBFWElTVElOR19OQU1FUyA9IG5ldyBJbmplY3Rpb25Ub2tlbihcbiAgJ0FycmF5IGNvbnRhaW4gZXhpc3RpbmcgbmFtZXMgZm9yIHRoZSBzaWduYWwgc3RvcmVzJyxcbiAgeyBmYWN0b3J5OiAoKSA9PiBbXSBhcyBzdHJpbmdbXSwgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXG4pO1xuXG4vKipcbiAqIEFkZHMgdGhpcyBzdG9yZSBhcyBhIGZlYXR1cmUgc3RhdGUgdG8gdGhlIFJlZHV4IERldlRvb2xzLlxuICpcbiAqIEJ5IGRlZmF1bHQsIHRoZSBhY3Rpb24gbmFtZSBpcyAnU3RvcmUgVXBkYXRlJy4gWW91IGNhblxuICogY2hhbmdlIHRoYXQgdmlhIHRoZSB7QGxpbmsgdXBkYXRlU3RhdGV9IG1ldGhvZCwgd2hpY2ggaGFzIGFzIHNlY29uZFxuICogcGFyYW1ldGVyIHRoZSBhY3Rpb24gbmFtZS5cbiAqXG4gKiBUaGUgc3RhbmRhbG9uZSBmdW5jdGlvbiB7QGxpbmsgcmVuYW1lRGV2dG9vbHNOYW1lfSBjYW4gcmVuYW1lXG4gKiB0aGUgc3RvcmUgbmFtZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBuYW1lIG9mIHRoZSBzdG9yZSBhcyBpdCBzaG91bGQgYXBwZWFyIGluIHRoZSBEZXZUb29sc1xuICogQHBhcmFtIGZlYXR1cmVzIGZlYXR1cmVzIHRvIGV4dGVuZCBvciBtb2RpZnkgdGhlIGJlaGF2aW9yIG9mIHRoZSBEZXZ0b29sc1xuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aERldnRvb2xzKG5hbWU6IHN0cmluZywgLi4uZmVhdHVyZXM6IERldnRvb2xzRmVhdHVyZVtdKSB7XG4gIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXG4gICAgd2l0aE1ldGhvZHMoKCkgPT4ge1xuICAgICAgY29uc3Qgc3luY2VyID0gaW5qZWN0KERldnRvb2xzU3luY2VyKTtcblxuICAgICAgY29uc3QgaWQgPSBzeW5jZXIuZ2V0TmV4dElkKCk7XG5cbiAgICAgIC8vIFRPRE86IHVzZSB3aXRoUHJvcHMgYW5kIHN5bWJvbHNcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtyZW5hbWVEZXZ0b29sc01ldGhvZE5hbWVdOiAobmV3TmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgc3luY2VyLnJlbmFtZVN0b3JlKGlkLCBuZXdOYW1lKTtcbiAgICAgICAgfSxcbiAgICAgICAgW3VuaXF1ZURldnRvb2xzSWRdOiAoKSA9PiBpZCxcbiAgICAgIH0gYXMgUmVjb3JkPHN0cmluZywgKG5ld05hbWU/OiB1bmtub3duKSA9PiB1bmtub3duPjtcbiAgICB9KSxcbiAgICB3aXRoSG9va3MoKHN0b3JlKSA9PiB7XG4gICAgICBjb25zdCBzeW5jZXIgPSBpbmplY3QoRGV2dG9vbHNTeW5jZXIpO1xuICAgICAgY29uc3QgaWQgPSBTdHJpbmcoc3RvcmVbdW5pcXVlRGV2dG9vbHNJZF0oKSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbkluaXQoKSB7XG4gICAgICAgICAgY29uc3QgaWQgPSBTdHJpbmcoc3RvcmVbdW5pcXVlRGV2dG9vbHNJZF0oKSk7XG4gICAgICAgICAgY29uc3QgZmluYWxPcHRpb25zOiBEZXZ0b29sc0lubmVyT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGluZGV4TmFtZXM6ICFmZWF0dXJlcy5zb21lKChmKSA9PiBmLmluZGV4TmFtZXMgPT09IGZhbHNlKSxcbiAgICAgICAgICAgIG1hcDogZmVhdHVyZXMuZmluZCgoZikgPT4gZi5tYXApPy5tYXAgPz8gKChzdGF0ZSkgPT4gc3RhdGUpLFxuICAgICAgICAgICAgdHJhY2tlcjogaW5qZWN0KFxuICAgICAgICAgICAgICBmZWF0dXJlcy5maW5kKChmKSA9PiBmLnRyYWNrZXIpPy50cmFja2VyIHx8IERlZmF1bHRUcmFja2VyLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgc3luY2VyLmFkZFN0b3JlKGlkLCBuYW1lLCBzdG9yZSwgZmluYWxPcHRpb25zKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25EZXN0cm95KCkge1xuICAgICAgICAgIHN5bmNlci5yZW1vdmVTdG9yZShpZCk7XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0pLFxuICApIGFzIFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEVtcHR5RmVhdHVyZVJlc3VsdD47XG59XG4iXX0=","import { renameDevtoolsMethodName } from './with-devtools';\n/**\n * Renames the name of a store how it appears in the Devtools.\n * @param store instance of the SignalStore\n * @param newName new name for the Devtools\n */\nexport function renameDevtoolsName(store, newName) {\n const renameMethod = store[renameDevtoolsMethodName];\n if (!renameMethod) {\n throw new Error(\"Devtools extensions haven't been added to this store.\");\n }\n renameMethod(newName);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuYW1lLWRldnRvb2xzLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2RldnRvb2xzL3JlbmFtZS1kZXZ0b29scy1uYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLEtBQXlCLEVBQ3pCLE9BQWU7SUFFZixNQUFNLFlBQVksR0FBSSxLQUFtRCxDQUN2RSx3QkFBd0IsQ0FDekIsQ0FBQztJQUNGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IHJlbmFtZURldnRvb2xzTWV0aG9kTmFtZSB9IGZyb20gJy4vd2l0aC1kZXZ0b29scyc7XG5cbi8qKlxuICogUmVuYW1lcyB0aGUgbmFtZSBvZiBhIHN0b3JlIGhvdyBpdCBhcHBlYXJzIGluIHRoZSBEZXZ0b29scy5cbiAqIEBwYXJhbSBzdG9yZSBpbnN0YW5jZSBvZiB0aGUgU2lnbmFsU3RvcmVcbiAqIEBwYXJhbSBuZXdOYW1lIG5ldyBuYW1lIGZvciB0aGUgRGV2dG9vbHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZURldnRvb2xzTmFtZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0b3JlOiBTdGF0ZVNvdXJjZTxTdGF0ZT4sXG4gIG5ld05hbWU6IHN0cmluZyxcbik6IHZvaWQge1xuICBjb25zdCByZW5hbWVNZXRob2QgPSAoc3RvcmUgYXMgUmVjb3JkPHN0cmluZywgKG5ld05hbWU6IHN0cmluZykgPT4gdm9pZD4pW1xuICAgIHJlbmFtZURldnRvb2xzTWV0aG9kTmFtZVxuICBdO1xuICBpZiAoIXJlbmFtZU1ldGhvZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkRldnRvb2xzIGV4dGVuc2lvbnMgaGF2ZW4ndCBiZWVuIGFkZGVkIHRvIHRoaXMgc3RvcmUuXCIpO1xuICB9XG5cbiAgcmVuYW1lTWV0aG9kKG5ld05hbWUpO1xufVxuIl19","import { patchState as originalPatchState, } from '@ngrx/signals';\nimport { currentActionNames } from './internal/current-action-names';\n/**\n * @deprecated Has been renamed to `updateState`\n */\nexport const patchState = (state, action, ...rest) => {\n updateState(state, action, ...rest);\n};\n/**\n * Wrapper of `patchState` for DevTools integration. Next to updating the state,\n * it also sends the action to the DevTools.\n * @param stateSource state of Signal Store\n * @param action name of action how it will show in DevTools\n * @param updaters updater functions or objects\n */\nexport function updateState(stateSource, action, ...updaters) {\n currentActionNames.add(action);\n return originalPatchState(stateSource, ...updaters);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9kZXZ0b29scy91cGRhdGUtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFVBQVUsSUFBSSxrQkFBa0IsR0FHakMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFTckU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLEVBQUU7SUFDNUQsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUN6QixXQUF1QyxFQUN2QyxNQUFjLEVBQ2QsR0FBRyxRQUVGO0lBRUQsa0JBQWtCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLE9BQU8sa0JBQWtCLENBQUMsV0FBVyxFQUFFLEdBQUcsUUFBUSxDQUFDLENBQUM7QUFDdEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHBhdGNoU3RhdGUgYXMgb3JpZ2luYWxQYXRjaFN0YXRlLFxuICBQYXJ0aWFsU3RhdGVVcGRhdGVyLFxuICBXcml0YWJsZVN0YXRlU291cmNlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGN1cnJlbnRBY3Rpb25OYW1lcyB9IGZyb20gJy4vaW50ZXJuYWwvY3VycmVudC1hY3Rpb24tbmFtZXMnO1xuXG50eXBlIFBhdGNoRm4gPSB0eXBlb2Ygb3JpZ2luYWxQYXRjaFN0YXRlIGV4dGVuZHMgKFxuICBhcmcxOiBpbmZlciBGaXJzdCxcbiAgLi4uYXJnczogaW5mZXIgUmVzdFxuKSA9PiBpbmZlciBSZXR1cm5lclxuICA/IChzdGF0ZTogRmlyc3QsIGFjdGlvbjogc3RyaW5nLCAuLi5yZXN0OiBSZXN0KSA9PiBSZXR1cm5lclxuICA6IG5ldmVyO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIEhhcyBiZWVuIHJlbmFtZWQgdG8gYHVwZGF0ZVN0YXRlYFxuICovXG5leHBvcnQgY29uc3QgcGF0Y2hTdGF0ZTogUGF0Y2hGbiA9IChzdGF0ZSwgYWN0aW9uLCAuLi5yZXN0KSA9PiB7XG4gIHVwZGF0ZVN0YXRlKHN0YXRlLCBhY3Rpb24sIC4uLnJlc3QpO1xufTtcblxuLyoqXG4gKiBXcmFwcGVyIG9mIGBwYXRjaFN0YXRlYCBmb3IgRGV2VG9vbHMgaW50ZWdyYXRpb24uIE5leHQgdG8gdXBkYXRpbmcgdGhlIHN0YXRlLFxuICogaXQgYWxzbyBzZW5kcyB0aGUgYWN0aW9uIHRvIHRoZSBEZXZUb29scy5cbiAqIEBwYXJhbSBzdGF0ZVNvdXJjZSBzdGF0ZSBvZiBTaWduYWwgU3RvcmVcbiAqIEBwYXJhbSBhY3Rpb24gbmFtZSBvZiBhY3Rpb24gaG93IGl0IHdpbGwgc2hvdyBpbiBEZXZUb29sc1xuICogQHBhcmFtIHVwZGF0ZXJzIHVwZGF0ZXIgZnVuY3Rpb25zIG9yIG9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZVN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVTb3VyY2U6IFdyaXRhYmxlU3RhdGVTb3VyY2U8U3RhdGU+LFxuICBhY3Rpb246IHN0cmluZyxcbiAgLi4udXBkYXRlcnM6IEFycmF5PFxuICAgIFBhcnRpYWw8Tm9JbmZlcjxTdGF0ZT4+IHwgUGFydGlhbFN0YXRlVXBkYXRlcjxOb0luZmVyPFN0YXRlPj5cbiAgPlxuKTogdm9pZCB7XG4gIGN1cnJlbnRBY3Rpb25OYW1lcy5hZGQoYWN0aW9uKTtcbiAgcmV0dXJuIG9yaWdpbmFsUGF0Y2hTdGF0ZShzdGF0ZVNvdXJjZSwgLi4udXBkYXRlcnMpO1xufVxuIl19","/**\n * Stub for DevTools integration. Can be used to disable DevTools in production.\n */\nexport const withDevToolsStub = () => (store) => store;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kZXYtdG9vbHMtc3R1Yi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZGV2dG9vbHMvd2l0aC1kZXYtdG9vbHMtc3R1Yi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUF3QixHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2l0aERldnRvb2xzIH0gZnJvbSAnLi93aXRoLWRldnRvb2xzJztcblxuLyoqXG4gKiBTdHViIGZvciBEZXZUb29scyBpbnRlZ3JhdGlvbi4gQ2FuIGJlIHVzZWQgdG8gZGlzYWJsZSBEZXZUb29scyBpbiBwcm9kdWN0aW9uLlxuICovXG5leHBvcnQgY29uc3Qgd2l0aERldlRvb2xzU3R1YjogdHlwZW9mIHdpdGhEZXZ0b29scyA9ICgpID0+IChzdG9yZSkgPT4gc3RvcmU7XG4iXX0=","export function assertActionFnSpecs(obj) {\n if (!obj || typeof obj !== 'object') {\n throw new Error('%o is not an Action Specification');\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvYXNzZXJ0aW9ucy9hc3NlcnRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBWTtJQUVaLElBQUksQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uc0ZuU3BlY3MgfSBmcm9tICcuLi93aXRoLXJlZHV4JztcblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEFjdGlvbkZuU3BlY3MoXG4gIG9iajogdW5rbm93bixcbik6IGFzc2VydHMgb2JqIGlzIEFjdGlvbnNGblNwZWNzIHtcbiAgaWYgKCFvYmogfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJyVvIGlzIG5vdCBhbiBBY3Rpb24gU3BlY2lmaWNhdGlvbicpO1xuICB9XG59XG4iXX0=","import { Subject } from 'rxjs';\nimport { assertActionFnSpecs } from './assertions/assertions';\nexport function payload() {\n return {};\n}\nexport const noPayload = {};\n/**\n * Creates a reducer function to separate the reducer logic into another file.\n *\n * ```typescript\n * interface FlightState {\n * flights: Flight[];\n * effect1: boolean;\n * effect2: boolean;\n * }\n *\n * const initialState: FlightState = {\n * flights: [],\n * effect1: false,\n * effect2: false,\n * };\n *\n * const actions = {\n * init: noPayload,\n * updateEffect1: payload<{ value: boolean }>(),\n * updateEffect2: payload<{ value: boolean }>(),\n * };\n *\n * const reducer = createReducer<FlightState, typeof actions>((actions, on) => {\n * on(actions.updateEffect1, (state, { value }) => {\n * patchState(state, { effect1: value });\n * });\n *\n * on(actions.updateEffect2, (state, { value }) => {\n * patchState(state, { effect2: value });\n * });\n * });\n *\n * signalStore(\n * withState(initialState),\n * withRedux({\n * actions,\n * reducer,\n * })\n * );\n * ```\n * @param reducerFactory\n */\nexport function createReducer(reducerFactory) {\n return reducerFactory;\n}\n/**\n * @deprecated Use NgRx's `@ngrx/signals/events` starting in 19.2\n *\n * Creates the effects function to separate the effects logic into another file.\n *\n * ```typescript\n * interface FlightState {\n * flights: Flight[];\n * effect1: boolean;\n * effect2: boolean;\n * }\n *\n * const initialState: FlightState = {\n * flights: [],\n * effect1: false,\n * effect2: false,\n * };\n *\n * const actions = {\n * init: noPayload,\n * updateEffect1: payload<{ value: boolean }>(),\n * updateEffect2: payload<{ value: boolean }>(),\n * };\n *\n * const effects = createEffects(actions, (actions, create) => {\n * return {\n * init1$: create(actions.init).pipe(\n * map(() => actions.updateEffect1({ value: true }))\n * ),\n * init2$: create(actions.init).pipe(\n * map(() => actions.updateEffect2({ value: true }))\n * ),\n * };\n * });\n *\n * signalStore(\n * withState(initialState),\n * withRedux({\n * actions,\n * effects,\n * })\n * );\n * ```\n * @param actions\n * @param effectsFactory\n */\nexport function createEffects(actions, effectsFactory) {\n return effectsFactory;\n}\nfunction createActionFns(actionFnSpecs, reducerRegistry, effectsRegistry, state) {\n const actionFns = {};\n for (const type in actionFnSpecs) {\n const actionFn = (payload) => {\n const fullPayload = { ...payload, type };\n const reducer = reducerRegistry[type];\n if (reducer) {\n reducer(state, fullPayload);\n }\n const effectSubjects = effectsRegistry[type];\n if (effectSubjects?.length) {\n for (const effectSubject of effectSubjects) {\n effectSubject.next(fullPayload);\n }\n }\n return fullPayload;\n };\n actionFn.type = type.toString();\n actionFns[type] = actionFn;\n }\n return actionFns;\n}\nfunction createPublicAndAllActionsFns(actionFnSpecs, reducerRegistry, effectsRegistry, state) {\n if ('public' in actionFnSpecs || 'private' in actionFnSpecs) {\n const privates = actionFnSpecs['private'] || {};\n const publics = actionFnSpecs['public'] || {};\n assertActionFnSpecs(privates);\n assertActionFnSpecs(publics);\n const privateActionFns = createActionFns(privates, reducerRegistry, effectsRegistry, state);\n const publicActionFns = createActionFns(publics, reducerRegistry, effectsRegistry, state);\n return {\n all: { ...privateActionFns, ...publicActionFns },\n publics: publicActionFns,\n };\n }\n const actionFns = createActionFns(actionFnSpecs, reducerRegistry, effectsRegistry, state);\n return { all: actionFns, publics: actionFns };\n}\nfunction fillReducerRegistry(reducer, actionFns, reducerRegistry) {\n function on(action, reducerFn) {\n reducerRegistry[action.type] = reducerFn;\n }\n reducer(actionFns, on);\n return reducerRegistry;\n}\nfunction fillEffects(effects, actionFns, effectsRegistry = {}) {\n function create(action) {\n const subject = new Subject();\n if (!(action.type in effectsRegistry)) {\n effectsRegistry[action.type] = [];\n }\n effectsRegistry[action.type].push(subject);\n return subject.asObservable();\n }\n const effectObservables = effects(actionFns, create);\n return Object.values(effectObservables);\n}\nfunction startSubscriptions(observables) {\n return observables.map((observable) => observable.subscribe());\n}\nfunction processRedux(actionFnSpecs, reducer, effects, store) {\n const reducerRegistry = {};\n const effectsRegistry = {};\n const actionsMap = createPublicAndAllActionsFns(actionFnSpecs, reducerRegistry, effectsRegistry, store);\n const actionFns = actionsMap.all;\n const publicActionsFns = actionsMap.publics;\n fillReducerRegistry(reducer, actionFns, reducerRegistry);\n const effectObservables = fillEffects(effects, actionFns, effectsRegistry);\n const subscriptions = startSubscriptions(effectObservables);\n return {\n methods: publicActionsFns,\n subscriptions: subscriptions,\n };\n}\n/**\n * @param redux redux\n *\n * properties do not start with `with` since they are not extension functions on their own.\n *\n * no dependency to NgRx\n *\n * actions are passed to reducer and effects, but it is also possible to use other actions.\n * effects provide forAction and do not return anything. that is important because effects should stay inaccessible\n */\nexport function withRedux(redux) {\n return (store) => {\n const { methods } = processRedux(redux.actions, redux.reducer, redux.effects, store);\n return {\n ...store,\n methods: { ...store.methods, ...methods },\n };\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZWR1eC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZWR1eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBNEM5RCxNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLEVBQVUsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztBQWlCNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUNHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FJM0IsY0FHQztJQUVELE9BQU8sY0FBYyxDQUFDO0FBQ3hCLENBQUM7QUFXRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkNHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsT0FBZ0IsRUFDaEIsY0FBeUQ7SUFFekQsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQztBQVdELFNBQVMsZUFBZSxDQUN0QixhQUFtQixFQUNuQixlQUdDLEVBQ0QsZUFBZ0MsRUFDaEMsS0FBYztJQUVkLE1BQU0sU0FBUyxHQUE2QixFQUFFLENBQUM7SUFFL0MsS0FBSyxNQUFNLElBQUksSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFFBQVEsR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtZQUNwQyxNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNYLE9BQXNELENBQ3JELEtBQUssRUFDTCxX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T0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFO1NBQzFDLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgV3JpdGFibGVTdGF0ZVNvdXJjZSxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhc3NlcnRBY3Rpb25GblNwZWNzIH0gZnJvbSAnLi9hc3NlcnRpb25zL2Fzc2VydGlvbnMnO1xuXG4vKiogQWN0aW9ucyAqKi9cblxudHlwZSBQYXlsb2FkID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbnR5cGUgQWN0aW9uRm48XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIEFjdGlvblBheWxvYWQgZXh0ZW5kcyBQYXlsb2FkID0gUGF5bG9hZCxcbj4gPSAoKHBheWxvYWQ6IEFjdGlvblBheWxvYWQpID0+IEFjdGlvblBheWxvYWQgJiB7IHR5cGU6IFR5cGUgfSkgJiB7XG4gIHR5cGU6IFR5cGU7XG59O1xuXG50eXBlIEFjdGlvbkZucyA9IFJlY29yZDxzdHJpbmcsIEFjdGlvbkZuPjtcblxuZXhwb3J0IHR5cGUgQWN0aW9uc0ZuU3BlY3MgPSBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcblxudHlwZSBBY3Rpb25GbkNyZWF0b3I8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPiA9IHtcbiAgW0FjdGlvbk5hbWUgaW4ga2V5b2YgU3BlY106IChSZWNvcmQ8bmV2ZXIsIG5ldmVyPiBleHRlbmRzIFNwZWNbQWN0aW9uTmFtZV1cbiAgICA/ICgpID0+IFNwZWNbQWN0aW9uTmFtZV0gJiB7IHR5cGU6IEFjdGlvbk5hbWUgfVxuICAgIDogKFxuICAgICAgICBwYXlsb2FkOiBTcGVjW0FjdGlvbk5hbWVdLFxuICAgICAgKSA9PiBTcGVjW0FjdGlvbk5hbWVdICYgeyB0eXBlOiBBY3Rpb25OYW1lIH0pICYge1xuICAgIHR5cGU6IEFjdGlvbk5hbWUgJiBzdHJpbmc7XG4gIH07XG59O1xuXG50eXBlIEFjdGlvbkZuUGF5bG9hZDxBY3Rpb24+ID0gQWN0aW9uIGV4dGVuZHMgKHBheWxvYWQ6IGluZmVyIFBheWxvYWQpID0+IHZvaWRcbiAgPyBQYXlsb2FkXG4gIDogbmV2ZXI7XG5cbnR5cGUgQWN0aW9uRm5zQ3JlYXRvcjxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+ID0gU3BlYyBleHRlbmRzIHtcbiAgcHJpdmF0ZTogUmVjb3JkPHN0cmluZywgUGF5bG9hZD47XG4gIHB1YmxpYzogUmVjb3JkPHN0cmluZywgUGF5bG9hZD47XG59XG4gID8gQWN0aW9uRm5DcmVhdG9yPFNwZWNbJ3ByaXZhdGUnXT4gJiBBY3Rpb25GbkNyZWF0b3I8U3BlY1sncHVibGljJ10+XG4gIDogQWN0aW9uRm5DcmVhdG9yPFNwZWM+O1xuXG50eXBlIFB1YmxpY0FjdGlvbkZuczxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3M+ID0gU3BlYyBleHRlbmRzIHtcbiAgcHVibGljOiBSZWNvcmQ8c3RyaW5nLCBQYXlsb2FkPjtcbn1cbiAgPyBBY3Rpb25GbkNyZWF0b3I8U3BlY1sncHVibGljJ10+XG4gIDogQWN0aW9uRm5DcmVhdG9yPFNwZWM+O1xuXG5leHBvcnQgZnVuY3Rpb24gcGF5bG9hZDxUeXBlIGV4dGVuZHMgUGF5bG9hZD4oKTogVHlwZSB7XG4gIHJldHVybiB7fSBhcyBUeXBlO1xufVxuXG5leHBvcnQgY29uc3Qgbm9QYXlsb2FkID0ge307XG5cbi8qKiBSZWR1Y2VyICoqL1xuXG50eXBlIFJlZHVjZXJGdW5jdGlvbjxSZWR1Y2VyQWN0aW9uLCBTdGF0ZT4gPSAoXG4gIHN0YXRlOiBTdGF0ZSxcbiAgYWN0aW9uOiBBY3Rpb25GblBheWxvYWQ8UmVkdWNlckFjdGlvbj4sXG4pID0+IHZvaWQ7XG5cbnR5cGUgUmVkdWNlckZhY3Rvcnk8U3RhdGVBY3Rpb25GbnMgZXh0ZW5kcyBBY3Rpb25GbnMsIFN0YXRlPiA9IChcbiAgYWN0aW9uczogU3RhdGVBY3Rpb25GbnMsXG4gIG9uOiA8UmVkdWNlckFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxuICAgIGFjdGlvbjogUmVkdWNlckFjdGlvbixcbiAgICByZWR1Y2VyRm46IFJlZHVjZXJGdW5jdGlvbjxSZWR1Y2VyQWN0aW9uLCBTdGF0ZT4sXG4gICkgPT4gdm9pZCxcbikgPT4gdm9pZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVkdWNlciBmdW5jdGlvbiB0byBzZXBhcmF0ZSB0aGUgcmVkdWNlciBsb2dpYyBpbnRvIGFub3RoZXIgZmlsZS5cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgRmxpZ2h0U3RhdGUge1xuICogICBmbGlnaHRzOiBGbGlnaHRbXTtcbiAqICAgZWZmZWN0MTogYm9vbGVhbjtcbiAqICAgZWZmZWN0MjogYm9vbGVhbjtcbiAqIH1cbiAqXG4gKiBjb25zdCBpbml0aWFsU3RhdGU6IEZsaWdodFN0YXRlID0ge1xuICogICBmbGlnaHRzOiBbXSxcbiAqICAgZWZmZWN0MTogZmFsc2UsXG4gKiAgIGVmZmVjdDI6IGZhbHNlLFxuICogfTtcbiAqXG4gKiBjb25zdCBhY3Rpb25zID0ge1xuICogICBpbml0OiBub1BheWxvYWQsXG4gKiAgIHVwZGF0ZUVmZmVjdDE6IHBheWxvYWQ8eyB2YWx1ZTogYm9vbGVhbiB9PigpLFxuICogICB1cGRhdGVFZmZlY3QyOiBwYXlsb2FkPHsgdmFsdWU6IGJvb2xlYW4gfT4oKSxcbiAqIH07XG4gKlxuICogY29uc3QgcmVkdWNlciA9IGNyZWF0ZVJlZHVjZXI8RmxpZ2h0U3RhdGUsIHR5cGVvZiBhY3Rpb25zPigoYWN0aW9ucywgb24pID0+IHtcbiAqICAgb24oYWN0aW9ucy51cGRhdGVFZmZlY3QxLCAoc3RhdGUsIHsgdmFsdWUgfSkgPT4ge1xuICogICAgIHBhdGNoU3RhdGUoc3RhdGUsIHsgZWZmZWN0MTogdmFsdWUgfSk7XG4gKiAgIH0pO1xuICpcbiAqICAgb24oYWN0aW9ucy51cGRhdGVFZmZlY3QyLCAoc3RhdGUsIHsgdmFsdWUgfSkgPT4ge1xuICogICAgIHBhdGNoU3RhdGUoc3RhdGUsIHsgZWZmZWN0MjogdmFsdWUgfSk7XG4gKiAgIH0pO1xuICogfSk7XG4gKlxuICogc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhTdGF0ZShpbml0aWFsU3RhdGUpLFxuICogICB3aXRoUmVkdXgoe1xuICogICAgIGFjdGlvbnMsXG4gKiAgICAgcmVkdWNlcixcbiAqICAgfSlcbiAqICk7XG4gKiBgYGBcbiAqIEBwYXJhbSByZWR1Y2VyRmFjdG9yeVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVkdWNlcjxcbiAgU3RhdGUgZXh0ZW5kcyBvYmplY3QsXG4gIEFjdGlvbnMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcyxcbj4oXG4gIHJlZHVjZXJGYWN0b3J5OiBSZWR1Y2VyRmFjdG9yeTxcbiAgICBBY3Rpb25GbnNDcmVhdG9yPEFjdGlvbnM+LFxuICAgIFdyaXRhYmxlU3RhdGVTb3VyY2U8U3RhdGU+XG4gID4sXG4pIHtcbiAgcmV0dXJuIHJlZHVjZXJGYWN0b3J5O1xufVxuXG4vKiogRWZmZWN0ICoqL1xuXG50eXBlIEVmZmVjdHNGYWN0b3J5PFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zPiA9IChcbiAgYWN0aW9uczogU3RhdGVBY3Rpb25GbnMsXG4gIGNyZWF0ZTogPEVmZmVjdEFjdGlvbiBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+KFxuICAgIGFjdGlvbjogRWZmZWN0QWN0aW9uLFxuICApID0+IE9ic2VydmFibGU8QWN0aW9uRm5QYXlsb2FkPEVmZmVjdEFjdGlvbj4+LFxuKSA9PiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPHVua25vd24+PjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgTmdSeCdzIGBAbmdyeC9zaWduYWxzL2V2ZW50c2Agc3RhcnRpbmcgaW4gMTkuMlxuICpcbiAqIENyZWF0ZXMgdGhlIGVmZmVjdHMgZnVuY3Rpb24gdG8gc2VwYXJhdGUgdGhlIGVmZmVjdHMgbG9naWMgaW50byBhbm90aGVyIGZpbGUuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW50ZXJmYWNlIEZsaWdodFN0YXRlIHtcbiAqICAgZmxpZ2h0czogRmxpZ2h0W107XG4gKiAgIGVmZmVjdDE6IGJvb2xlYW47XG4gKiAgIGVmZmVjdDI6IGJvb2xlYW47XG4gKiB9XG4gKlxuICogY29uc3QgaW5pdGlhbFN0YXRlOiBGbGlnaHRTdGF0ZSA9IHtcbiAqICAgZmxpZ2h0czogW10sXG4gKiAgIGVmZmVjdDE6IGZhbHNlLFxuICogICBlZmZlY3QyOiBmYWxzZSxcbiAqIH07XG4gKlxuICogY29uc3QgYWN0aW9ucyA9IHtcbiAqICAgaW5pdDogbm9QYXlsb2FkLFxuICogICB1cGRhdGVFZmZlY3QxOiBwYXlsb2FkPHsgdmFsdWU6IGJvb2xlYW4gfT4oKSxcbiAqICAgdXBkYXRlRWZmZWN0MjogcGF5bG9hZDx7IHZhbHVlOiBib29sZWFuIH0+KCksXG4gKiB9O1xuICpcbiAqIGNvbnN0IGVmZmVjdHMgPSBjcmVhdGVFZmZlY3RzKGFjdGlvbnMsIChhY3Rpb25zLCBjcmVhdGUpID0+IHtcbiAqICAgcmV0dXJuIHtcbiAqICAgICBpbml0MSQ6IGNyZWF0ZShhY3Rpb25zLmluaXQpLnBpcGUoXG4gKiAgICAgICBtYXAoKCkgPT4gYWN0aW9ucy51cGRhdGVFZmZlY3QxKHsgdmFsdWU6IHRydWUgfSkpXG4gKiAgICAgKSxcbiAqICAgICBpbml0MiQ6IGNyZWF0ZShhY3Rpb25zLmluaXQpLnBpcGUoXG4gKiAgICAgICBtYXAoKCkgPT4gYWN0aW9ucy51cGRhdGVFZmZlY3QyKHsgdmFsdWU6IHRydWUgfSkpXG4gKiAgICAgKSxcbiAqICAgfTtcbiAqIH0pO1xuICpcbiAqIHNpZ25hbFN0b3JlKFxuICogICB3aXRoU3RhdGUoaW5pdGlhbFN0YXRlKSxcbiAqICAgd2l0aFJlZHV4KHtcbiAqICAgICBhY3Rpb25zLFxuICogICAgIGVmZmVjdHMsXG4gKiAgIH0pXG4gKiApO1xuICogYGBgXG4gKiBAcGFyYW0gYWN0aW9uc1xuICogQHBhcmFtIGVmZmVjdHNGYWN0b3J5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZmZlY3RzPEFjdGlvbnMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4oXG4gIGFjdGlvbnM6IEFjdGlvbnMsXG4gIGVmZmVjdHNGYWN0b3J5OiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnNDcmVhdG9yPEFjdGlvbnM+Pixcbikge1xuICByZXR1cm4gZWZmZWN0c0ZhY3Rvcnk7XG59XG5cbi8vIGludGVybmFsIHR5cGVzXG5cbi8qKlxuICogUmVjb3JkIHdoaWNoIGhvbGRzIGFsbCBlZmZlY3RzIGZvciBhIHNwZWNpZmljIGFjdGlvbiB0eXBlLlxuICogVGhlIHZhbHVlcyBhcmUgU3ViamVjdCB3aGljaCB0aGUgZWZmZWN0IGFyZSBzdWJzY3JpYmVkIHRvLlxuICogYGNyZWF0ZUFjdGlvbkZuc2Agd2lsbCBjYWxsIG5leHQgb24gdGhlc2Ugc3ViamVjdHMuXG4gKi9cbnR5cGUgRWZmZWN0c1JlZ2lzdHJ5ID0gUmVjb3JkPHN0cmluZywgU3ViamVjdDxBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4+W10+O1xuXG5mdW5jdGlvbiBjcmVhdGVBY3Rpb25GbnM8U3BlYyBleHRlbmRzIEFjdGlvbnNGblNwZWNzPihcbiAgYWN0aW9uRm5TcGVjczogU3BlYyxcbiAgcmVkdWNlclJlZ2lzdHJ5OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkXG4gID4sXG4gIGVmZmVjdHNSZWdpc3RyeTogRWZmZWN0c1JlZ2lzdHJ5LFxuICBzdGF0ZTogdW5rbm93bixcbikge1xuICBjb25zdCBhY3Rpb25GbnM6IFJlY29yZDxzdHJpbmcsIEFjdGlvbkZuPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgdHlwZSBpbiBhY3Rpb25GblNwZWNzKSB7XG4gICAgY29uc3QgYWN0aW9uRm4gPSAocGF5bG9hZDogUGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgZnVsbFBheWxvYWQgPSB7IC4uLnBheWxvYWQsIHR5cGUgfTtcbiAgICAgIGNvbnN0IHJlZHVjZXIgPSByZWR1Y2VyUmVnaXN0cnlbdHlwZV07XG4gICAgICBpZiAocmVkdWNlcikge1xuICAgICAgICAocmVkdWNlciBhcyAoc3RhdGU6IHVua25vd24sIHBheWxvYWQ6IHVua25vd24pID0+IHZvaWQpKFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIGZ1bGxQYXlsb2FkIGFzIHVua25vd24sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBlZmZlY3RTdWJqZWN0cyA9IGVmZmVjdHNSZWdpc3RyeVt0eXBlXTtcbiAgICAgIGlmIChlZmZlY3RTdWJqZWN0cz8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgZWZmZWN0U3ViamVjdCBvZiBlZmZlY3RTdWJqZWN0cykge1xuICAgICAgICAgIChlZmZlY3RTdWJqZWN0IGFzIHVua25vd24gYXMgU3ViamVjdDx1bmtub3duPikubmV4dChmdWxsUGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmdWxsUGF5bG9hZDtcbiAgICB9O1xuICAgIGFjdGlvbkZuLnR5cGUgPSB0eXBlLnRvU3RyaW5nKCk7XG4gICAgYWN0aW9uRm5zW3R5cGVdID0gYWN0aW9uRm47XG4gIH1cblxuICByZXR1cm4gYWN0aW9uRm5zO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQdWJsaWNBbmRBbGxBY3Rpb25zRm5zPFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcz4oXG4gIGFjdGlvbkZuU3BlY3M6IFNwZWMsXG4gIHJlZHVjZXJSZWdpc3RyeTogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICAoc3RhdGU6IHVua25vd24sIHBheWxvYWQ6IEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPikgPT4gdm9pZFxuICA+LFxuICBlZmZlY3RzUmVnaXN0cnk6IEVmZmVjdHNSZWdpc3RyeSxcbiAgc3RhdGU6IHVua25vd24sXG4pOiB7IGFsbDogQWN0aW9uRm5zOyBwdWJsaWNzOiBBY3Rpb25GbnMgfSB7XG4gIGlmICgncHVibGljJyBpbiBhY3Rpb25GblNwZWNzIHx8ICdwcml2YXRlJyBpbiBhY3Rpb25GblNwZWNzKSB7XG4gICAgY29uc3QgcHJpdmF0ZXMgPSBhY3Rpb25GblNwZWNzWydwcml2YXRlJ10gfHwge307XG4gICAgY29uc3QgcHVibGljcyA9IGFjdGlvbkZuU3BlY3NbJ3B1YmxpYyddIHx8IHt9O1xuXG4gICAgYXNzZXJ0QWN0aW9uRm5TcGVjcyhwcml2YXRlcyk7XG4gICAgYXNzZXJ0QWN0aW9uRm5TcGVjcyhwdWJsaWNzKTtcblxuICAgIGNvbnN0IHByaXZhdGVBY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXG4gICAgICBwcml2YXRlcyxcbiAgICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICAgIHN0YXRlLFxuICAgICk7XG4gICAgY29uc3QgcHVibGljQWN0aW9uRm5zID0gY3JlYXRlQWN0aW9uRm5zKFxuICAgICAgcHVibGljcyxcbiAgICAgIHJlZHVjZXJSZWdpc3RyeSxcbiAgICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICAgIHN0YXRlLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWxsOiB7IC4uLnByaXZhdGVBY3Rpb25GbnMsIC4uLnB1YmxpY0FjdGlvbkZucyB9LFxuICAgICAgcHVibGljczogcHVibGljQWN0aW9uRm5zLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBhY3Rpb25GbnMgPSBjcmVhdGVBY3Rpb25GbnMoXG4gICAgYWN0aW9uRm5TcGVjcyxcbiAgICByZWR1Y2VyUmVnaXN0cnksXG4gICAgZWZmZWN0c1JlZ2lzdHJ5LFxuICAgIHN0YXRlLFxuICApO1xuXG4gIHJldHVybiB7IGFsbDogYWN0aW9uRm5zLCBwdWJsaWNzOiBhY3Rpb25GbnMgfTtcbn1cblxuZnVuY3Rpb24gZmlsbFJlZHVjZXJSZWdpc3RyeShcbiAgcmVkdWNlcjogUmVkdWNlckZhY3Rvcnk8QWN0aW9uRm5zLCB1bmtub3duPixcbiAgYWN0aW9uRm5zOiBBY3Rpb25GbnMsXG4gIHJlZHVjZXJSZWdpc3RyeTogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICAoc3RhdGU6IHVua25vd24sIHBheWxvYWQ6IEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPikgPT4gdm9pZFxuICA+LFxuKSB7XG4gIGZ1bmN0aW9uIG9uKFxuICAgIGFjdGlvbjogeyB0eXBlOiBzdHJpbmcgfSxcbiAgICByZWR1Y2VyRm46IChzdGF0ZTogdW5rbm93biwgcGF5bG9hZDogQWN0aW9uRm5QYXlsb2FkPHVua25vd24+KSA9PiB2b2lkLFxuICApIHtcbiAgICByZWR1Y2VyUmVnaXN0cnlbYWN0aW9uLnR5cGVdID0gcmVkdWNlckZuO1xuICB9XG5cbiAgcmVkdWNlcihhY3Rpb25GbnMsIG9uKTtcblxuICByZXR1cm4gcmVkdWNlclJlZ2lzdHJ5O1xufVxuXG5mdW5jdGlvbiBmaWxsRWZmZWN0cyhcbiAgZWZmZWN0czogRWZmZWN0c0ZhY3Rvcnk8QWN0aW9uRm5zPixcbiAgYWN0aW9uRm5zOiBBY3Rpb25GbnMsXG4gIGVmZmVjdHNSZWdpc3RyeTogRWZmZWN0c1JlZ2lzdHJ5ID0ge30sXG4pOiBPYnNlcnZhYmxlPHVua25vd24+W10ge1xuICBmdW5jdGlvbiBjcmVhdGUoYWN0aW9uOiB7IHR5cGU6IHN0cmluZyB9KSB7XG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PEFjdGlvbkZuUGF5bG9hZDx1bmtub3duPj4oKTtcbiAgICBpZiAoIShhY3Rpb24udHlwZSBpbiBlZmZlY3RzUmVnaXN0cnkpKSB7XG4gICAgICBlZmZlY3RzUmVnaXN0cnlbYWN0aW9uLnR5cGVdID0gW107XG4gICAgfVxuICAgIGVmZmVjdHNSZWdpc3RyeVthY3Rpb24udHlwZV0ucHVzaChzdWJqZWN0KTtcbiAgICByZXR1cm4gc3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGNvbnN0IGVmZmVjdE9ic2VydmFibGVzID0gZWZmZWN0cyhhY3Rpb25GbnMsIGNyZWF0ZSk7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKGVmZmVjdE9ic2VydmFibGVzKTtcbn1cblxuZnVuY3Rpb24gc3RhcnRTdWJzY3JpcHRpb25zKG9ic2VydmFibGVzOiBPYnNlcnZhYmxlPHVua25vd24+W10pIHtcbiAgcmV0dXJuIG9ic2VydmFibGVzLm1hcCgob2JzZXJ2YWJsZSkgPT4gb2JzZXJ2YWJsZS5zdWJzY3JpYmUoKSk7XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NSZWR1eDxTcGVjIGV4dGVuZHMgQWN0aW9uc0ZuU3BlY3MsIFJldHVyblR5cGU+KFxuICBhY3Rpb25GblNwZWNzOiBTcGVjLFxuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxBY3Rpb25GbnMsIHVua25vd24+LFxuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxBY3Rpb25GbnM+LFxuICBzdG9yZTogdW5rbm93bixcbikge1xuICBjb25zdCByZWR1Y2VyUmVnaXN0cnk6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgKHN0YXRlOiB1bmtub3duLCBwYXlsb2FkOiBBY3Rpb25GblBheWxvYWQ8dW5rbm93bj4pID0+IHZvaWRcbiAgPiA9IHt9O1xuICBjb25zdCBlZmZlY3RzUmVnaXN0cnk6IFJlY29yZDxzdHJpbmcsIFN1YmplY3Q8QWN0aW9uRm5QYXlsb2FkPHVua25vd24+PltdPiA9XG4gICAge307XG4gIGNvbnN0IGFjdGlvbnNNYXAgPSBjcmVhdGVQdWJsaWNBbmRBbGxBY3Rpb25zRm5zKFxuICAgIGFjdGlvbkZuU3BlY3MsXG4gICAgcmVkdWNlclJlZ2lzdHJ5LFxuICAgIGVmZmVjdHNSZWdpc3RyeSxcbiAgICBzdG9yZSxcbiAgKTtcbiAgY29uc3QgYWN0aW9uRm5zID0gYWN0aW9uc01hcC5hbGw7XG4gIGNvbnN0IHB1YmxpY0FjdGlvbnNGbnMgPSBhY3Rpb25zTWFwLnB1YmxpY3M7XG5cbiAgZmlsbFJlZHVjZXJSZWdpc3RyeShyZWR1Y2VyLCBhY3Rpb25GbnMsIHJlZHVjZXJSZWdpc3RyeSk7XG4gIGNvbnN0IGVmZmVjdE9ic2VydmFibGVzID0gZmlsbEVmZmVjdHMoZWZmZWN0cywgYWN0aW9uRm5zLCBlZmZlY3RzUmVnaXN0cnkpO1xuICBjb25zdCBzdWJzY3JpcHRpb25zID0gc3RhcnRTdWJzY3JpcHRpb25zKGVmZmVjdE9ic2VydmFibGVzKTtcblxuICByZXR1cm4ge1xuICAgIG1ldGhvZHM6IHB1YmxpY0FjdGlvbnNGbnMgYXMgUmV0dXJuVHlwZSxcbiAgICBzdWJzY3JpcHRpb25zOiBzdWJzY3JpcHRpb25zLFxuICB9O1xufVxuXG4vKipcbiAqIEBwYXJhbSByZWR1eCByZWR1eFxuICpcbiAqIHByb3BlcnRpZXMgZG8gbm90IHN0YXJ0IHdpdGggYHdpdGhgIHNpbmNlIHRoZXkgYXJlIG5vdCBleHRlbnNpb24gZnVuY3Rpb25zIG9uIHRoZWlyIG93bi5cbiAqXG4gKiBubyBkZXBlbmRlbmN5IHRvIE5nUnhcbiAqXG4gKiBhY3Rpb25zIGFyZSBwYXNzZWQgdG8gcmVkdWNlciBhbmQgZWZmZWN0cywgYnV0IGl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIG90aGVyIGFjdGlvbnMuXG4gKiBlZmZlY3RzIHByb3ZpZGUgZm9yQWN0aW9uIGFuZCBkbyBub3QgcmV0dXJuIGFueXRoaW5nLiB0aGF0IGlzIGltcG9ydGFudCBiZWNhdXNlIGVmZmVjdHMgc2hvdWxkIHN0YXkgaW5hY2Nlc3NpYmxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVkdXg8XG4gIFNwZWMgZXh0ZW5kcyBBY3Rpb25zRm5TcGVjcyxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFN0YXRlQWN0aW9uRm5zIGV4dGVuZHMgQWN0aW9uRm5zQ3JlYXRvcjxTcGVjPiA9IEFjdGlvbkZuc0NyZWF0b3I8U3BlYz4sXG4gIFB1YmxpY1N0b3JlQWN0aW9uRm5zIGV4dGVuZHMgUHVibGljQWN0aW9uRm5zPFNwZWM+ID0gUHVibGljQWN0aW9uRm5zPFNwZWM+LFxuPihyZWR1eDoge1xuICBhY3Rpb25zOiBTcGVjO1xuICByZWR1Y2VyOiBSZWR1Y2VyRmFjdG9yeTxTdGF0ZUFjdGlvbkZucywgV3JpdGFibGVTdGF0ZVNvdXJjZTxJbnB1dFsnc3RhdGUnXT4+O1xuICBlZmZlY3RzOiBFZmZlY3RzRmFjdG9yeTxTdGF0ZUFjdGlvbkZucz47XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBJbnB1dCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBtZXRob2RzOiBQdWJsaWNTdG9yZUFjdGlvbkZucyB9XG4+IHtcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xuICAgIGNvbnN0IHsgbWV0aG9kcyB9ID0gcHJvY2Vzc1JlZHV4PFNwZWMsIFB1YmxpY1N0b3JlQWN0aW9uRm5zPihcbiAgICAgIHJlZHV4LmFjdGlvbnMsXG4gICAgICByZWR1eC5yZWR1Y2VyIGFzIFJlZHVjZXJGYWN0b3J5PEFjdGlvbkZucywgdW5rbm93bj4sXG4gICAgICByZWR1eC5lZmZlY3RzIGFzIEVmZmVjdHNGYWN0b3J5PEFjdGlvbkZucz4sXG4gICAgICBzdG9yZSxcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdG9yZSxcbiAgICAgIG1ldGhvZHM6IHsgLi4uc3RvcmUubWV0aG9kcywgLi4ubWV0aG9kcyB9LFxuICAgIH07XG4gIH07XG59XG4iXX0=","import { computed } from '@angular/core';\nimport { signalStoreFeature, withComputed, withState, } from '@ngrx/signals';\nexport function deriveCallStateKeys(collection) {\n return {\n callStateKey: collection ? `${collection}CallState` : 'callState',\n loadingKey: collection ? `${collection}Loading` : 'loading',\n loadedKey: collection ? `${collection}Loaded` : 'loaded',\n errorKey: collection ? `${collection}Error` : 'error',\n };\n}\nexport function getCallStateKeys(config) {\n const prop = config?.collection;\n return deriveCallStateKeys(prop);\n}\nexport function getCollectionArray(config) {\n return 'collections' in config\n ? config.collections\n : 'collection' in config && config.collection\n ? [config.collection]\n : undefined;\n}\nexport function withCallState(config) {\n return signalStoreFeature(withState(() => {\n if (!config) {\n return { callState: 'init' };\n }\n const collections = getCollectionArray(config);\n if (collections) {\n return collections.reduce((acc, cur) => ({\n ...acc,\n ...{ [cur ? `${cur}CallState` : 'callState']: 'init' },\n }), {});\n }\n return { callState: 'init' };\n }), withComputed((state) => {\n if (config) {\n const collections = getCollectionArray(config);\n if (collections) {\n return collections.reduce((acc, cur) => {\n const { callStateKey, errorKey, loadedKey, loadingKey } = deriveCallStateKeys(cur);\n const callState = state[callStateKey];\n return {\n ...acc,\n [loadingKey]: computed(() => callState() === 'loading'),\n [loadedKey]: computed(() => callState() === 'loaded'),\n [errorKey]: computed(() => {\n const v = callState();\n return typeof v === 'object' ? v.error : null;\n }),\n };\n }, {});\n }\n }\n const { callStateKey, errorKey, loadedKey, loadingKey } = deriveCallStateKeys();\n const callState = state[callStateKey];\n return {\n [loadingKey]: computed(() => callState() === 'loading'),\n [loadedKey]: computed(() => callState() === 'loaded'),\n [errorKey]: computed(() => {\n const v = callState();\n return typeof v === 'object' ? v.error : null;\n }),\n };\n }));\n}\nexport function setLoading(prop) {\n if (prop) {\n return { [`${prop}CallState`]: 'loading' };\n }\n return { callState: 'loading' };\n}\nexport function setLoaded(prop) {\n if (prop) {\n return { [`${prop}CallState`]: 'loaded' };\n }\n else {\n return { callState: 'loaded' };\n }\n}\nexport function setError(error, prop) {\n let errorMessage;\n if (!error) {\n errorMessage = '';\n }\n else if (typeof error === 'object' && 'message' in error) {\n errorMessage = String(error.message);\n }\n else {\n errorMessage = String(error);\n }\n if (prop) {\n return {\n [`${prop}CallState`]: { error: errorMessage },\n };\n }\n else {\n return { callState: { error: errorMessage } };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jYWxsLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi93aXRoLWNhbGwtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUE4QnZCLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsVUFBdUI7SUFFdkIsT0FBTztRQUNMLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVc7UUFDakUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUMzRCxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRO1FBQ3hELFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU87S0FDdEQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBZ0M7SUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxFQUFFLFVBQVUsQ0FBQztJQUNoQyxPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE1BQTREO0lBRTVELE9BQU8sYUFBYSxJQUFJLE1BQU07UUFDNUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXO1FBQ3BCLENBQUMsQ0FBQyxZQUFZLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVO1lBQzNDLENBQUMsQ0FBQyxDQUFDLE1BQU0s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LEVBQUUsWUFBWSxFQUFFLEVBQXdCLENBQUM7SUFDdEUsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgc2lnbmFsU3RvcmVGZWF0dXJlLFxuICB3aXRoQ29tcHV0ZWQsXG4gIHdpdGhTdGF0ZSxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5cbmV4cG9ydCB0eXBlIENhbGxTdGF0ZSA9ICdpbml0JyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnIHwgeyBlcnJvcjogc3RyaW5nIH07XG5cbmV4cG9ydCB0eXBlIENhbGxTdGF0ZVNsaWNlID0ge1xuICBjYWxsU3RhdGU6IENhbGxTdGF0ZTtcbn07XG5cbmV4cG9ydCB0eXBlIE5hbWVkQ2FsbFN0YXRlU2xpY2U8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4gPSB7XG4gIFtLIGluIGtleW9mIENhbGxTdGF0ZVNsaWNlIGFzIENvbGxlY3Rpb24gZXh0ZW5kcyAnJ1xuICAgID8gYCR7Q29sbGVjdGlvbn0ke0t9YFxuICAgIDogYCR7Q29sbGVjdGlvbn0ke0NhcGl0YWxpemU8Sz59YF06IENhbGxTdGF0ZVNsaWNlW0tdO1xufTtcblxuZXhwb3J0IHR5cGUgQ2FsbFN0YXRlU2lnbmFscyA9IHtcbiAgbG9hZGluZzogU2lnbmFsPGJvb2xlYW4+O1xuICBsb2FkZWQ6IFNpZ25hbDxib29sZWFuPjtcbiAgZXJyb3I6IFNpZ25hbDxzdHJpbmcgfCBudWxsPjtcbn07XG5cbmV4cG9ydCB0eXBlIE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxQcm9wIGV4dGVuZHMgc3RyaW5nPiA9IHtcbiAgW0sgaW4ga2V5b2YgQ2FsbFN0YXRlU2lnbmFscyBhcyBQcm9wIGV4dGVuZHMgJydcbiAgICA/IGAke1Byb3B9JHtLfWBcbiAgICA6IGAke1Byb3B9JHtDYXBpdGFsaXplPEs+fWBdOiBDYWxsU3RhdGVTaWduYWxzW0tdO1xufTtcblxuZXhwb3J0IHR5cGUgU2V0Q2FsbFN0YXRlPFByb3AgZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+ID0gUHJvcCBleHRlbmRzIHN0cmluZ1xuICA/IE5hbWVkQ2FsbFN0YXRlU2xpY2U8UHJvcD5cbiAgOiBDYWxsU3RhdGVTbGljZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUNhbGxTdGF0ZUtleXM8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4oXG4gIGNvbGxlY3Rpb24/OiBDb2xsZWN0aW9uLFxuKSB7XG4gIHJldHVybiB7XG4gICAgY2FsbFN0YXRlS2V5OiBjb2xsZWN0aW9uID8gYCR7Y29sbGVjdGlvbn1DYWxsU3RhdGVgIDogJ2NhbGxTdGF0ZScsXG4gICAgbG9hZGluZ0tleTogY29sbGVjdGlvbiA/IGAke2NvbGxlY3Rpb259TG9hZGluZ2AgOiAnbG9hZGluZycsXG4gICAgbG9hZGVkS2V5OiBjb2xsZWN0aW9uID8gYCR7Y29sbGVjdGlvbn1Mb2FkZWRgIDogJ2xvYWRlZCcsXG4gICAgZXJyb3JLZXk6IGNvbGxlY3Rpb24gPyBgJHtjb2xsZWN0aW9ufUVycm9yYCA6ICdlcnJvcicsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDYWxsU3RhdGVLZXlzKGNvbmZpZz86IHsgY29sbGVjdGlvbj86IHN0cmluZyB9KSB7XG4gIGNvbnN0IHByb3AgPSBjb25maWc/LmNvbGxlY3Rpb247XG4gIHJldHVybiBkZXJpdmVDYWxsU3RhdGVLZXlzKHByb3ApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbkFycmF5KFxuICBjb25maWc6IHsgY29sbGVjdGlvbj86IHN0cmluZyB9IHwgeyBjb2xsZWN0aW9ucz86IHN0cmluZ1tdIH0sXG4pIHtcbiAgcmV0dXJuICdjb2xsZWN0aW9ucycgaW4gY29uZmlnXG4gICAgPyBjb25maWcuY29sbGVjdGlvbnNcbiAgICA6ICdjb2xsZWN0aW9uJyBpbiBjb25maWcgJiYgY29uZmlnLmNvbGxlY3Rpb25cbiAgICAgID8gW2NvbmZpZy5jb2xsZWN0aW9uXVxuICAgICAgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KGNvbmZpZzoge1xuICBjb2xsZWN0aW9uczogQ29sbGVjdGlvbltdO1xufSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IE5hbWVkQ2FsbFN0YXRlU2xpY2U8Q29sbGVjdGlvbj47XG4gICAgcHJvcHM6IE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxDb2xsZWN0aW9uPjtcbiAgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KGNvbmZpZzoge1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xufSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IE5hbWVkQ2FsbFN0YXRlU2xpY2U8Q29sbGVjdGlvbj47XG4gICAgcHJvcHM6IE5hbWVkQ2FsbFN0YXRlU2lnbmFsczxDb2xsZWN0aW9uPjtcbiAgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ2FsbFN0YXRlKCk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IENhbGxTdGF0ZVNsaWNlO1xuICAgIHByb3BzOiBDYWxsU3RhdGVTaWduYWxzO1xuICB9XG4+O1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDYWxsU3RhdGU8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4oXG4gIGNvbmZpZz86XG4gICAgfCB7XG4gICAgICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG4gICAgICB9XG4gICAgfCB7XG4gICAgICAgIGNvbGxlY3Rpb25zOiBDb2xsZWN0aW9uW107XG4gICAgICB9LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoKCkgPT4ge1xuICAgICAgaWYgKCFjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIHsgY2FsbFN0YXRlOiAnaW5pdCcgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gZ2V0Q29sbGVjdGlvbkFycmF5KGNvbmZpZyk7XG4gICAgICBpZiAoY29sbGVjdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXIpID0+ICh7XG4gICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAuLi57IFtjdXIgPyBgJHtjdXJ9Q2FsbFN0YXRlYCA6ICdjYWxsU3RhdGUnXTogJ2luaXQnIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAge30sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGNhbGxTdGF0ZTogJ2luaXQnIH07XG4gICAgfSksXG4gICAgd2l0aENvbXB1dGVkKChzdGF0ZTogUmVjb3JkPHN0cmluZywgU2lnbmFsPHVua25vd24+PikgPT4ge1xuICAgICAgaWYgKGNvbmZpZykge1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9ucyA9IGdldENvbGxlY3Rpb25BcnJheShjb25maWcpO1xuICAgICAgICBpZiAoY29sbGVjdGlvbnMpIHtcbiAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMucmVkdWNlPFJlY29yZDxzdHJpbmcsIFNpZ25hbDx1bmtub3duPj4+KFxuICAgICAgICAgICAgKGFjYywgY3VyOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgeyBjYWxsU3RhdGVLZXksIGVycm9yS2V5LCBsb2FkZWRLZXksIGxvYWRpbmdLZXkgfSA9XG4gICAgICAgICAgICAgICAgZGVyaXZlQ2FsbFN0YXRlS2V5cyhjdXIpO1xuICAgICAgICAgICAgICBjb25zdCBjYWxsU3RhdGUgPSBzdGF0ZVtjYWxsU3RhdGVLZXldIGFzIFNpZ25hbDxDYWxsU3RhdGU+O1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgICBbbG9hZGluZ0tleV06IGNvbXB1dGVkKCgpID0+IGNhbGxTdGF0ZSgpID09PSAnbG9hZGluZycpLFxuICAgICAgICAgICAgICAgIFtsb2FkZWRLZXldOiBjb21wdXRlZCgoKSA9PiBjYWxsU3RhdGUoKSA9PT0gJ2xvYWRlZCcpLFxuICAgICAgICAgICAgICAgIFtlcnJvcktleV06IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBjYWxsU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyB2LmVycm9yIDogbnVsbDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCB7IGNhbGxTdGF0ZUtleSwgZXJyb3JLZXksIGxvYWRlZEtleSwgbG9hZGluZ0tleSB9ID1cbiAgICAgICAgZGVyaXZlQ2FsbFN0YXRlS2V5cygpO1xuICAgICAgY29uc3QgY2FsbFN0YXRlID0gc3RhdGVbY2FsbFN0YXRlS2V5XSBhcyBTaWduYWw8Q2FsbFN0YXRlPjtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtsb2FkaW5nS2V5XTogY29tcHV0ZWQoKCkgPT4gY2FsbFN0YXRlKCkgPT09ICdsb2FkaW5nJyksXG4gICAgICAgIFtsb2FkZWRLZXldOiBjb21wdXRlZCgoKSA9PiBjYWxsU3RhdGUoKSA9PT0gJ2xvYWRlZCcpLFxuICAgICAgICBbZXJyb3JLZXldOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdiA9IGNhbGxTdGF0ZSgpO1xuICAgICAgICAgIHJldHVybiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyB2LmVycm9yIDogbnVsbDtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9hZGluZzxQcm9wIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgcHJvcD86IFByb3AsXG4pOiBTZXRDYWxsU3RhdGU8UHJvcD4ge1xuICBpZiAocHJvcCkge1xuICAgIHJldHVybiB7IFtgJHtwcm9wfUNhbGxTdGF0ZWBdOiAnbG9hZGluZycgfSBhcyBTZXRDYWxsU3RhdGU8UHJvcD47XG4gIH1cblxuICByZXR1cm4geyBjYWxsU3RhdGU6ICdsb2FkaW5nJyB9IGFzIFNldENhbGxTdGF0ZTxQcm9wPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldExvYWRlZDxQcm9wIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgcHJvcD86IFByb3AsXG4pOiBTZXRDYWxsU3RhdGU8UHJvcD4ge1xuICBpZiAocHJvcCkge1xuICAgIHJldHVybiB7IFtgJHtwcm9wfUNhbGxTdGF0ZWBdOiAnbG9hZGVkJyB9IGFzIFNldENhbGxTdGF0ZTxQcm9wPjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geyBjYWxsU3RhdGU6ICdsb2FkZWQnIH0gYXMgU2V0Q2FsbFN0YXRlPFByb3A+O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRFcnJvcjxQcm9wIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgZXJyb3I6IHVua25vd24sXG4gIHByb3A/OiBQcm9wLFxuKTogU2V0Q2FsbFN0YXRlPFByb3A+IHtcbiAgbGV0IGVycm9yTWVzc2FnZTogc3RyaW5nO1xuXG4gIGlmICghZXJyb3IpIHtcbiAgICBlcnJvck1lc3NhZ2UgPSAnJztcbiAgfSBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnICYmICdtZXNzYWdlJyBpbiBlcnJvcikge1xuICAgIGVycm9yTWVzc2FnZSA9IFN0cmluZyhlcnJvci5tZXNzYWdlKTtcbiAgfSBlbHNlIHtcbiAgICBlcnJvck1lc3NhZ2UgPSBTdHJpbmcoZXJyb3IpO1xuICB9XG5cbiAgaWYgKHByb3ApIHtcbiAgICByZXR1cm4ge1xuICAgICAgW2Ake3Byb3B9Q2FsbFN0YXRlYF06IHsgZXJyb3I6IGVycm9yTWVzc2FnZSB9LFxuICAgIH0gYXMgU2V0Q2FsbFN0YXRlPFByb3A+O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IGNhbGxTdGF0ZTogeyBlcnJvcjogZXJyb3JNZXNzYWdlIH0gfSBhcyBTZXRDYWxsU3RhdGU8UHJvcD47XG4gIH1cbn1cbiJdfQ==","import { computed, inject } from '@angular/core';\nimport { patchState, signalStoreFeature, withComputed, withMethods, withState, } from '@ngrx/signals';\nimport { addEntity, removeEntity, setAllEntities, updateEntity, } from '@ngrx/signals/entities';\nimport { getCallStateKeys, setError, setLoaded, setLoading, } from './with-call-state';\nexport function capitalize(str) {\n return str ? str[0].toUpperCase() + str.substring(1) : str;\n}\nexport function getDataServiceKeys(options) {\n const filterKey = options.collection\n ? `${options.collection}Filter`\n : 'filter';\n const selectedIdsKey = options.collection\n ? `selected${capitalize(options.collection)}Ids`\n : 'selectedIds';\n const selectedEntitiesKey = options.collection\n ? `selected${capitalize(options.collection)}Entities`\n : 'selectedEntities';\n const updateFilterKey = options.collection\n ? `update${capitalize(options.collection)}Filter`\n : 'updateFilter';\n const updateSelectedKey = options.collection\n ? `updateSelected${capitalize(options.collection)}Entities`\n : 'updateSelected';\n const loadKey = options.collection\n ? `load${capitalize(options.collection)}Entities`\n : 'load';\n const currentKey = options.collection\n ? `current${capitalize(options.collection)}`\n : 'current';\n const loadByIdKey = options.collection\n ? `load${capitalize(options.collection)}ById`\n : 'loadById';\n const setCurrentKey = options.collection\n ? `setCurrent${capitalize(options.collection)}`\n : 'setCurrent';\n const createKey = options.collection\n ? `create${capitalize(options.collection)}`\n : 'create';\n const updateKey = options.collection\n ? `update${capitalize(options.collection)}`\n : 'update';\n const updateAllKey = options.collection\n ? `updateAll${capitalize(options.collection)}`\n : 'updateAll';\n const deleteKey = options.collection\n ? `delete${capitalize(options.collection)}`\n : 'delete';\n // TODO: Take these from @ngrx/signals/entities, when they are exported\n const entitiesKey = options.collection\n ? `${options.collection}Entities`\n : 'entities';\n const entityMapKey = options.collection\n ? `${options.collection}EntityMap`\n : 'entityMap';\n const idsKey = options.collection ? `${options.collection}Ids` : 'ids';\n return {\n filterKey,\n selectedIdsKey,\n selectedEntitiesKey,\n updateFilterKey,\n updateSelectedKey,\n loadKey,\n entitiesKey,\n entityMapKey,\n idsKey,\n currentKey,\n loadByIdKey,\n setCurrentKey,\n createKey,\n updateKey,\n updateAllKey,\n deleteKey,\n };\n}\nexport function withDataService(options) {\n const { dataServiceType, filter, collection: prefix } = options;\n const { entitiesKey, filterKey, loadKey, selectedEntitiesKey, selectedIdsKey, updateFilterKey, updateSelectedKey, currentKey, createKey, updateKey, updateAllKey, deleteKey, loadByIdKey, setCurrentKey, } = getDataServiceKeys(options);\n const { callStateKey } = getCallStateKeys({ collection: prefix });\n return signalStoreFeature(withState(() => ({\n [filterKey]: filter,\n [selectedIdsKey]: {},\n [currentKey]: undefined,\n })), withComputed((store) => {\n const entities = store[entitiesKey];\n const selectedIds = store[selectedIdsKey];\n return {\n [selectedEntitiesKey]: computed(() => entities().filter((e) => selectedIds()[e.id])),\n };\n }), withMethods((store) => {\n const dataService = inject(dataServiceType);\n return {\n [updateFilterKey]: (filter) => {\n patchState(store, { [filterKey]: filter });\n },\n [updateSelectedKey]: (id, selected) => {\n patchState(store, (state) => ({\n [selectedIdsKey]: {\n ...state[selectedIdsKey],\n [id]: selected,\n },\n }));\n },\n [loadKey]: async () => {\n const filter = store[filterKey];\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const result = await dataService.load(filter());\n patchState(store, prefix\n ? setAllEntities(result, { collection: prefix })\n : setAllEntities(result));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [loadByIdKey]: async (id) => {\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const current = await dataService.loadById(id);\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n patchState(store, { [currentKey]: current });\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [setCurrentKey]: (current) => {\n patchState(store, { [currentKey]: current });\n },\n [createKey]: async (entity) => {\n patchState(store, { [currentKey]: entity });\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const created = await dataService.create(entity);\n patchState(store, { [currentKey]: created });\n patchState(store, prefix\n ? addEntity(created, { collection: prefix })\n : addEntity(created));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [updateKey]: async (entity) => {\n patchState(store, { [currentKey]: entity });\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const updated = await dataService.update(entity);\n patchState(store, { [currentKey]: updated });\n const updateArg = {\n id: updated.id,\n changes: updated,\n };\n const updater = (collection) => updateEntity(updateArg, { collection });\n patchState(store, prefix ? updater(prefix) : updateEntity(updateArg));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [updateAllKey]: async (entities) => {\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n const result = await dataService.updateAll(entities);\n patchState(store, prefix\n ? setAllEntities(result, { collection: prefix })\n : setAllEntities(result));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n [deleteKey]: async (entity) => {\n patchState(store, { [currentKey]: entity });\n (() => store[callStateKey] && patchState(store, setLoading(prefix)))();\n try {\n await dataService.delete(entity);\n patchState(store, { [currentKey]: undefined });\n patchState(store, prefix\n ? removeEntity(entity.id, { collection: prefix })\n : removeEntity(entity.id));\n (() => store[callStateKey] && patchState(store, setLoaded(prefix)))();\n }\n catch (e) {\n (() => store[callStateKey] &&\n patchState(store, setError(e, prefix)))();\n throw e;\n }\n },\n };\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1kYXRhLXNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtZGF0YS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBeUIsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBSUwsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixjQUFjLEVBQ2QsWUFBWSxHQUNiLE1BQU0sd0JBQXdCLENBQUM7QUFFaEMsT0FBTyxFQUdMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLG1CQUFtQixDQUFDO0FBbUIzQixNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVc7SUFDcEMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDN0QsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxPQUFnQztJQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsVUFBVTtRQUNsQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsVUFBVSxRQUFRO1FBQy9CLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDYixNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsVUFBVTtRQUN2QyxDQUFDLENBQUMsV0FBVyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLO1FBQ2hELENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDbEIsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsVUFB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aW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgV3JpdGFibGVTdGF0ZVNvdXJjZSxcbiAgcGF0Y2hTdGF0ZSxcbiAgc2lnbmFsU3RvcmVGZWF0dXJlLFxuICB3aXRoQ29tcHV0ZWQsXG4gIHdpdGhNZXRob2RzLFxuICB3aXRoU3RhdGUsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHtcbiAgRW50aXR5SWQsXG4gIE5hbWVkRW50aXR5U3RhdGUsXG4gIGFkZEVudGl0eSxcbiAgcmVtb3ZlRW50aXR5LFxuICBzZXRBbGxFbnRpdGllcyxcbiAgdXBkYXRlRW50aXR5LFxufSBmcm9tICdAbmdyeC9zaWduYWxzL2VudGl0aWVzJztcbmltcG9ydCB7IEVudGl0eVN0YXRlIH0gZnJvbSAnLi9zaGFyZWQvc2lnbmFsLXN0b3JlLW1vZGVscyc7XG5pbXBvcnQge1xuICBDYWxsU3RhdGUsXG4gIE5hbWVkQ2FsbFN0YXRlU2xpY2UsXG4gIGdldENhbGxTdGF0ZUtleXMsXG4gIHNldEVycm9yLFxuICBzZXRMb2FkZWQsXG4gIHNldExvYWRpbmcsXG59IGZyb20gJy4vd2l0aC1jYWxsLXN0YXRlJztcblxuZXhwb3J0IHR5cGUgRmlsdGVyID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5leHBvcnQgdHlwZSBFbnRpdHkgPSB7IGlkOiBFbnRpdHlJZCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTZXJ2aWNlPEUgZXh0ZW5kcyBFbnRpdHksIEYgZXh0ZW5kcyBGaWx0ZXI+IHtcbiAgbG9hZChmaWx0ZXI6IEYpOiBQcm9taXNlPEVbXT47XG5cbiAgbG9hZEJ5SWQoaWQ6IEVudGl0eUlkKTogUHJvbWlzZTxFPjtcblxuICBjcmVhdGUoZW50aXR5OiBFKTogUHJvbWlzZTxFPjtcblxuICB1cGRhdGUoZW50aXR5OiBFKTogUHJvbWlzZTxFPjtcblxuICB1cGRhdGVBbGwoZW50aXR5OiBFW10pOiBQcm9taXNlPEVbXT47XG5cbiAgZGVsZXRlKGVudGl0eTogRSk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ciA/IHN0clswXS50b1VwcGVyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKSA6IHN0cjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFTZXJ2aWNlS2V5cyhvcHRpb25zOiB7IGNvbGxlY3Rpb24/OiBzdHJpbmcgfSkge1xuICBjb25zdCBmaWx0ZXJLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1GaWx0ZXJgXG4gICAgOiAnZmlsdGVyJztcbiAgY29uc3Qgc2VsZWN0ZWRJZHNLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGBzZWxlY3RlZCR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUlkc2BcbiAgICA6ICdzZWxlY3RlZElkcyc7XG4gIGNvbnN0IHNlbGVjdGVkRW50aXRpZXNLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGBzZWxlY3RlZCR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUVudGl0aWVzYFxuICAgIDogJ3NlbGVjdGVkRW50aXRpZXMnO1xuXG4gIGNvbnN0IHVwZGF0ZUZpbHRlcktleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYHVwZGF0ZSR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUZpbHRlcmBcbiAgICA6ICd1cGRhdGVGaWx0ZXInO1xuICBjb25zdCB1cGRhdGVTZWxlY3RlZEtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYHVwZGF0ZVNlbGVjdGVkJHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9RW50aXRpZXNgXG4gICAgOiAndXBkYXRlU2VsZWN0ZWQnO1xuICBjb25zdCBsb2FkS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uXG4gICAgPyBgbG9hZCR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfUVudGl0aWVzYFxuICAgIDogJ2xvYWQnO1xuXG4gIGNvbnN0IGN1cnJlbnRLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGBjdXJyZW50JHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9YFxuICAgIDogJ2N1cnJlbnQnO1xuICBjb25zdCBsb2FkQnlJZEtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYGxvYWQke2NhcGl0YWxpemUob3B0aW9ucy5jb2xsZWN0aW9uKX1CeUlkYFxuICAgIDogJ2xvYWRCeUlkJztcbiAgY29uc3Qgc2V0Q3VycmVudEtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYHNldEN1cnJlbnQke2NhcGl0YWxpemUob3B0aW9ucy5jb2xsZWN0aW9uKX1gXG4gICAgOiAnc2V0Q3VycmVudCc7XG4gIGNvbnN0IGNyZWF0ZUtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYGNyZWF0ZSR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfWBcbiAgICA6ICdjcmVhdGUnO1xuICBjb25zdCB1cGRhdGVLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGB1cGRhdGUke2NhcGl0YWxpemUob3B0aW9ucy5jb2xsZWN0aW9uKX1gXG4gICAgOiAndXBkYXRlJztcbiAgY29uc3QgdXBkYXRlQWxsS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uXG4gICAgPyBgdXBkYXRlQWxsJHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9YFxuICAgIDogJ3VwZGF0ZUFsbCc7XG4gIGNvbnN0IGRlbGV0ZUtleSA9IG9wdGlvbnMuY29sbGVjdGlvblxuICAgID8gYGRlbGV0ZSR7Y2FwaXRhbGl6ZShvcHRpb25zLmNvbGxlY3Rpb24pfWBcbiAgICA6ICdkZWxldGUnO1xuXG4gIC8vIFRPRE86IFRha2UgdGhlc2UgZnJvbSBAbmdyeC9zaWduYWxzL2VudGl0aWVzLCB3aGVuIHRoZXkgYXJlIGV4cG9ydGVkXG4gIGNvbnN0IGVudGl0aWVzS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259RW50aXRpZXNgXG4gICAgOiAnZW50aXRpZXMnO1xuICBjb25zdCBlbnRpdHlNYXBLZXkgPSBvcHRpb25zLmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1FbnRpdHlNYXBgXG4gICAgOiAnZW50aXR5TWFwJztcbiAgY29uc3QgaWRzS2V5ID0gb3B0aW9ucy5jb2xsZWN0aW9uID8gYCR7b3B0aW9ucy5jb2xsZWN0aW9ufUlkc2AgOiAnaWRzJztcblxuICByZXR1cm4ge1xuICAgIGZpbHRlcktleSxcbiAgICBzZWxlY3RlZElkc0tleSxcbiAgICBzZWxlY3RlZEVudGl0aWVzS2V5LFxuICAgIHVwZGF0ZUZpbHRlcktleSxcbiAgICB1cGRhdGVTZWxlY3RlZEtleSxcbiAgICBsb2FkS2V5LFxuICAgIGVudGl0aWVzS2V5LFxuICAgIGVudGl0eU1hcEtleSxcbiAgICBpZHNLZXksXG5cbiAgICBjdXJyZW50S2V5LFxuICAgIGxvYWRCeUlkS2V5LFxuICAgIHNldEN1cnJlbnRLZXksXG4gICAgY3JlYXRlS2V5LFxuICAgIHVwZGF0ZUtleSxcbiAgICB1cGRhdGVBbGxLZXksXG4gICAgZGVsZXRlS2V5LFxuICB9O1xufVxuXG5leHBvcnQgdHlwZSBOYW1lZERhdGFTZXJ2aWNlU3RhdGU8XG4gIEUgZXh0ZW5kcyBFbnRpdHksXG4gIEYgZXh0ZW5kcyBGaWx0ZXIsXG4gIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcsXG4+ID0ge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0t9RmlsdGVyYF06IEY7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBzZWxlY3RlZCR7Q2FwaXRhbGl6ZTxLPn1JZHNgXTogUmVjb3JkPEVudGl0eUlkLCBib29sZWFuPjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYGN1cnJlbnQke0NhcGl0YWxpemU8Sz59YF06IEU7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRhU2VydmljZVN0YXRlPEUgZXh0ZW5kcyBFbnRpdHksIEYgZXh0ZW5kcyBGaWx0ZXI+ID0ge1xuICBmaWx0ZXI6IEY7XG4gIHNlbGVjdGVkSWRzOiBSZWNvcmQ8RW50aXR5SWQsIGJvb2xlYW4+O1xuICBjdXJyZW50OiBFO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVNlcnZpY2VDb21wdXRlZDxFIGV4dGVuZHMgRW50aXR5PiA9IHtcbiAgc2VsZWN0ZWRFbnRpdGllczogU2lnbmFsPEVbXT47XG59O1xuXG5leHBvcnQgdHlwZSBOYW1lZERhdGFTZXJ2aWNlQ29tcHV0ZWQ8XG4gIEUgZXh0ZW5kcyBFbnRpdHksXG4gIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcsXG4+ID0ge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBzZWxlY3RlZCR7Q2FwaXRhbGl6ZTxLPn1FbnRpdGllc2BdOiBTaWduYWw8RVtdPjtcbn07XG5cbmV4cG9ydCB0eXBlIE5hbWVkRGF0YVNlcnZpY2VNZXRob2RzPFxuICBFIGV4dGVuZHMgRW50aXR5LFxuICBGIGV4dGVuZHMgRmlsdGVyLFxuICBDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nLFxuPiA9IHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgdXBkYXRlJHtDYXBpdGFsaXplPEs+fUZpbHRlcmBdOiAoZmlsdGVyOiBGKSA9PiB2b2lkO1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgdXBkYXRlU2VsZWN0ZWQke0NhcGl0YWxpemU8Sz59RW50aXRpZXNgXTogKFxuICAgIGlkOiBFbnRpdHlJZCxcbiAgICBzZWxlY3RlZDogYm9vbGVhbixcbiAgKSA9PiB2b2lkO1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgbG9hZCR7Q2FwaXRhbGl6ZTxLPn1FbnRpdGllc2BdOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgc2V0Q3VycmVudCR7Q2FwaXRhbGl6ZTxLPn1gXTogKGVudGl0eTogRSkgPT4gdm9pZDtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYGxvYWQke0NhcGl0YWxpemU8Sz59QnlJZGBdOiAoXG4gICAgaWQ6IEVudGl0eUlkLFxuICApID0+IFByb21pc2U8dm9pZD47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBjcmVhdGUke0NhcGl0YWxpemU8Sz59YF06IChlbnRpdHk6IEUpID0+IFByb21pc2U8dm9pZD47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGB1cGRhdGUke0NhcGl0YWxpemU8Sz59YF06IChlbnRpdHk6IEUpID0+IFByb21pc2U8dm9pZD47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGB1cGRhdGVBbGwke0NhcGl0YWxpemU8Sz59YF06IChcbiAgICBlbnRpdHk6IEVbXSxcbiAgKSA9PiBQcm9taXNlPHZvaWQ+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgZGVsZXRlJHtDYXBpdGFsaXplPEs+fWBdOiAoZW50aXR5OiBFKSA9PiBQcm9taXNlPHZvaWQ+O1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVNlcnZpY2VNZXRob2RzPEUgZXh0ZW5kcyBFbnRpdHksIEYgZXh0ZW5kcyBGaWx0ZXI+ID0ge1xuICB1cGRhdGVGaWx0ZXI6IChmaWx0ZXI6IEYpID0+IHZvaWQ7XG4gIHVwZGF0ZVNlbGVjdGVkOiAoaWQ6IEVudGl0eUlkLCBzZWxlY3RlZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgbG9hZDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBzZXRDdXJyZW50KGVudGl0eTogRSk6IHZvaWQ7XG4gIGxvYWRCeUlkKGlkOiBFbnRpdHlJZCk6IFByb21pc2U8dm9pZD47XG4gIGNyZWF0ZShlbnRpdHk6IEUpOiBQcm9taXNlPHZvaWQ+O1xuICB1cGRhdGUoZW50aXR5OiBFKTogUHJvbWlzZTx2b2lkPjtcbiAgdXBkYXRlQWxsKGVudGl0aWVzOiBFW10pOiBQcm9taXNlPHZvaWQ+O1xuICBkZWxldGUoZW50aXR5OiBFKTogUHJvbWlzZTx2b2lkPjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGF0YVNlcnZpY2U8XG4gIEUgZXh0ZW5kcyBFbnRpdHksXG4gIEYgZXh0ZW5kcyBGaWx0ZXIsXG4gIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcsXG4+KG9wdGlvbnM6IHtcbiAgZGF0YVNlcnZpY2VUeXBlOiBQcm92aWRlclRva2VuPERhdGFTZXJ2aWNlPEUsIEY+PjtcbiAgZmlsdGVyOiBGO1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xufSk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYge1xuICAgIHN0YXRlOiBOYW1lZENhbGxTdGF0ZVNsaWNlPENvbGxlY3Rpb24+ICYgTmFtZWRFbnRpdHlTdGF0ZTxFLCBDb2xsZWN0aW9uPjtcbiAgfSxcbiAge1xuICAgIHN0YXRlOiBOYW1lZERhdGFTZXJ2aWNlU3RhdGU8RSwgRiwgQ29sbGVjdGlvbj47XG4gICAgcHJvcHM6IE5hbWVkRGF0YVNlcnZpY2VDb21wdXRlZDxFLCBDb2xsZWN0aW9uPjtcbiAgICBtZXRob2RzOiBOYW1lZERhdGFTZXJ2aWNlTWV0aG9kczxFLCBGLCBDb2xsZWN0aW9uPjtcbiAgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoRGF0YVNlcnZpY2U8RSBleHRlbmRzIEVudGl0eSwgRiBleHRlbmRzIEZpbHRlcj4ob3B0aW9uczoge1xuICBkYXRhU2VydmljZVR5cGU6IFByb3ZpZGVyVG9rZW48RGF0YVNlcnZpY2U8RSwgRj4+O1xuICBmaWx0ZXI6IEY7XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7IHN0YXRlOiB7IGNhbGxTdGF0ZTogQ2FsbFN0YXRlIH0gJiBFbnRpdHlTdGF0ZTxFPiB9LFxuICB7XG4gICAgc3RhdGU6IERhdGFTZXJ2aWNlU3RhdGU8RSwgRj47XG4gICAgcHJvcHM6IERhdGFTZXJ2aWNlQ29tcHV0ZWQ8RT47XG4gICAgbWV0aG9kczogRGF0YVNlcnZpY2VNZXRob2RzPEUsIEY+O1xuICB9XG4+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aERhdGFTZXJ2aWNlPFxuICBFIGV4dGVuZHMgRW50aXR5LFxuICBGIGV4dGVuZHMgRmlsdGVyLFxuICBDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nLFxuPihvcHRpb25zOiB7XG4gIGRhdGFTZXJ2aWNlVHlwZTogUHJvdmlkZXJUb2tlbjxEYXRhU2VydmljZTxFLCBGPj47XG4gIGZpbHRlcjogRjtcbiAgY29sbGVjdGlvbj86IENvbGxlY3Rpb247XG59KTogLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuU2lnbmFsU3RvcmVGZWF0dXJlPGFueSwgYW55PiB7XG4gIGNvbnN0IHsgZGF0YVNlcnZpY2VUeXBlLCBmaWx0ZXIsIGNvbGxlY3Rpb246IHByZWZpeCB9ID0gb3B0aW9ucztcbiAgY29uc3Qge1xuICAgIGVudGl0aWVzS2V5LFxuICAgIGZpbHRlcktleSxcbiAgICBsb2FkS2V5LFxuICAgIHNlbGVjdGVkRW50aXRpZXNLZXksXG4gICAgc2VsZWN0ZWRJZHNLZXksXG4gICAgdXBkYXRlRmlsdGVyS2V5LFxuICAgIHVwZGF0ZVNlbGVjdGVkS2V5LFxuXG4gICAgY3VycmVudEtleSxcbiAgICBjcmVhdGVLZXksXG4gICAgdXBkYXRlS2V5LFxuICAgIHVwZGF0ZUFsbEtleSxcbiAgICBkZWxldGVLZXksXG4gICAgbG9hZEJ5SWRLZXksXG4gICAgc2V0Q3VycmVudEtleSxcbiAgfSA9IGdldERhdGFTZXJ2aWNlS2V5cyhvcHRpb25zKTtcblxuICBjb25zdCB7IGNhbGxTdGF0ZUtleSB9ID0gZ2V0Q2FsbFN0YXRlS2V5cyh7IGNvbGxlY3Rpb246IHByZWZpeCB9KTtcblxuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhTdGF0ZSgoKSA9PiAoe1xuICAgICAgW2ZpbHRlcktleV06IGZpbHRlcixcbiAgICAgIFtzZWxlY3RlZElkc0tleV06IHt9IGFzIFJlY29yZDxFbnRpdHlJZCwgYm9vbGVhbj4sXG4gICAgICBbY3VycmVudEtleV06IHVuZGVmaW5lZCBhcyBFIHwgdW5kZWZpbmVkLFxuICAgIH0pKSxcbiAgICB3aXRoQ29tcHV0ZWQoKHN0b3JlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4ge1xuICAgICAgY29uc3QgZW50aXRpZXMgPSBzdG9yZVtlbnRpdGllc0tleV0gYXMgU2lnbmFsPEVbXT47XG4gICAgICBjb25zdCBzZWxlY3RlZElkcyA9IHN0b3JlW3NlbGVjdGVkSWRzS2V5XSBhcyBTaWduYWw8XG4gICAgICAgIFJlY29yZDxFbnRpdHlJZCwgYm9vbGVhbj5cbiAgICAgID47XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtzZWxlY3RlZEVudGl0aWVzS2V5XTogY29tcHV0ZWQoKCkgPT5cbiAgICAgICAgICBlbnRpdGllcygpLmZpbHRlcigoZSkgPT4gc2VsZWN0ZWRJZHMoKVtlLmlkXSksXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhNZXRob2RzKFxuICAgICAgKHN0b3JlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiAmIFdyaXRhYmxlU3RhdGVTb3VyY2U8b2JqZWN0PikgPT4ge1xuICAgICAgICBjb25zdCBkYXRhU2VydmljZSA9IGluamVjdChkYXRhU2VydmljZVR5cGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIFt1cGRhdGVGaWx0ZXJLZXldOiAoZmlsdGVyOiBGKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IFtmaWx0ZXJLZXldOiBmaWx0ZXIgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbdXBkYXRlU2VsZWN0ZWRLZXldOiAoaWQ6IEVudGl0eUlkLCBzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQgPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gKHtcbiAgICAgICAgICAgICAgW3NlbGVjdGVkSWRzS2V5XToge1xuICAgICAgICAgICAgICAgIC4uLihzdGF0ZVtzZWxlY3RlZElkc0tleV0gYXMgUmVjb3JkPEVudGl0eUlkLCBib29sZWFuPiksXG4gICAgICAgICAgICAgICAgW2lkXTogc2VsZWN0ZWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbbG9hZEtleV06IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHN0b3JlW2ZpbHRlcktleV0gYXMgU2lnbmFsPEY+O1xuICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGluZyhwcmVmaXgpKSkoKTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGF0YVNlcnZpY2UubG9hZChmaWx0ZXIoKSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IHNldEFsbEVudGl0aWVzKHJlc3VsdCwgeyBjb2xsZWN0aW9uOiBwcmVmaXggfSlcbiAgICAgICAgICAgICAgICAgIDogc2V0QWxsRW50aXRpZXMocmVzdWx0KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJiBwYXRjaFN0YXRlKHN0b3JlLCBzZXRMb2FkZWQocHJlZml4KSkpKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiZcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBzZXRFcnJvcihlLCBwcmVmaXgpKSkoKTtcbiAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtsb2FkQnlJZEtleV06IGFzeW5jIChpZDogRW50aXR5SWQpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBkYXRhU2VydmljZS5sb2FkQnlJZChpZCk7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGVkKHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IFtjdXJyZW50S2V5XTogY3VycmVudCB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJlxuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHNldEVycm9yKGUsIHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW3NldEN1cnJlbnRLZXldOiAoY3VycmVudDogRSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGN1cnJlbnQgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbY3JlYXRlS2V5XTogYXN5bmMgKGVudGl0eTogRSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGVudGl0eSB9KTtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCBkYXRhU2VydmljZS5jcmVhdGUoZW50aXR5KTtcbiAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGNyZWF0ZWQgfSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IGFkZEVudGl0eShjcmVhdGVkLCB7IGNvbGxlY3Rpb246IHByZWZpeCB9KVxuICAgICAgICAgICAgICAgICAgOiBhZGRFbnRpdHkoY3JlYXRlZCksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGVkKHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAoKCkgPT5cbiAgICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmXG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0RXJyb3IoZSwgcHJlZml4KSkpKCk7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbdXBkYXRlS2V5XTogYXN5bmMgKGVudGl0eTogRSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IGVudGl0eSB9KTtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCBkYXRhU2VydmljZS51cGRhdGUoZW50aXR5KTtcbiAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBbY3VycmVudEtleV06IHVwZGF0ZWQgfSk7XG5cbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlQXJnID0ge1xuICAgICAgICAgICAgICAgIGlkOiB1cGRhdGVkLmlkLFxuICAgICAgICAgICAgICAgIGNoYW5nZXM6IHVwZGF0ZWQsXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlciA9IChjb2xsZWN0aW9uOiBzdHJpbmcpID0+XG4gICAgICAgICAgICAgICAgdXBkYXRlRW50aXR5KHVwZGF0ZUFyZywgeyBjb2xsZWN0aW9uIH0pO1xuXG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4ID8gdXBkYXRlcihwcmVmaXgpIDogdXBkYXRlRW50aXR5KHVwZGF0ZUFyZyksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGVkKHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAoKCkgPT5cbiAgICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmXG4gICAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0RXJyb3IoZSwgcHJlZml4KSkpKCk7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBbdXBkYXRlQWxsS2V5XTogYXN5bmMgKGVudGl0aWVzOiBFW10pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRpbmcocHJlZml4KSkpKCk7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRhdGFTZXJ2aWNlLnVwZGF0ZUFsbChlbnRpdGllcyk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IHNldEFsbEVudGl0aWVzKHJlc3VsdCwgeyBjb2xsZWN0aW9uOiBwcmVmaXggfSlcbiAgICAgICAgICAgICAgICAgIDogc2V0QWxsRW50aXRpZXMocmVzdWx0KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJiBwYXRjaFN0YXRlKHN0b3JlLCBzZXRMb2FkZWQocHJlZml4KSkpKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICgoKSA9PlxuICAgICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiZcbiAgICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBzZXRFcnJvcihlLCBwcmVmaXgpKSkoKTtcbiAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtkZWxldGVLZXldOiBhc3luYyAoZW50aXR5OiBFKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IFtjdXJyZW50S2V5XTogZW50aXR5IH0pO1xuICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgIHN0b3JlW2NhbGxTdGF0ZUtleV0gJiYgcGF0Y2hTdGF0ZShzdG9yZSwgc2V0TG9hZGluZyhwcmVmaXgpKSkoKTtcblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgYXdhaXQgZGF0YVNlcnZpY2UuZGVsZXRlKGVudGl0eSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgW2N1cnJlbnRLZXldOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgICAgIHBhdGNoU3RhdGUoXG4gICAgICAgICAgICAgICAgc3RvcmUsXG4gICAgICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAgICAgICA/IHJlbW92ZUVudGl0eShlbnRpdHkuaWQsIHsgY29sbGVjdGlvbjogcHJlZml4IH0pXG4gICAgICAgICAgICAgICAgICA6IHJlbW92ZUVudGl0eShlbnRpdHkuaWQpLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAoKCkgPT5cbiAgICAgICAgICAgICAgICBzdG9yZVtjYWxsU3RhdGVLZXldICYmIHBhdGNoU3RhdGUoc3RvcmUsIHNldExvYWRlZChwcmVmaXgpKSkoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgKCgpID0+XG4gICAgICAgICAgICAgICAgc3RvcmVbY2FsbFN0YXRlS2V5XSAmJlxuICAgICAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHNldEVycm9yKGUsIHByZWZpeCkpKSgpO1xuICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICksXG4gICk7XG59XG4iXX0=","/** With pagination comes in two flavors the first one is local pagination or in memory pagination. For example we have 2000 items which we want\n * to display in a table and the response payload is small enough to be stored in the memory. But we can not display all 2000 items at once\n * so we need to paginate the data. The second flavor is server side pagination where the response payload is too large to be stored in the memory\n * and we need to fetch the data from the server in chunks. In the second case we 'could' also cache the data in the memory but that could lead to\n * other problems like memory leaks and stale data. So we will not cache the data in the memory in the second case.\n * This feature implements the local pagination.\n */\nimport { computed } from '@angular/core';\nimport { signalStoreFeature, withComputed, withState, } from '@ngrx/signals';\nimport { capitalize } from './with-data-service';\nexport function withPagination(options) {\n const { pageKey, pageSizeKey, entitiesKey, selectedPageEntitiesKey, totalCountKey, pageCountKey, pageNavigationArrayMaxKey, pageNavigationArrayKey, hasNextPageKey, hasPreviousPageKey, } = createPaginationKeys(options);\n return signalStoreFeature(withState({\n [pageKey]: 0,\n [pageSizeKey]: 10,\n [pageNavigationArrayMaxKey]: 7,\n }), withComputed((store) => {\n const entities = store[entitiesKey];\n const page = store[pageKey];\n const pageSize = store[pageSizeKey];\n const pageNavigationArrayMax = store[pageNavigationArrayMaxKey];\n return {\n // The derived enitites which are displayed on the current page\n [selectedPageEntitiesKey]: computed(() => {\n const pageSizeValue = pageSize();\n const pageValue = page();\n return entities().slice(pageValue * pageSizeValue, (pageValue + 1) * pageSizeValue);\n }),\n [totalCountKey]: computed(() => entities().length),\n [pageCountKey]: computed(() => {\n const totalCountValue = entities().length;\n const pageSizeValue = pageSize();\n if (totalCountValue === 0) {\n return 0;\n }\n return Math.ceil(totalCountValue / pageSizeValue);\n }),\n [pageNavigationArrayKey]: computed(() => createPageArray(page(), pageSize(), entities().length, pageNavigationArrayMax())),\n [hasNextPageKey]: computed(() => {\n return page() < pageSize();\n }),\n [hasPreviousPageKey]: computed(() => {\n return page() > 1;\n }),\n };\n }));\n}\nexport function gotoPage(page, options) {\n const { pageKey } = createPaginationKeys(options);\n return {\n [pageKey]: page,\n };\n}\nexport function setPageSize(pageSize, options) {\n const { pageSizeKey } = createPaginationKeys(options);\n return {\n [pageSizeKey]: pageSize,\n };\n}\nexport function nextPage(options) {\n const { pageKey } = createPaginationKeys(options);\n return (state) => {\n const currentPage = state[pageKey];\n return { [pageKey]: currentPage + 1 };\n };\n}\nexport function previousPage(options) {\n const { pageKey } = createPaginationKeys(options);\n return (state) => {\n const currentPage = state[pageKey];\n return { [pageKey]: currentPage - 1 };\n };\n}\nexport function firstPage(options) {\n const { pageKey } = createPaginationKeys(options);\n return { [pageKey]: 0 };\n}\nexport function setMaxPageNavigationArrayItems(maxPageNavigationArrayItems, options) {\n const { pageNavigationArrayMaxKey } = createPaginationKeys(options);\n return {\n [pageNavigationArrayMaxKey]: maxPageNavigationArrayItems,\n };\n}\nfunction createPaginationKeys(options) {\n const entitiesKey = options?.collection\n ? `${options.collection}Entities`\n : 'entities';\n const selectedPageEntitiesKey = options?.collection\n ? `selectedPage${capitalize(options?.collection)}Entities`\n : 'selectedPageEntities';\n const pageKey = options?.collection\n ? `${options.collection}CurrentPage`\n : 'currentPage';\n const pageSizeKey = options?.collection\n ? `${options.collection}PageSize`\n : 'pageSize';\n const totalCountKey = options?.collection\n ? `${options.collection}TotalCount`\n : 'totalCount';\n const pageCountKey = options?.collection\n ? `${options.collection}PageCount`\n : 'pageCount';\n const pageNavigationArrayMaxKey = options?.collection\n ? `${options.collection}PageNavigationArrayMax`\n : 'pageNavigationArrayMax';\n const pageNavigationArrayKey = options?.collection\n ? `${options.collection}PageNavigationArray`\n : 'pageNavigationArray';\n const hasNextPageKey = options?.collection\n ? `hasNext${capitalize(options.collection)}Page`\n : 'hasNextPage';\n const hasPreviousPageKey = options?.collection\n ? `hasPrevious${capitalize(options.collection)}Page`\n : 'hasPreviousPage';\n return {\n pageKey,\n pageSizeKey,\n entitiesKey,\n selectedPageEntitiesKey,\n totalCountKey,\n pageCountKey,\n pageNavigationArrayKey,\n pageNavigationArrayMaxKey,\n hasNextPageKey,\n hasPreviousPageKey,\n };\n}\nexport function createPageArray(currentPage, itemsPerPage, totalItems, paginationRange) {\n // Convert paginationRange to number in case it's a string\n paginationRange = +paginationRange;\n // Calculate total number of pages\n const totalPages = Math.max(Math.ceil(totalItems / itemsPerPage), 1);\n const halfWay = Math.ceil(paginationRange / 2);\n const isStart = currentPage <= halfWay;\n const isEnd = totalPages - halfWay < currentPage;\n const isMiddle = !isStart && !isEnd;\n const ellipsesNeeded = paginationRange < totalPages;\n const pages = [];\n for (let i = 1; i <= totalPages && i <= paginationRange; i++) {\n let pageNumber = i;\n if (i === paginationRange) {\n pageNumber = totalPages;\n }\n else if (ellipsesNeeded) {\n if (isEnd) {\n pageNumber = totalPages - paginationRange + i;\n }\n else if (isMiddle) {\n pageNumber = currentPage - halfWay + i;\n }\n }\n const openingEllipsesNeeded = i === 2 && (isMiddle || isEnd);\n const closingEllipsesNeeded = i === paginationRange - 1 && (isMiddle || isStart);\n const label = ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)\n ? '...'\n : pageNumber;\n pages.push({ label, value: pageNumber });\n }\n return pages;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1wYWdpbmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi93aXRoLXBhZ2luYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFVLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBR0wsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBdUdqRCxNQUFNLFVBQVUsY0FBYyxDQUErQixPQUc1RDtJQUNDLE1BQU0sRUFDSixPQUFPLEVBQ1AsV0FBVyxFQUNYLFdBQVcsRUFDWCx1QkFBdUIsRUFDdkIsYUFBYSxFQUNiLFlBQVksRUFDWix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCxrQkFBa0IsR0FDbkIsR0FBRyxvQkFBb0IsQ0FBYSxPQUFPLENBQUMsQ0FBQztJQUU5QyxPQUFPLGtCQUFrQixDQUN2QixTQUFTLENBQUM7UUFDUixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWixDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUU7UUFDakIsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7S0FDL0IsQ0FBQyxFQUNGLFlBQVksQ0FBQyxDQUFDLEtBQThCLEVBQUUsRUFBRTtRQUM5QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFnQixDQUFDO1FBQ25ELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQW1CLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBbUIsQ0FBQztRQUN0RCxNQUFNLHNCQUFzQixHQUFHLEtBQUssQ0FDbEMseUJBQXlCLENBQ1IsQ0FBQztRQUVwQixPQUFPO1lBQ0wsK0RBQStEO1lB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QkFBcUIsSUFBSSxxQkFBcUIsQ0FBQztZQUNoRSxDQUFDLENBQUMsS0FBSztZQUNQLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFFakIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFdpdGggcGFnaW5hdGlvbiBjb21lcyBpbiB0d28gZmxhdm9ycyB0aGUgZmlyc3Qgb25lIGlzIGxvY2FsIHBhZ2luYXRpb24gb3IgaW4gbWVtb3J5IHBhZ2luYXRpb24uIEZvciBleGFtcGxlIHdlIGhhdmUgMjAwMCBpdGVtcyB3aGljaCB3ZSB3YW50XG4gKiB0byBkaXNwbGF5IGluIGEgdGFibGUgYW5kIHRoZSByZXNwb25zZSBwYXlsb2FkIGlzIHNtYWxsIGVub3VnaCB0byBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeS4gQnV0IHdlIGNhbiBub3QgZGlzcGxheSBhbGwgMjAwMCBpdGVtcyBhdCBvbmNlXG4gKiBzbyB3ZSBuZWVkIHRvIHBhZ2luYXRlIHRoZSBkYXRhLiBUaGUgc2Vjb25kIGZsYXZvciBpcyBzZXJ2ZXIgc2lkZSBwYWdpbmF0aW9uIHdoZXJlIHRoZSByZXNwb25zZSBwYXlsb2FkIGlzIHRvbyBsYXJnZSB0byBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeVxuICogYW5kIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIGRhdGEgZnJvbSB0aGUgc2VydmVyIGluIGNodW5rcy4gSW4gdGhlIHNlY29uZCBjYXNlIHdlICdjb3VsZCcgYWxzbyBjYWNoZSB0aGUgZGF0YSBpbiB0aGUgbWVtb3J5IGJ1dCB0aGF0IGNvdWxkIGxlYWQgdG9cbiAqIG90aGVyIHByb2JsZW1zIGxpa2UgbWVtb3J5IGxlYWtzIGFuZCBzdGFsZSBkYXRhLiBTbyB3ZSB3aWxsIG5vdCBjYWNoZSB0aGUgZGF0YSBpbiB0aGUgbWVtb3J5IGluIHRoZSBzZWNvbmQgY2FzZS5cbiAqIFRoaXMgZmVhdHVyZSBpbXBsZW1lbnRzIHRoZSBsb2NhbCBwYWdpbmF0aW9uLlxuICovXG5cbmltcG9ydCB7IFNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVtcHR5RmVhdHVyZVJlc3VsdCxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIHdpdGhDb21wdXRlZCxcbiAgd2l0aFN0YXRlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tICcuL3dpdGgtZGF0YS1zZXJ2aWNlJztcblxuLy8gVGhpcyBpcyBhIHZpcnR1YWwgcGFnZSB3aGljaCBpcyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSBwYWdpbmF0aW9uIGNvbnRyb2xcbmV4cG9ydCB0eXBlIFBhZ2UgPSB7IGxhYmVsOiBzdHJpbmcgfCBudW1iZXI7IHZhbHVlOiBudW1iZXIgfTtcblxuZXhwb3J0IHR5cGUgTmFtZWRQYWdpbmF0aW9uU2VydmljZVN0YXRlPEUsIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBzZWxlY3RlZFBhZ2Uke0NhcGl0YWxpemU8Sz59RW50aXRpZXNgXTogQXJyYXk8RT47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1DdXJyZW50UGFnZWBdOiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1QYWdlU2l6ZWBdOiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1Ub3RhbENvdW50YF06IG51bWJlcjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fVBhZ2VDb3VudGBdOiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1QYWdlTmF2aWdhdGlvbkFycmF5YF06IG51bWJlcjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fVBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhgXTogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTmFtZWRQYWdpbmF0aW9uU2VydmljZVNpZ25hbHM8RSwgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4gPSB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYHNlbGVjdGVkUGFnZSR7Q2FwaXRhbGl6ZTxLPn1FbnRpdGllc2BdOiBTaWduYWw8RVtdPjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fUN1cnJlbnRQYWdlYF06IFNpZ25hbDxudW1iZXI+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgJHtMb3dlcmNhc2U8Sz59UGFnZVNpemVgXTogU2lnbmFsPG51bWJlcj47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1Ub3RhbENvdW50YF06IFNpZ25hbDxudW1iZXI+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgJHtMb3dlcmNhc2U8Sz59UGFnZUNvdW50YF06IFNpZ25hbDxudW1iZXI+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgJHtMb3dlcmNhc2U8Sz59UGFnZU5hdmlnYXRpb25BcnJheWBdOiBTaWduYWw8UGFnZVtdPjtcbn0gJiB7XG4gIFtLIGluIENvbGxlY3Rpb24gYXMgYCR7TG93ZXJjYXNlPEs+fVBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhgXTogU2lnbmFsPG51bWJlcj47XG59ICYge1xuICBbSyBpbiBDb2xsZWN0aW9uIGFzIGBoYXNOZXh0JHtDYXBpdGFsaXplPEs+fVBhZ2VgXTogU2lnbmFsPGJvb2xlYW4+O1xufSAmIHtcbiAgW0sgaW4gQ29sbGVjdGlvbiBhcyBgaGFzUHJldmlvdXMke0NhcGl0YWxpemU8Sz59UGFnZWBdOiBTaWduYWw8Ym9vbGVhbj47XG59O1xuXG5leHBvcnQgdHlwZSBQYWdpbmF0aW9uU2VydmljZVN0YXRlPEU+ID0ge1xuICBzZWxlY3RlZFBhZ2VFbnRpdGllczogQXJyYXk8RT47XG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgcGFnZUNvdW50OiBudW1iZXI7XG4gIHBhZ2VOYXZpZ2F0aW9uQXJyYXk6IFBhZ2VbXTtcbiAgcGFnZU5hdmlnYXRpb25BcnJheU1heDogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgUGFnaW5hdGlvblNlcnZpY2VTaWduYWxzPEU+ID0ge1xuICBzZWxlY3RlZFBhZ2VFbnRpdGllczogU2lnbmFsPEVbXT47XG4gIGN1cnJlbnRQYWdlOiBTaWduYWw8bnVtYmVyPjtcbiAgcGFnZVNpemU6IFNpZ25hbDxudW1iZXI+O1xuICB0b3RhbENvdW50OiBTaWduYWw8bnVtYmVyPjtcbiAgcGFnZUNvdW50OiBTaWduYWw8bnVtYmVyPjtcbiAgcGFnZU5hdmlnYXRpb25BcnJheTogU2lnbmFsPFBhZ2VbXT47XG4gIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXg6IFNpZ25hbDxudW1iZXI+O1xuICBoYXNOZXh0UGFnZTogU2lnbmFsPGJvb2xlYW4+O1xuICBoYXNQcmV2aW91c1BhZ2U6IFNpZ25hbDxib29sZWFuPjtcbn07XG5cbnR5cGUgUGFnZVN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+ID1cbiAgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZ1xuICAgID8ge1xuICAgICAgICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1DdXJyZW50UGFnZWBdOiBudW1iZXI7XG4gICAgICB9XG4gICAgOiB7IGN1cnJlbnRQYWdlOiBudW1iZXIgfTtcblxudHlwZSBQYWdlU2l6ZVN0YXRlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmcgfCB1bmRlZmluZWQ+ID1cbiAgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZ1xuICAgID8ge1xuICAgICAgICBbSyBpbiBDb2xsZWN0aW9uIGFzIGAke0xvd2VyY2FzZTxLPn1QYWdlU2l6ZWBdOiBudW1iZXI7XG4gICAgICB9XG4gICAgOiB7IHBhZ2VTaXplOiBudW1iZXIgfTtcblxuZXhwb3J0IHR5cGUgU2V0UGFnaW5hdGlvblN0YXRlPFxuICBFLFxuICBDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuPiA9IENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmdcbiAgPyBOYW1lZFBhZ2luYXRpb25TZXJ2aWNlU3RhdGU8RSwgQ29sbGVjdGlvbj5cbiAgOiBQYWdpbmF0aW9uU2VydmljZVN0YXRlPEU+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFBhZ2luYXRpb248RSwgQ29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4ob3B0aW9uczoge1xuICBlbnRpdHk6IEU7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHtcbiAgICBzdGF0ZTogTmFtZWRQYWdpbmF0aW9uU2VydmljZVN0YXRlPEUsIENvbGxlY3Rpb24+O1xuICAgIHByb3BzOiBOYW1lZFBhZ2luYXRpb25TZXJ2aWNlU2lnbmFsczxFLCBDb2xsZWN0aW9uPjtcbiAgfVxuPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhQYWdpbmF0aW9uPEU+KCk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBFbXB0eUZlYXR1cmVSZXN1bHQgJiB7XG4gICAgc3RhdGU6IFBhZ2luYXRpb25TZXJ2aWNlU3RhdGU8RT47XG4gICAgcHJvcHM6IFBhZ2luYXRpb25TZXJ2aWNlU2lnbmFsczxFPjtcbiAgfVxuPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhQYWdpbmF0aW9uPEUsIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGVudGl0eTogRTtcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjtcbn0pOiBTaWduYWxTdG9yZUZlYXR1cmUge1xuICBjb25zdCB7XG4gICAgcGFnZUtleSxcbiAgICBwYWdlU2l6ZUtleSxcbiAgICBlbnRpdGllc0tleSxcbiAgICBzZWxlY3RlZFBhZ2VFbnRpdGllc0tleSxcbiAgICB0b3RhbENvdW50S2V5LFxuICAgIHBhZ2VDb3VudEtleSxcbiAgICBwYWdlTmF2aWdhdGlvbkFycmF5TWF4S2V5LFxuICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlLZXksXG4gICAgaGFzTmV4dFBhZ2VLZXksXG4gICAgaGFzUHJldmlvdXNQYWdlS2V5LFxuICB9ID0gY3JlYXRlUGFnaW5hdGlvbktleXM8Q29sbGVjdGlvbj4ob3B0aW9ucyk7XG5cbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoe1xuICAgICAgW3BhZ2VLZXldOiAwLFxuICAgICAgW3BhZ2VTaXplS2V5XTogMTAsXG4gICAgICBbcGFnZU5hdmlnYXRpb25BcnJheU1heEtleV06IDcsXG4gICAgfSksXG4gICAgd2l0aENvbXB1dGVkKChzdG9yZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICAgIGNvbnN0IGVudGl0aWVzID0gc3RvcmVbZW50aXRpZXNLZXldIGFzIFNpZ25hbDxFW10+O1xuICAgICAgY29uc3QgcGFnZSA9IHN0b3JlW3BhZ2VLZXldIGFzIFNpZ25hbDxudW1iZXI+O1xuICAgICAgY29uc3QgcGFnZVNpemUgPSBzdG9yZVtwYWdlU2l6ZUtleV0gYXMgU2lnbmFsPG51bWJlcj47XG4gICAgICBjb25zdCBwYWdlTmF2aWdhdGlvbkFycmF5TWF4ID0gc3RvcmVbXG4gICAgICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhLZXlcbiAgICAgIF0gYXMgU2lnbmFsPG51bWJlcj47XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC8vIFRoZSBkZXJpdmVkIGVuaXRpdGVzIHdoaWNoIGFyZSBkaXNwbGF5ZWQgb24gdGhlIGN1cnJlbnQgcGFnZVxuICAgICAgICBbc2VsZWN0ZWRQYWdlRW50aXRpZXNLZXldOiBjb21wdXRlZDxFW10+KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBwYWdlU2l6ZVZhbHVlID0gcGFnZVNpemUoKTtcbiAgICAgICAgICBjb25zdCBwYWdlVmFsdWUgPSBwYWdlKCk7XG5cbiAgICAgICAgICByZXR1cm4gZW50aXRpZXMoKS5zbGljZShcbiAgICAgICAgICAgIHBhZ2VWYWx1ZSAqIHBhZ2VTaXplVmFsdWUsXG4gICAgICAgICAgICAocGFnZVZhbHVlICsgMSkgKiBwYWdlU2l6ZVZhbHVlLFxuICAgICAgICAgICkgYXMgRVtdO1xuICAgICAgICB9KSxcbiAgICAgICAgW3RvdGFsQ291bnRLZXldOiBjb21wdXRlZCgoKSA9PiBlbnRpdGllcygpLmxlbmd0aCksXG4gICAgICAgIFtwYWdlQ291bnRLZXldOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdG90YWxDb3VudFZhbHVlID0gZW50aXRpZXMoKS5sZW5ndGg7XG4gICAgICAgICAgY29uc3QgcGFnZVNpemVWYWx1ZSA9IHBhZ2VTaXplKCk7XG5cbiAgICAgICAgICBpZiAodG90YWxDb3VudFZhbHVlID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHRvdGFsQ291bnRWYWx1ZSAvIHBhZ2VTaXplVmFsdWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgW3BhZ2VOYXZpZ2F0aW9uQXJyYXlLZXldOiBjb21wdXRlZCgoKSA9PlxuICAgICAgICAgIGNyZWF0ZVBhZ2VBcnJheShcbiAgICAgICAgICAgIHBhZ2UoKSxcbiAgICAgICAgICAgIHBhZ2VTaXplKCksXG4gICAgICAgICAgICBlbnRpdGllcygpLmxlbmd0aCxcbiAgICAgICAgICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXgoKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuXG4gICAgICAgIFtoYXNOZXh0UGFnZUtleV06IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGFnZSgpIDwgcGFnZVNpemUoKTtcbiAgICAgICAgfSksXG5cbiAgICAgICAgW2hhc1ByZXZpb3VzUGFnZUtleV06IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGFnZSgpID4gMTtcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ290b1BhZ2U8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZz4oXG4gIHBhZ2U6IG51bWJlcixcbiAgb3B0aW9ucz86IHtcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xuICB9LFxuKTogUGFnZVN0YXRlPENvbGxlY3Rpb24+IHtcbiAgY29uc3QgeyBwYWdlS2V5IH0gPSBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uPihvcHRpb25zKTtcblxuICByZXR1cm4ge1xuICAgIFtwYWdlS2V5XTogcGFnZSxcbiAgfSBhcyBQYWdlU3RhdGU8Q29sbGVjdGlvbj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQYWdlU2l6ZTxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPihcbiAgcGFnZVNpemU6IG51bWJlcixcbiAgb3B0aW9ucz86IHtcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xuICB9LFxuKSB7XG4gIGNvbnN0IHsgcGFnZVNpemVLZXkgfSA9IGNyZWF0ZVBhZ2luYXRpb25LZXlzPENvbGxlY3Rpb24+KG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgW3BhZ2VTaXplS2V5XTogcGFnZVNpemUsXG4gIH0gYXMgUGFnZVNpemVTdGF0ZTxDb2xsZWN0aW9uPjtcbn1cblxudHlwZSBTZXRQYWdlU3RhdGU8Q29sbGVjdGlvbiBleHRlbmRzIHN0cmluZyB8IHVuZGVmaW5lZD4gPSAoXG4gIHN0YXRlOiBQYWdlU3RhdGU8Q29sbGVjdGlvbj4sXG4pID0+IFBhZ2VTdGF0ZTxDb2xsZWN0aW9uPjtcblxuZXhwb3J0IGZ1bmN0aW9uIG5leHRQYWdlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KTogU2V0UGFnZVN0YXRlPENvbGxlY3Rpb24+IHtcbiAgY29uc3QgeyBwYWdlS2V5IH0gPSBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uPihvcHRpb25zKTtcblxuICByZXR1cm4gKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KSA9PiB7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSBzdGF0ZVtwYWdlS2V5XTtcblxuICAgIHJldHVybiB7IFtwYWdlS2V5XTogY3VycmVudFBhZ2UgKyAxIH0gYXMgUGFnZVN0YXRlPENvbGxlY3Rpb24+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJldmlvdXNQYWdlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KTogU2V0UGFnZVN0YXRlPENvbGxlY3Rpb24+IHtcbiAgY29uc3QgeyBwYWdlS2V5IH0gPSBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uPihvcHRpb25zKTtcblxuICByZXR1cm4gKHN0YXRlOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KSA9PiB7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSBzdGF0ZVtwYWdlS2V5XTtcblxuICAgIHJldHVybiB7IFtwYWdlS2V5XTogY3VycmVudFBhZ2UgLSAxIH0gYXMgUGFnZVN0YXRlPENvbGxlY3Rpb24+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlyc3RQYWdlPENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KG9wdGlvbnM/OiB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb247XG59KSB7XG4gIGNvbnN0IHsgcGFnZUtleSB9ID0gY3JlYXRlUGFnaW5hdGlvbktleXM8Q29sbGVjdGlvbj4ob3B0aW9ucyk7XG5cbiAgcmV0dXJuIHsgW3BhZ2VLZXldOiAwIH0gYXMgUGFnZVN0YXRlPENvbGxlY3Rpb24+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TWF4UGFnZU5hdmlnYXRpb25BcnJheUl0ZW1zPEUsIENvbGxlY3Rpb24gZXh0ZW5kcyBzdHJpbmc+KFxuICBtYXhQYWdlTmF2aWdhdGlvbkFycmF5SXRlbXM6IG51bWJlcixcbiAgb3B0aW9ucz86IHtcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uO1xuICB9LFxuKTogUGFydGlhbDxTZXRQYWdpbmF0aW9uU3RhdGU8RSwgQ29sbGVjdGlvbj4+IHtcbiAgY29uc3QgeyBwYWdlTmF2aWdhdGlvbkFycmF5TWF4S2V5IH0gPVxuICAgIGNyZWF0ZVBhZ2luYXRpb25LZXlzPENvbGxlY3Rpb24+KG9wdGlvbnMpO1xuXG4gIHJldHVybiB7XG4gICAgW3BhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhLZXldOiBtYXhQYWdlTmF2aWdhdGlvbkFycmF5SXRlbXMsXG4gIH0gYXMgUGFydGlhbDxTZXRQYWdpbmF0aW9uU3RhdGU8RSwgQ29sbGVjdGlvbj4+O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQYWdpbmF0aW9uS2V5czxDb2xsZWN0aW9uIGV4dGVuZHMgc3RyaW5nPihcbiAgb3B0aW9uczogeyBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uIH0gfCB1bmRlZmluZWQsXG4pIHtcbiAgY29uc3QgZW50aXRpZXNLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259RW50aXRpZXNgXG4gICAgOiAnZW50aXRpZXMnO1xuXG4gIGNvbnN0IHNlbGVjdGVkUGFnZUVudGl0aWVzS2V5ID0gb3B0aW9ucz8uY29sbGVjdGlvblxuICAgID8gYHNlbGVjdGVkUGFnZSR7Y2FwaXRhbGl6ZShvcHRpb25zPy5jb2xsZWN0aW9uKX1FbnRpdGllc2BcbiAgICA6ICdzZWxlY3RlZFBhZ2VFbnRpdGllcyc7XG5cbiAgY29uc3QgcGFnZUtleSA9IG9wdGlvbnM/LmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1DdXJyZW50UGFnZWBcbiAgICA6ICdjdXJyZW50UGFnZSc7XG5cbiAgY29uc3QgcGFnZVNpemVLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259UGFnZVNpemVgXG4gICAgOiAncGFnZVNpemUnO1xuXG4gIGNvbnN0IHRvdGFsQ291bnRLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259VG90YWxDb3VudGBcbiAgICA6ICd0b3RhbENvdW50JztcblxuICBjb25zdCBwYWdlQ291bnRLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259UGFnZUNvdW50YFxuICAgIDogJ3BhZ2VDb3VudCc7XG5cbiAgY29uc3QgcGFnZU5hdmlnYXRpb25BcnJheU1heEtleSA9IG9wdGlvbnM/LmNvbGxlY3Rpb25cbiAgICA/IGAke29wdGlvbnMuY29sbGVjdGlvbn1QYWdlTmF2aWdhdGlvbkFycmF5TWF4YFxuICAgIDogJ3BhZ2VOYXZpZ2F0aW9uQXJyYXlNYXgnO1xuXG4gIGNvbnN0IHBhZ2VOYXZpZ2F0aW9uQXJyYXlLZXkgPSBvcHRpb25zPy5jb2xsZWN0aW9uXG4gICAgPyBgJHtvcHRpb25zLmNvbGxlY3Rpb259UGFnZU5hdmlnYXRpb25BcnJheWBcbiAgICA6ICdwYWdlTmF2aWdhdGlvbkFycmF5JztcblxuICBjb25zdCBoYXNOZXh0UGFnZUtleSA9IG9wdGlvbnM/LmNvbGxlY3Rpb25cbiAgICA/IGBoYXNOZXh0JHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9UGFnZWBcbiAgICA6ICdoYXNOZXh0UGFnZSc7XG5cbiAgY29uc3QgaGFzUHJldmlvdXNQYWdlS2V5ID0gb3B0aW9ucz8uY29sbGVjdGlvblxuICAgID8gYGhhc1ByZXZpb3VzJHtjYXBpdGFsaXplKG9wdGlvbnMuY29sbGVjdGlvbil9UGFnZWBcbiAgICA6ICdoYXNQcmV2aW91c1BhZ2UnO1xuXG4gIHJldHVybiB7XG4gICAgcGFnZUtleSxcbiAgICBwYWdlU2l6ZUtleSxcbiAgICBlbnRpdGllc0tleSxcbiAgICBzZWxlY3RlZFBhZ2VFbnRpdGllc0tleSxcbiAgICB0b3RhbENvdW50S2V5LFxuICAgIHBhZ2VDb3VudEtleSxcbiAgICBwYWdlTmF2aWdhdGlvbkFycmF5S2V5LFxuICAgIHBhZ2VOYXZpZ2F0aW9uQXJyYXlNYXhLZXksXG4gICAgaGFzTmV4dFBhZ2VLZXksXG4gICAgaGFzUHJldmlvdXNQYWdlS2V5LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGFnZUFycmF5KFxuICBjdXJyZW50UGFnZTogbnVtYmVyLFxuICBpdGVtc1BlclBhZ2U6IG51bWJlcixcbiAgdG90YWxJdGVtczogbnVtYmVyLFxuICBwYWdpbmF0aW9uUmFuZ2U6IG51bWJlcixcbik6IFBhZ2VbXSB7XG4gIC8vIENvbnZlcnQgcGFnaW5hdGlvblJhbmdlIHRvIG51bWJlciBpbiBjYXNlIGl0J3MgYSBzdHJpbmdcbiAgcGFnaW5hdGlvblJhbmdlID0gK3BhZ2luYXRpb25SYW5nZTtcblxuICAvLyBDYWxjdWxhdGUgdG90YWwgbnVtYmVyIG9mIHBhZ2VzXG4gIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLm1heChNYXRoLmNlaWwodG90YWxJdGVtcyAvIGl0ZW1zUGVyUGFnZSksIDEpO1xuICBjb25zdCBoYWxmV2F5ID0gTWF0aC5jZWlsKHBhZ2luYXRpb25SYW5nZSAvIDIpO1xuXG4gIGNvbnN0IGlzU3RhcnQgPSBjdXJyZW50UGFnZSA8PSBoYWxmV2F5O1xuICBjb25zdCBpc0VuZCA9IHRvdGFsUGFnZXMgLSBoYWxmV2F5IDwgY3VycmVudFBhZ2U7XG4gIGNvbnN0IGlzTWlkZGxlID0gIWlzU3RhcnQgJiYgIWlzRW5kO1xuXG4gIGNvbnN0IGVsbGlwc2VzTmVlZGVkID0gcGFnaW5hdGlvblJhbmdlIDwgdG90YWxQYWdlcztcbiAgY29uc3QgcGFnZXM6IFBhZ2VbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAxOyBpIDw9IHRvdGFsUGFnZXMgJiYgaSA8PSBwYWdpbmF0aW9uUmFuZ2U7IGkrKykge1xuICAgIGxldCBwYWdlTnVtYmVyID0gaTtcblxuICAgIGlmIChpID09PSBwYWdpbmF0aW9uUmFuZ2UpIHtcbiAgICAgIHBhZ2VOdW1iZXIgPSB0b3RhbFBhZ2VzO1xuICAgIH0gZWxzZSBpZiAoZWxsaXBzZXNOZWVkZWQpIHtcbiAgICAgIGlmIChpc0VuZCkge1xuICAgICAgICBwYWdlTnVtYmVyID0gdG90YWxQYWdlcyAtIHBhZ2luYXRpb25SYW5nZSArIGk7XG4gICAgICB9IGVsc2UgaWYgKGlzTWlkZGxlKSB7XG4gICAgICAgIHBhZ2VOdW1iZXIgPSBjdXJyZW50UGFnZSAtIGhhbGZXYXkgKyBpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9wZW5pbmdFbGxpcHNlc05lZWRlZCA9IGkgPT09IDIgJiYgKGlzTWlkZGxlIHx8IGlzRW5kKTtcbiAgICBjb25zdCBjbG9zaW5nRWxsaXBzZXNOZWVkZWQgPVxuICAgICAgaSA9PT0gcGFnaW5hdGlvblJhbmdlIC0gMSAmJiAoaXNNaWRkbGUgfHwgaXNTdGFydCk7XG5cbiAgICBjb25zdCBsYWJlbCA9XG4gICAgICBlbGxpcHNlc05lZWRlZCAmJiAob3BlbmluZ0VsbGlwc2VzTmVlZGVkIHx8IGNsb3NpbmdFbGxpcHNlc05lZWRlZClcbiAgICAgICAgPyAnLi4uJ1xuICAgICAgICA6IHBhZ2VOdW1iZXI7XG5cbiAgICBwYWdlcy5wdXNoKHsgbGFiZWwsIHZhbHVlOiBwYWdlTnVtYmVyIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBhZ2VzO1xufVxuIl19","import { getState, patchState, signalStoreFeature, withHooks, withMethods, withProps, } from '@ngrx/signals';\n/**\n * Adds a `resetState` method to the store, which resets the state\n * to the initial state.\n *\n * If you want to set a custom initial state, you can use {@link setResetState}.\n */\nexport function withReset() {\n return signalStoreFeature(withProps(() => ({ _resetState: { value: {} } })), withMethods((store) => {\n // workaround to TS excessive property check\n const methods = {\n resetState() {\n patchState(store, store._resetState.value);\n },\n __setResetState__(state) {\n store._resetState.value = state;\n },\n };\n return methods;\n }), withHooks((store) => ({\n onInit() {\n store._resetState.value = getState(store);\n },\n })));\n}\n/**\n * Sets the reset state of the store to the given state.\n *\n * Throws an error if the store is not configured with {@link withReset}.\n * @param store the instance of a SignalStore\n * @param state the state to set as the reset state\n */\nexport function setResetState(store, state) {\n if (!('__setResetState__' in store)) {\n throw new Error('Cannot set reset state, since store is not configured with withReset()');\n }\n store.__setResetState__(state);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZXNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZXNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFVBQVUsRUFDVixrQkFBa0IsRUFFbEIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFNdkI7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsU0FBUztJQUN2QixPQUFPLGtCQUFrQixDQUN2QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFDakQsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFpQixFQUFFO1FBQ25DLDRDQUE0QztRQUM1QyxNQUFNLE9BQU8sR0FBRztZQUNkLFVBQVU7Z0JBQ1IsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxpQkFBaUIsQ0FBQyxLQUFhO2dCQUM3QixLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbEMsQ0FBQztTQUNGLENBQUM7UUFFRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEIsTUFBTTtZQUNKLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxDQUFDO0tBQ0YsQ0FBQyxDQUFDLENBQ0osQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUMzQixLQUF5QixFQUN6QixLQUFZO0lBRVosSUFBSSxDQUFDLENBQUMsbUJBQW1CLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksS0FBSyxDQUNiLHdFQUF3RSxDQUN6RSxDQUFDO0lBQ0osQ0FBQztJQUNBLEtBQUssQ0FBQyxpQkFBNEMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgZ2V0U3RhdGUsXG4gIHBhdGNoU3RhdGUsXG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU3RhdGVTb3VyY2UsXG4gIHdpdGhIb29rcyxcbiAgd2l0aE1ldGhvZHMsXG4gIHdpdGhQcm9wcyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5cbmV4cG9ydCB0eXBlIFB1YmxpY01ldGhvZHMgPSB7XG4gIHJlc2V0U3RhdGUoKTogdm9pZDtcbn07XG5cbi8qKlxuICogQWRkcyBhIGByZXNldFN0YXRlYCBtZXRob2QgdG8gdGhlIHN0b3JlLCB3aGljaCByZXNldHMgdGhlIHN0YXRlXG4gKiB0byB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAqXG4gKiBJZiB5b3Ugd2FudCB0byBzZXQgYSBjdXN0b20gaW5pdGlhbCBzdGF0ZSwgeW91IGNhbiB1c2Uge0BsaW5rIHNldFJlc2V0U3RhdGV9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc2V0KCkge1xuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhQcm9wcygoKSA9PiAoeyBfcmVzZXRTdGF0ZTogeyB2YWx1ZToge30gfSB9KSksXG4gICAgd2l0aE1ldGhvZHMoKHN0b3JlKTogUHVibGljTWV0aG9kcyA9PiB7XG4gICAgICAvLyB3b3JrYXJvdW5kIHRvIFRTIGV4Y2Vzc2l2ZSBwcm9wZXJ0eSBjaGVja1xuICAgICAgY29uc3QgbWV0aG9kcyA9IHtcbiAgICAgICAgcmVzZXRTdGF0ZSgpIHtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBzdG9yZS5fcmVzZXRTdGF0ZS52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIF9fc2V0UmVzZXRTdGF0ZV9fKHN0YXRlOiBvYmplY3QpIHtcbiAgICAgICAgICBzdG9yZS5fcmVzZXRTdGF0ZS52YWx1ZSA9IHN0YXRlO1xuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG1ldGhvZHM7XG4gICAgfSksXG4gICAgd2l0aEhvb2tzKChzdG9yZSkgPT4gKHtcbiAgICAgIG9uSW5pdCgpIHtcbiAgICAgICAgc3RvcmUuX3Jlc2V0U3RhdGUudmFsdWUgPSBnZXRTdGF0ZShzdG9yZSk7XG4gICAgICB9LFxuICAgIH0pKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSByZXNldCBzdGF0ZSBvZiB0aGUgc3RvcmUgdG8gdGhlIGdpdmVuIHN0YXRlLlxuICpcbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3RvcmUgaXMgbm90IGNvbmZpZ3VyZWQgd2l0aCB7QGxpbmsgd2l0aFJlc2V0fS5cbiAqIEBwYXJhbSBzdG9yZSB0aGUgaW5zdGFuY2Ugb2YgYSBTaWduYWxTdG9yZVxuICogQHBhcmFtIHN0YXRlIHRoZSBzdGF0ZSB0byBzZXQgYXMgdGhlIHJlc2V0IHN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZXNldFN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RvcmU6IFN0YXRlU291cmNlPFN0YXRlPixcbiAgc3RhdGU6IFN0YXRlLFxuKTogdm9pZCB7XG4gIGlmICghKCdfX3NldFJlc2V0U3RhdGVfXycgaW4gc3RvcmUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBzZXQgcmVzZXQgc3RhdGUsIHNpbmNlIHN0b3JlIGlzIG5vdCBjb25maWd1cmVkIHdpdGggd2l0aFJlc2V0KCknLFxuICAgICk7XG4gIH1cbiAgKHN0b3JlLl9fc2V0UmVzZXRTdGF0ZV9fIGFzIChzdGF0ZTogU3RhdGUpID0+IHZvaWQpKHN0YXRlKTtcbn1cbiJdfQ==","import { isSignal, signal, untracked } from '@angular/core';\nimport { patchState, signalStoreFeature, watchState, withComputed, withHooks, withMethods, } from '@ngrx/signals';\nimport { capitalize } from './with-data-service';\nconst defaultOptions = {\n maxStackSize: 100,\n keys: [],\n skip: 0,\n};\nexport function getUndoRedoKeys(collections) {\n if (collections) {\n return collections.flatMap((c) => [\n `${c}EntityMap`,\n `${c}Ids`,\n `selected${capitalize(c)}Ids`,\n `${c}Filter`,\n ]);\n }\n return ['entityMap', 'ids', 'selectedIds', 'filter'];\n}\nexport function withUndoRedo(options) {\n let previous = null;\n let skipOnce = false;\n const normalized = {\n ...defaultOptions,\n ...options,\n };\n //\n // Design Decision: This feature has its own\n // internal state.\n //\n const undoStack = [];\n const redoStack = [];\n const canUndo = signal(false, ...(ngDevMode ? [{ debugName: \"canUndo\" }] : []));\n const canRedo = signal(false, ...(ngDevMode ? [{ debugName: \"canRedo\" }] : []));\n const updateInternal = () => {\n canUndo.set(undoStack.length !== 0);\n canRedo.set(redoStack.length !== 0);\n };\n const keys = [...getUndoRedoKeys(normalized.collections), ...normalized.keys];\n return signalStoreFeature(withComputed(() => ({\n canUndo: canUndo.asReadonly(),\n canRedo: canRedo.asReadonly(),\n })), withMethods((store) => ({\n undo() {\n const item = undoStack.pop();\n if (item && previous) {\n redoStack.push(previous);\n }\n if (item) {\n skipOnce = true;\n patchState(store, item);\n previous = item;\n }\n updateInternal();\n },\n redo() {\n const item = redoStack.pop();\n if (item && previous) {\n undoStack.push(previous);\n }\n if (item) {\n skipOnce = true;\n patchState(store, item);\n previous = item;\n }\n updateInternal();\n },\n clearStack() {\n undoStack.splice(0);\n redoStack.splice(0);\n previous = null;\n updateInternal();\n },\n })), withHooks({\n onInit(store) {\n watchState(store, () => {\n const cand = keys.reduce((acc, key) => {\n const s = store[key];\n if (s && isSignal(s)) {\n return {\n ...acc,\n [key]: s(),\n };\n }\n return acc;\n }, {});\n if (normalized.skip > 0) {\n normalized.skip--;\n return;\n }\n if (skipOnce) {\n skipOnce = false;\n return;\n }\n //\n // Deep Comparison to prevent duplicated entries\n // on the stack. This can e.g. happen after an undo\n // if the component sends back the undone filter\n // to the store.\n //\n if (JSON.stringify(cand) === JSON.stringify(previous)) {\n return;\n }\n // Clear redoStack after recorded action\n redoStack.splice(0);\n if (previous) {\n undoStack.push(previous);\n }\n if (redoStack.length > normalized.maxStackSize) {\n undoStack.unshift();\n }\n previous = cand;\n // Don't propogate current reactive context\n untracked(() => updateInternal());\n });\n },\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC11bmRvLXJlZG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtdW5kby1yZWRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBSUwsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixVQUFVLEVBQ1YsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBV2pELE1BQU0sY0FBYyxHQUE4QjtJQUNoRCxZQUFZLEVBQUUsR0FBRztJQUNqQixJQUFJLEVBQUUsRUFBRTtJQUNSLElBQUksRUFBRSxDQUFDO0NBQ1IsQ0FBQztBQUVGLE1BQU0sVUFBVSxlQUFlLENBQUMsV0FBc0I7SUFDcEQsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQixPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxXQUFXO1lBQ2YsR0FBRyxDQUFDLEtBQUs7WUFDVCxXQUFXLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSztZQUM3QixHQUFHLENBQUMsUUFBUTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQW9CRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixPQUFnQztJQWVoQyxJQUFJLFFBQVEsR0FBcUIsSUFBSSxDQUFDO0lBQ3RDLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztJQUVyQixNQUFNLFVBQVUsR0FBRztRQUNqQixHQUFHLGNBQWM7UUFDakIsR0FBRyxPQUFPO0tB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QUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUVQLElBQUksVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDeEIsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNsQixPQUFPO2dCQUNULENBQUM7Z0JBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUNqQixPQUFPO2dCQUNULENBQUM7Z0JBRUQsRUFBRTtnQkFDRixnREFBZ0Q7Z0JBQ2hELG1EQUFtRDtnQkFDbkQsZ0RBQWdEO2dCQUNoRCxnQkFBZ0I7Z0JBQ2hCLEVBQUU7Z0JBQ0YsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDdEQsT0FBTztnQkFDVCxDQUFDO2dCQUVELHdDQUF3QztnQkFDeEMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFcEIsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQixDQUFDO2dCQUVELElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQy9DLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztnQkFFRCxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUVoQiwyQ0FBMkM7Z0JBQzNDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUMsQ0FDSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCwgaXNTaWduYWwsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBwYXRjaFN0YXRlLFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIHdhdGNoU3RhdGUsXG4gIHdpdGhDb21wdXRlZCxcbiAgd2l0aEhvb2tzLFxuICB3aXRoTWV0aG9kcyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBjYXBpdGFsaXplIH0gZnJvbSAnLi93aXRoLWRhdGEtc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIFN0YWNrSXRlbSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgdHlwZSBOb3JtYWxpemVkVW5kb1JlZG9PcHRpb25zID0ge1xuICBtYXhTdGFja1NpemU6IG51bWJlcjtcbiAgY29sbGVjdGlvbnM/OiBzdHJpbmdbXTtcbiAga2V5czogc3RyaW5nW107XG4gIHNraXA6IG51bWJlcjtcbn07XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOb3JtYWxpemVkVW5kb1JlZG9PcHRpb25zID0ge1xuICBtYXhTdGFja1NpemU6IDEwMCxcbiAga2V5czogW10sXG4gIHNraXA6IDAsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5kb1JlZG9LZXlzKGNvbGxlY3Rpb25zPzogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIGlmIChjb2xsZWN0aW9ucykge1xuICAgIHJldHVybiBjb2xsZWN0aW9ucy5mbGF0TWFwKChjKSA9PiBbXG4gICAgICBgJHtjfUVudGl0eU1hcGAsXG4gICAgICBgJHtjfUlkc2AsXG4gICAgICBgc2VsZWN0ZWQke2NhcGl0YWxpemUoYyl9SWRzYCxcbiAgICAgIGAke2N9RmlsdGVyYCxcbiAgICBdKTtcbiAgfVxuICByZXR1cm4gWydlbnRpdHlNYXAnLCAnaWRzJywgJ3NlbGVjdGVkSWRzJywgJ2ZpbHRlciddO1xufVxuXG50eXBlIE5vbk5ldmVyPFQ+ID0gVCBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBUO1xuXG50eXBlIEV4dHJhY3RFbnRpdHlDb2xsZWN0aW9uPFQ+ID0gVCBleHRlbmRzIGAke2luZmVyIFV9RW50aXRpZXNgID8gVSA6IG5ldmVyO1xuXG50eXBlIEV4dHJhY3RFbnRpdHlDb2xsZWN0aW9uczxTdG9yZSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4gPVxuICBOb25OZXZlcjxcbiAgICB7XG4gICAgICBbSyBpbiBrZXlvZiBTdG9yZVsncHJvcHMnXV06IEV4dHJhY3RFbnRpdHlDb2xsZWN0aW9uPEs+O1xuICAgIH1ba2V5b2YgU3RvcmVbJ3Byb3BzJ11dXG4gID47XG5cbnR5cGUgT3B0aW9uc0ZvclN0YXRlPFN0b3JlIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PiA9IFBhcnRpYWw8XG4gIE9taXQ8Tm9ybWFsaXplZFVuZG9SZWRvT3B0aW9ucywgJ2NvbGxlY3Rpb25zJyB8ICdrZXlzJz5cbj4gJiB7XG4gIGNvbGxlY3Rpb25zPzogRXh0cmFjdEVudGl0eUNvbGxlY3Rpb25zPFN0b3JlPltdO1xuICBrZXlzPzogKGtleW9mIFN0b3JlWydzdGF0ZSddKVtdO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhVbmRvUmVkbzxJbnB1dCBleHRlbmRzIEVtcHR5RmVhdHVyZVJlc3VsdD4oXG4gIG9wdGlvbnM/OiBPcHRpb25zRm9yU3RhdGU8SW5wdXQ+LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBJbnB1dCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYge1xuICAgIHByb3BzOiB7XG4gICAgICBjYW5VbmRvOiBTaWduYWw8Ym9vbGVhbj47XG4gICAgICBjYW5SZWRvOiBTaWduYWw8Ym9vbGVhbj47XG4gICAgfTtcbiAgICBtZXRob2RzOiB7XG4gICAgICB1bmRvOiAoKSA9PiB2b2lkO1xuICAgICAgcmVkbzogKCkgPT4gdm9pZDtcbiAgICAgIGNsZWFyU3RhY2s6ICgpID0+IHZvaWQ7XG4gICAgfTtcbiAgfVxuPiB7XG4gIGxldCBwcmV2aW91czogU3RhY2tJdGVtIHwgbnVsbCA9IG51bGw7XG4gIGxldCBza2lwT25jZSA9IGZhbHNlO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZWQgPSB7XG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9ucyxcbiAgfTtcblxuICAvL1xuICAvLyBEZXNpZ24gRGVjaXNpb246IFRoaXMgZmVhdHVyZSBoYXMgaXRzIG93blxuICAvLyBpbnRlcm5hbCBzdGF0ZS5cbiAgLy9cblxuICBjb25zdCB1bmRvU3RhY2s6IFN0YWNrSXRlbVtdID0gW107XG4gIGNvbnN0IHJlZG9TdGFjazogU3RhY2tJdGVtW10gPSBbXTtcblxuICBjb25zdCBjYW5VbmRvID0gc2lnbmFsKGZhbHNlKTtcbiAgY29uc3QgY2FuUmVkbyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3QgdXBkYXRlSW50ZXJuYWwgPSAoKSA9PiB7XG4gICAgY2FuVW5kby5zZXQodW5kb1N0YWNrLmxlbmd0aCAhPT0gMCk7XG4gICAgY2FuUmVkby5zZXQocmVkb1N0YWNrLmxlbmd0aCAhPT0gMCk7XG4gIH07XG5cbiAgY29uc3Qga2V5cyA9IFsuLi5nZXRVbmRvUmVkb0tleXMobm9ybWFsaXplZC5jb2xsZWN0aW9ucyksIC4uLm5vcm1hbGl6ZWQua2V5c107XG5cbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoQ29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIGNhblVuZG86IGNhblVuZG8uYXNSZWFkb25seSgpLFxuICAgICAgY2FuUmVkbzogY2FuUmVkby5hc1JlYWRvbmx5KCksXG4gICAgfSkpLFxuICAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAgICAgIHVuZG8oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB1bmRvU3RhY2sucG9wKCk7XG5cbiAgICAgICAgaWYgKGl0ZW0gJiYgcHJldmlvdXMpIHtcbiAgICAgICAgICByZWRvU3RhY2sucHVzaChwcmV2aW91cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIHNraXBPbmNlID0gdHJ1ZTtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBpdGVtKTtcbiAgICAgICAgICBwcmV2aW91cyA9IGl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVJbnRlcm5hbCgpO1xuICAgICAgfSxcbiAgICAgIHJlZG8oKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSByZWRvU3RhY2sucG9wKCk7XG5cbiAgICAgICAgaWYgKGl0ZW0gJiYgcHJldmlvdXMpIHtcbiAgICAgICAgICB1bmRvU3RhY2sucHVzaChwcmV2aW91cyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgIHNraXBPbmNlID0gdHJ1ZTtcbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCBpdGVtKTtcbiAgICAgICAgICBwcmV2aW91cyA9IGl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVJbnRlcm5hbCgpO1xuICAgICAgfSxcbiAgICAgIGNsZWFyU3RhY2soKTogdm9pZCB7XG4gICAgICAgIHVuZG9TdGFjay5zcGxpY2UoMCk7XG4gICAgICAgIHJlZG9TdGFjay5zcGxpY2UoMCk7XG4gICAgICAgIHByZXZpb3VzID0gbnVsbDtcbiAgICAgICAgdXBkYXRlSW50ZXJuYWwoKTtcbiAgICAgIH0sXG4gICAgfSkpLFxuICAgIHdpdGhIb29rcyh7XG4gICAgICBvbkluaXQoc3RvcmUpIHtcbiAgICAgICAgd2F0Y2hTdGF0ZShzdG9yZSwgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhbmQgPSBrZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHMgPSAoc3RvcmUgYXMgUmVjb3JkPHN0cmluZyB8IGtleW9mIElucHV0WydzdGF0ZSddLCB1bmtub3duPilbXG4gICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChzICYmIGlzU2lnbmFsKHMpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIFtrZXldOiBzKCksXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgIGlmIChub3JtYWxpemVkLnNraXAgPiAwKSB7XG4gICAgICAgICAgICBub3JtYWxpemVkLnNraXAtLTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc2tpcE9uY2UpIHtcbiAgICAgICAgICAgIHNraXBPbmNlID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBEZWVwIENvbXBhcmlzb24gdG8gcHJldmVudCBkdXBsaWNhdGVkIGVudHJpZXNcbiAgICAgICAgICAvLyBvbiB0aGUgc3RhY2suIFRoaXMgY2FuIGUuZy4gaGFwcGVuIGFmdGVyIGFuIHVuZG9cbiAgICAgICAgICAvLyBpZiB0aGUgY29tcG9uZW50IHNlbmRzIGJhY2sgdGhlIHVuZG9uZSBmaWx0ZXJcbiAgICAgICAgICAvLyB0byB0aGUgc3RvcmUuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoY2FuZCkgPT09IEpTT04uc3RyaW5naWZ5KHByZXZpb3VzKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENsZWFyIHJlZG9TdGFjayBhZnRlciByZWNvcmRlZCBhY3Rpb25cbiAgICAgICAgICByZWRvU3RhY2suc3BsaWNlKDApO1xuXG4gICAgICAgICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgICAgICB1bmRvU3RhY2sucHVzaChwcmV2aW91cyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlZG9TdGFjay5sZW5ndGggPiBub3JtYWxpemVkLm1heFN0YWNrU2l6ZSkge1xuICAgICAgICAgICAgdW5kb1N0YWNrLnVuc2hpZnQoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwcmV2aW91cyA9IGNhbmQ7XG5cbiAgICAgICAgICAvLyBEb24ndCBwcm9wb2dhdGUgY3VycmVudCByZWFjdGl2ZSBjb250ZXh0XG4gICAgICAgICAgdW50cmFja2VkKCgpID0+IHVwZGF0ZUludGVybmFsKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSksXG4gICk7XG59XG4iXX0=","/**\n * Deep freezes a state object along its properties with primitive values\n * on the first level.\n *\n * The reason for this is that the final state is a merge of all\n * root properties of all states, i.e. `withState`,....\n *\n * Since the root object will not be part of the state (shadow clone),\n * we are not freezing it.\n */\nexport function deepFreeze(target, \n// if empty all properties will be frozen\npropertyNamesToBeFrozen, \n// also means that we are on the first level\nisRoot = true) {\n const runPropertyNameCheck = propertyNamesToBeFrozen.length > 0;\n for (const key of Reflect.ownKeys(target)) {\n if (runPropertyNameCheck && !propertyNamesToBeFrozen.includes(key)) {\n continue;\n }\n const propValue = target[key];\n if (isRecordLike(propValue) && !Object.isFrozen(propValue)) {\n Object.freeze(propValue);\n deepFreeze(propValue, [], false);\n }\n else if (isRoot) {\n Object.defineProperty(target, key, {\n value: propValue,\n writable: false,\n configurable: false,\n });\n }\n }\n}\nfunction isRecordLike(target) {\n return typeof target === 'object' && target !== null;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVlcC1mcmVlemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2ltbXV0YWJsZS1zdGF0ZS9kZWVwLWZyZWV6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFFSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixNQUFTO0FBQ1QseUNBQXlDO0FBQ3pDLHVCQUE0QztBQUM1Qyw0Q0FBNEM7QUFDNUMsTUFBTSxHQUFHLElBQUk7SUFFYixNQUFNLG9CQUFvQixHQUFHLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDaEUsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUMsSUFBSSxvQkFBb0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ25FLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzNELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekIsVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksTUFBTSxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO2dCQUNqQyxLQUFLLEVBQUUsU0FBUztnQkFDaEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsWUFBWSxFQUFFLEtBQUs7YUFDcEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQ25CLE1BQWU7SUFFZixPQUFPLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDO0FBQ3ZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlZXAgZnJlZXplcyBhIHN0YXRlIG9iamVjdCBhbG9uZyBpdHMgcHJvcGVydGllcyB3aXRoIHByaW1pdGl2ZSB2YWx1ZXNcbiAqIG9uIHRoZSBmaXJzdCBsZXZlbC5cbiAqXG4gKiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgdGhlIGZpbmFsIHN0YXRlIGlzIGEgbWVyZ2Ugb2YgYWxsXG4gKiByb290IHByb3BlcnRpZXMgb2YgYWxsIHN0YXRlcywgaS5lLiBgd2l0aFN0YXRlYCwuLi4uXG4gKlxuICogU2luY2UgdGhlIHJvb3Qgb2JqZWN0IHdpbGwgbm90IGJlIHBhcnQgb2YgdGhlIHN0YXRlIChzaGFkb3cgY2xvbmUpLFxuICogd2UgYXJlIG5vdCBmcmVlemluZyBpdC5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZGVlcEZyZWV6ZTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4+KFxuICB0YXJnZXQ6IFQsXG4gIC8vIGlmIGVtcHR5IGFsbCBwcm9wZXJ0aWVzIHdpbGwgYmUgZnJvemVuXG4gIHByb3BlcnR5TmFtZXNUb0JlRnJvemVuOiAoc3RyaW5nIHwgc3ltYm9sKVtdLFxuICAvLyBhbHNvIG1lYW5zIHRoYXQgd2UgYXJlIG9uIHRoZSBmaXJzdCBsZXZlbFxuICBpc1Jvb3QgPSB0cnVlLFxuKTogdm9pZCB7XG4gIGNvbnN0IHJ1blByb3BlcnR5TmFtZUNoZWNrID0gcHJvcGVydHlOYW1lc1RvQmVGcm96ZW4ubGVuZ3RoID4gMDtcbiAgZm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKHRhcmdldCkpIHtcbiAgICBpZiAocnVuUHJvcGVydHlOYW1lQ2hlY2sgJiYgIXByb3BlcnR5TmFtZXNUb0JlRnJvemVuLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BWYWx1ZSA9IHRhcmdldFtrZXldO1xuICAgIGlmIChpc1JlY29yZExpa2UocHJvcFZhbHVlKSAmJiAhT2JqZWN0LmlzRnJvemVuKHByb3BWYWx1ZSkpIHtcbiAgICAgIE9iamVjdC5mcmVlemUocHJvcFZhbHVlKTtcbiAgICAgIGRlZXBGcmVlemUocHJvcFZhbHVlLCBbXSwgZmFsc2UpO1xuICAgIH0gZWxzZSBpZiAoaXNSb290KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgICAgdmFsdWU6IHByb3BWYWx1ZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzUmVjb3JkTGlrZShcbiAgdGFyZ2V0OiB1bmtub3duLFxuKTogdGFyZ2V0IGlzIFJlY29yZDxzdHJpbmcgfCBzeW1ib2wsIHVua25vd24+IHtcbiAgcmV0dXJuIHR5cGVvZiB0YXJnZXQgPT09ICdvYmplY3QnICYmIHRhcmdldCAhPT0gbnVsbDtcbn1cbiJdfQ==","import { isDevMode as ngIsInDevMode } from '@angular/core';\n// necessary wrapper function to test prod mode\nexport function isDevMode() {\n return ngIsInDevMode();\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZGV2LW1vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2ltbXV0YWJsZS1zdGF0ZS9pcy1kZXYtbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxJQUFJLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCwrQ0FBK0M7QUFDL0MsTUFBTSxVQUFVLFNBQVM7SUFDdkIsT0FBTyxhQUFhLEVBQUUsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEZXZNb2RlIGFzIG5nSXNJbkRldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gbmVjZXNzYXJ5IHdyYXBwZXIgZnVuY3Rpb24gdG8gdGVzdCBwcm9kIG1vZGVcbmV4cG9ydCBmdW5jdGlvbiBpc0Rldk1vZGUoKSB7XG4gIHJldHVybiBuZ0lzSW5EZXZNb2RlKCk7XG59XG4iXX0=","import { getState, signalStoreFeature, watchState, withHooks, withState, } from '@ngrx/signals';\nimport { deepFreeze } from './deep-freeze';\nimport { isDevMode } from './is-dev-mode';\nexport function withImmutableState(stateOrFactory, options) {\n const immutableState = typeof stateOrFactory === 'function' ? stateOrFactory() : stateOrFactory;\n const stateKeys = Reflect.ownKeys(immutableState);\n const applyFreezing = isDevMode() || options?.enableInProduction === true;\n return signalStoreFeature(withState(immutableState), withHooks((store) => ({\n onInit() {\n if (!applyFreezing) {\n return;\n }\n /**\n * `immutableState` will be initially frozen. That is because\n * of potential mutations outside the SignalStore\n *\n * ```ts\n * const initialState = {user: {id: 1}};\n * signalStore(withImmutableState(initialState));\n *\n * initialState.user.id = 2; // must throw immutability\n * ```\n */\n deepFreeze(getState(store), stateKeys);\n watchState(store, (state) => {\n deepFreeze(state, stateKeys);\n });\n },\n })));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1pbW11dGFibGUtc3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL2ltbXV0YWJsZS1zdGF0ZS93aXRoLWltbXV0YWJsZS1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsUUFBUSxFQUNSLGtCQUFrQixFQUdsQixVQUFVLEVBQ1YsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFpRzFDLE1BQU0sVUFBVSxrQkFBa0IsQ0FDaEMsY0FBcUMsRUFDckMsT0FBMEM7SUFLMUMsTUFBTSxjQUFjLEdBQ2xCLE9BQU8sY0FBYyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztJQUMzRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRWxELE1BQU0sYUFBYSxHQUFHLFNBQVMsRUFBRSxJQUFJLE9BQU8sRUFBRSxrQkFBa0IsS0FBSyxJQUFJLENBQUM7SUFDMUUsT0FBTyxrQkFBa0IsQ0FDdkIsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUN6QixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEIsTUFBTTtZQUNKLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkIsT0FBTztZQUNULENBQUM7WUFDRDs7Ozs7Ozs7OztlQVVHO1lBQ0gsVUFBVSxDQUNSLFFBQVEsQ0FBQyxLQUFLLENBQXFDLEVBQ25ELFNBQVMsQ0FDVixDQUFDO1lBRUYsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMxQixVQUFVLENBQUMsS0FBeUMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDLENBQUMsQ0FDSixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVtcHR5RmVhdHVyZVJlc3VsdCxcbiAgZ2V0U3RhdGUsXG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIHdhdGNoU3RhdGUsXG4gIHdpdGhIb29rcyxcbiAgd2l0aFN0YXRlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGRlZXBGcmVlemUgfSBmcm9tICcuL2RlZXAtZnJlZXplJztcbmltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJy4vaXMtZGV2LW1vZGUnO1xuXG4vKipcbiAqIFN0YXJ0aW5nIGZyb20gdjIwLCB0aGUgcm9vdCBwcm9wZXJ0aWVzIG9mIHRoZSBzdGF0ZSBvYmplY3RcbiAqIGFyZSBhbGwgb2YgdHlwZSBgV3JpdGFibGVTaWduYWxgLlxuICpcbiAqIFRoYXQgbWVhbnMsIHdlIGNhbm5vdCBmcmVlemUgcm9vdCBwcm9wZXJ0aWVzLCB3aGljaCBhcmUgb2YgYVxuICogcHJpbWl0aXZlIGRhdGEgdHlwZS5cbiAqXG4gKiBUaGlzIGlzIGEgYnJlYWtpbmcgY2hhbmdlLCBiZWNhdXNlIGluIHYxOSB0aGUgc3RhdGUgd2FzIGEgU2lnbmFsLlxuICogV2UgaGFkIHRoZSBwb3NzaWJpbGl0eSB0byBmcmVlemUgdGhhdCBTaWduYWwnc1xuICogb2JqZWN0IGFuZCBjb3VsZCB0aGVyZWZvcmUgcHJvdmlkZSBpbW11dGFiaWxpdHkgZm9yXG4gKiByb290IHByb3BlcnRpZXMgb2YgcHJpbWl0aXZlIGRhdGEgdHlwZXMuXG4gKlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IHN0YXRlID0ge1xuICogICBpZDogMSwgLy8gd2FzIGZyb3plbiBpbiB2MTksIGJ1dCBub3QgaW4gPj0gdjIwXG4gKiAgIGFkZHJlc3M6IHtcbiAqICAgICBzdHJlZXQ6ICdNYWluIFN0JyxcbiAqICAgICBjaXR5OiAnU3ByaW5nZmllbGQnLFxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIFByZXZlbnRzIG11dGF0aW9uIG9mIHRoZSBzdGF0ZS5cbiAqXG4gKiBUaGlzIGlzIGRvbmUgYnkgYXBwbHlpbmcgYE9iamVjdC5mcmVlemVgIHRvIGVhY2ggcm9vdFxuICogcHJvcGVydHkgb2YgdGhlIHN0YXRlLiBBbnkgbXV0YWJsZSBjaGFuZ2Ugd2l0aGluXG4gKiBvciBvdXRzaWRlIHRoZSBgU2lnbmFsU3RvcmVgIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gKlxuICogUm9vdCBwcm9wZXJ0aWVzIG9mIHRoZSBzdGF0ZSBoYXZpbmcgYSBwcmltaXRpdmUgZGF0YSB0eXBlXG4gKiBhcmUgbm90IHN1cHBvcnRlZC5cbiAqXG4gKiAgKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgc3RhdGUgPSB7XG4gKiAgIC8vIOKblO+4jyBhcmUgbm90IGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgcG9zc2libGVcbiAqICAgaWQ6IDEsXG4gKlxuICogICAvLyDinIUgYXJlIGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgdGhyb3dcbiAqICAgYWRkcmVzczoge1xuICogICAgIHN0cmVldDogJ01haW4gU3QnLFxuICogICAgIGNpdHk6ICdTcHJpbmdmaWVsZCcsXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdGF0ZSB0aGUgc3RhdGUgb2JqZWN0XG4gKiBAcGFyYW0gb3B0aW9ucyBlbmFibGUgcHJvdGVjdGlvbiBpbiBwcm9kdWN0aW9uIChkZWZhdWx0OiBmYWxzZSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhJbW11dGFibGVTdGF0ZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0YXRlOiBTdGF0ZSxcbiAgb3B0aW9ucz86IHsgZW5hYmxlSW5Qcm9kdWN0aW9uPzogYm9vbGVhbiB9LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHsgc3RhdGU6IFN0YXRlIH1cbj47XG4vKipcbiAqIFByZXZlbnRzIG11dGF0aW9uIG9mIHRoZSBzdGF0ZS5cbiAqXG4gKiBUaGlzIGlzIGRvbmUgYnkgYXBwbHlpbmcgYE9iamVjdC5mcmVlemVgIHRvIGVhY2ggcm9vdFxuICogcHJvcGVydHkgb2YgdGhlIHN0YXRlLiBBbnkgbXV0YWJsZSBjaGFuZ2Ugd2l0aGluXG4gKiBvciBvdXRzaWRlIHRoZSBgU2lnbmFsU3RvcmVgIHdpbGwgdGhyb3cgYW4gZXJyb3IuXG4gKlxuICogUm9vdCBwcm9wZXJ0aWVzIG9mIHRoZSBzdGF0ZSBoYXZpbmcgYSBwcmltaXRpdmUgZGF0YSB0eXBlXG4gKiBhcmUgbm90IHN1cHBvcnRlZC5cbiAqXG4gKiAgKiBGb3IgZXhhbXBsZTpcbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgc3RhdGUgPSB7XG4gKiAgIC8vIOKblO+4jyBhcmUgbm90IGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgcG9zc2libGVcbiAqICAgaWQ6IDEsXG4gKlxuICogICAvLyDinIUgYXJlIGZyb3plbiAtPiBtdXRhYmxlIGNoYW5nZXMgdGhyb3dcbiAqICAgYWRkcmVzczoge1xuICogICAgIHN0cmVldDogJ01haW4gU3QnLFxuICogICAgIGNpdHk6ICdTcHJpbmdmaWVsZCcsXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdGF0ZUZhY3RvcnkgYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIHN0YXRlIG9iamVjdFxuICogQHBhcmFtIG9wdGlvbnMgZW5hYmxlIHByb3RlY3Rpb24gaW4gcHJvZHVjdGlvbiAoZGVmYXVsdDogZmFsc2UpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoSW1tdXRhYmxlU3RhdGU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBzdGF0ZUZhY3Rvcnk6ICgpID0+IFN0YXRlLFxuICBvcHRpb25zPzogeyBlbmFibGVJblByb2R1Y3Rpb24/OiBib29sZWFuIH0sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBzdGF0ZTogU3RhdGUgfVxuPjtcbmV4cG9ydCBmdW5jdGlvbiB3aXRoSW1tdXRhYmxlU3RhdGU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBzdGF0ZU9yRmFjdG9yeTogU3RhdGUgfCAoKCkgPT4gU3RhdGUpLFxuICBvcHRpb25zPzogeyBlbmFibGVJblByb2R1Y3Rpb24/OiBib29sZWFuIH0sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0ICYgeyBzdGF0ZTogU3RhdGUgfVxuPiB7XG4gIGNvbnN0IGltbXV0YWJsZVN0YXRlID1cbiAgICB0eXBlb2Ygc3RhdGVPckZhY3RvcnkgPT09ICdmdW5jdGlvbicgPyBzdGF0ZU9yRmFjdG9yeSgpIDogc3RhdGVPckZhY3Rvcnk7XG4gIGNvbnN0IHN0YXRlS2V5cyA9IFJlZmxlY3Qub3duS2V5cyhpbW11dGFibGVTdGF0ZSk7XG5cbiAgY29uc3QgYXBwbHlGcmVlemluZyA9IGlzRGV2TW9kZSgpIHx8IG9wdGlvbnM/LmVuYWJsZUluUHJvZHVjdGlvbiA9PT0gdHJ1ZTtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoU3RhdGUoaW1tdXRhYmxlU3RhdGUpLFxuICAgIHdpdGhIb29rcygoc3RvcmUpID0+ICh7XG4gICAgICBvbkluaXQoKSB7XG4gICAgICAgIGlmICghYXBwbHlGcmVlemluZykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogYGltbXV0YWJsZVN0YXRlYCB3aWxsIGJlIGluaXRpYWxseSBmcm96ZW4uIFRoYXQgaXMgYmVjYXVzZVxuICAgICAgICAgKiBvZiBwb3RlbnRpYWwgbXV0YXRpb25zIG91dHNpZGUgdGhlIFNpZ25hbFN0b3JlXG4gICAgICAgICAqXG4gICAgICAgICAqIGBgYHRzXG4gICAgICAgICAqIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHt1c2VyOiB7aWQ6IDF9fTtcbiAgICAgICAgICogc2lnbmFsU3RvcmUod2l0aEltbXV0YWJsZVN0YXRlKGluaXRpYWxTdGF0ZSkpO1xuICAgICAgICAgKlxuICAgICAgICAgKiBpbml0aWFsU3RhdGUudXNlci5pZCA9IDI7IC8vIG11c3QgdGhyb3cgaW1tdXRhYmlsaXR5XG4gICAgICAgICAqIGBgYFxuICAgICAgICAgKi9cbiAgICAgICAgZGVlcEZyZWV6ZShcbiAgICAgICAgICBnZXRTdGF0ZShzdG9yZSkgYXMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4sXG4gICAgICAgICAgc3RhdGVLZXlzLFxuICAgICAgICApO1xuXG4gICAgICAgIHdhdGNoU3RhdGUoc3RvcmUsIChzdGF0ZSkgPT4ge1xuICAgICAgICAgIGRlZXBGcmVlemUoc3RhdGUgYXMgUmVjb3JkPHN0cmluZyB8IHN5bWJvbCwgdW5rbm93bj4sIHN0YXRlS2V5cyk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICB9KSksXG4gICk7XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport const keyPath = 'ngrxToolkitKeyPath';\nexport const dbName = 'ngrxToolkitDb';\nexport const storeName = 'ngrxToolkitStore';\nexport const VERSION = 1;\nexport class IndexedDBService {\n /**\n * write to indexedDB\n * @param key\n * @param data\n */\n async setItem(key, data) {\n const db = await this.openDB();\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n store.put({\n [keyPath]: key,\n value: data,\n });\n return new Promise((resolve, reject) => {\n tx.oncomplete = () => {\n db.close();\n resolve();\n };\n tx.onerror = () => {\n db.close();\n reject();\n };\n });\n }\n /**\n * read from indexedDB\n * @param key\n */\n async getItem(key) {\n const db = await this.openDB();\n const tx = db.transaction(storeName, 'readonly');\n const store = tx.objectStore(storeName);\n const request = store.get(key);\n return new Promise((resolve, reject) => {\n request.onsuccess = () => {\n db.close();\n // localStorage(sessionStorage) returns null if the key does not exist\n // Similarly, indexedDB should return null\n if (request.result === undefined) {\n resolve(null);\n }\n resolve(request.result?.['value']);\n };\n request.onerror = () => {\n db.close();\n reject();\n };\n });\n }\n /**\n * delete indexedDB\n * @param key\n */\n async clear(key) {\n const db = await this.openDB();\n const tx = db.transaction(storeName, 'readwrite');\n const store = tx.objectStore(storeName);\n const request = store.delete(key);\n return new Promise((resolve, reject) => {\n request.onsuccess = () => {\n db.close();\n resolve();\n };\n request.onerror = () => {\n db.close();\n reject();\n };\n });\n }\n /**\n * open indexedDB\n */\n async openDB() {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(dbName, VERSION);\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(storeName)) {\n db.createObjectStore(storeName, { keyPath });\n }\n };\n request.onsuccess = () => {\n resolve(request.result);\n };\n request.onerror = () => {\n reject(request.error);\n };\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: IndexedDBService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: IndexedDBService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: IndexedDBService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZGRiLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3N0b3JhZ2Utc3luYy9pbnRlcm5hbC9pbmRleGVkZGIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQztBQUV0QyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFXLENBQVUsQ0FBQztBQUcxQyxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRS9CLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRWxELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNSLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRztZQUNkLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxFQUFFLENBQUMsVUFBVSxHQUFHLEdBQVMsRUFBRTtnQkFDekIsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDO1lBRUYs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LENBQUM7WUFFRixPQUFPLENBQUMsU0FBUyxHQUFHLEdBQVMsRUFBRTtnQkFDN0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQixDQUFDLENBQUM7WUFFRixPQUFPLENBQUMsT0FBTyxHQUFHLEdBQVMsRUFBRTtnQkFDM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBL0dVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTs7MkZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBrZXlQYXRoID0gJ25ncnhUb29sa2l0S2V5UGF0aCc7XG5cbmV4cG9ydCBjb25zdCBkYk5hbWUgPSAnbmdyeFRvb2xraXREYic7XG5cbmV4cG9ydCBjb25zdCBzdG9yZU5hbWUgPSAnbmdyeFRvb2xraXRTdG9yZSc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OOiBudW1iZXIgPSAxIGFzIGNvbnN0O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEluZGV4ZWREQlNlcnZpY2Uge1xuICAvKipcbiAgICogd3JpdGUgdG8gaW5kZXhlZERCXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIGRhdGFcbiAgICovXG4gIGFzeW5jIHNldEl0ZW0oa2V5OiBzdHJpbmcsIGRhdGE6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5vcGVuREIoKTtcblxuICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24oc3RvcmVOYW1lLCAncmVhZHdyaXRlJyk7XG5cbiAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKHN0b3JlTmFtZSk7XG5cbiAgICBzdG9yZS5wdXQoe1xuICAgICAgW2tleVBhdGhdOiBrZXksXG4gICAgICB2YWx1ZTogZGF0YSxcbiAgICB9KTtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0eC5vbmNvbXBsZXRlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICB0eC5vbmVycm9yID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICByZWplY3QoKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogcmVhZCBmcm9tIGluZGV4ZWREQlxuICAgKiBAcGFyYW0ga2V5XG4gICAqL1xuICBhc3luYyBnZXRJdGVtKGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLm9wZW5EQigpO1xuXG4gICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbihzdG9yZU5hbWUsICdyZWFkb25seScpO1xuXG4gICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZShzdG9yZU5hbWUpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLmdldChrZXkpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICAvLyBsb2NhbFN0b3JhZ2Uoc2Vzc2lvblN0b3JhZ2UpIHJldHVybnMgbnVsbCBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0XG4gICAgICAgIC8vIFNpbWlsYXJseSwgaW5kZXhlZERCIHNob3VsZCByZXR1cm4gbnVsbFxuICAgICAgICBpZiAocmVxdWVzdC5yZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZShyZXF1ZXN0LnJlc3VsdD8uWyd2YWx1ZSddKTtcbiAgICAgIH07XG5cbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgZGIuY2xvc2UoKTtcbiAgICAgICAgcmVqZWN0KCk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGRlbGV0ZSBpbmRleGVkREJcbiAgICogQHBhcmFtIGtleVxuICAgKi9cbiAgYXN5bmMgY2xlYXIoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkYiA9IGF3YWl0IHRoaXMub3BlbkRCKCk7XG5cbiAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKHN0b3JlTmFtZSwgJ3JlYWR3cml0ZScpO1xuXG4gICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZShzdG9yZU5hbWUpO1xuXG4gICAgY29uc3QgcmVxdWVzdCA9IHN0b3JlLmRlbGV0ZShrZXkpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICBkYi5jbG9zZSgpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuXG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIGRiLmNsb3NlKCk7XG4gICAgICAgIHJlamVjdCgpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvcGVuIGluZGV4ZWREQlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBvcGVuREIoKTogUHJvbWlzZTxJREJEYXRhYmFzZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lLCBWRVJTSU9OKTtcblxuICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRiID0gcmVxdWVzdC5yZXN1bHQ7XG5cbiAgICAgICAgaWYgKCFkYi5vYmplY3RTdG9yZU5hbWVzLmNvbnRhaW5zKHN0b3JlTmFtZSkpIHtcbiAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZShzdG9yZU5hbWUsIHsga2V5UGF0aCB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIHJlc29sdmUocmVxdWVzdC5yZXN1bHQpO1xuICAgICAgfTtcblxuICAgICAgcmVxdWVzdC5vbmVycm9yID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICByZWplY3QocmVxdWVzdC5lcnJvcik7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=","/**\n * AsyncFeatureResult is used as the public interface that users interact with\n * when calling `withIndexedDB`. It intentionally omits the internal SYNC_STATUS\n * property to avoid TypeScript error TS4058 (return type of public method\n * includes private type).\n *\n * For internal implementation, we use AsyncStoreForFactory which includes\n * the SYNC_STATUS property needed for state management.\n */\nexport const SYNC_STATUS = Symbol('SYNC_STATUS');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvaW50ZXJuYWwvbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZCQTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbXB0eUZlYXR1cmVSZXN1bHQsIFdyaXRhYmxlU3RhdGVTb3VyY2UgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IFN5bmNDb25maWcgfSBmcm9tICcuLi93aXRoLXN0b3JhZ2Utc3luYyc7XG5cbmV4cG9ydCB0eXBlIFN5bmNNZXRob2RzID0ge1xuICBjbGVhclN0b3JhZ2UoKTogdm9pZDtcbiAgcmVhZEZyb21TdG9yYWdlKCk6IHZvaWQ7XG4gIHdyaXRlVG9TdG9yYWdlKCk6IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBTeW5jRmVhdHVyZVJlc3VsdCA9IEVtcHR5RmVhdHVyZVJlc3VsdCAmIHtcbiAgbWV0aG9kczogU3luY01ldGhvZHM7XG59O1xuXG5leHBvcnQgdHlwZSBTeW5jU3RvcmVGb3JGYWN0b3J5PFN0YXRlIGV4dGVuZHMgb2JqZWN0PiA9XG4gIFdyaXRhYmxlU3RhdGVTb3VyY2U8U3RhdGU+O1xuXG5leHBvcnQgdHlwZSBTeW5jU3RvcmFnZVN0cmF0ZWd5PFN0YXRlIGV4dGVuZHMgb2JqZWN0PiA9ICgoXG4gIGNvbmZpZzogUmVxdWlyZWQ8U3luY0NvbmZpZzxTdGF0ZT4+LFxuICBzdG9yZTogU3luY1N0b3JlRm9yRmFjdG9yeTxTdGF0ZT4sXG4gIHVzZVN0dWJzOiBib29sZWFuLFxuKSA9PiBTeW5jTWV0aG9kcykgJiB7IHR5cGU6ICdzeW5jJyB9O1xuXG5leHBvcnQgdHlwZSBBc3luY01ldGhvZHMgPSB7XG4gIGNsZWFyU3RvcmFnZSgpOiBQcm9taXNlPHZvaWQ+O1xuICByZWFkRnJvbVN0b3JhZ2UoKTogUHJvbWlzZTx2b2lkPjtcbiAgd3JpdGVUb1N0b3JhZ2UoKTogUHJvbWlzZTx2b2lkPjtcbn07XG5cbi8qKlxuICogQXN5bmNGZWF0dXJlUmVzdWx0IGlzIHVzZWQgYXMgdGhlIHB1YmxpYyBpbnRlcmZhY2UgdGhhdCB1c2VycyBpbnRlcmFjdCB3aXRoXG4gKiB3aGVuIGNhbGxpbmcgYHdpdGhJbmRleGVkREJgLiBJdCBpbnRlbnRpb25hbGx5IG9taXRzIHRoZSBpbnRlcm5hbCBTWU5DX1NUQVRVU1xuICogcHJvcGVydHkgdG8gYXZvaWQgVHlwZVNjcmlwdCBlcnJvciBUUzQwNTggKHJldHVybiB0eXBlIG9mIHB1YmxpYyBtZXRob2RcbiAqIGluY2x1ZGVzIHByaXZhdGUgdHlwZSkuXG4gKlxuICogRm9yIGludGVybmFsIGltcGxlbWVudGF0aW9uLCB3ZSB1c2UgQXN5bmNTdG9yZUZvckZhY3Rvcnkgd2hpY2ggaW5jbHVkZXNcbiAqIHRoZSBTWU5DX1NUQVRVUyBwcm9wZXJ0eSBuZWVkZWQgZm9yIHN0YXRlIG1hbmFnZW1lbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBTWU5DX1NUQVRVUyA9IFN5bWJvbCgnU1lOQ19TVEFUVVMnKTtcbmV4cG9ydCB0eXBlIFN5bmNTdGF0dXMgPSAnaWRsZScgfCAnc3luY2luZycgfCAnc3luY2VkJztcblxuLy8gS2VlcGluZyBpdCBpbnRlcm5hbCBhdm9pZHMgVFM0MDU4IGVycm9yXG5leHBvcnQgdHlwZSBJbnRlcm5hbEFzeW5jUHJvcHMgPSBBc3luY0ZlYXR1cmVSZXN1bHRbJ3Byb3BzJ10gJiB7XG4gIFtTWU5DX1NUQVRVU106IFdyaXRhYmxlU2lnbmFsPFN5bmNTdGF0dXM+O1xufTtcblxuZXhwb3J0IHR5cGUgQXN5bmNGZWF0dXJlUmVzdWx0ID0gRW1wdHlGZWF0dXJlUmVzdWx0ICYge1xuICBtZXRob2RzOiBBc3luY01ldGhvZHM7XG4gIHByb3BzOiB7XG4gICAgaXNTeW5jZWQ6IFNpZ25hbDxib29sZWFuPjtcbiAgICB3aGVuU3luY2VkOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgQXN5bmNTdG9yZUZvckZhY3Rvcnk8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+ID1cbiAgV3JpdGFibGVTdGF0ZVNvdXJjZTxTdGF0ZT4gJiBJbnRlcm5hbEFzeW5jUHJvcHM7XG5cbmV4cG9ydCB0eXBlIEFzeW5jU3RvcmFnZVN0cmF0ZWd5PFN0YXRlIGV4dGVuZHMgb2JqZWN0PiA9ICgoXG4gIGNvbmZpZzogUmVxdWlyZWQ8U3luY0NvbmZpZzxTdGF0ZT4+LFxuICBzdG9yZTogQXN5bmNTdG9yZUZvckZhY3Rvcnk8U3RhdGU+LFxuICB1c2VTdHViczogYm9vbGVhbixcbikgPT4gQXN5bmNNZXRob2RzKSAmIHsgdHlwZTogJ2FzeW5jJyB9O1xuIl19","import { inject } from '@angular/core';\nimport { getState, patchState } from '@ngrx/signals';\nimport { IndexedDBService } from '../internal/indexeddb.service';\nimport { SYNC_STATUS, } from '../internal/models';\nexport function withIndexedDB() {\n function factory({ key, parse, select, stringify }, store, useStubs) {\n if (useStubs) {\n return {\n clearStorage: () => Promise.resolve(),\n readFromStorage: () => Promise.resolve(),\n writeToStorage: () => Promise.resolve(),\n };\n }\n const indexeddbService = inject(IndexedDBService);\n function warnOnSyncing(mode) {\n if (store[SYNC_STATUS]() === 'syncing') {\n const prettyMode = mode === 'read' ? 'Reading' : 'Writing';\n console.warn(`${prettyMode} to Store (${key}) happened during an ongoing synchronization process.`, 'Please ensure that the store is not in syncing state via `store.whenSynced()`.', 'Alternatively, you can disable the autoSync by passing `autoSync: false` in the config.');\n }\n }\n return {\n /**\n * Removes the item stored in storage.\n */\n async clearStorage() {\n warnOnSyncing('write');\n store[SYNC_STATUS].set('syncing');\n patchState(store, {});\n await indexeddbService.clear(key);\n store[SYNC_STATUS].set('synced');\n },\n /**\n * Reads item from storage and patches the state.\n */\n async readFromStorage() {\n warnOnSyncing('read');\n store[SYNC_STATUS].set('syncing');\n const stateString = await indexeddbService.getItem(key);\n if (stateString) {\n patchState(store, parse(stateString));\n }\n store[SYNC_STATUS].set('synced');\n },\n /**\n * Writes selected portion to storage.\n */\n async writeToStorage() {\n warnOnSyncing('write');\n store[SYNC_STATUS].set('syncing');\n const slicedState = select(getState(store));\n await indexeddbService.setItem(key, stringify(slicedState));\n store[SYNC_STATUS].set('synced');\n },\n };\n }\n factory.type = 'async';\n return factory;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1pbmRleGVkLWRiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvZmVhdHVyZXMvd2l0aC1pbmRleGVkLWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDakUsT0FBTyxFQUlMLFdBQVcsR0FDWixNQUFNLG9CQUFvQixDQUFDO0FBRzVCLE1BQU0sVUFBVSxhQUFhO0lBRzNCLFNBQVMsT0FBTyxDQUNkLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUErQixFQUM5RCxLQUFrQyxFQUNsQyxRQUFpQjtRQUVqQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTztnQkFDTCxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDckMsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQ3hDLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO2FBQ3hDLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVsRCxTQUFTLGFBQWEsQ0FBQyxJQUFzQjtZQUMzQyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDM0QsT0FBTyxDQUFDLElBQUksQ0FDVixHQUFHLFVBQVUsY0FBYyxHQUFHLHVEQUF1RCxFQUNyRixnRkFBZ0YsRUFDaEYseUZBQXlGLENBQzFGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU87WUFDTDs7ZUFFRztZQUNILEtBQUssQ0FBQyxZQUFZO2dCQUNoQixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RCLE1BQU0sZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFFRDs7ZUFFRztZQUNILEtBQUssQ0FBQyxlQUFlO2dCQUNuQixhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ2xDLE1BQU0sV0FBVyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLFdBQVcsRUFBRSxDQUFDO29CQUNoQixVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO2dCQUNELEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUVEOztlQUVHO1lBQ0gsS0FBSyxDQUFDLGNBQWM7Z0JBQ2xCLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBVSxDQUFDO2dCQUNyRCxNQUFNLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFnQixDQUFDO0lBRWhDLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFN0YXRlLCBwYXRjaFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBJbmRleGVkREJTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvaW5kZXhlZGRiLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQXN5bmNNZXRob2RzLFxuICBBc3luY1N0b3JhZ2VTdHJhdGVneSxcbiAgQXN5bmNTdG9yZUZvckZhY3RvcnksXG4gIFNZTkNfU1RBVFVTLFxufSBmcm9tICcuLi9pbnRlcm5hbC9tb2RlbHMnO1xuaW1wb3J0IHsgU3luY0NvbmZpZyB9IGZyb20gJy4uL3dpdGgtc3RvcmFnZS1zeW5jJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhJbmRleGVkREI8XG4gIFN0YXRlIGV4dGVuZHMgb2JqZWN0LFxuPigpOiBBc3luY1N0b3JhZ2VTdHJhdGVneTxTdGF0ZT4ge1xuICBmdW5jdGlvbiBmYWN0b3J5KFxuICAgIHsga2V5LCBwYXJzZSwgc2VsZWN0LCBzdHJpbmdpZnkgfTogUmVxdWlyZWQ8U3luY0NvbmZpZzxTdGF0ZT4+LFxuICAgIHN0b3JlOiBBc3luY1N0b3JlRm9yRmFjdG9yeTxTdGF0ZT4sXG4gICAgdXNlU3R1YnM6IGJvb2xlYW4sXG4gICk6IEFzeW5jTWV0aG9kcyB7XG4gICAgaWYgKHVzZVN0dWJzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjbGVhclN0b3JhZ2U6ICgpID0+IFByb21pc2UucmVzb2x2ZSgpLFxuICAgICAgICByZWFkRnJvbVN0b3JhZ2U6ICgpID0+IFByb21pc2UucmVzb2x2ZSgpLFxuICAgICAgICB3cml0ZVRvU3RvcmFnZTogKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ZWRkYlNlcnZpY2UgPSBpbmplY3QoSW5kZXhlZERCU2VydmljZSk7XG5cbiAgICBmdW5jdGlvbiB3YXJuT25TeW5jaW5nKG1vZGU6ICdyZWFkJyB8ICd3cml0ZScpOiB2b2lkIHtcbiAgICAgIGlmIChzdG9yZVtTWU5DX1NUQVRVU10oKSA9PT0gJ3N5bmNpbmcnKSB7XG4gICAgICAgIGNvbnN0IHByZXR0eU1vZGUgPSBtb2RlID09PSAncmVhZCcgPyAnUmVhZGluZycgOiAnV3JpdGluZyc7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgJHtwcmV0dHlNb2RlfSB0byBTdG9yZSAoJHtrZXl9KSBoYXBwZW5lZCBkdXJpbmcgYW4gb25nb2luZyBzeW5jaHJvbml6YXRpb24gcHJvY2Vzcy5gLFxuICAgICAgICAgICdQbGVhc2UgZW5zdXJlIHRoYXQgdGhlIHN0b3JlIGlzIG5vdCBpbiBzeW5jaW5nIHN0YXRlIHZpYSBgc3RvcmUud2hlblN5bmNlZCgpYC4nLFxuICAgICAgICAgICdBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGRpc2FibGUgdGhlIGF1dG9TeW5jIGJ5IHBhc3NpbmcgYGF1dG9TeW5jOiBmYWxzZWAgaW4gdGhlIGNvbmZpZy4nLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIFJlbW92ZXMgdGhlIGl0ZW0gc3RvcmVkIGluIHN0b3JhZ2UuXG4gICAgICAgKi9cbiAgICAgIGFzeW5jIGNsZWFyU3RvcmFnZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgd2Fybk9uU3luY2luZygnd3JpdGUnKTtcbiAgICAgICAgc3RvcmVbU1lOQ19TVEFUVVNdLnNldCgnc3luY2luZycpO1xuICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7fSk7XG4gICAgICAgIGF3YWl0IGluZGV4ZWRkYlNlcnZpY2UuY2xlYXIoa2V5KTtcbiAgICAgICAgc3RvcmVbU1lOQ19TVEFUVVNdLnNldCgnc3luY2VkJyk7XG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIFJlYWRzIGl0ZW0gZnJvbSBzdG9yYWdlIGFuZCBwYXRjaGVzIHRoZSBzdGF0ZS5cbiAgICAgICAqL1xuICAgICAgYXN5bmMgcmVhZEZyb21TdG9yYWdlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB3YXJuT25TeW5jaW5nKCdyZWFkJyk7XG4gICAgICAgIHN0b3JlW1NZTkNfU1RBVFVTXS5zZXQoJ3N5bmNpbmcnKTtcbiAgICAgICAgY29uc3Qgc3RhdGVTdHJpbmcgPSBhd2FpdCBpbmRleGVkZGJTZXJ2aWNlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgaWYgKHN0YXRlU3RyaW5nKSB7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgcGFyc2Uoc3RhdGVTdHJpbmcpKTtcbiAgICAgICAgfVxuICAgICAgICBzdG9yZVtTWU5DX1NUQVRVU10uc2V0KCdzeW5jZWQnKTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogV3JpdGVzIHNlbGVjdGVkIHBvcnRpb24gdG8gc3RvcmFnZS5cbiAgICAgICAqL1xuICAgICAgYXN5bmMgd3JpdGVUb1N0b3JhZ2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHdhcm5PblN5bmNpbmcoJ3dyaXRlJyk7XG4gICAgICAgIHN0b3JlW1NZTkNfU1RBVFVTXS5zZXQoJ3N5bmNpbmcnKTtcbiAgICAgICAgY29uc3Qgc2xpY2VkU3RhdGUgPSBzZWxlY3QoZ2V0U3RhdGUoc3RvcmUpKSBhcyBTdGF0ZTtcbiAgICAgICAgYXdhaXQgaW5kZXhlZGRiU2VydmljZS5zZXRJdGVtKGtleSwgc3RyaW5naWZ5KHNsaWNlZFN0YXRlKSk7XG4gICAgICAgIHN0b3JlW1NZTkNfU1RBVFVTXS5zZXQoJ3N5bmNlZCcpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIGZhY3RvcnkudHlwZSA9ICdhc3luYycgYXMgY29uc3Q7XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG4iXX0=","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class LocalStorageService {\n getItem(key) {\n return localStorage.getItem(key);\n }\n setItem(key, data) {\n return localStorage.setItem(key, data);\n }\n clear(key) {\n return localStorage.removeItem(key);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: LocalStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: LocalStorageService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvaW50ZXJuYWwvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsT0FBTyxDQUFDLEdBQVc7UUFDakIsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVk7UUFDL0IsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVc7UUFDZixPQUFPLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs4R0FYVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt9IGZyb20gJy4vbW9kZWxzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZVNlcnZpY2Uge1xuICBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gIH1cblxuICBzZXRJdGVtKGtleTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBkYXRhKTtcbiAgfVxuXG4gIGNsZWFyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gIH1cbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class SessionStorageService {\n getItem(key) {\n return sessionStorage.getItem(key);\n }\n setItem(key, data) {\n return sessionStorage.setItem(key, data);\n }\n clear(key) {\n return sessionStorage.removeItem(key);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: SessionStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: SessionStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.3\", ngImport: i0, type: SessionStorageService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3N0b3JhZ2Utc3luYy9pbnRlcm5hbC9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxJQUFZO1FBQy9CLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFXO1FBQ2YsT0FBTyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBWFUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7MkZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNlc3Npb25TdG9yYWdlU2VydmljZSB7XG4gIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICB9XG5cbiAgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oa2V5LCBkYXRhKTtcbiAgfVxuXG4gIGNsZWFyKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgcmV0dXJuIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { getState, patchState } from '@ngrx/signals';\nimport { LocalStorageService } from '../internal/local-storage.service';\nimport { SessionStorageService } from '../internal/session-storage.service';\nexport function withLocalStorage() {\n return createSyncMethods(LocalStorageService);\n}\nexport function withSessionStorage() {\n return createSyncMethods(SessionStorageService);\n}\nfunction createSyncMethods(Storage) {\n function factory({ key, parse, select, stringify }, store, useStubs) {\n if (useStubs) {\n return {\n clearStorage: () => undefined,\n readFromStorage: () => undefined,\n writeToStorage: () => undefined,\n };\n }\n const storage = inject(Storage);\n return {\n clearStorage() {\n storage.clear(key);\n },\n readFromStorage() {\n const stateString = storage.getItem(key);\n if (stateString) {\n patchState(store, parse(stateString));\n }\n },\n writeToStorage() {\n const slicedState = select(getState(store));\n storage.setItem(key, stringify(slicedState));\n },\n };\n }\n factory.type = 'sync';\n return factory;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1sb2NhbC1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRvb2xraXQvc3JjL2xpYi9zdG9yYWdlLXN5bmMvZmVhdHVyZXMvd2l0aC1sb2NhbC1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHNUUsTUFBTSxVQUFVLGdCQUFnQjtJQUc5QixPQUFPLGlCQUFpQixDQUFRLG1CQUFtQixDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0I7SUFDaEMsT0FBTyxpQkFBaUIsQ0FBUSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUN4QixPQUEwRDtJQUUxRCxTQUFTLE9BQU8sQ0FDZCxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBK0IsRUFDOUQsS0FBaUMsRUFDakMsUUFBaUI7UUFFakIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU87Z0JBQ0wsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVM7Z0JBQzdCLGVBQWUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTO2dCQUNoQyxjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUzthQUNoQyxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoQyxPQUFPO1lBQ0wsWUFBWTtnQkFDVixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7WUFFRCxlQUFlO2dCQUNiLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRXpDLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ2hCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDO1lBRUQsY0FBYztnQkFDWixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFVLENBQUM7Z0JBQ3JELE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sQ0FBQyxJQUFJLEdBQUcsTUFBZSxDQUFDO0lBRS9CLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldFN0YXRlLCBwYXRjaFN0YXRlIH0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN5bmNTdG9yYWdlU3RyYXRlZ3ksIFN5bmNTdG9yZUZvckZhY3RvcnkgfSBmcm9tICcuLi9pbnRlcm5hbC9tb2RlbHMnO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJuYWwvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3luY0NvbmZpZyB9IGZyb20gJy4uL3dpdGgtc3RvcmFnZS1zeW5jJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhMb2NhbFN0b3JhZ2U8XG4gIFN0YXRlIGV4dGVuZHMgb2JqZWN0LFxuPigpOiBTeW5jU3RvcmFnZVN0cmF0ZWd5PFN0YXRlPiB7XG4gIHJldHVybiBjcmVhdGVTeW5jTWV0aG9kczxTdGF0ZT4oTG9jYWxTdG9yYWdlU2VydmljZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU2Vzc2lvblN0b3JhZ2U8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KCkge1xuICByZXR1cm4gY3JlYXRlU3luY01ldGhvZHM8U3RhdGU+KFNlc3Npb25TdG9yYWdlU2VydmljZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN5bmNNZXRob2RzPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgU3RvcmFnZTogVHlwZTxMb2NhbFN0b3JhZ2VTZXJ2aWNlIHwgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlPixcbik6IFN5bmNTdG9yYWdlU3RyYXRlZ3k8U3RhdGU+IHtcbiAgZnVuY3Rpb24gZmFjdG9yeShcbiAgICB7IGtleSwgcGFyc2UsIHNlbGVjdCwgc3RyaW5naWZ5IH06IFJlcXVpcmVkPFN5bmNDb25maWc8U3RhdGU+PixcbiAgICBzdG9yZTogU3luY1N0b3JlRm9yRmFjdG9yeTxTdGF0ZT4sXG4gICAgdXNlU3R1YnM6IGJvb2xlYW4sXG4gICkge1xuICAgIGlmICh1c2VTdHVicykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2xlYXJTdG9yYWdlOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgIHJlYWRGcm9tU3RvcmFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICB3cml0ZVRvU3RvcmFnZTogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdG9yYWdlID0gaW5qZWN0KFN0b3JhZ2UpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsZWFyU3RvcmFnZSgpOiB2b2lkIHtcbiAgICAgICAgc3RvcmFnZS5jbGVhcihrZXkpO1xuICAgICAgfSxcblxuICAgICAgcmVhZEZyb21TdG9yYWdlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzdGF0ZVN0cmluZyA9IHN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuXG4gICAgICAgIGlmIChzdGF0ZVN0cmluZykge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHBhcnNlKHN0YXRlU3RyaW5nKSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIHdyaXRlVG9TdG9yYWdlKCkge1xuICAgICAgICBjb25zdCBzbGljZWRTdGF0ZSA9IHNlbGVjdChnZXRTdGF0ZShzdG9yZSkpIGFzIFN0YXRlO1xuICAgICAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCBzdHJpbmdpZnkoc2xpY2VkU3RhdGUpKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICBmYWN0b3J5LnR5cGUgPSAnc3luYycgYXMgY29uc3Q7XG5cbiAgcmV0dXJuIGZhY3Rvcnk7XG59XG4iXX0=","import { isPlatformServer } from '@angular/common';\nimport { computed, effect, inject, PLATFORM_ID, signal } from '@angular/core';\nimport { getState, signalStoreFeature, watchState, withHooks, withMethods, withProps, } from '@ngrx/signals';\nimport { withLocalStorage, withSessionStorage, } from './features/with-local-storage';\nimport { SYNC_STATUS, } from './internal/models';\nexport function withStorageSync(configOrKey, storageStrategy) {\n if (typeof configOrKey !== 'string' &&\n configOrKey.storage &&\n storageStrategy) {\n throw new Error('You can either pass a storage strategy or a config with storage, but not both.');\n }\n const config = {\n autoSync: true,\n select: (state) => state,\n parse: JSON.parse,\n stringify: JSON.stringify,\n storage: () => localStorage,\n ...(typeof configOrKey === 'string' ? { key: configOrKey } : configOrKey),\n };\n const factory = storageStrategy ??\n (config.storage() === localStorage\n ? withLocalStorage()\n : withSessionStorage());\n if (factory.type === 'sync') {\n return createSyncStorageSync(factory, config);\n }\n else {\n return createAsyncStorageSync(factory, config);\n }\n}\nfunction createSyncStorageSync(factory, config) {\n return signalStoreFeature(withMethods((store, platformId = inject(PLATFORM_ID)) => {\n return factory(config, store, isPlatformServer(platformId));\n }), withHooks({\n onInit(store, platformId = inject(PLATFORM_ID)) {\n if (isPlatformServer(platformId)) {\n return;\n }\n if (config.autoSync) {\n store.readFromStorage();\n watchState(store, () => store.writeToStorage());\n }\n },\n }));\n}\nfunction createAsyncStorageSync(factory, config) {\n return signalStoreFeature(withProps(() => {\n const props = {\n /*\n // we need to have that as property (and not state)\n // Otherwise the state watcher fires when updating the sync status\n */\n [SYNC_STATUS]: signal('idle'),\n };\n const resolves = [];\n effect(() => {\n const syncStatus = props[SYNC_STATUS]();\n if (syncStatus === 'synced') {\n resolves.forEach((resolve) => resolve());\n resolves.splice(0, resolves.length);\n }\n });\n return {\n ...props,\n isSynced: computed(() => props[SYNC_STATUS]() === 'synced'),\n whenSynced: () => new Promise((resolve) => {\n if (props[SYNC_STATUS]() === 'synced') {\n resolve();\n }\n else {\n resolves.push(resolve);\n }\n }),\n };\n }), withMethods((store, platformId = inject(PLATFORM_ID)) => {\n return factory(config, store, isPlatformServer(platformId));\n }), withHooks({\n async onInit(store, platformId = inject(PLATFORM_ID)) {\n if (isPlatformServer(platformId)) {\n return;\n }\n const initialState = JSON.stringify(getState(store));\n if (config.autoSync) {\n let startWatching = false;\n watchState(store, () => {\n if (!startWatching) {\n const currentState = JSON.stringify(getState(store));\n // Necessary because getState returns always a new object\n if (currentState === initialState) {\n return;\n }\n console.warn(`Writing to Store (${config.key}) happened before the state was initially read from storage.`, 'Please ensure that the store is not in syncing state via `store.whenSynced()` before writing to the state.', 'Alternatively, you can disable autoSync by passing `autoSync: false` in the config.');\n return;\n }\n return store.writeToStorage();\n });\n await store.readFromStorage();\n startWatching = true;\n }\n },\n }));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zdG9yYWdlLXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3N0b3JhZ2Utc3luYy93aXRoLXN0b3JhZ2Utc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBRUwsUUFBUSxFQUNSLGtCQUFrQixFQUdsQixVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsR0FDbkIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBR0wsV0FBVyxHQUdaLE1BQU0sbUJBQW1CLENBQUM7QUEyRTNCLE1BQU0sVUFBVSxlQUFlLENBQzdCLFdBQWdELEVBQ2hELGVBRXVDO0lBS3ZDLElBQ0UsT0FBTyxXQUFXLEtBQUssUUFBUTtRQUMvQixXQUFXLENBQUMsT0FBTztRQUNuQixlQUFlLEVBQ2YsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0ZBQWdGLENBQ2pGLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQXlDO1FBQ25ELFFBQVEsRUFBRSxJQUFJO1FBQ2QsTUFBTSxFQUFFLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQUMsS0FBSztRQUN4QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1FBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZO1FBQzNCLEdBQUcsQ0FBQyxPQUFPLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQyxD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LENBQUM7QUFDekUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1TZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBQTEFURk9STV9JRCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIGdldFN0YXRlLFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICB3YXRjaFN0YXRlLFxuICB3aXRoSG9va3MsXG4gIHdpdGhNZXRob2RzLFxuICB3aXRoUHJvcHMsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHtcbiAgd2l0aExvY2FsU3RvcmFnZSxcbiAgd2l0aFNlc3Npb25TdG9yYWdlLFxufSBmcm9tICcuL2ZlYXR1cmVzL3dpdGgtbG9jYWwtc3RvcmFnZSc7XG5pbXBvcnQge1xuICBBc3luY0ZlYXR1cmVSZXN1bHQsXG4gIEFzeW5jU3RvcmFnZVN0cmF0ZWd5LFxuICBTWU5DX1NUQVRVUyxcbiAgU3luY0ZlYXR1cmVSZXN1bHQsXG4gIFN5bmNTdG9yYWdlU3RyYXRlZ3ksXG59IGZyb20gJy4vaW50ZXJuYWwvbW9kZWxzJztcblxuZXhwb3J0IHR5cGUgU3luY0NvbmZpZzxTdGF0ZT4gPSB7XG4gIC8qKlxuICAgKiBUaGUga2V5IHdoaWNoIGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBzdG9yYWdlLlxuICAgKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGbGFnIGluZGljYXRpbmcgaWYgdGhlIHN0b3JlIHNob3VsZCByZWFkIGZyb20gc3RvcmFnZSBvbiBpbml0IGFuZCB3cml0ZSB0byBzdG9yYWdlIG9uIGV2ZXJ5IHN0YXRlIGNoYW5nZS5cbiAgICpcbiAgICogYHRydWVgIGJ5IGRlZmF1bHRcbiAgICovXG4gIGF1dG9TeW5jPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRvIHNlbGVjdCB0aGF0IHBvcnRpb24gb2YgdGhlIHN0YXRlIHdoaWNoIHNob3VsZCBiZSBzdG9yZWQuXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHdob2xlIHN0YXRlIG9iamVjdCBieSBkZWZhdWx0XG4gICAqL1xuICBzZWxlY3Q/OiAoc3RhdGU6IFN0YXRlKSA9PiB1bmtub3duO1xuICAvKipcbiAgICogRnVuY3Rpb24gdXNlZCB0byBwYXJzZSB0aGUgc3RhdGUgY29taW5nIGZyb20gc3RvcmFnZS5cbiAgICpcbiAgICogYEpTT04ucGFyc2UoKWAgYnkgZGVmYXVsdFxuICAgKi9cbiAgcGFyc2U/OiAoc3RhdGVTdHJpbmc6IHN0cmluZykgPT4gU3RhdGU7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB1c2VkIHRvIHRyYW5zZm9ybSB0aGUgc3RhdGUgaW50byBhIHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAgICpcbiAgICogYEpTT04uc3RyaW5naWZ5KClgIGJ5IGRlZmF1bHRcbiAgICovXG4gIHN0cmluZ2lmeT86IChzdGF0ZTogU3RhdGUpID0+IHN0cmluZztcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayB3aXRoU2Vzc2lvblN0b3JhZ2V9IGluc3RlYWQuXG4gICAqIEZhY3RvcnkgZnVuY3Rpb24gdXNlZCB0byBzd2l0Y2ggdG8gc2Vzc2lvblN0b3JhZ2UuXG4gICAqXG4gICAqIGBsb2NhbFN0b3JhZ2VgIGJ5IGRlZmF1bHRcbiAgICovXG4gIHN0b3JhZ2U/OiAoKSA9PiBTdG9yYWdlO1xufTtcblxuLy8gb25seSBrZXlcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBrZXk6IHN0cmluZyxcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG4vLyBrZXkgKyBpbmRleGVkZGJcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBrZXk6IHN0cmluZyxcbiAgc3RvcmFnZVN0cmF0ZWd5OiBBc3luY1N0b3JhZ2VTdHJhdGVneTxJbnB1dFsnc3RhdGUnXT4sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIEFzeW5jRmVhdHVyZVJlc3VsdD47XG5cbi8vIGtleSArIGxvY2FsU3RvcmFnZShvciBzZXNzaW9uU3RvcmFnZSlcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBrZXk6IHN0cmluZyxcbiAgc3RvcmFnZVN0cmF0ZWd5OiBTeW5jU3RvcmFnZVN0cmF0ZWd5PElucHV0WydzdGF0ZSddPixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG4vLyBjb25maWcgKyBsb2NhbFN0b3JhZ2VcbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RvcmFnZVN5bmM8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBjb25maWc6IFN5bmNDb25maWc8SW5wdXRbJ3N0YXRlJ10+LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBTeW5jRmVhdHVyZVJlc3VsdD47XG5cbi8vIGNvbmZpZyArIGluZGV4ZWRkYlxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTdG9yYWdlU3luYzxJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oXG4gIGNvbmZpZzogU3luY0NvbmZpZzxJbnB1dFsnc3RhdGUnXT4sXG4gIHN0b3JhZ2VTdHJhdGVneTogQXN5bmNTdG9yYWdlU3RyYXRlZ3k8SW5wdXRbJ3N0YXRlJ10+LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBBc3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG4vLyBjb25maWcgKyBsb2NhbFN0b3JhZ2Uob3Igc2Vzc2lvblN0b3JhZ2UpXG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0b3JhZ2VTeW5jPElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PihcbiAgY29uZmlnOiBTeW5jQ29uZmlnPElucHV0WydzdGF0ZSddPixcbiAgc3RvcmFnZVN0cmF0ZWd5OiBTeW5jU3RvcmFnZVN0cmF0ZWd5PElucHV0WydzdGF0ZSddPixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0b3JhZ2VTeW5jPElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PihcbiAgY29uZmlnT3JLZXk6IFN5bmNDb25maWc8SW5wdXRbJ3N0YXRlJ10+IHwgc3RyaW5nLFxuICBzdG9yYWdlU3RyYXRlZ3k/OlxuICAgIHwgQXN5bmNTdG9yYWdlU3RyYXRlZ3k8SW5wdXRbJ3N0YXRlJ10+XG4gICAgfCBTeW5jU3RvcmFnZVN0cmF0ZWd5PElucHV0WydzdGF0ZSddPixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgSW5wdXQsXG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIChTeW5jRmVhdHVyZVJlc3VsdCB8IEFzeW5jRmVhdHVyZVJlc3VsdClcbj4ge1xuICBpZiAoXG4gICAgdHlwZW9mIGNvbmZpZ09yS2V5ICE9PSAnc3RyaW5nJyAmJlxuICAgIGNvbmZpZ09yS2V5LnN0b3JhZ2UgJiZcbiAgICBzdG9yYWdlU3RyYXRlZ3lcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1lvdSBjYW4gZWl0aGVyIHBhc3MgYSBzdG9yYWdlIHN0cmF0ZWd5IG9yIGEgY29uZmlnIHdpdGggc3RvcmFnZSwgYnV0IG5vdCBib3RoLicsXG4gICAgKTtcbiAgfVxuICBjb25zdCBjb25maWc6IFJlcXVpcmVkPFN5bmNDb25maWc8SW5wdXRbJ3N0YXRlJ10+PiA9IHtcbiAgICBhdXRvU3luYzogdHJ1ZSxcbiAgICBzZWxlY3Q6IChzdGF0ZTogSW5wdXRbJ3N0YXRlJ10pID0+IHN0YXRlLFxuICAgIHBhcnNlOiBKU09OLnBhcnNlLFxuICAgIHN0cmluZ2lmeTogSlNPTi5zdHJpbmdpZnksXG4gICAgc3RvcmFnZTogKCkgPT4gbG9jYWxTdG9yYWdlLFxuICAgIC4uLih0eXBlb2YgY29uZmlnT3JLZXkgPT09ICdzdHJpbmcnID8geyBrZXk6IGNvbmZpZ09yS2V5IH0gOiBjb25maWdPcktleSksXG4gIH07XG5cbiAgY29uc3QgZmFjdG9yeSA9XG4gICAgc3RvcmFnZVN0cmF0ZWd5ID8/XG4gICAgKGNvbmZpZy5zdG9yYWdlKCkgPT09IGxvY2FsU3RvcmFnZVxuICAgICAgPyB3aXRoTG9jYWxTdG9yYWdlKClcbiAgICAgIDogd2l0aFNlc3Npb25TdG9yYWdlKCkpO1xuXG4gIGlmIChmYWN0b3J5LnR5cGUgPT09ICdzeW5jJykge1xuICAgIHJldHVybiBjcmVhdGVTeW5jU3RvcmFnZVN5bmMoZmFjdG9yeSwgY29uZmlnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3JlYXRlQXN5bmNTdG9yYWdlU3luYyhmYWN0b3J5LCBjb25maWcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN5bmNTdG9yYWdlU3luYyhcbiAgZmFjdG9yeTogU3luY1N0b3JhZ2VTdHJhdGVneTxvYmplY3Q+LFxuICBjb25maWc6IFJlcXVpcmVkPFN5bmNDb25maWc8b2JqZWN0Pj4sXG4pIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoTWV0aG9kcygoc3RvcmUsIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpKSA9PiB7XG4gICAgICByZXR1cm4gZmFjdG9yeShjb25maWcsIHN0b3JlLCBpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpKTtcbiAgICB9KSxcbiAgICB3aXRoSG9va3Moe1xuICAgICAgb25Jbml0KHN0b3JlLCBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKSkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybVNlcnZlcihwbGF0Zm9ybUlkKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuYXV0b1N5bmMpIHtcbiAgICAgICAgICBzdG9yZS5yZWFkRnJvbVN0b3JhZ2UoKTtcbiAgICAgICAgICB3YXRjaFN0YXRlKHN0b3JlLCAoKSA9PiBzdG9yZS53cml0ZVRvU3RvcmFnZSgpKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KSxcbiAgKSBzYXRpc2ZpZXMgU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgU3luY0ZlYXR1cmVSZXN1bHQ+O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVBc3luY1N0b3JhZ2VTeW5jKFxuICBmYWN0b3J5OiBBc3luY1N0b3JhZ2VTdHJhdGVneTxvYmplY3Q+LFxuICBjb25maWc6IFJlcXVpcmVkPFN5bmNDb25maWc8b2JqZWN0Pj4sXG4pIHtcbiAgcmV0dXJuIHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoUHJvcHMoKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgIC8qXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gaGF2ZSB0aGF0IGFzIHByb3BlcnR5IChhbmQgbm90IHN0YXRlKVxuICAgICAgICAvLyBPdGhlcndpc2UgdGhlIHN0YXRlIHdhdGNoZXIgZmlyZXMgd2hlbiB1cGRhdGluZyB0aGUgc3luYyBzdGF0dXNcbiAgICAgICAgKi9cbiAgICAgICAgW1NZTkNfU1RBVFVTXTogc2lnbmFsPCdpZGxlJyB8ICdzeW5jaW5nJyB8ICdzeW5jZWQnPignaWRsZScpLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzb2x2ZXMgPSBbXSBhcyAoKCkgPT4gdm9pZClbXTtcblxuICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3luY1N0YXR1cyA9IHByb3BzW1NZTkNfU1RBVFVTXSgpO1xuICAgICAgICBpZiAoc3luY1N0YXR1cyA9PT0gJ3N5bmNlZCcpIHtcbiAgICAgICAgICByZXNvbHZlcy5mb3JFYWNoKChyZXNvbHZlKSA9PiByZXNvbHZlKCkpO1xuICAgICAgICAgIHJlc29sdmVzLnNwbGljZSgwLCByZXNvbHZlcy5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIGlzU3luY2VkOiBjb21wdXRlZCgoKSA9PiBwcm9wc1tTWU5DX1NUQVRVU10oKSA9PT0gJ3N5bmNlZCcpLFxuICAgICAgICB3aGVuU3luY2VkOiAoKSA9PlxuICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvcHNbU1lOQ19TVEFUVVNdKCkgPT09ICdzeW5jZWQnKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmVzLnB1c2gocmVzb2x2ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH0pLFxuICAgIHdpdGhNZXRob2RzKChzdG9yZSwgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCkpID0+IHtcbiAgICAgIHJldHVybiBmYWN0b3J5KGNvbmZpZywgc3RvcmUsIGlzUGxhdGZvcm1TZXJ2ZXIocGxhdGZvcm1JZCkpO1xuICAgIH0pLFxuICAgIHdpdGhIb29rcyh7XG4gICAgICBhc3luYyBvbkluaXQoc3RvcmUsIHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5pdGlhbFN0YXRlID0gSlNPTi5zdHJpbmdpZnkoZ2V0U3RhdGUoc3RvcmUpKTtcbiAgICAgICAgaWYgKGNvbmZpZy5hdXRvU3luYykge1xuICAgICAgICAgIGxldCBzdGFydFdhdGNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgd2F0Y2hTdGF0ZShzdG9yZSwgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFzdGFydFdhdGNoaW5nKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IEpTT04uc3RyaW5naWZ5KGdldFN0YXRlKHN0b3JlKSk7XG5cbiAgICAgICAgICAgICAgLy8gTmVjZXNzYXJ5IGJlY2F1c2UgZ2V0U3RhdGUgcmV0dXJucyBhbHdheXMgYSBuZXcgb2JqZWN0XG4gICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUgPT09IGluaXRpYWxTdGF0ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBgV3JpdGluZyB0byBTdG9yZSAoJHtjb25maWcua2V5fSkgaGFwcGVuZWQgYmVmb3JlIHRoZSBzdGF0ZSB3YXMgaW5pdGlhbGx5IHJlYWQgZnJvbSBzdG9yYWdlLmAsXG4gICAgICAgICAgICAgICAgJ1BsZWFzZSBlbnN1cmUgdGhhdCB0aGUgc3RvcmUgaXMgbm90IGluIHN5bmNpbmcgc3RhdGUgdmlhIGBzdG9yZS53aGVuU3luY2VkKClgIGJlZm9yZSB3cml0aW5nIHRvIHRoZSBzdGF0ZS4nLFxuICAgICAgICAgICAgICAgICdBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIGRpc2FibGUgYXV0b1N5bmMgYnkgcGFzc2luZyBgYXV0b1N5bmM6IGZhbHNlYCBpbiB0aGUgY29uZmlnLicsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdG9yZS53cml0ZVRvU3RvcmFnZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgYXdhaXQgc3RvcmUucmVhZEZyb21TdG9yYWdlKCk7XG4gICAgICAgICAgc3RhcnRXYXRjaGluZyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSksXG4gICkgc2F0aXNmaWVzIFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEFzeW5jRmVhdHVyZVJlc3VsdD47XG59XG4iXX0=","import { signalStoreFeature, withState, } from '@ngrx/signals';\n/**\n * `withConditional` activates a feature based on a given condition.\n *\n * **Use Cases**\n * - Conditionally activate features based on the **store state** or other criteria.\n * - Choose between **two different implementations** of a feature.\n *\n * **Type Constraints**\n * Both features must have **exactly the same state, props, and methods**.\n * Otherwise, a type error will occur.\n *\n *\n * **Usage**\n *\n * ```typescript\n * const withUser = signalStoreFeature(\n * withState({ id: 1, name: 'Konrad' }),\n * withHooks(store => ({\n * onInit() {\n * // user loading logic\n * }\n * }))\n * );\n *\n * function withFakeUser() {\n * return signalStoreFeature(\n * withState({ id: 0, name: 'anonymous' })\n * );\n * }\n *\n * signalStore(\n * withMethods(() => ({\n * useRealUser: () => true\n * })),\n * withConditional((store) => store.useRealUser(), withUser, withFakeUser)\n * )\n * ```\n *\n * @param condition - A function that determines which feature to activate based on the store state.\n * @param featureIfTrue - The feature to activate if the condition evaluates to `true`.\n * @param featureIfFalse - The feature to activate if the condition evaluates to `false`.\n * @returns A `SignalStoreFeature` that applies the selected feature based on the condition.\n */\nexport function withConditional(condition, featureIfTrue, featureIfFalse) {\n return (store) => {\n const conditionStore = {\n ...store['stateSignals'],\n ...store['props'],\n ...store['methods'],\n };\n return condition(conditionStore)\n ? featureIfTrue(store)\n : featureIfFalse(store);\n };\n}\nexport const emptyFeature = signalStoreFeature(withState({}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jb25kaXRpb25hbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1jb25kaXRpb25hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsa0JBQWtCLEVBSWxCLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FJN0IsU0FFWSxFQUNaLGFBQXlELEVBQ3pELGNBQW1FO0lBRW5FLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNmLE1BQU0sY0FBYyxHQUFHO1lBQ3JCLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUN4QixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7WUFDakIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1NBQ3BCLENBQUM7UUFDRixPQUFPLFNBQVMsQ0FBQyxjQUFjLENBQUM7WUFDOUIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDdEIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgc2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU3RhdGVTaWduYWxzLFxuICB3aXRoU3RhdGUsXG59IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuXG4vKipcbiAqIGB3aXRoQ29uZGl0aW9uYWxgIGFjdGl2YXRlcyBhIGZlYXR1cmUgYmFzZWQgb24gYSBnaXZlbiBjb25kaXRpb24uXG4gKlxuICogKipVc2UgQ2FzZXMqKlxuICogLSBDb25kaXRpb25hbGx5IGFjdGl2YXRlIGZlYXR1cmVzIGJhc2VkIG9uIHRoZSAqKnN0b3JlIHN0YXRlKiogb3Igb3RoZXIgY3JpdGVyaWEuXG4gKiAtIENob29zZSBiZXR3ZWVuICoqdHdvIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMqKiBvZiBhIGZlYXR1cmUuXG4gKlxuICogKipUeXBlIENvbnN0cmFpbnRzKipcbiAqIEJvdGggZmVhdHVyZXMgbXVzdCBoYXZlICoqZXhhY3RseSB0aGUgc2FtZSBzdGF0ZSwgcHJvcHMsIGFuZCBtZXRob2RzKiouXG4gKiBPdGhlcndpc2UsIGEgdHlwZSBlcnJvciB3aWxsIG9jY3VyLlxuICpcbiAqXG4gKiAqKlVzYWdlKipcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB3aXRoVXNlciA9IHNpZ25hbFN0b3JlRmVhdHVyZShcbiAqICAgd2l0aFN0YXRlKHsgaWQ6IDEsIG5hbWU6ICdLb25yYWQnIH0pLFxuICogICB3aXRoSG9va3Moc3RvcmUgPT4gKHtcbiAqICAgICBvbkluaXQoKSB7XG4gKiAgICAgICAvLyB1c2VyIGxvYWRpbmcgbG9naWNcbiAqICAgICB9XG4gKiAgIH0pKVxuICogKTtcbiAqXG4gKiBmdW5jdGlvbiB3aXRoRmFrZVVzZXIoKSB7XG4gKiAgIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXG4gKiAgICAgd2l0aFN0YXRlKHsgaWQ6IDAsIG5hbWU6ICdhbm9ueW1vdXMnIH0pXG4gKiAgICk7XG4gKiB9XG4gKlxuICogc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhNZXRob2RzKCgpID0+ICh7XG4gKiAgICAgdXNlUmVhbFVzZXI6ICgpID0+IHRydWVcbiAqICAgfSkpLFxuICogICB3aXRoQ29uZGl0aW9uYWwoKHN0b3JlKSA9PiBzdG9yZS51c2VSZWFsVXNlcigpLCB3aXRoVXNlciwgd2l0aEZha2VVc2VyKVxuICogKVxuICogYGBgXG4gKlxuICogQHBhcmFtIGNvbmRpdGlvbiAtIEEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoaWNoIGZlYXR1cmUgdG8gYWN0aXZhdGUgYmFzZWQgb24gdGhlIHN0b3JlIHN0YXRlLlxuICogQHBhcmFtIGZlYXR1cmVJZlRydWUgLSBUaGUgZmVhdHVyZSB0byBhY3RpdmF0ZSBpZiB0aGUgY29uZGl0aW9uIGV2YWx1YXRlcyB0byBgdHJ1ZWAuXG4gKiBAcGFyYW0gZmVhdHVyZUlmRmFsc2UgLSBUaGUgZmVhdHVyZSB0byBhY3RpdmF0ZSBpZiB0aGUgY29uZGl0aW9uIGV2YWx1YXRlcyB0byBgZmFsc2VgLlxuICogQHJldHVybnMgQSBgU2lnbmFsU3RvcmVGZWF0dXJlYCB0aGF0IGFwcGxpZXMgdGhlIHNlbGVjdGVkIGZlYXR1cmUgYmFzZWQgb24gdGhlIGNvbmRpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDb25kaXRpb25hbDxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIE91dHB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbj4oXG4gIGNvbmRpdGlvbjogKFxuICAgIHN0b3JlOiBTdGF0ZVNpZ25hbHM8SW5wdXRbJ3N0YXRlJ10+ICYgSW5wdXRbJ3Byb3BzJ10gJiBJbnB1dFsnbWV0aG9kcyddLFxuICApID0+IGJvb2xlYW4sXG4gIGZlYXR1cmVJZlRydWU6IFNpZ25hbFN0b3JlRmVhdHVyZTxOb0luZmVyPElucHV0PiwgT3V0cHV0PixcbiAgZmVhdHVyZUlmRmFsc2U6IFNpZ25hbFN0b3JlRmVhdHVyZTxOb0luZmVyPElucHV0PiwgTm9JbmZlcjxPdXRwdXQ+Pixcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgT3V0cHV0PiB7XG4gIHJldHVybiAoc3RvcmUpID0+IHtcbiAgICBjb25zdCBjb25kaXRpb25TdG9yZSA9IHtcbiAgICAgIC4uLnN0b3JlWydzdGF0ZVNpZ25hbHMnXSxcbiAgICAgIC4uLnN0b3JlWydwcm9wcyddLFxuICAgICAgLi4uc3RvcmVbJ21ldGhvZHMnXSxcbiAgICB9O1xuICAgIHJldHVybiBjb25kaXRpb24oY29uZGl0aW9uU3RvcmUpXG4gICAgICA/IGZlYXR1cmVJZlRydWUoc3RvcmUpXG4gICAgICA6IGZlYXR1cmVJZkZhbHNlKHN0b3JlKTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGVtcHR5RmVhdHVyZSA9IHNpZ25hbFN0b3JlRmVhdHVyZSh3aXRoU3RhdGUoe30pKTtcbiJdfQ==","/**\n * @deprecated Use `import { withFeature } from '@ngrx/signals'` instead, starting with `ngrx/signals` 19.1: https://ngrx.io/guide/signals/signal-store/custom-store-features#connecting-a-custom-feature-with-the-store\n *\n * Allows to pass properties, methods, or signals from a SignalStore\n * to a feature.\n *\n * Typically, a `signalStoreFeature` can have input constraints on\n *\n * ```typescript\n * function withSum(a: Signal<number>, b: Signal<number>) {\n * return signalStoreFeature(\n * withComputed(() => ({\n * sum: computed(() => a() + b())\n * }))\n * );\n * }\n *\n * signalStore(\n * withState({ a: 1, b: 2 }),\n * withFeatureFactory((store) => withSum(store.a, store.b))\n * );\n * ```\n * @param factoryFn\n */\nexport function withFeatureFactory(factoryFn) {\n return (store) => {\n const storeForFactory = {\n ...store['stateSignals'],\n ...store['props'],\n ...store['methods'],\n };\n const feature = factoryFn(storeForFactory);\n return feature(store);\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1mZWF0dXJlLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtZmVhdHVyZS1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FJaEMsU0FFc0M7SUFFdEMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2YsTUFBTSxlQUFlLEdBQUc7WUFDdEIsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQ3hCLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNqQixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7U0FDTSxDQUFDO1FBRTVCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFN0YXRlU2lnbmFscyxcbn0gZnJvbSAnQG5ncngvc2lnbmFscyc7XG5cbnR5cGUgU3RvcmVGb3JGYWN0b3J5PElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PiA9IFN0YXRlU2lnbmFsczxcbiAgSW5wdXRbJ3N0YXRlJ11cbj4gJlxuICBJbnB1dFsncHJvcHMnXSAmXG4gIElucHV0WydtZXRob2RzJ107XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBpbXBvcnQgeyB3aXRoRmVhdHVyZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnYCBpbnN0ZWFkLCBzdGFydGluZyB3aXRoIGBuZ3J4L3NpZ25hbHNgIDE5LjE6IGh0dHBzOi8vbmdyeC5pby9ndWlkZS9zaWduYWxzL3NpZ25hbC1zdG9yZS9jdXN0b20tc3RvcmUtZmVhdHVyZXMjY29ubmVjdGluZy1hLWN1c3RvbS1mZWF0dXJlLXdpdGgtdGhlLXN0b3JlXG4gKlxuICogQWxsb3dzIHRvIHBhc3MgcHJvcGVydGllcywgbWV0aG9kcywgb3Igc2lnbmFscyBmcm9tIGEgU2lnbmFsU3RvcmVcbiAqIHRvIGEgZmVhdHVyZS5cbiAqXG4gKiBUeXBpY2FsbHksIGEgYHNpZ25hbFN0b3JlRmVhdHVyZWAgY2FuIGhhdmUgaW5wdXQgY29uc3RyYWludHMgb25cbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBmdW5jdGlvbiB3aXRoU3VtKGE6IFNpZ25hbDxudW1iZXI+LCBiOiBTaWduYWw8bnVtYmVyPikge1xuICogICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICogICAgIHdpdGhDb21wdXRlZCgoKSA9PiAoe1xuICogICAgICAgc3VtOiBjb21wdXRlZCgoKSA9PiBhKCkgKyBiKCkpXG4gKiAgICAgfSkpXG4gKiAgICk7XG4gKiB9XG4gKlxuICogc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhTdGF0ZSh7IGE6IDEsIGI6IDIgfSksXG4gKiAgIHdpdGhGZWF0dXJlRmFjdG9yeSgoc3RvcmUpID0+IHdpdGhTdW0oc3RvcmUuYSwgc3RvcmUuYikpXG4gKiApO1xuICogYGBgXG4gKiBAcGFyYW0gZmFjdG9yeUZuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoRmVhdHVyZUZhY3Rvcnk8XG4gIElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBPdXRwdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4+KFxuICBmYWN0b3J5Rm46IChcbiAgICBzdG9yZTogU3RvcmVGb3JGYWN0b3J5PElucHV0PixcbiAgKSA9PiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIE91dHB1dD4sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIE91dHB1dD4ge1xuICByZXR1cm4gKHN0b3JlKSA9PiB7XG4gICAgY29uc3Qgc3RvcmVGb3JGYWN0b3J5ID0ge1xuICAgICAgLi4uc3RvcmVbJ3N0YXRlU2lnbmFscyddLFxuICAgICAgLi4uc3RvcmVbJ3Byb3BzJ10sXG4gICAgICAuLi5zdG9yZVsnbWV0aG9kcyddLFxuICAgIH0gYXMgU3RvcmVGb3JGYWN0b3J5PElucHV0PjtcblxuICAgIGNvbnN0IGZlYXR1cmUgPSBmYWN0b3J5Rm4oc3RvcmVGb3JGYWN0b3J5KTtcblxuICAgIHJldHVybiBmZWF0dXJlKHN0b3JlKTtcbiAgfTtcbn1cbiJdfQ==","import { concatMap, exhaustMap, mergeMap, switchMap, } from 'rxjs';\nexport const switchOp = {\n rxJsOperator: switchMap,\n exhaustSemantics: false,\n};\nexport const mergeOp = {\n rxJsOperator: mergeMap,\n exhaustSemantics: false,\n};\nexport const concatOp = {\n rxJsOperator: concatMap,\n exhaustSemantics: false,\n};\nexport const exhaustOp = {\n rxJsOperator: exhaustMap,\n exhaustSemantics: true,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbmluZy1vcGVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvZmxhdHRlbmluZy1vcGVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixRQUFRLEVBSVIsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBZWQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUF1QjtJQUMxQyxZQUFZLEVBQUUsU0FBUztJQUN2QixnQkFBZ0IsRUFBRSxLQUFLO0NBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQXVCO0lBQ3pDLFlBQVksRUFBRSxRQUFRO0lBQ3RCLGdCQUFnQixFQUFFLEtBQUs7Q0FDeEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBdUI7SUFDMUMsWUFBWSxFQUFFLFNBQVM7SUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztDQUN4QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUF1QjtJQUMzQyxZQUFZLEVBQUUsVUFBVTtJQUN4QixnQkFBZ0IsRUFBRSxJQUFJO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb25jYXRNYXAsXG4gIGV4aGF1c3RNYXAsXG4gIG1lcmdlTWFwLFxuICBPYnNlcnZhYmxlSW5wdXQsXG4gIE9ic2VydmVkVmFsdWVPZixcbiAgT3BlcmF0b3JGdW5jdGlvbixcbiAgc3dpdGNoTWFwLFxufSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgUnhKc0ZsYXR0ZW5pbmdPcGVyYXRvciA9IDxULCBPIGV4dGVuZHMgT2JzZXJ2YWJsZUlucHV0PHVua25vd24+PihcbiAgcHJvamVjdDogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyKSA9PiBPLFxuKSA9PiBPcGVyYXRvckZ1bmN0aW9uPFQsIE9ic2VydmVkVmFsdWVPZjxPPj47XG5cbi8qKlxuICogQSB3cmFwcGVyIGZvciBhbiBSeEpTIGZsYXR0ZW5pbmcgb3BlcmF0b3IuXG4gKiBUaGlzIHdyYXBwZXIgaW5mb3JtcyBhYm91dCB3aGV0aGVyIHRoZSBvcGVyYXRvciBoYXMgZXhoYXVzdCBzZW1hbnRpY3Mgb3Igbm90LlxuICovXG5leHBvcnQgdHlwZSBGbGF0dGVuaW5nT3BlcmF0b3IgPSB7XG4gIHJ4SnNPcGVyYXRvcjogUnhKc0ZsYXR0ZW5pbmdPcGVyYXRvcjtcbiAgZXhoYXVzdFNlbWFudGljczogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBzd2l0Y2hPcDogRmxhdHRlbmluZ09wZXJhdG9yID0ge1xuICByeEpzT3BlcmF0b3I6IHN3aXRjaE1hcCxcbiAgZXhoYXVzdFNlbWFudGljczogZmFsc2UsXG59O1xuXG5leHBvcnQgY29uc3QgbWVyZ2VPcDogRmxhdHRlbmluZ09wZXJhdG9yID0ge1xuICByeEpzT3BlcmF0b3I6IG1lcmdlTWFwLFxuICBleGhhdXN0U2VtYW50aWNzOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBjb25zdCBjb25jYXRPcDogRmxhdHRlbmluZ09wZXJhdG9yID0ge1xuICByeEpzT3BlcmF0b3I6IGNvbmNhdE1hcCxcbiAgZXhoYXVzdFNlbWFudGljczogZmFsc2UsXG59O1xuXG5leHBvcnQgY29uc3QgZXhoYXVzdE9wOiBGbGF0dGVuaW5nT3BlcmF0b3IgPSB7XG4gIHJ4SnNPcGVyYXRvcjogZXhoYXVzdE1hcCxcbiAgZXhoYXVzdFNlbWFudGljczogdHJ1ZSxcbn07XG4iXX0=","import { computed, DestroyRef, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { catchError, defer, EMPTY, finalize, Subject, tap, } from 'rxjs';\nimport { concatOp } from '../flattening-operator';\n/**\n * Creates a mutation that leverages RxJS.\n *\n * For each mutation the following options can be defined:\n * - `operation`: A function that defines the mutation logic. It returns an Observable.\n * - `onSuccess`: A callback that is called when the mutation is successful.\n * - `onError`: A callback that is called when the mutation fails.\n * - `operator`: An optional wrapper of an RxJS flattening operator. By default `concat` sematics are used.\n * - `injector`: An optional Angular injector to use for dependency injection.\n *\n * The `operation` is the only mandatory option.\n *\n * The returned mutation can be called as an async function and returns a Promise.\n * This promise informs about whether the mutation was successful, failed, or aborted\n * (due to switchMap or exhaustMap semantics).\n *\n * The mutation also provides several Signals such as error, status or isPending (see below).\n *\n * Example usage without Store:\n *\n * ```typescript\n * const counterSignal = signal(0);\n *\n * const increment = rxMutation({\n * operation: (param: Param) => {\n * return calcSum(this.counterSignal(), param.value);\n * },\n * operator: concatOp,\n * onSuccess: (result) => {\n * this.counterSignal.set(result);\n * },\n * onError: (error) => {\n * console.error('Error occurred:', error);\n * },\n * });\n *\n * const error = increment.error;\n * const isPending = increment.isPending;\n * const status = increment.status;\n * const value = increment.value;\n * const hasValue = increment.hasValue;\n *\n * async function incrementCounter() {\n * const result = await increment({ value: 1 });\n * if (result.status === 'success') {\n * console.log('Success:', result.value);\n * }\n * if (result.status === 'error') {\n * console.log('Error:', result.error);\n * }\n * if (result.status === 'aborted') {\n * console.log('Operation aborted');\n * }\n * }\n *\n * function calcSum(a: number, b: number): Observable<number> {\n * return of(result).pipe(delay(500));\n * }\n * ```\n *\n * @param options\n * @returns the actual mutation function along tracking data as properties/methods\n */\nexport function rxMutation(optionsOrOperation) {\n const inputSubject = new Subject();\n const options = typeof optionsOrOperation === 'function'\n ? { operation: optionsOrOperation }\n : optionsOrOperation;\n const flatteningOp = options.operator ?? concatOp;\n const destroyRef = options.injector?.get(DestroyRef) ?? inject(DestroyRef);\n const callCount = signal(0, ...(ngDevMode ? [{ debugName: \"callCount\" }] : []));\n const errorSignal = signal(undefined, ...(ngDevMode ? [{ debugName: \"errorSignal\" }] : []));\n const idle = signal(true, ...(ngDevMode ? [{ debugName: \"idle\" }] : []));\n const isPending = computed(() => callCount() > 0, ...(ngDevMode ? [{ debugName: \"isPending\" }] : []));\n const value = signal(undefined, ...(ngDevMode ? [{ debugName: \"value\" }] : []));\n const isSuccess = computed(() => !idle() && !isPending() && !errorSignal(), ...(ngDevMode ? [{ debugName: \"isSuccess\" }] : []));\n const hasValue = function () {\n return typeof value() !== 'undefined';\n };\n const status = computed(() => {\n if (idle()) {\n return 'idle';\n }\n if (callCount() > 0) {\n return 'pending';\n }\n if (errorSignal()) {\n return 'error';\n }\n return 'success';\n }, ...(ngDevMode ? [{ debugName: \"status\" }] : []));\n const initialInnerStatus = 'idle';\n let innerStatus = initialInnerStatus;\n inputSubject\n .pipe(flatteningOp.rxJsOperator((input) => defer(() => {\n callCount.update((c) => c + 1);\n idle.set(false);\n return options.operation(input.param).pipe(tap((result) => {\n options.onSuccess?.(result, input.param);\n innerStatus = 'success';\n errorSignal.set(undefined);\n value.set(result);\n }), catchError((error) => {\n options.onError?.(error, input.param);\n errorSignal.set(error);\n value.set(undefined);\n innerStatus = 'error';\n return EMPTY;\n }), finalize(() => {\n callCount.update((c) => c - 1);\n if (innerStatus === 'success') {\n input.resolve({\n status: 'success',\n value: value(),\n });\n }\n else if (innerStatus === 'error') {\n input.resolve({\n status: 'error',\n error: errorSignal(),\n });\n }\n else {\n input.resolve({\n status: 'aborted',\n });\n }\n innerStatus = initialInnerStatus;\n }));\n })), takeUntilDestroyed(destroyRef))\n .subscribe();\n const mutationFn = (param) => {\n return new Promise((resolve) => {\n if (callCount() > 0 && flatteningOp.exhaustSemantics) {\n resolve({\n status: 'aborted',\n });\n }\n else {\n inputSubject.next({\n param,\n resolve,\n });\n }\n });\n };\n const mutation = mutationFn;\n mutation.status = status;\n mutation.isPending = isPending;\n mutation.error = errorSignal;\n mutation.value = value;\n mutation.hasValue = hasValue;\n mutation.isSuccess = isSuccess;\n return mutation;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtbXV0YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL211dGF0aW9uL3J4LW11dGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBWSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBQ0wsS0FBSyxFQUNMLFFBQVEsRUFFUixPQUFPLEVBQ1AsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLFFBQVEsRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQztBQWF0RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4REc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUN4QixrQkFFNEM7SUFFNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBRzVCLENBQUM7SUFFTCxNQUFNLE9BQU8sR0FDWCxPQUFPLGtCQUFrQixLQUFLLFVBQVU7UUFDdEMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFO1FBQ25DLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQztJQUV6QixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQztJQUVsRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFM0UsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMscURBQUMsQ0FBQztJQUM1QixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQVUsU0FBUyx1REFBQyxD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ZWYsIGluamVjdCwgSW5qZWN0b3IsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgY2F0Y2hFcnJvcixcbiAgZGVmZXIsXG4gIEVNUFRZLFxuICBmaW5hbGl6ZSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgY29uY2F0T3AsIEZsYXR0ZW5pbmdPcGVyYXRvciB9IGZyb20gJy4uL2ZsYXR0ZW5pbmctb3BlcmF0b3InO1xuaW1wb3J0IHsgTXV0YXRpb24sIE11dGF0aW9uUmVzdWx0LCBNdXRhdGlvblN0YXR1cyB9IGZyb20gJy4vbXV0YXRpb24nO1xuXG5leHBvcnQgdHlwZSBPcGVyYXRpb248UGFyYW1ldGVyLCBSZXN1bHQ+ID0gKHBhcmFtOiBQYXJhbWV0ZXIpID0+IFJlc3VsdDtcblxuZXhwb3J0IGludGVyZmFjZSBSeE11dGF0aW9uT3B0aW9uczxQYXJhbWV0ZXIsIFJlc3VsdD4ge1xuICBvcGVyYXRpb246IE9wZXJhdGlvbjxQYXJhbWV0ZXIsIE9ic2VydmFibGU8UmVzdWx0Pj47XG4gIG9uU3VjY2Vzcz86IChyZXN1bHQ6IFJlc3VsdCwgcGFyYW06IFBhcmFtZXRlcikgPT4gdm9pZDtcbiAgb25FcnJvcj86IChlcnJvcjogdW5rbm93biwgcGFyYW06IFBhcmFtZXRlcikgPT4gdm9pZDtcbiAgb3BlcmF0b3I/OiBGbGF0dGVuaW5nT3BlcmF0b3I7XG4gIGluamVjdG9yPzogSW5qZWN0b3I7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG11dGF0aW9uIHRoYXQgbGV2ZXJhZ2VzIFJ4SlMuXG4gKlxuICogRm9yIGVhY2ggbXV0YXRpb24gdGhlIGZvbGxvd2luZyBvcHRpb25zIGNhbiBiZSBkZWZpbmVkOlxuICogLSBgb3BlcmF0aW9uYDogQSBmdW5jdGlvbiB0aGF0IGRlZmluZXMgdGhlIG11dGF0aW9uIGxvZ2ljLiBJdCByZXR1cm5zIGFuIE9ic2VydmFibGUuXG4gKiAtIGBvblN1Y2Nlc3NgOiBBIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIG11dGF0aW9uIGlzIHN1Y2Nlc3NmdWwuXG4gKiAtIGBvbkVycm9yYDogQSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBtdXRhdGlvbiBmYWlscy5cbiAqIC0gYG9wZXJhdG9yYDogQW4gb3B0aW9uYWwgd3JhcHBlciBvZiBhbiBSeEpTIGZsYXR0ZW5pbmcgb3BlcmF0b3IuIEJ5IGRlZmF1bHQgYGNvbmNhdGAgc2VtYXRpY3MgYXJlIHVzZWQuXG4gKiAtIGBpbmplY3RvcmA6IEFuIG9wdGlvbmFsIEFuZ3VsYXIgaW5qZWN0b3IgdG8gdXNlIGZvciBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAqXG4gKiBUaGUgYG9wZXJhdGlvbmAgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IG9wdGlvbi5cbiAqXG4gKiBUaGUgcmV0dXJuZWQgbXV0YXRpb24gY2FuIGJlIGNhbGxlZCBhcyBhbiBhc3luYyBmdW5jdGlvbiBhbmQgcmV0dXJucyBhIFByb21pc2UuXG4gKiBUaGlzIHByb21pc2UgaW5mb3JtcyBhYm91dCB3aGV0aGVyIHRoZSBtdXRhdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgZmFpbGVkLCBvciBhYm9ydGVkXG4gKiAoZHVlIHRvIHN3aXRjaE1hcCBvciBleGhhdXN0TWFwIHNlbWFudGljcykuXG4gKlxuICogVGhlIG11dGF0aW9uIGFsc28gcHJvdmlkZXMgc2V2ZXJhbCBTaWduYWxzIHN1Y2ggYXMgZXJyb3IsIHN0YXR1cyBvciBpc1BlbmRpbmcgKHNlZSBiZWxvdykuXG4gKlxuICogRXhhbXBsZSB1c2FnZSB3aXRob3V0IFN0b3JlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNvdW50ZXJTaWduYWwgPSBzaWduYWwoMCk7XG4gKlxuICogY29uc3QgaW5jcmVtZW50ID0gcnhNdXRhdGlvbih7XG4gKiAgIG9wZXJhdGlvbjogKHBhcmFtOiBQYXJhbSkgPT4ge1xuICogICAgIHJldHVybiBjYWxjU3VtKHRoaXMuY291bnRlclNpZ25hbCgpLCBwYXJhbS52YWx1ZSk7XG4gKiAgIH0sXG4gKiAgIG9wZXJhdG9yOiBjb25jYXRPcCxcbiAqICAgb25TdWNjZXNzOiAocmVzdWx0KSA9PiB7XG4gKiAgICAgdGhpcy5jb3VudGVyU2lnbmFsLnNldChyZXN1bHQpO1xuICogICB9LFxuICogICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBvY2N1cnJlZDonLCBlcnJvcik7XG4gKiAgIH0sXG4gKiB9KTtcbiAqXG4gKiBjb25zdCBlcnJvciA9IGluY3JlbWVudC5lcnJvcjtcbiAqIGNvbnN0IGlzUGVuZGluZyA9IGluY3JlbWVudC5pc1BlbmRpbmc7XG4gKiBjb25zdCBzdGF0dXMgPSBpbmNyZW1lbnQuc3RhdHVzO1xuICogY29uc3QgdmFsdWUgPSBpbmNyZW1lbnQudmFsdWU7XG4gKiBjb25zdCBoYXNWYWx1ZSA9IGluY3JlbWVudC5oYXNWYWx1ZTtcbiAqXG4gKiBhc3luYyBmdW5jdGlvbiBpbmNyZW1lbnRDb3VudGVyKCkge1xuICogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGluY3JlbWVudCh7IHZhbHVlOiAxIH0pO1xuICogICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAqICAgICAgIGNvbnNvbGUubG9nKCdTdWNjZXNzOicsIHJlc3VsdC52YWx1ZSk7XG4gKiAgICAgfVxuICogICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gKiAgICAgICBjb25zb2xlLmxvZygnRXJyb3I6JywgcmVzdWx0LmVycm9yKTtcbiAqICAgICB9XG4gKiAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09ICdhYm9ydGVkJykge1xuICogICAgICAgY29uc29sZS5sb2coJ09wZXJhdGlvbiBhYm9ydGVkJyk7XG4gKiAgICAgfVxuICogfVxuICpcbiAqIGZ1bmN0aW9uIGNhbGNTdW0oYTogbnVtYmVyLCBiOiBudW1iZXIpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICogICByZXR1cm4gb2YocmVzdWx0KS5waXBlKGRlbGF5KDUwMCkpO1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIHRoZSBhY3R1YWwgbXV0YXRpb24gZnVuY3Rpb24gYWxvbmcgdHJhY2tpbmcgZGF0YSBhcyBwcm9wZXJ0aWVzL21ldGhvZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ4TXV0YXRpb248UGFyYW1ldGVyLCBSZXN1bHQ+KFxuICBvcHRpb25zT3JPcGVyYXRpb246XG4gICAgfCBSeE11dGF0aW9uT3B0aW9uczxQYXJhbWV0ZXIsIFJlc3VsdD5cbiAgICB8IE9wZXJhdGlvbjxQYXJhbWV0ZXIsIE9ic2VydmFibGU8UmVzdWx0Pj4sXG4pOiBNdXRhdGlvbjxQYXJhbWV0ZXIsIFJlc3VsdD4ge1xuICBjb25zdCBpbnB1dFN1YmplY3QgPSBuZXcgU3ViamVjdDx7XG4gICAgcGFyYW06IFBhcmFtZXRlcjtcbiAgICByZXNvbHZlOiAocmVzdWx0OiBNdXRhdGlvblJlc3VsdDxSZXN1bHQ+KSA9PiB2b2lkO1xuICB9PigpO1xuXG4gIGNvbnN0IG9wdGlvbnMgPVxuICAgIHR5cGVvZiBvcHRpb25zT3JPcGVyYXRpb24gPT09ICdmdW5jdGlvbidcbiAgICAgID8geyBvcGVyYXRpb246IG9wdGlvbnNPck9wZXJhdGlvbiB9XG4gICAgICA6IG9wdGlvbnNPck9wZXJhdGlvbjtcblxuICBjb25zdCBmbGF0dGVuaW5nT3AgPSBvcHRpb25zLm9wZXJhdG9yID8/IGNvbmNhdE9wO1xuXG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBvcHRpb25zLmluamVjdG9yPy5nZXQoRGVzdHJveVJlZikgPz8gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGNvbnN0IGNhbGxDb3VudCA9IHNpZ25hbCgwKTtcbiAgY29uc3QgZXJyb3JTaWduYWwgPSBzaWduYWw8dW5rbm93bj4odW5kZWZpbmVkKTtcbiAgY29uc3QgaWRsZSA9IHNpZ25hbCh0cnVlKTtcbiAgY29uc3QgaXNQZW5kaW5nID0gY29tcHV0ZWQoKCkgPT4gY2FsbENvdW50KCkgPiAwKTtcbiAgY29uc3QgdmFsdWUgPSBzaWduYWw8UmVzdWx0IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBpc1N1Y2Nlc3MgPSBjb21wdXRlZCgoKSA9PiAhaWRsZSgpICYmICFpc1BlbmRpbmcoKSAmJiAhZXJyb3JTaWduYWwoKSk7XG5cbiAgY29uc3QgaGFzVmFsdWUgPSBmdW5jdGlvbiAoXG4gICAgdGhpczogTXV0YXRpb248UGFyYW1ldGVyLCBSZXN1bHQ+LFxuICApOiB0aGlzIGlzIE11dGF0aW9uPEV4Y2x1ZGU8UGFyYW1ldGVyLCB1bmRlZmluZWQ+LCBSZXN1bHQ+IHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlKCkgIT09ICd1bmRlZmluZWQnO1xuICB9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGNvbXB1dGVkPE11dGF0aW9uU3RhdHVzPigoKSA9PiB7XG4gICAgaWYgKGlkbGUoKSkge1xuICAgICAgcmV0dXJuICdpZGxlJztcbiAgICB9XG4gICAgaWYgKGNhbGxDb3VudCgpID4gMCkge1xuICAgICAgcmV0dXJuICdwZW5kaW5nJztcbiAgICB9XG4gICAgaWYgKGVycm9yU2lnbmFsKCkpIHtcbiAgICAgIHJldHVybiAnZXJyb3InO1xuICAgIH1cbiAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICB9KTtcblxuICBjb25zdCBpbml0aWFsSW5uZXJTdGF0dXM6IE11dGF0aW9uU3RhdHVzID0gJ2lkbGUnO1xuICBsZXQgaW5uZXJTdGF0dXM6IE11dGF0aW9uU3RhdHVzID0gaW5pdGlhbElubmVyU3RhdHVzO1xuXG4gIGlucHV0U3ViamVjdFxuICAgIC5waXBlKFxuICAgICAgZmxhdHRlbmluZ09wLnJ4SnNPcGVyYXRvcigoaW5wdXQpID0+XG4gICAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgICBjYWxsQ291bnQudXBkYXRlKChjKSA9PiBjICsgMSk7XG4gICAgICAgICAgaWRsZS5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLm9wZXJhdGlvbihpbnB1dC5wYXJhbSkucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzdWx0OiBSZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3M/LihyZXN1bHQsIGlucHV0LnBhcmFtKTtcbiAgICAgICAgICAgICAgaW5uZXJTdGF0dXMgPSAnc3VjY2Vzcyc7XG4gICAgICAgICAgICAgIGVycm9yU2lnbmFsLnNldCh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICB2YWx1ZS5zZXQocmVzdWx0KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5vbkVycm9yPy4oZXJyb3IsIGlucHV0LnBhcmFtKTtcbiAgICAgICAgICAgICAgZXJyb3JTaWduYWwuc2V0KGVycm9yKTtcbiAgICAgICAgICAgICAgdmFsdWUuc2V0KHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgIGlubmVyU3RhdHVzID0gJ2Vycm9yJztcbiAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgIGNhbGxDb3VudC51cGRhdGUoKGMpID0+IGMgLSAxKTtcblxuICAgICAgICAgICAgICBpZiAoaW5uZXJTdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgICAgIGlucHV0LnJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUoKSBhcyBSZXN1bHQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5uZXJTdGF0dXMgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICBpbnB1dC5yZXNvbHZlKHtcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvclNpZ25hbCgpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlucHV0LnJlc29sdmUoe1xuICAgICAgICAgICAgICAgICAgc3RhdHVzOiAnYWJvcnRlZCcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpbm5lclN0YXR1cyA9IGluaXRpYWxJbm5lclN0YXR1cztcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZChkZXN0cm95UmVmKSxcbiAgICApXG4gICAgLnN1YnNjcmliZSgpO1xuXG4gIGNvbnN0IG11dGF0aW9uRm4gPSAocGFyYW06IFBhcmFtZXRlcikgPT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxNdXRhdGlvblJlc3VsdDxSZXN1bHQ+PigocmVzb2x2ZSkgPT4ge1xuICAgICAgaWYgKGNhbGxDb3VudCgpID4gMCAmJiBmbGF0dGVuaW5nT3AuZXhoYXVzdFNlbWFudGljcykge1xuICAgICAgICByZXNvbHZlKHtcbiAgICAgICAgICBzdGF0dXM6ICdhYm9ydGVkJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnB1dFN1YmplY3QubmV4dCh7XG4gICAgICAgICAgcGFyYW0sXG4gICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgbXV0YXRpb24gPSBtdXRhdGlvbkZuIGFzIE11dGF0aW9uPFBhcmFtZXRlciwgUmVzdWx0PjtcbiAgbXV0YXRpb24uc3RhdHVzID0gc3RhdHVzO1xuICBtdXRhdGlvbi5pc1BlbmRpbmcgPSBpc1BlbmRpbmc7XG4gIG11dGF0aW9uLmVycm9yID0gZXJyb3JTaWduYWw7XG4gIG11dGF0aW9uLnZhbHVlID0gdmFsdWU7XG4gIG11dGF0aW9uLmhhc1ZhbHVlID0gaGFzVmFsdWU7XG4gIG11dGF0aW9uLmlzU3VjY2VzcyA9IGlzU3VjY2VzcztcbiAgcmV0dXJuIG11dGF0aW9uO1xufVxuIl19","import { signalStoreFeature, withComputed, withMethods, } from '@ngrx/signals';\nexport function withMutations(mutationsFactory) {\n return (store) => {\n // TODO: Is this the correct usage?\n const source = store;\n const mutations = mutationsFactory({\n ...source,\n ...store.props,\n ...store.methods,\n ...store.stateSignals,\n });\n const feature = createMutationsFeature(mutations);\n return feature(store);\n };\n}\nfunction createMutationsFeature(mutations) {\n const keys = Object.keys(mutations);\n const feature = signalStoreFeature(withMethods(() => keys.reduce((acc, key) => ({\n ...acc,\n [key]: async (params) => {\n const mutation = mutations[key];\n if (!mutation) {\n throw new Error(`Mutation ${key} not found`);\n }\n const result = await mutation(params);\n return result;\n },\n }), {})), withComputed(() => keys.reduce((acc, key) => ({\n ...acc,\n [`${key}IsPending`]: mutations[key].isPending,\n [`${key}Status`]: mutations[key].status,\n [`${key}Error`]: mutations[key].error,\n }), {})));\n return feature;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tdXRhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdG9vbGtpdC9zcmMvbGliL3dpdGgtbXV0YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFFTCxrQkFBa0IsRUFLbEIsWUFBWSxFQUNaLFdBQVcsR0FFWixNQUFNLGVBQWUsQ0FBQztBQTRFdkIsTUFBTSxVQUFVLGFBQWEsQ0FJM0IsZ0JBRVc7SUFFWCxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixtQ0FBbUM7UUFDbkMsTUFBTSxNQUFNLEdBQUcsS0FBK0MsQ0FBQztRQUMvRCxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztZQUNqQyxHQUFHLE1BQU07WUFDVCxHQUFHLEtBQUssQ0FBQyxLQUFLO1lBQ2QsR0FBRyxLQUFLLENBQUMsT0FBTztZQUNoQixHQUFHLEtBQUssQ0FBQyxZQUFZO1NBQ3RCLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFHLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUM3QixTQUFpQjtJQUVqQixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXBDLE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUNoQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDYixHQUFHLEdBQUc7UUFDTixDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFhLEVBQUUsRUFBRTtZQUM3QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO0tBQ0YsQ0FBQyxFQUNGLEVBQXVCLENBQ3hCLENBQ0YsRUFDRCxZQUFZLENBQUMsR0FBRyxFQUFFLENBQ2hCLElBQUksQ0FBQyxNQUFNLENBQ1QsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsR0FBRyxHQUFHO1FBQ04sQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVM7UUFDN0MsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU07UUFDdkMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUs7S0FDdEMsQ0FBQyxFQUNGLEVBQWdDLENBQ2pDLENBQ0YsQ0FDRixDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBzaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBTdGF0ZVNpZ25hbHMsXG4gIFN0YXRlU291cmNlLFxuICB3aXRoQ29tcHV0ZWQsXG4gIHdpdGhNZXRob2RzLFxuICBXcml0YWJsZVN0YXRlU291cmNlLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IE11dGF0aW9uLCBNdXRhdGlvblN0YXR1cyB9IGZyb20gJy4vbXV0YXRpb24vbXV0YXRpb24nO1xuXG4vLyBOYW1lZE11dGF0aW9uTWV0aG9kcyBiZWxvdyB3aWxsIGluZmVyIHRoZSBhY3R1YWwgcGFyYW1ldGVyIGFuZCByZXR1cm4gdHlwZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG50eXBlIE11dGF0aW9uc0RpY3Rpb25hcnkgPSBSZWNvcmQ8c3RyaW5nLCBNdXRhdGlvbjxhbnksIGFueT4+O1xuXG4vLyB3aXRoTWV0aG9kcyB1c2VzIFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPiBpbnRlcm5hbGx5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1mdW5jdGlvbi10eXBlXG5leHBvcnQgdHlwZSBNZXRob2RzRGljdGlvbmFyeSA9IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPjtcblxudHlwZSBOYW1lZE11dGF0aW9uUHJvcHM8VCBleHRlbmRzIE11dGF0aW9uc0RpY3Rpb25hcnk+ID0ge1xuICBbUHJvcCBpbiBrZXlvZiBUIGFzIGAke1Byb3AgJiBzdHJpbmd9SXNQZW5kaW5nYF06IFNpZ25hbDxib29sZWFuPjtcbn0gJiB7XG4gIFtQcm9wIGluIGtleW9mIFQgYXMgYCR7UHJvcCAmIHN0cmluZ31TdGF0dXNgXTogU2lnbmFsPE11dGF0aW9uU3RhdHVzPjtcbn0gJiB7XG4gIFtQcm9wIGluIGtleW9mIFQgYXMgYCR7UHJvcCAmIHN0cmluZ31FcnJvcmBdOiBTaWduYWw8RXJyb3IgfCB1bmRlZmluZWQ+O1xufTtcblxudHlwZSBOYW1lZE11dGF0aW9uTWV0aG9kczxUIGV4dGVuZHMgTXV0YXRpb25zRGljdGlvbmFyeT4gPSB7XG4gIFtQcm9wIGluIGtleW9mIFQgYXMgYCR7UHJvcCAmIHN0cmluZ31gXTogVFtQcm9wXSBleHRlbmRzIE11dGF0aW9uPFxuICAgIGluZmVyIFAsXG4gICAgaW5mZXIgUlxuICA+XG4gICAgPyBNdXRhdGlvbjxQLCBSPlxuICAgIDogbmV2ZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOYW1lZE11dGF0aW9uUmVzdWx0PFQgZXh0ZW5kcyBNdXRhdGlvbnNEaWN0aW9uYXJ5PiA9XG4gIEVtcHR5RmVhdHVyZVJlc3VsdCAmIHtcbiAgICBwcm9wczogTmFtZWRNdXRhdGlvblByb3BzPFQ+O1xuICAgIG1ldGhvZHM6IE5hbWVkTXV0YXRpb25NZXRob2RzPFQ+O1xuICB9O1xuXG4vKipcbiAqIEFkZHMgbXV0YXRpb24gbWV0aG9kcyB0byB0aGUgc3RvcmUuIEFsc28sIGZvciBlYWNoIG11dGF0aW9uIG1ldGhvZCwgc2V2ZXJhbFxuICogU2lnbmFscyBhcmUgYWRkZWQgaW5mb3JtaW5nIGFib3V0IHRoZSBtdXRhdGlvbidzIHN0YXR1cyBhbmQgZXJyb3JzLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCB0eXBlIFBhcmFtcyA9IHtcbiAqICAgdmFsdWU6IG51bWJlcjtcbiAqIH07XG4gKlxuICogZXhwb3J0IGNvbnN0IENvdW50ZXJTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB7IHByb3ZpZGVkSW46ICdyb290JyB9LFxuICogICB3aXRoU3RhdGUoeyBjb3VudGVyOiAwIH0pLFxuICogICB3aXRoTXV0YXRpb25zKChzdG9yZSkgPT4gKHtcbiAqICAgICBpbmNyZW1lbnQ6IHJ4TXV0YXRpb24oeyAuLi4gfSksXG4gKiAgIH0pKSxcbiAqICk7XG4gKiBgYGBcbiAqXG4gKiBUaGVyZSBhcmUgc2V2ZXJhbCB0eXBlcyBvZiBtdXRhdGlvbnMuIEluIHRoZSBleGFtcGxlIHNob3duLCBhbiB7QGxpbmsgbW9kdWxlOnJ4LW11dGF0aW9uLnJ4TXV0YXRpb24gfCByeE11dGF0aW9ufVxuICogbGV2ZXJhZ2luZyBSeEpTIGlzIHVzZWRcbiAqXG4gKiBGb3IgdGhlIGRlZmluZWQgYGluY3JlbWVudGAgbXV0YXRpb24sIHNldmVyYWwgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGFuZFxuICogbWV0aG9kcyBhcmUgYWRkZWQgdG8gdGhlIHN0b3JlOlxuICogLSBgaW5jcmVtZW50KHBhcmFtczogUGFyYW1zKTogUHJvbWlzZTxNdXRhdGlvblJlc3VsdDxudW1iZXI+PmA6IFRoZSBtdXRhdGlvbiBtZXRob2QuXG4gKiAtIGBpbmNyZW1lbnRJc1BlbmRpbmdgOiBBIHNpZ25hbCBpbmRpY2F0aW5nIGlmIHRoZSBtdXRhdGlvbiBpcyBpbiBwcm9ncmVzcy5cbiAqIC0gYGluY3JlbWVudFN0YXR1c2A6IEEgc2lnbmFsIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIG11dGF0aW9uLlxuICogLSBgaW5jcmVtZW50RXJyb3JgOiBBIHNpZ25hbCBjb250YWluaW5nIGFueSBlcnJvciB0aGF0IG9jY3VycmVkIGR1cmluZyB0aGUgbXV0YXRpb24uXG4gKlxuICogQHBhcmFtIG11dGF0aW9uc0ZhY3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhNdXRhdGlvbnM8XG4gIElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSZXN1bHQgZXh0ZW5kcyBNdXRhdGlvbnNEaWN0aW9uYXJ5LFxuPihcbiAgbXV0YXRpb25zRmFjdG9yeTogKFxuICAgIHN0b3JlOiBJbnB1dFsncHJvcHMnXSAmXG4gICAgICBJbnB1dFsnbWV0aG9kcyddICZcbiAgICAgIFdyaXRhYmxlU3RhdGVTb3VyY2U8SW5wdXRbJ3N0YXRlJ10+ICZcbiAgICAgIFN0YXRlU2lnbmFsczxJbnB1dFsnc3RhdGUnXT4sXG4gICkgPT4gUmVzdWx0LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBOYW1lZE11dGF0aW9uUmVzdWx0PFJlc3VsdD4+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aE11dGF0aW9uczxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFJlc3VsdCBleHRlbmRzIE11dGF0aW9uc0RpY3Rpb25hcnksXG4+KFxuICBtdXRhdGlvbnNGYWN0b3J5OiAoXG4gICAgc3RvcmU6IElucHV0Wydwcm9wcyddICYgSW5wdXRbJ21ldGhvZHMnXSAmIFN0YXRlU291cmNlPElucHV0WydzdGF0ZSddPixcbiAgKSA9PiBSZXN1bHQsXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQ+IHtcbiAgcmV0dXJuIChzdG9yZSkgPT4ge1xuICAgIC8vIFRPRE86IElzIHRoaXMgdGhlIGNvcnJlY3QgdXNhZ2U/XG4gICAgY29uc3Qgc291cmNlID0gc3RvcmUgYXMgU3RhdGVTb3VyY2U8dHlwZW9mIHN0b3JlLnN0YXRlU2lnbmFscz47XG4gICAgY29uc3QgbXV0YXRpb25zID0gbXV0YXRpb25zRmFjdG9yeSh7XG4gICAgICAuLi5zb3VyY2UsXG4gICAgICAuLi5zdG9yZS5wcm9wcyxcbiAgICAgIC4uLnN0b3JlLm1ldGhvZHMsXG4gICAgICAuLi5zdG9yZS5zdGF0ZVNpZ25hbHMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBmZWF0dXJlID0gY3JlYXRlTXV0YXRpb25zRmVhdHVyZShtdXRhdGlvbnMpO1xuICAgIHJldHVybiBmZWF0dXJlKHN0b3JlKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTXV0YXRpb25zRmVhdHVyZTxSZXN1bHQgZXh0ZW5kcyBNdXRhdGlvbnNEaWN0aW9uYXJ5PihcbiAgbXV0YXRpb25zOiBSZXN1bHQsXG4pIHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG11dGF0aW9ucyk7XG5cbiAgY29uc3QgZmVhdHVyZSA9IHNpZ25hbFN0b3JlRmVhdHVyZShcbiAgICB3aXRoTWV0aG9kcygoKSA9PlxuICAgICAga2V5cy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIGtleSkgPT4gKHtcbiAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgW2tleV06IGFzeW5jIChwYXJhbXM6IG5ldmVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtdXRhdGlvbiA9IG11dGF0aW9uc1trZXldO1xuICAgICAgICAgICAgaWYgKCFtdXRhdGlvbikge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE11dGF0aW9uICR7a2V5fSBub3QgZm91bmRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG11dGF0aW9uKHBhcmFtcyk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICB7fSBhcyBNZXRob2RzRGljdGlvbmFyeSxcbiAgICAgICksXG4gICAgKSxcbiAgICB3aXRoQ29tcHV0ZWQoKCkgPT5cbiAgICAgIGtleXMucmVkdWNlKFxuICAgICAgICAoYWNjLCBrZXkpID0+ICh7XG4gICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgIFtgJHtrZXl9SXNQZW5kaW5nYF06IG11dGF0aW9uc1trZXldLmlzUGVuZGluZyxcbiAgICAgICAgICBbYCR7a2V5fVN0YXR1c2BdOiBtdXRhdGlvbnNba2V5XS5zdGF0dXMsXG4gICAgICAgICAgW2Ake2tleX1FcnJvcmBdOiBtdXRhdGlvbnNba2V5XS5lcnJvcixcbiAgICAgICAgfSksXG4gICAgICAgIHt9IGFzIE5hbWVkTXV0YXRpb25Qcm9wczxSZXN1bHQ+LFxuICAgICAgKSxcbiAgICApLFxuICApO1xuICByZXR1cm4gZmVhdHVyZTtcbn1cbiJdfQ==","//** Types for `withResource` */\nimport { isSignal, } from '@angular/core';\nimport { signalStoreFeature, withLinkedState, withMethods, withProps, } from '@ngrx/signals';\nexport function withResource(resourceFactory) {\n return (store) => {\n const resourceOrDictionary = resourceFactory({\n ...store.stateSignals,\n ...store.props,\n ...store.methods,\n });\n if (isResourceRef(resourceOrDictionary)) {\n return createUnnamedResource(resourceOrDictionary)(store);\n }\n else {\n return createNamedResource(resourceOrDictionary)(store);\n }\n };\n}\nfunction createUnnamedResource(resource) {\n function hasValue() {\n return resource.hasValue();\n }\n return signalStoreFeature(withLinkedState(() => ({ value: resource.value })), withProps(() => ({\n status: resource.status,\n error: resource.error,\n isLoading: resource.isLoading,\n })), withMethods(() => ({\n hasValue,\n _reload: () => resource.reload(),\n })));\n}\nfunction createNamedResource(dictionary) {\n const keys = Object.keys(dictionary);\n const state = keys.reduce((state, resourceName) => ({\n ...state,\n [`${resourceName}Value`]: dictionary[resourceName].value,\n }), {});\n const props = keys.reduce((props, resourceName) => ({\n ...props,\n [`${resourceName}Status`]: dictionary[resourceName].status,\n [`${resourceName}Error`]: dictionary[resourceName].error,\n [`${resourceName}IsLoading`]: dictionary[resourceName].isLoading,\n }), {});\n const methods = keys.reduce((methods, resourceName) => {\n return {\n ...methods,\n [`${resourceName}HasValue`]: () => dictionary[resourceName].hasValue(),\n [`_${resourceName}Reload`]: () => dictionary[resourceName].reload(),\n };\n }, {});\n return signalStoreFeature(withLinkedState(() => state), withProps(() => props), withMethods(() => methods));\n}\nfunction isResourceRef(value) {\n return (value !== null &&\n typeof value === 'object' &&\n 'value' in value &&\n isSignal(value.value) &&\n 'status' in value &&\n 'error' in value &&\n 'isLoading' in value &&\n 'hasValue' in value &&\n 'reload' in value);\n}\n//** Implementation of `mapToResource` */\n/**\n * @experimental\n * @description\n *\n * Maps a named resource to type `Resource<T>`.\n *\n * @usageNotes\n *\n * ```ts\n * const store = signalStore(\n * withState({ userId: undefined as number | undefined }),\n * withResource(({ userId }) => ({\n * user: httpResource<User[]>(() => '/users', { defaultValue: [] }),\n * }))\n * );\n * const userResource = mapToResource(store, 'user');\n * userResource satisfies Resource<User[]>;\n * ```\n *\n * @param store The store instance to map the resource to.\n * @param name The name of the resource to map.\n * @returns `ResourceRef<T>`\n */\nexport function mapToResource(store, name) {\n const resourceName = String(name);\n function hasValue() {\n return store[`${resourceName}HasValue`]();\n }\n return {\n value: store[`${resourceName}Value`],\n status: store[`${resourceName}Status`],\n error: store[`${resourceName}Error`],\n isLoading: store[`${resourceName}IsLoading`],\n hasValue,\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvd2l0aC1yZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FBZ0M7QUFFaEMsT0FBTyxFQUNMLFFBQVEsR0FNVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsa0JBQWtCLEVBSWxCLGVBQWUsRUFDZixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBMEh2QixNQUFNLFVBQVUsWUFBWSxDQUkxQixlQUVvRDtJQUVwRCxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztZQUMzQyxHQUFHLEtBQUssQ0FBQyxZQUFZO1lBQ3JCLEdBQUcsS0FBSyxDQUFDLEtBQUs7WUFDZCxHQUFHLEtBQUssQ0FBQyxPQUFPO1NBQ2pCLENBQUMsQ0FBQztRQUVILElBQUksYUFBYSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztZQUN4QyxPQUFPLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHFCQUFxQixDQUM1QixRQUFvQztJQUVwQyxTQUFTLFFBQVE7UUFDZixPQUFPLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxrQkFBa0IsQ0FDdkIsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFDbEQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7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TztRQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxZQUFZLE9BQU8sQ0FBQztRQUNwQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsWUFBWSxRQUFRLENBQUM7UUFDdEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLFlBQVksT0FBTyxDQUFDO1FBQ3BDLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxZQUFZLFdBQVcsQ0FBQztRQUM1QyxRQUFRO0tBQ3NCLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vKiogVHlwZXMgZm9yIGB3aXRoUmVzb3VyY2VgICovXG5cbmltcG9ydCB7XG4gIGlzU2lnbmFsLFxuICBSZXNvdXJjZSxcbiAgUmVzb3VyY2VSZWYsXG4gIFJlc291cmNlU3RhdHVzLFxuICBTaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIHNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlLFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFN0YXRlU2lnbmFscyxcbiAgd2l0aExpbmtlZFN0YXRlLFxuICB3aXRoTWV0aG9kcyxcbiAgd2l0aFByb3BzLFxufSBmcm9tICdAbmdyeC9zaWduYWxzJztcblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VSZXN1bHQ8VD4gPSB7XG4gIHN0YXRlOiB7IHZhbHVlOiBUIH07XG4gIHByb3BzOiB7XG4gICAgc3RhdHVzOiBTaWduYWw8UmVzb3VyY2VTdGF0dXM+O1xuICAgIGVycm9yOiBTaWduYWw8RXJyb3IgfCB1bmRlZmluZWQ+O1xuICAgIGlzTG9hZGluZzogU2lnbmFsPGJvb2xlYW4+O1xuICB9O1xuICBtZXRob2RzOiB7XG4gICAgaGFzVmFsdWUoKTogdGhpcyBpcyBSZXNvdXJjZTxFeGNsdWRlPFQsIHVuZGVmaW5lZD4+O1xuICAgIF9yZWxvYWQoKTogYm9vbGVhbjtcbiAgfTtcbn07XG5cbnR5cGUgUmVzb3VyY2VEaWN0aW9uYXJ5ID0gUmVjb3JkPHN0cmluZywgUmVzb3VyY2VSZWY8dW5rbm93bj4+O1xuXG50eXBlIE5hbWVkUmVzb3VyY2VSZXN1bHQ8VCBleHRlbmRzIFJlc291cmNlRGljdGlvbmFyeT4gPSB7XG4gIHN0YXRlOiB7XG4gICAgW1Byb3AgaW4ga2V5b2YgVCBhcyBgJHtQcm9wICZcbiAgICAgIHN0cmluZ31WYWx1ZWBdOiBUW1Byb3BdWyd2YWx1ZSddIGV4dGVuZHMgU2lnbmFsPGluZmVyIFM+ID8gUyA6IG5ldmVyO1xuICB9O1xuICBwcm9wczoge1xuICAgIFtQcm9wIGluIGtleW9mIFQgYXMgYCR7UHJvcCAmIHN0cmluZ31TdGF0dXNgXTogU2lnbmFsPFJlc291cmNlU3RhdHVzPjtcbiAgfSAmIHtcbiAgICBbUHJvcCBpbiBrZXlvZiBUIGFzIGAke1Byb3AgJiBzdHJpbmd9RXJyb3JgXTogU2lnbmFsPEVycm9yIHwgdW5kZWZpbmVkPjtcbiAgfSAmIHtcbiAgICBbUHJvcCBpbiBrZXlvZiBUIGFzIGAke1Byb3AgJiBzdHJpbmd9SXNMb2FkaW5nYF06IFNpZ25hbDxib29sZWFuPjtcbiAgfTtcbiAgbWV0aG9kczoge1xuICAgIFtQcm9wIGluIGtleW9mIFQgYXMgYCR7UHJvcCAmIHN0cmluZ31IYXNWYWx1ZWBdOiAoKSA9PiB0aGlzIGlzIFJlc291cmNlPFxuICAgICAgRXhjbHVkZTxUW1Byb3BdWyd2YWx1ZSddLCB1bmRlZmluZWQ+XG4gICAgPjtcbiAgfSAmIHtcbiAgICBbUHJvcCBpbiBrZXlvZiBUIGFzIGBfJHtQcm9wICYgc3RyaW5nfVJlbG9hZGBdOiAoKSA9PiBib29sZWFuO1xuICB9O1xufTtcblxuLy8qKiBJbXBsZW1lbnRhdGlvbiBvZiBgd2l0aFJlc291cmNlYCAqL1xuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIEludGVncmF0ZXMgYSBgUmVzb3VyY2VgIGludG8gdGhlIFNpZ25hbFN0b3JlIGFuZCBtYWtlcyB0aGUgc3RvcmUgaW5zdGFuY2VcbiAqIGltcGxlbWVudCB0aGUgYFJlc291cmNlYCBpbnRlcmZhY2UuXG4gKlxuICogVGhlIHJlc291cmNl4oCZcyB2YWx1ZSBpcyBzdG9yZWQgdW5kZXIgdGhlIGB2YWx1ZWAga2V5IGluIHRoZSBzdGF0ZVxuICogYW5kIGlzIGV4cG9zZWQgYXMgYSBgRGVlcFNpZ25hbGAuXG4gKlxuICogSXQgY2FuIGFsc28gYmUgdXBkYXRlZCB2aWEgYHBhdGNoU3RhdGVgLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IFVzZXJTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB3aXRoU3RhdGUoeyB1c2VySWQ6IHVuZGVmaW5lZCBhcyBudW1iZXIgfCB1bmRlZmluZWQgfSksXG4gKiAgIHdpdGhSZXNvdXJjZSgoeyB1c2VySWQgfSkgPT5cbiAqICAgICBodHRwUmVzb3VyY2U8VXNlcj4oKCkgPT5cbiAqICAgICAgIHVzZXJJZCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYC91c2Vycy8ke3VzZXJJZH1gXG4gKiAgICAgKVxuICogICApXG4gKiApO1xuICpcbiAqIGNvbnN0IHVzZXJTdG9yZSA9IG5ldyBVc2VyU3RvcmUoKTtcbiAqIHVzZXJTdG9yZS52YWx1ZSgpOyAvLyBVc2VyIHwgdW5kZWZpbmVkXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gcmVzb3VyY2VGYWN0b3J5IEEgZmFjdG9yeSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIHRoZSBzdG9yZSdzIHN0YXRlIHNpZ25hbHMsXG4gKiBtZXRob2RzLCBhbmQgcHJvcHMuIE5lZWRzIHRvIHJldHVybiBhIGBSZXNvdXJjZVJlZmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoUmVzb3VyY2U8XG4gIElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSZXNvdXJjZVZhbHVlLFxuPihcbiAgcmVzb3VyY2VGYWN0b3J5OiAoXG4gICAgc3RvcmU6IElucHV0Wydwcm9wcyddICYgSW5wdXRbJ21ldGhvZHMnXSAmIFN0YXRlU2lnbmFsczxJbnB1dFsnc3RhdGUnXT4sXG4gICkgPT4gUmVzb3VyY2VSZWY8UmVzb3VyY2VWYWx1ZT4sXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIFJlc291cmNlUmVzdWx0PFJlc291cmNlVmFsdWU+PjtcblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBJbnRlZ3JhdGVzIG11bHRpcGxlIHJlc291cmNlcyBpbnRvIHRoZSBTaWduYWxTdG9yZS4gRWFjaCByZXNvdXJjZSBpc1xuICogcmVnaXN0ZXJlZCBieSBuYW1lLCB3aGljaCBpcyB1c2VkIGFzIGEgcHJlZml4IHdoZW4gc3ByZWFkaW5nIHRoZSBtZW1iZXJzXG4gKiBvZiBgUmVzb3VyY2VgIG9udG8gdGhlIHN0b3JlLlxuICpcbiAqIEVhY2ggcmVzb3VyY2XigJlzIHZhbHVlIGlzIHBhcnQgb2YgdGhlIHN0YXRlLCBzdG9yZWQgdW5kZXIgdGhlIGB2YWx1ZWAga2V5XG4gKiB3aXRoIHRoZSByZXNvdXJjZSBuYW1lIGFzIHByZWZpeC4gVmFsdWVzIGFyZSBleHBvc2VkIGFzIGBEZWVwU2lnbmFsYHMgYW5kXG4gKiBjYW4gYmUgdXBkYXRlZCB2aWEgYHBhdGNoU3RhdGVgLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IFVzZXJTdG9yZSA9IHNpZ25hbFN0b3JlKFxuICogICB3aXRoU3RhdGUoeyB1c2VySWQ6IHVuZGVmaW5lZCBhcyBudW1iZXIgfCB1bmRlZmluZWQgfSksXG4gKiAgIHdpdGhSZXNvdXJjZSgoeyB1c2VySWQgfSkgPT4gKHtcbiAqICAgICBsaXN0OiBodHRwUmVzb3VyY2U8VXNlcltdPigoKSA9PiAnL3VzZXJzJywgeyBkZWZhdWx0VmFsdWU6IFtdIH0pLFxuICogICAgIGRldGFpbDogaHR0cFJlc291cmNlPFVzZXI+KCgpID0+XG4gKiAgICAgICB1c2VySWQgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IGAvdXNlcnMvJHt1c2VySWR9YFxuICogICAgICksXG4gKiAgIH0pKVxuICogKTtcbiAqXG4gKiBjb25zdCB1c2VyU3RvcmUgPSBuZXcgVXNlclN0b3JlKCk7XG4gKiB1c2VyU3RvcmUubGlzdFZhbHVlKCk7IC8vIFtdXG4gKiB1c2VyU3RvcmUuZGV0YWlsVmFsdWUoKTsgLy8gVXNlciB8IHVuZGVmaW5lZFxuICogYGBgXG4gKlxuICogQHBhcmFtIHJlc291cmNlRmFjdG9yeSBBIGZhY3RvcnkgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyB0aGUgc3RvcmUncyBwcm9wcyxcbiAqIG1ldGhvZHMsIGFuZCBzdGF0ZSBzaWduYWxzLiBJdCBtdXN0IHJldHVybiBhIGBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZVJlZj5gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc291cmNlPFxuICBJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRGljdGlvbmFyeSBleHRlbmRzIFJlc291cmNlRGljdGlvbmFyeSxcbj4oXG4gIHJlc291cmNlRmFjdG9yeTogKFxuICAgIHN0b3JlOiBJbnB1dFsncHJvcHMnXSAmIElucHV0WydtZXRob2RzJ10gJiBTdGF0ZVNpZ25hbHM8SW5wdXRbJ3N0YXRlJ10+LFxuICApID0+IERpY3Rpb25hcnksXG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIE5hbWVkUmVzb3VyY2VSZXN1bHQ8RGljdGlvbmFyeT4+O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFJlc291cmNlPFxuICBJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUmVzb3VyY2VWYWx1ZSxcbj4oXG4gIHJlc291cmNlRmFjdG9yeTogKFxuICAgIHN0b3JlOiBJbnB1dFsncHJvcHMnXSAmIElucHV0WydtZXRob2RzJ10gJiBTdGF0ZVNpZ25hbHM8SW5wdXRbJ3N0YXRlJ10+LFxuICApID0+IFJlc291cmNlUmVmPFJlc291cmNlVmFsdWU+IHwgUmVzb3VyY2VEaWN0aW9uYXJ5LFxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0PiB7XG4gIHJldHVybiAoc3RvcmUpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZU9yRGljdGlvbmFyeSA9IHJlc291cmNlRmFjdG9yeSh7XG4gICAgICAuLi5zdG9yZS5zdGF0ZVNpZ25hbHMsXG4gICAgICAuLi5zdG9yZS5wcm9wcyxcbiAgICAgIC4uLnN0b3JlLm1ldGhvZHMsXG4gICAgfSk7XG5cbiAgICBpZiAoaXNSZXNvdXJjZVJlZihyZXNvdXJjZU9yRGljdGlvbmFyeSkpIHtcbiAgICAgIHJldHVybiBjcmVhdGVVbm5hbWVkUmVzb3VyY2UocmVzb3VyY2VPckRpY3Rpb25hcnkpKHN0b3JlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGNyZWF0ZU5hbWVkUmVzb3VyY2UocmVzb3VyY2VPckRpY3Rpb25hcnkpKHN0b3JlKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVVubmFtZWRSZXNvdXJjZTxSZXNvdXJjZVZhbHVlPihcbiAgcmVzb3VyY2U6IFJlc291cmNlUmVmPFJlc291cmNlVmFsdWU+LFxuKSB7XG4gIGZ1bmN0aW9uIGhhc1ZhbHVlKCk6IHRoaXMgaXMgUmVzb3VyY2U8RXhjbHVkZTxSZXNvdXJjZVZhbHVlLCB1bmRlZmluZWQ+PiB7XG4gICAgcmV0dXJuIHJlc291cmNlLmhhc1ZhbHVlKCk7XG4gIH1cblxuICByZXR1cm4gc2lnbmFsU3RvcmVGZWF0dXJlKFxuICAgIHdpdGhMaW5rZWRTdGF0ZSgoKSA9PiAoeyB2YWx1ZTogcmVzb3VyY2UudmFsdWUgfSkpLFxuICAgIHdpdGhQcm9wcygoKSA9PiAoe1xuICAgICAgc3RhdHVzOiByZXNvdXJjZS5zdGF0dXMsXG4gICAgICBlcnJvcjogcmVzb3VyY2UuZXJyb3IsXG4gICAgICBpc0xvYWRpbmc6IHJlc291cmNlLmlzTG9hZGluZyxcbiAgICB9KSksXG4gICAgd2l0aE1ldGhvZHMoKCkgPT4gKHtcbiAgICAgIGhhc1ZhbHVlLFxuICAgICAgX3JlbG9hZDogKCkgPT4gcmVzb3VyY2UucmVsb2FkKCksXG4gICAgfSkpLFxuICApO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVOYW1lZFJlc291cmNlPERpY3Rpb25hcnkgZXh0ZW5kcyBSZXNvdXJjZURpY3Rpb25hcnk+KFxuICBkaWN0aW9uYXJ5OiBEaWN0aW9uYXJ5LFxuKSB7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhkaWN0aW9uYXJ5KTtcblxuICBjb25zdCBzdGF0ZTogUmVjb3JkPHN0cmluZywgV3JpdGFibGVTaWduYWw8dW5rbm93bj4+ID0ga2V5cy5yZWR1Y2UoXG4gICAgKHN0YXRlLCByZXNvdXJjZU5hbWUpID0+ICh7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIFtgJHtyZXNvdXJjZU5hbWV9VmFsdWVgXTogZGljdGlvbmFyeVtyZXNvdXJjZU5hbWVdLnZhbHVlLFxuICAgIH0pLFxuICAgIHt9LFxuICApO1xuXG4gIGNvbnN0IHByb3BzOiBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8dW5rbm93bj4+ID0ga2V5cy5yZWR1Y2UoXG4gICAgKHByb3BzLCByZXNvdXJjZU5hbWUpID0+ICh7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIFtgJHtyZXNvdXJjZU5hbWV9U3RhdHVzYF06IGRpY3Rpb25hcnlbcmVzb3VyY2VOYW1lXS5zdGF0dXMsXG4gICAgICBbYCR7cmVzb3VyY2VOYW1lfUVycm9yYF06IGRpY3Rpb25hcnlbcmVzb3VyY2VOYW1lXS5lcnJvcixcbiAgICAgIFtgJHtyZXNvdXJjZU5hbWV9SXNMb2FkaW5nYF06IGRpY3Rpb25hcnlbcmVzb3VyY2VOYW1lXS5pc0xvYWRpbmcsXG4gICAgfSksXG4gICAge30sXG4gICk7XG5cbiAgY29uc3QgbWV0aG9kczogUmVjb3JkPHN0cmluZywgKCkgPT4gYm9vbGVhbj4gPSBrZXlzLnJlZHVjZShcbiAgICAobWV0aG9kcywgcmVzb3VyY2VOYW1lKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5tZXRob2RzLFxuICAgICAgICBbYCR7cmVzb3VyY2VOYW1lfUhhc1ZhbHVlYF06ICgpID0+IGRpY3Rpb25hcnlbcmVzb3VyY2VOYW1lXS5oYXNWYWx1ZSgpLFxuICAgICAgICBbYF8ke3Jlc291cmNlTmFtZX1SZWxvYWRgXTogKCkgPT4gZGljdGlvbmFyeVtyZXNvdXJjZU5hbWVdLnJlbG9hZCgpLFxuICAgICAgfTtcbiAgICB9LFxuICAgIHt9LFxuICApO1xuXG4gIHJldHVybiBzaWduYWxTdG9yZUZlYXR1cmUoXG4gICAgd2l0aExpbmtlZFN0YXRlKCgpID0+IHN0YXRlKSxcbiAgICB3aXRoUHJvcHMoKCkgPT4gcHJvcHMpLFxuICAgIHdpdGhNZXRob2RzKCgpID0+IG1ldGhvZHMpLFxuICApO1xufVxuXG5mdW5jdGlvbiBpc1Jlc291cmNlUmVmKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVzb3VyY2VSZWY8dW5rbm93bj4ge1xuICByZXR1cm4gKFxuICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICd2YWx1ZScgaW4gdmFsdWUgJiZcbiAgICBpc1NpZ25hbCh2YWx1ZS52YWx1ZSkgJiZcbiAgICAnc3RhdHVzJyBpbiB2YWx1ZSAmJlxuICAgICdlcnJvcicgaW4gdmFsdWUgJiZcbiAgICAnaXNMb2FkaW5nJyBpbiB2YWx1ZSAmJlxuICAgICdoYXNWYWx1ZScgaW4gdmFsdWUgJiZcbiAgICAncmVsb2FkJyBpbiB2YWx1ZVxuICApO1xufVxuXG4vLyoqIFR5cGVzIGZvciBgbWFwVG9SZXNvdXJjZWAgKi9cblxudHlwZSBOYW1lZFJlc291cmNlPE5hbWUgZXh0ZW5kcyBzdHJpbmcsIFQ+ID0ge1xuICBbUHJvcCBpbiBgJHtOYW1lfVZhbHVlYF06IFNpZ25hbDxUPjtcbn0gJiB7XG4gIFtQcm9wIGluIGAke05hbWV9U3RhdHVzYF06IFNpZ25hbDxSZXNvdXJjZVN0YXR1cz47XG59ICYge1xuICBbUHJvcCBpbiBgJHtOYW1lfUVycm9yYF06IFNpZ25hbDxFcnJvciB8IHVuZGVmaW5lZD47XG59ICYge1xuICBbUHJvcCBpbiBgJHtOYW1lfUlzTG9hZGluZ2BdOiBTaWduYWw8Ym9vbGVhbj47XG59ICYge1xuICBbUHJvcCBpbiBgJHtOYW1lfUhhc1ZhbHVlYF06ICgpID0+IGJvb2xlYW47XG59O1xuXG50eXBlIElzVmFsaWRSZXNvdXJjZU5hbWU8XG4gIE5hbWUgZXh0ZW5kcyBzdHJpbmcsXG4gIFN0b3JlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4+ID1cbiAgU3RvcmVbYCR7TmFtZX1WYWx1ZWBdIGV4dGVuZHMgU2lnbmFsPGluZmVyIFM+XG4gICAgPyBTdG9yZSBleHRlbmRzIE5hbWVkUmVzb3VyY2U8TmFtZSwgUz5cbiAgICAgID8gdHJ1ZVxuICAgICAgOiBmYWxzZVxuICAgIDogZmFsc2U7XG5cbnR5cGUgUmVzb3VyY2VOYW1lczxTdG9yZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IGtleW9mIHtcbiAgW1Byb3AgaW4ga2V5b2YgU3RvcmUgYXMgUHJvcCBleHRlbmRzIGAke2luZmVyIE5hbWV9VmFsdWVgXG4gICAgPyBJc1ZhbGlkUmVzb3VyY2VOYW1lPE5hbWUsIFN0b3JlPiBleHRlbmRzIHRydWVcbiAgICAgID8gTmFtZVxuICAgICAgOiBuZXZlclxuICAgIDogbmV2ZXJdOiBTdG9yZVtQcm9wXSBleHRlbmRzIFNpZ25hbDxpbmZlciBTPiA/IFMgOiBuZXZlcjtcbn07XG5cbnR5cGUgTWFwcGVkUmVzb3VyY2U8XG4gIFN0b3JlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIE5hbWUgZXh0ZW5kcyBzdHJpbmcsXG4+ID0gUmVzb3VyY2U8U3RvcmVbYCR7TmFtZX1WYWx1ZWBdIGV4dGVuZHMgU2lnbmFsPGluZmVyIFM+ID8gUyA6IG5ldmVyPjtcblxuLy8qKiBJbXBsZW1lbnRhdGlvbiBvZiBgbWFwVG9SZXNvdXJjZWAgKi9cblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBNYXBzIGEgbmFtZWQgcmVzb3VyY2UgdG8gdHlwZSBgUmVzb3VyY2U8VD5gLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IHN0b3JlID0gc2lnbmFsU3RvcmUoXG4gKiAgIHdpdGhTdGF0ZSh7IHVzZXJJZDogdW5kZWZpbmVkIGFzIG51bWJlciB8IHVuZGVmaW5lZCB9KSxcbiAqICAgd2l0aFJlc291cmNlKCh7IHVzZXJJZCB9KSA9PiAoe1xuICogICAgIHVzZXI6IGh0dHBSZXNvdXJjZTxVc2VyW10+KCgpID0+ICcvdXNlcnMnLCB7IGRlZmF1bHRWYWx1ZTogW10gfSksXG4gKiAgIH0pKVxuICogKTtcbiAqIGNvbnN0IHVzZXJSZXNvdXJjZSA9IG1hcFRvUmVzb3VyY2Uoc3RvcmUsICd1c2VyJyk7XG4gKiB1c2VyUmVzb3VyY2Ugc2F0aXNmaWVzIFJlc291cmNlPFVzZXJbXT47XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RvcmUgVGhlIHN0b3JlIGluc3RhbmNlIHRvIG1hcCB0aGUgcmVzb3VyY2UgdG8uXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgcmVzb3VyY2UgdG8gbWFwLlxuICogQHJldHVybnMgYFJlc291cmNlUmVmPFQ+YFxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9SZXNvdXJjZTxcbiAgTmFtZSBleHRlbmRzIFJlc291cmNlTmFtZXM8U3RvcmU+LFxuICBTdG9yZSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPihzdG9yZTogU3RvcmUsIG5hbWU6IE5hbWUpOiBNYXBwZWRSZXNvdXJjZTxTdG9yZSwgTmFtZT4ge1xuICBjb25zdCByZXNvdXJjZU5hbWUgPSBTdHJpbmcobmFtZSk7XG5cbiAgZnVuY3Rpb24gaGFzVmFsdWUoKTogdGhpcyBpcyBSZXNvdXJjZTxcbiAgICBFeGNsdWRlPE1hcHBlZFJlc291cmNlPFN0b3JlLCBOYW1lPiwgdW5kZWZpbmVkPlxuICA+IHtcbiAgICByZXR1cm4gKHN0b3JlW2Ake3Jlc291cmNlTmFtZX1IYXNWYWx1ZWBdIGFzICgpID0+IGJvb2xlYW4pKCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHZhbHVlOiBzdG9yZVtgJHtyZXNvdXJjZU5hbWV9VmFsdWVgXSxcbiAgICBzdGF0dXM6IHN0b3JlW2Ake3Jlc291cmNlTmFtZX1TdGF0dXNgXSxcbiAgICBlcnJvcjogc3RvcmVbYCR7cmVzb3VyY2VOYW1lfUVycm9yYF0sXG4gICAgaXNMb2FkaW5nOiBzdG9yZVtgJHtyZXNvdXJjZU5hbWV9SXNMb2FkaW5nYF0sXG4gICAgaGFzVmFsdWUsXG4gIH0gYXMgTWFwcGVkUmVzb3VyY2U8U3RvcmUsIE5hbWU+O1xufVxuIl19","import { HttpClient, HttpEventType, HttpResponse, } from '@angular/common/http';\nimport { inject, signal } from '@angular/core';\nimport { defer, filter, map, tap } from 'rxjs';\nimport { rxMutation } from './rx-mutation';\n/**\n * Creates an HTTP mutation.\n *\n * ```typescript\n * export type Params = {\n * value: number;\n * };\n *\n * export type CounterResponse = {\n * // httpbin.org echos the request using the\n * // json property\n * json: { counter: number };\n * };\n *\n * const simpleSaveUser = httpMutation({\n * request: (userData: AddUserEntry) => ({\n * url: 'api/users',\n * body: userData,\n * }),\n * parse: Boolean,\n * })\n *\n * const saveUser = httpMutation({\n * request: (p: Params) => ({\n * url: `https://httpbin.org/post`,\n * method: 'POST',\n * body: { counter: p.value },\n * headers: { 'Content-Type': 'application/json' },\n * }),\n * onSuccess: (response: CounterResponse) => {\n * console.log('Counter sent to server:', response);\n * },\n * onError: (error) => {\n * console.error('Failed to send counter:', error);\n * },\n * });\n *\n * const result = await this.saveUser({ value: 17 });\n * if (result.status === 'success') {\n * console.log('Successfully saved to server:', result.value);\n * }\n * else if (result.status === 'error') {\n * console.log('Failed to save:', result.error);\n * }\n * else {\n * console.log('Operation aborted');\n * }\n * ```\n *\n * @param options The options for the HTTP mutation.\n * @returns The HTTP mutation.\n */\nexport function httpMutation(optionsOrRequest) {\n const httpClient = inject(HttpClient);\n const options = typeof optionsOrRequest === 'function'\n ? { request: optionsOrRequest }\n : optionsOrRequest;\n const parse = options.parse ?? ((raw) => raw);\n const uploadProgress = signal(undefined, ...(ngDevMode ? [{ debugName: \"uploadProgress\" }] : []));\n const downloadProgress = signal(undefined, ...(ngDevMode ? [{ debugName: \"downloadProgress\" }] : []));\n const headers = signal(undefined, ...(ngDevMode ? [{ debugName: \"headers\" }] : []));\n const statusCode = signal(undefined, ...(ngDevMode ? [{ debugName: \"statusCode\" }] : []));\n const mutation = rxMutation({\n ...options,\n operation: (param) => {\n const httpRequest = options.request(param);\n return defer(() => {\n uploadProgress.set(undefined);\n downloadProgress.set(undefined);\n headers.set(undefined);\n statusCode.set(undefined);\n return httpClient\n .request(httpRequest.method, httpRequest.url, {\n ...httpRequest,\n observe: 'events',\n responseType: 'json',\n })\n .pipe(tap((response) => {\n if (response.type === HttpEventType.UploadProgress) {\n uploadProgress.set(response);\n }\n else if (response.type === HttpEventType.DownloadProgress) {\n downloadProgress.set(response);\n }\n }), filter((event) => event instanceof HttpResponse), tap((response) => {\n headers.set(response.headers);\n statusCode.set(response.status.toString());\n }), map((event) => parse(event.body)));\n });\n },\n });\n mutation.uploadProgress = uploadProgress;\n mutation.downloadProgress = downloadProgress;\n mutation.statusCode = statusCode;\n mutation.headers = headers;\n return mutation;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tdXRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9saWIvbXV0YXRpb24vaHR0cC1tdXRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsVUFBVSxFQUVWLGFBQWEsRUFJYixZQUFZLEdBQ2IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBOEM5RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbURHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsZ0JBRStDO0lBRS9DLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV0QyxNQUFNLE9BQU8sR0FDWCxPQUFPLGdCQUFnQixLQUFLLFVBQVU7UUFDcEMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFO1FBQy9CLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUV2QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFZLEVBQUUsRUFBRSxDQUFDLEdBQWEsQ0FBQyxDQUFDO0lBRWpFLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBZ0MsU0FBUywwREFBQyxDQUFDO0lBQ3hFLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFnQyxTQUFTLDREQUFDLENBQUM7SUFDMUUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUEwQixTQUFTLG1EQUFDLENBQUM7SUFDM0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFxQixTQUFTLHNEQUFDLENBQUM7SUFFekQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzFCLEdBQUcsT0FBTztRQUNWLFNBQVMsRUFBRSxDQUFDLEtBQWdCLEVBQUUsRUFBRTtZQUM5QixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTNDLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDaEIsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDOUIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2QixVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUUxQixPQUFPLFVBQVU7cUJBQ2QsT0FBTyxDQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLEdBQUcsRUFBRTtvQkFDcEQsR0FBRyxXQUFXO29CQUNkLE9BQU8sRUFBRSxRQUFRO29CQUNqQixZQUFZLEVBQUUsTUFBTTtpQkFDckIsQ0FBQztxQkFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ2YsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQzt3QkFDbkQsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDL0IsQ0FBQzt5QkFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUM7d0JBQzVELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDakMsQ0FBQztnQkFDSCxDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxZQUFZLENBQUMsRUFDaEQsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzlCLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDbEMsQ0FBQztZQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQW9DLENBQUM7SUFFdEMsUUFBUSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7SUFDekMsUUFBUSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0lBQzdDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBRTNCLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBIdHRwQ2xpZW50LFxuICBIdHRwQ29udGV4dCxcbiAgSHR0cEV2ZW50VHlwZSxcbiAgSHR0cEhlYWRlcnMsXG4gIEh0dHBQYXJhbXMsXG4gIEh0dHBQcm9ncmVzc0V2ZW50LFxuICBIdHRwUmVzcG9uc2UsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGluamVjdCwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlZmVyLCBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNdXRhdGlvbiB9IGZyb20gJy4vbXV0YXRpb24nO1xuaW1wb3J0IHsgcnhNdXRhdGlvbiwgUnhNdXRhdGlvbk9wdGlvbnMgfSBmcm9tICcuL3J4LW11dGF0aW9uJztcblxuLy8gVGhlIEh0dHBDbGllbnQgZGVmaW5lcyB0aGVzZSB0eXBlcyBhcyBwYXJ0IG9mIHRoZSBtZXRob2Qgc2lnbmF0dXJlIGFuZFxuLy8gbm90IGFzIGEgbmFtZWQgdHlwZVxuZXhwb3J0IHR5cGUgSHR0cE11dGF0aW9uUmVxdWVzdCA9IHtcbiAgdXJsOiBzdHJpbmc7XG4gIG1ldGhvZDogc3RyaW5nO1xuICBib2R5PzogdW5rbm93bjtcbiAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+O1xuICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgcGFyYW1zPzpcbiAgICB8IEh0dHBQYXJhbXNcbiAgICB8IFJlY29yZDxcbiAgICAgICAgc3RyaW5nLFxuICAgICAgICBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPlxuICAgICAgPjtcbiAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgY3JlZGVudGlhbHM/OiBSZXF1ZXN0Q3JlZGVudGlhbHM7XG4gIGtlZXBhbGl2ZT86IGJvb2xlYW47XG4gIHByaW9yaXR5PzogUmVxdWVzdFByaW9yaXR5O1xuICBjYWNoZT86IFJlcXVlc3RDYWNoZTtcbiAgbW9kZT86IFJlcXVlc3RNb2RlO1xuICByZWRpcmVjdD86IFJlcXVlc3RSZWRpcmVjdDtcbiAgdHJhbnNmZXJDYWNoZT86XG4gICAgfCB7XG4gICAgICAgIGluY2x1ZGVIZWFkZXJzPzogc3RyaW5nW107XG4gICAgICB9XG4gICAgfCBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgSHR0cE11dGF0aW9uT3B0aW9uczxQYXJhbWV0ZXIsIFJlc3VsdD4gPSBPbWl0PFxuICBSeE11dGF0aW9uT3B0aW9uczxQYXJhbWV0ZXIsIE5vSW5mZXI8UmVzdWx0Pj4sXG4gICdvcGVyYXRpb24nXG4+ICYge1xuICByZXF1ZXN0OiAocGFyYW06IFBhcmFtZXRlcikgPT4gSHR0cE11dGF0aW9uUmVxdWVzdDtcbiAgcGFyc2U/OiAocmVzcG9uc2U6IHVua25vd24pID0+IFJlc3VsdDtcbn07XG5cbmV4cG9ydCB0eXBlIEh0dHBNdXRhdGlvbjxQYXJhbWV0ZXIsIFJlc3VsdD4gPSBNdXRhdGlvbjxQYXJhbWV0ZXIsIFJlc3VsdD4gJiB7XG4gIHVwbG9hZFByb2dyZXNzOiBTaWduYWw8SHR0cFByb2dyZXNzRXZlbnQgfCB1bmRlZmluZWQ+O1xuICBkb3dubG9hZFByb2dyZXNzOiBTaWduYWw8SHR0cFByb2dyZXNzRXZlbnQgfCB1bmRlZmluZWQ+O1xuICBoZWFkZXJzOiBTaWduYWw8SHR0cEhlYWRlcnMgfCB1bmRlZmluZWQ+O1xuICBzdGF0dXNDb2RlOiBTaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPjtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBIVFRQIG11dGF0aW9uLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV4cG9ydCB0eXBlIFBhcmFtcyA9IHtcbiAqICAgdmFsdWU6IG51bWJlcjtcbiAqIH07XG4gKlxuICogZXhwb3J0IHR5cGUgQ291bnRlclJlc3BvbnNlID0ge1xuICogICAvLyBodHRwYmluLm9yZyBlY2hvcyB0aGUgcmVxdWVzdCB1c2luZyB0aGVcbiAqICAgLy8ganNvbiBwcm9wZXJ0eVxuICogICBqc29uOiB7IGNvdW50ZXI6IG51bWJlciB9O1xuICogfTtcbiAqXG4gKiBjb25zdCBzaW1wbGVTYXZlVXNlciA9IGh0dHBNdXRhdGlvbih7XG4gKiAgIHJlcXVlc3Q6ICh1c2VyRGF0YTogQWRkVXNlckVudHJ5KSA9PiAoe1xuICogICAgIHVybDogJ2FwaS91c2VycycsXG4gKiAgICAgYm9keTogdXNlckRhdGEsXG4gKiAgIH0pLFxuICogICBwYXJzZTogQm9vbGVhbixcbiAqIH0pXG4gKlxuICogY29uc3Qgc2F2ZVVzZXIgPSBodHRwTXV0YXRpb24oe1xuICogICByZXF1ZXN0OiAocDogUGFyYW1zKSA9PiAoe1xuICogICAgIHVybDogYGh0dHBzOi8vaHR0cGJpbi5vcmcvcG9zdGAsXG4gKiAgICAgbWV0aG9kOiAnUE9TVCcsXG4gKiAgICAgYm9keTogeyBjb3VudGVyOiBwLnZhbHVlIH0sXG4gKiAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gKiAgIH0pLFxuICogICBvblN1Y2Nlc3M6IChyZXNwb25zZTogQ291bnRlclJlc3BvbnNlKSA9PiB7XG4gKiAgICAgY29uc29sZS5sb2coJ0NvdW50ZXIgc2VudCB0byBzZXJ2ZXI6JywgcmVzcG9uc2UpO1xuICogICB9LFxuICogICBvbkVycm9yOiAoZXJyb3IpID0+IHtcbiAqICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc2VuZCBjb3VudGVyOicsIGVycm9yKTtcbiAqICAgfSxcbiAqIH0pO1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc2F2ZVVzZXIoeyB2YWx1ZTogMTcgfSk7XG4gKiBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gKiAgIGNvbnNvbGUubG9nKCdTdWNjZXNzZnVsbHkgc2F2ZWQgdG8gc2VydmVyOicsIHJlc3VsdC52YWx1ZSk7XG4gKiB9XG4gKiBlbHNlIGlmIChyZXN1bHQuc3RhdHVzID09PSAnZXJyb3InKSB7XG4gKiAgIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gc2F2ZTonLCByZXN1bHQuZXJyb3IpO1xuICogfVxuICogZWxzZSB7XG4gKiAgIGNvbnNvbGUubG9nKCdPcGVyYXRpb24gYWJvcnRlZCcpO1xuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSBIVFRQIG11dGF0aW9uLlxuICogQHJldHVybnMgVGhlIEhUVFAgbXV0YXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBodHRwTXV0YXRpb248UGFyYW1ldGVyLCBSZXN1bHQ+KFxuICBvcHRpb25zT3JSZXF1ZXN0OlxuICAgIHwgSHR0cE11dGF0aW9uT3B0aW9uczxQYXJhbWV0ZXIsIFJlc3VsdD5cbiAgICB8ICgocGFyYW06IFBhcmFtZXRlcikgPT4gSHR0cE11dGF0aW9uUmVxdWVzdCksXG4pOiBIdHRwTXV0YXRpb248UGFyYW1ldGVyLCBSZXN1bHQ+IHtcbiAgY29uc3QgaHR0cENsaWVudCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICBjb25zdCBvcHRpb25zID1cbiAgICB0eXBlb2Ygb3B0aW9uc09yUmVxdWVzdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyB7IHJlcXVlc3Q6IG9wdGlvbnNPclJlcXVlc3QgfVxuICAgICAgOiBvcHRpb25zT3JSZXF1ZXN0O1xuXG4gIGNvbnN0IHBhcnNlID0gb3B0aW9ucy5wYXJzZSA/PyAoKHJhdzogdW5rbm93bikgPT4gcmF3IGFzIFJlc3VsdCk7XG5cbiAgY29uc3QgdXBsb2FkUHJvZ3Jlc3MgPSBzaWduYWw8SHR0cFByb2dyZXNzRXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGRvd25sb2FkUHJvZ3Jlc3MgPSBzaWduYWw8SHR0cFByb2dyZXNzRXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGhlYWRlcnMgPSBzaWduYWw8SHR0cEhlYWRlcnMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IHN0YXR1c0NvZGUgPSBzaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIGNvbnN0IG11dGF0aW9uID0gcnhNdXRhdGlvbih7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBvcGVyYXRpb246IChwYXJhbTogUGFyYW1ldGVyKSA9PiB7XG4gICAgICBjb25zdCBodHRwUmVxdWVzdCA9IG9wdGlvbnMucmVxdWVzdChwYXJhbSk7XG5cbiAgICAgIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgICAgIHVwbG9hZFByb2dyZXNzLnNldCh1bmRlZmluZWQpO1xuICAgICAgICBkb3dubG9hZFByb2dyZXNzLnNldCh1bmRlZmluZWQpO1xuICAgICAgICBoZWFkZXJzLnNldCh1bmRlZmluZWQpO1xuICAgICAgICBzdGF0dXNDb2RlLnNldCh1bmRlZmluZWQpO1xuXG4gICAgICAgIHJldHVybiBodHRwQ2xpZW50XG4gICAgICAgICAgLnJlcXVlc3Q8UmVzdWx0PihodHRwUmVxdWVzdC5tZXRob2QsIGh0dHBSZXF1ZXN0LnVybCwge1xuICAgICAgICAgICAgLi4uaHR0cFJlcXVlc3QsXG4gICAgICAgICAgICBvYnNlcnZlOiAnZXZlbnRzJyxcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXNwb25zZS50eXBlID09PSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgdXBsb2FkUHJvZ3Jlc3Muc2V0KHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS50eXBlID09PSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICBkb3dubG9hZFByb2dyZXNzLnNldChyZXNwb25zZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpLFxuICAgICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICBoZWFkZXJzLnNldChyZXNwb25zZS5oZWFkZXJzKTtcbiAgICAgICAgICAgICAgc3RhdHVzQ29kZS5zZXQocmVzcG9uc2Uuc3RhdHVzLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKGV2ZW50KSA9PiBwYXJzZShldmVudC5ib2R5KSksXG4gICAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0pIGFzIEh0dHBNdXRhdGlvbjxQYXJhbWV0ZXIsIFJlc3VsdD47XG5cbiAgbXV0YXRpb24udXBsb2FkUHJvZ3Jlc3MgPSB1cGxvYWRQcm9ncmVzcztcbiAgbXV0YXRpb24uZG93bmxvYWRQcm9ncmVzcyA9IGRvd25sb2FkUHJvZ3Jlc3M7XG4gIG11dGF0aW9uLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICBtdXRhdGlvbi5oZWFkZXJzID0gaGVhZGVycztcblxuICByZXR1cm4gbXV0YXRpb247XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1hcmNoaXRlY3RzLW5ncngtdG9vbGtpdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvbmdyeC10b29sa2l0L3NyYy9hbmd1bGFyLWFyY2hpdGVjdHMtbmdyeC10b29sa2l0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["originalPatchState","patchState","ngIsInDevMode"],"mappings":"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"}