@pipeline-builder/api-core 3.4.101 → 3.4.102

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.
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Shared tier fixture for the per-package `@pipeline-builder/api-core` test
3
+ * mocks (each suite's `test/helpers/mock-api-core.ts`).
4
+ *
5
+ * WHY A SEPARATE MODULE: every service mocks `@pipeline-builder/api-core` via
6
+ * `jest.unstable_mockModule('@pipeline-builder/api-core', …)`. That intercepts the
7
+ * *package* specifier only — this file is imported through the DEEP built path
8
+ * `@pipeline-builder/api-core/lib/testing/tier-mock.js`, a different specifier the
9
+ * mock does NOT intercept, so a mock can pull real, complete tier data without
10
+ * self-referencing its own mock. api-core has no `exports` map, so the subpath
11
+ * resolves; both sides are ESM so there's no interop wrinkle.
12
+ *
13
+ * WHAT IT BUYS: the tier NAME LIST is sourced from the real `VALID_TIERS`, so
14
+ * adding a tier in `quota-tiers.ts` flows into every mock automatically — no more
15
+ * "add a tier → hand-edit N mocks, discover the misses one gate round at a time"
16
+ * (which is exactly how the `unlimited` tier broke pipeline-core/api-server/platform).
17
+ * `mockQuotaTiers()` builds a COMPLETE `QUOTA_TIERS` (an entry for every tier) from
18
+ * caller-supplied per-tier limits, defaulting any unspecified tier to uncapped — so
19
+ * a new tier can never leave a `QUOTA_TIERS[tier].limits` undefined at mock load.
20
+ */
21
+ import { type FeatureFlag } from '../types/feature-flags.js';
22
+ import { type QuotaTier, type QuotaTierLimits } from '../types/quota-tiers.js';
23
+ /** The real, complete tier-name list — the single source mocks derive from. */
24
+ export declare const MOCK_TIER_NAMES: readonly QuotaTier[];
25
+ /** Mirrors api-core's `isValidTier`, driven by the shared name list. */
26
+ export declare const mockIsValidTier: (t: string) => boolean;
27
+ type TierPreset = {
28
+ label: string;
29
+ limits: QuotaTierLimits;
30
+ };
31
+ /**
32
+ * Build a COMPLETE `QUOTA_TIERS` map (one entry per real tier) for a mock.
33
+ * Pass the per-tier limit overrides a suite actually asserts on; every other
34
+ * dimension (and every unspecified tier) falls back to uncapped, so the map is
35
+ * always exhaustive over `VALID_TIERS` — the property that keeps a newly-added
36
+ * tier from crashing mock load.
37
+ */
38
+ export declare function mockQuotaTiers(limitsByTier?: Partial<Record<QuotaTier, Partial<QuotaTierLimits>>>): Record<QuotaTier, TierPreset>;
39
+ /**
40
+ * Build a COMPLETE `TIER_FEATURES` map. Defaults every tier to all feature flags
41
+ * (the common mock stance); pass overrides for suites that assert a narrower set.
42
+ */
43
+ export declare function mockTierFeatures(featuresByTier?: Partial<Record<QuotaTier, readonly FeatureFlag[]>>): Record<QuotaTier, readonly FeatureFlag[]>;
44
+ export {};
@@ -0,0 +1,63 @@
1
+ // Copyright 2026 Pipeline Builder Contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /**
4
+ * Shared tier fixture for the per-package `@pipeline-builder/api-core` test
5
+ * mocks (each suite's `test/helpers/mock-api-core.ts`).
6
+ *
7
+ * WHY A SEPARATE MODULE: every service mocks `@pipeline-builder/api-core` via
8
+ * `jest.unstable_mockModule('@pipeline-builder/api-core', …)`. That intercepts the
9
+ * *package* specifier only — this file is imported through the DEEP built path
10
+ * `@pipeline-builder/api-core/lib/testing/tier-mock.js`, a different specifier the
11
+ * mock does NOT intercept, so a mock can pull real, complete tier data without
12
+ * self-referencing its own mock. api-core has no `exports` map, so the subpath
13
+ * resolves; both sides are ESM so there's no interop wrinkle.
14
+ *
15
+ * WHAT IT BUYS: the tier NAME LIST is sourced from the real `VALID_TIERS`, so
16
+ * adding a tier in `quota-tiers.ts` flows into every mock automatically — no more
17
+ * "add a tier → hand-edit N mocks, discover the misses one gate round at a time"
18
+ * (which is exactly how the `unlimited` tier broke pipeline-core/api-server/platform).
19
+ * `mockQuotaTiers()` builds a COMPLETE `QUOTA_TIERS` (an entry for every tier) from
20
+ * caller-supplied per-tier limits, defaulting any unspecified tier to uncapped — so
21
+ * a new tier can never leave a `QUOTA_TIERS[tier].limits` undefined at mock load.
22
+ */
23
+ import { ALL_FEATURE_FLAGS } from '../types/feature-flags.js';
24
+ import { VALID_TIERS } from '../types/quota-tiers.js';
25
+ /** The real, complete tier-name list — the single source mocks derive from. */
26
+ export const MOCK_TIER_NAMES = VALID_TIERS;
27
+ /** Mirrors api-core's `isValidTier`, driven by the shared name list. */
28
+ export const mockIsValidTier = (t) => MOCK_TIER_NAMES.includes(t);
29
+ /** Every quota dimension uncapped — the default for tiers a caller doesn't specify. */
30
+ const uncappedLimits = () => ({
31
+ seats: -1,
32
+ plugins: -1,
33
+ pipelines: -1,
34
+ apiCalls: -1,
35
+ aiCalls: -1,
36
+ storageBytes: -1,
37
+ dashboards: -1,
38
+ alertRules: -1,
39
+ alertDestinations: -1,
40
+ idpConfigs: -1,
41
+ });
42
+ const titleCase = (t) => t.charAt(0).toUpperCase() + t.slice(1);
43
+ /**
44
+ * Build a COMPLETE `QUOTA_TIERS` map (one entry per real tier) for a mock.
45
+ * Pass the per-tier limit overrides a suite actually asserts on; every other
46
+ * dimension (and every unspecified tier) falls back to uncapped, so the map is
47
+ * always exhaustive over `VALID_TIERS` — the property that keeps a newly-added
48
+ * tier from crashing mock load.
49
+ */
50
+ export function mockQuotaTiers(limitsByTier = {}) {
51
+ return Object.fromEntries(MOCK_TIER_NAMES.map((t) => [
52
+ t,
53
+ { label: titleCase(t), limits: { ...uncappedLimits(), ...(limitsByTier[t] ?? {}) } },
54
+ ]));
55
+ }
56
+ /**
57
+ * Build a COMPLETE `TIER_FEATURES` map. Defaults every tier to all feature flags
58
+ * (the common mock stance); pass overrides for suites that assert a narrower set.
59
+ */
60
+ export function mockTierFeatures(featuresByTier = {}) {
61
+ return Object.fromEntries(MOCK_TIER_NAMES.map((t) => [t, featuresByTier[t] ?? [...ALL_FEATURE_FLAGS]]));
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGllci1tb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvdGllci1tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQW9CLE1BQU0sMkJBQTJCLENBQUM7QUFDaEYsT0FBTyxFQUFFLFdBQVcsRUFBd0MsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RiwrRUFBK0U7QUFDL0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUF5QixXQUFXLENBQUM7QUFFakUsd0VBQXdFO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLENBQVMsRUFBVyxFQUFFLENBQ25ELGVBQXFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXJELHVGQUF1RjtBQUN2RixNQUFNLGNBQWMsR0FBRyxHQUFvQixFQUFFLENBQUMsQ0FBQztJQUM3QyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ1QsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNYLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDYixRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ1osT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNYLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDaEIsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNkLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDZCxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDckIsVUFBVSxFQUFFLENBQUMsQ0FBQztDQUNmLENBQUMsQ0FBQztBQUVILE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBUyxFQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFJaEY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsWUFBWSxHQUF5RCxFQUFFO0lBRXZFLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FDdkIsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDekIsQ0FBQztRQUNELEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLGNBQWMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtLQUNyRixDQUFDLENBQzhCLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsY0FBYyxHQUF1RCxFQUFFO0lBRXZFLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FDdkIsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FDaEMsQ0FBQztBQUNqRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU2hhcmVkIHRpZXIgZml4dHVyZSBmb3IgdGhlIHBlci1wYWNrYWdlIGBAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZWAgdGVzdFxuICogbW9ja3MgKGVhY2ggc3VpdGUncyBgdGVzdC9oZWxwZXJzL21vY2stYXBpLWNvcmUudHNgKS5cbiAqXG4gKiBXSFkgQSBTRVBBUkFURSBNT0RVTEU6IGV2ZXJ5IHNlcnZpY2UgbW9ja3MgYEBwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlYCB2aWFcbiAqIGBqZXN0LnVuc3RhYmxlX21vY2tNb2R1bGUoJ0BwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlJywg4oCmKWAuIFRoYXQgaW50ZXJjZXB0cyB0aGVcbiAqICpwYWNrYWdlKiBzcGVjaWZpZXIgb25seSDigJQgdGhpcyBmaWxlIGlzIGltcG9ydGVkIHRocm91Z2ggdGhlIERFRVAgYnVpbHQgcGF0aFxuICogYEBwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlL2xpYi90ZXN0aW5nL3RpZXItbW9jay5qc2AsIGEgZGlmZmVyZW50IHNwZWNpZmllciB0aGVcbiAqIG1vY2sgZG9lcyBOT1QgaW50ZXJjZXB0LCBzbyBhIG1vY2sgY2FuIHB1bGwgcmVhbCwgY29tcGxldGUgdGllciBkYXRhIHdpdGhvdXRcbiAqIHNlbGYtcmVmZXJlbmNpbmcgaXRzIG93biBtb2NrLiBhcGktY29yZSBoYXMgbm8gYGV4cG9ydHNgIG1hcCwgc28gdGhlIHN1YnBhdGhcbiAqIHJlc29sdmVzOyBib3RoIHNpZGVzIGFyZSBFU00gc28gdGhlcmUncyBubyBpbnRlcm9wIHdyaW5rbGUuXG4gKlxuICogV0hBVCBJVCBCVVlTOiB0aGUgdGllciBOQU1FIExJU1QgaXMgc291cmNlZCBmcm9tIHRoZSByZWFsIGBWQUxJRF9USUVSU2AsIHNvXG4gKiBhZGRpbmcgYSB0aWVyIGluIGBxdW90YS10aWVycy50c2AgZmxvd3MgaW50byBldmVyeSBtb2NrIGF1dG9tYXRpY2FsbHkg4oCUIG5vIG1vcmVcbiAqIFwiYWRkIGEgdGllciDihpIgaGFuZC1lZGl0IE4gbW9ja3MsIGRpc2NvdmVyIHRoZSBtaXNzZXMgb25lIGdhdGUgcm91bmQgYXQgYSB0aW1lXCJcbiAqICh3aGljaCBpcyBleGFjdGx5IGhvdyB0aGUgYHVubGltaXRlZGAgdGllciBicm9rZSBwaXBlbGluZS1jb3JlL2FwaS1zZXJ2ZXIvcGxhdGZvcm0pLlxuICogYG1vY2tRdW90YVRpZXJzKClgIGJ1aWxkcyBhIENPTVBMRVRFIGBRVU9UQV9USUVSU2AgKGFuIGVudHJ5IGZvciBldmVyeSB0aWVyKSBmcm9tXG4gKiBjYWxsZXItc3VwcGxpZWQgcGVyLXRpZXIgbGltaXRzLCBkZWZhdWx0aW5nIGFueSB1bnNwZWNpZmllZCB0aWVyIHRvIHVuY2FwcGVkIOKAlCBzb1xuICogYSBuZXcgdGllciBjYW4gbmV2ZXIgbGVhdmUgYSBgUVVPVEFfVElFUlNbdGllcl0ubGltaXRzYCB1bmRlZmluZWQgYXQgbW9jayBsb2FkLlxuICovXG5cbmltcG9ydCB7IEFMTF9GRUFUVVJFX0ZMQUdTLCB0eXBlIEZlYXR1cmVGbGFnIH0gZnJvbSAnLi4vdHlwZXMvZmVhdHVyZS1mbGFncy5qcyc7XG5pbXBvcnQgeyBWQUxJRF9USUVSUywgdHlwZSBRdW90YVRpZXIsIHR5cGUgUXVvdGFUaWVyTGltaXRzIH0gZnJvbSAnLi4vdHlwZXMvcXVvdGEtdGllcnMuanMnO1xuXG4vKiogVGhlIHJlYWwsIGNvbXBsZXRlIHRpZXItbmFtZSBsaXN0IOKAlCB0aGUgc2luZ2xlIHNvdXJjZSBtb2NrcyBkZXJpdmUgZnJvbS4gKi9cbmV4cG9ydCBjb25zdCBNT0NLX1RJRVJfTkFNRVM6IHJlYWRvbmx5IFF1b3RhVGllcltdID0gVkFMSURfVElFUlM7XG5cbi8qKiBNaXJyb3JzIGFwaS1jb3JlJ3MgYGlzVmFsaWRUaWVyYCwgZHJpdmVuIGJ5IHRoZSBzaGFyZWQgbmFtZSBsaXN0LiAqL1xuZXhwb3J0IGNvbnN0IG1vY2tJc1ZhbGlkVGllciA9ICh0OiBzdHJpbmcpOiBib29sZWFuID0+XG4gIChNT0NLX1RJRVJfTkFNRVMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHQpO1xuXG4vKiogRXZlcnkgcXVvdGEgZGltZW5zaW9uIHVuY2FwcGVkIOKAlCB0aGUgZGVmYXVsdCBmb3IgdGllcnMgYSBjYWxsZXIgZG9lc24ndCBzcGVjaWZ5LiAqL1xuY29uc3QgdW5jYXBwZWRMaW1pdHMgPSAoKTogUXVvdGFUaWVyTGltaXRzID0+ICh7XG4gIHNlYXRzOiAtMSxcbiAgcGx1Z2luczogLTEsXG4gIHBpcGVsaW5lczogLTEsXG4gIGFwaUNhbGxzOiAtMSxcbiAgYWlDYWxsczogLTEsXG4gIHN0b3JhZ2VCeXRlczogLTEsXG4gIGRhc2hib2FyZHM6IC0xLFxuICBhbGVydFJ1bGVzOiAtMSxcbiAgYWxlcnREZXN0aW5hdGlvbnM6IC0xLFxuICBpZHBDb25maWdzOiAtMSxcbn0pO1xuXG5jb25zdCB0aXRsZUNhc2UgPSAodDogc3RyaW5nKTogc3RyaW5nID0+IHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0LnNsaWNlKDEpO1xuXG50eXBlIFRpZXJQcmVzZXQgPSB7IGxhYmVsOiBzdHJpbmc7IGxpbWl0czogUXVvdGFUaWVyTGltaXRzIH07XG5cbi8qKlxuICogQnVpbGQgYSBDT01QTEVURSBgUVVPVEFfVElFUlNgIG1hcCAob25lIGVudHJ5IHBlciByZWFsIHRpZXIpIGZvciBhIG1vY2suXG4gKiBQYXNzIHRoZSBwZXItdGllciBsaW1pdCBvdmVycmlkZXMgYSBzdWl0ZSBhY3R1YWxseSBhc3NlcnRzIG9uOyBldmVyeSBvdGhlclxuICogZGltZW5zaW9uIChhbmQgZXZlcnkgdW5zcGVjaWZpZWQgdGllcikgZmFsbHMgYmFjayB0byB1bmNhcHBlZCwgc28gdGhlIG1hcCBpc1xuICogYWx3YXlzIGV4aGF1c3RpdmUgb3ZlciBgVkFMSURfVElFUlNgIOKAlCB0aGUgcHJvcGVydHkgdGhhdCBrZWVwcyBhIG5ld2x5LWFkZGVkXG4gKiB0aWVyIGZyb20gY3Jhc2hpbmcgbW9jayBsb2FkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja1F1b3RhVGllcnMoXG4gIGxpbWl0c0J5VGllcjogUGFydGlhbDxSZWNvcmQ8UXVvdGFUaWVyLCBQYXJ0aWFsPFF1b3RhVGllckxpbWl0cz4+PiA9IHt9LFxuKTogUmVjb3JkPFF1b3RhVGllciwgVGllclByZXNldD4ge1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE1PQ0tfVElFUl9OQU1FUy5tYXAoKHQpID0+IFtcbiAgICAgIHQsXG4gICAgICB7IGxhYmVsOiB0aXRsZUNhc2UodCksIGxpbWl0czogeyAuLi51bmNhcHBlZExpbWl0cygpLCAuLi4obGltaXRzQnlUaWVyW3RdID8/IHt9KSB9IH0sXG4gICAgXSksXG4gICkgYXMgUmVjb3JkPFF1b3RhVGllciwgVGllclByZXNldD47XG59XG5cbi8qKlxuICogQnVpbGQgYSBDT01QTEVURSBgVElFUl9GRUFUVVJFU2AgbWFwLiBEZWZhdWx0cyBldmVyeSB0aWVyIHRvIGFsbCBmZWF0dXJlIGZsYWdzXG4gKiAodGhlIGNvbW1vbiBtb2NrIHN0YW5jZSk7IHBhc3Mgb3ZlcnJpZGVzIGZvciBzdWl0ZXMgdGhhdCBhc3NlcnQgYSBuYXJyb3dlciBzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrVGllckZlYXR1cmVzKFxuICBmZWF0dXJlc0J5VGllcjogUGFydGlhbDxSZWNvcmQ8UXVvdGFUaWVyLCByZWFkb25seSBGZWF0dXJlRmxhZ1tdPj4gPSB7fSxcbik6IFJlY29yZDxRdW90YVRpZXIsIHJlYWRvbmx5IEZlYXR1cmVGbGFnW10+IHtcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBNT0NLX1RJRVJfTkFNRVMubWFwKCh0KSA9PiBbdCwgZmVhdHVyZXNCeVRpZXJbdF0gPz8gWy4uLkFMTF9GRUFUVVJFX0ZMQUdTXV0pLFxuICApIGFzIFJlY29yZDxRdW90YVRpZXIsIHJlYWRvbmx5IEZlYXR1cmVGbGFnW10+O1xufVxuIl19
@@ -41,8 +41,9 @@ export declare const QUOTA_TIERS: Record<QuotaTier, QuotaTierPreset>;
41
41
  * tier — `unlimited` is a valid value even though it's never offered for sale. */
42
42
  export declare const VALID_TIERS: readonly QuotaTier[];
43
43
  /** The standard, billing-selectable tiers — the ones offered as purchasable plans
44
- * and shown in tier pickers. Excludes `unlimited`, which is the billing-DISABLED
45
- * default and is never displayed/selectable when billing is enabled. */
44
+ * and shown in tier pickers. Derived as "every valid tier except `unlimited`",
45
+ * which is the billing-DISABLED default and is never displayed/selectable when
46
+ * billing is enabled. Kept DRY off `VALID_TIERS` so adding a tier flows through. */
46
47
  export declare const STANDARD_TIERS: readonly QuotaTier[];
47
48
  /** Whether the billing service is enabled in this deployment (`BILLING_ENABLED`,
48
49
  * opt-out default-on — mirrors the billing/platform configs). With billing OFF
@@ -140,9 +140,10 @@ export const QUOTA_TIERS = {
140
140
  * tier — `unlimited` is a valid value even though it's never offered for sale. */
141
141
  export const VALID_TIERS = Object.keys(QUOTA_TIERS);
142
142
  /** The standard, billing-selectable tiers — the ones offered as purchasable plans
143
- * and shown in tier pickers. Excludes `unlimited`, which is the billing-DISABLED
144
- * default and is never displayed/selectable when billing is enabled. */
145
- export const STANDARD_TIERS = ['developer', 'pro', 'team', 'enterprise'];
143
+ * and shown in tier pickers. Derived as "every valid tier except `unlimited`",
144
+ * which is the billing-DISABLED default and is never displayed/selectable when
145
+ * billing is enabled. Kept DRY off `VALID_TIERS` so adding a tier flows through. */
146
+ export const STANDARD_TIERS = VALID_TIERS.filter((t) => t !== 'unlimited');
146
147
  /** Whether the billing service is enabled in this deployment (`BILLING_ENABLED`,
147
148
  * opt-out default-on — mirrors the billing/platform configs). With billing OFF
148
149
  * there's no metering/enforcement surface, so the default tier is `unlimited`. */
@@ -171,4 +172,4 @@ export function isValidTier(value) {
171
172
  export function getTierLimits(tier) {
172
173
  return isValidTier(tier) ? QUOTA_TIERS[tier].limits : QUOTA_TIERS.developer.limits;
173
174
  }
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGEtdGllcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcXVvdGEtdGllcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQTJDdEM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFOUI7Ozs7OztHQU1HO0FBQ0gsTUFBTSxtQkFBbUIsR0FBdUM7SUFDOUQsNEVBQTRFO0lBQzVFLDZFQUE2RTtJQUM3RSxTQUFTLEVBQUU7UUFDVCxPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDO1FBQ1osUUFBUSxFQUFFLE1BQU07UUFDaEIsT0FBTyxFQUFFLEVBQUU7UUFDWCxZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUU7UUFDcEIsVUFBVSxFQUFFLEVBQUU7UUFDZCxVQUFVLEVBQUUsRUFBRTtRQUNkLGlCQUFpQixFQUFFLEVBQUU7UUFDckIsVUFBVSxFQUFFLENBQUM7UUFDYixLQUFLLEVBQUUsQ0FBQztLQUNUO0lBQ0QsNENBQTRDO0lBQzVDLEdBQUcsRUFBRTtRQUNILE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLEVBQUU7UUFDYixRQUFRLEVBQUUsT0FBTztRQUNqQixPQUFPLEVBQUUsS0FBSztRQUNkLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRTtRQUNyQixVQUFVLEVBQUUsR0FBRztRQUNmLFVBQVUsRUFBRSxHQUFHO1FBQ2YsaUJBQWlCLEVBQUUsRUFBRTtRQUNyQixVQUFVLEVBQUUsQ0FBQztRQUNiLEtBQUssRUFBRSxDQUFDO0tBQ1Q7SUFDRCw0RUFBNEU7SUFDNUUsbURBQW1EO0lBQ25ELElBQUksRUFBRTtRQUNKLE9BQU8sRUFBRSxHQUFHO1FBQ1osU0FBUyxFQUFFLEdBQUc7UUFDZCxRQUFRLEVBQUUsU0FBUztRQUNuQixPQUFPLEVBQUUsS0FBSztRQUNkLFlBQVksRUFBRSxHQUFHLEdBQUcsRUFBRTtRQUN0QixVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNkLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUNyQixVQUFVLEVBQUUsQ0FBQztRQUNiLEtBQUssRUFBRSxFQUFFO0tBQ1Y7SUFDRCwwRUFBMEU7SUFDMUUsMkVBQTJFO0lBQzNFLDZFQUE2RTtJQUM3RSxVQUFVLEVBQUU7UUFDVixPQUFPLEVBQUUsR0FBRztRQUNaLFNBQVMsRUFBRSxHQUFHO1FBQ2QsUUFBUSxFQUFFLFVBQVU7UUFDcEIsT0FBTyxFQUFFLE1BQU07UUFDZixZQUFZLEVBQUUsR0FBRyxHQUFHLEVBQUU7UUFDdEIsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNkLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDZCxpQkFBaUIsRUFBRSxDQUFDLENBQUM7UUFDckIsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNkLEtBQUssRUFBRSxFQUFFO0tBQ1Y7SUFDRCw2RUFBNkU7SUFDN0UsNkVBQTZFO0lBQzdFLFNBQVMsRUFBRTtRQUNULE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDWCxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2IsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNaLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDWCxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2hCLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDZCxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDZCxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ1Y7Q0FDRixDQUFDO0FBRUYsbUZBQW1GO0FBQ25GLFNBQVMsTUFBTSxDQUFDLElBQVksRUFBRSxRQUFnQjtJQUM1QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLElBQUksR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssRUFBRTtRQUFFLE9BQU8sUUFBUSxDQUFDO0lBQ3JELE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQsK0RBQStEO0FBQy9ELFNBQVMsTUFBTSxDQUFDLElBQVksRUFBRSxRQUFnQjtJQUM1QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLE9BQU8sR0FBRyxLQUFLLFNBQVMsSUFBSSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUMxRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLFVBQVUsQ0FBQyxJQUFlO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QixPQUFPO1FBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDckQsU0FBUyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDM0QsUUFBUSxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDekQsT0FBTyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDdEQsWUFBWSxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUNyRSxVQUFVLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUM5RCxVQUFVLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUMvRCxpQkFBaUIsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztRQUNwRixVQUFVLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUMvRCxLQUFLLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztLQUNoRCxDQUFDO0FBQ0osQ0FBQztBQUVELDRFQUE0RTtBQUM1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQXVDO0lBQzdELFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsNEJBQTRCLEVBQUUsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRTtJQUN4RyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDaEYsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3BGLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsNkJBQTZCLEVBQUUsWUFBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBRTtJQUM1RyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLDRCQUE0QixFQUFFLFdBQVcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUU7Q0FDekcsQ0FBQztBQUVGO21GQUNtRjtBQUNuRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQXlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFnQixDQUFDO0FBRXpGOzt5RUFFeUU7QUFDekUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUF5QixDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBRS9GOzttRkFFbUY7QUFDbkYsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLElBQUksTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDO0FBQzNFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFjLENBQUMsZ0JBQWdCLEVBQUU7SUFDeEQsQ0FBQyxDQUFDLFdBQVc7SUFDYixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixLQUFLLFdBQVc7UUFDcEcsQ0FBQyxDQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWdDO1FBQy9DLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUVuQixtREFBbUQ7QUFDbkQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFhO0lBQ3ZDLCtFQUErRTtJQUMvRSw4RUFBOEU7SUFDOUUsNkVBQTZFO0lBQzdFLGtGQUFrRjtJQUNsRixPQUFRLFdBQWlDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCx5RUFBeUU7QUFDekUsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFZO0lBQ3hDLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztBQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKiBBdmFpbGFibGUgcXVvdGEgdGllciBpZGVudGlmaWVycy5cbiAqXG4gKiBgdW5saW1pdGVkYCBpcyBhIHNwZWNpYWwgdGllcjogZXZlcnkgcXVvdGEgaXMgYC0xYCAodW5jYXBwZWQpIGFuZCBpdCBpbmNsdWRlc1xuICogZXZlcnkgZmVhdHVyZS9hZGQtb24gYnVuZGxlLiBJdCBpcyB0aGUgREVGQVVMVCB3aGVuIGJpbGxpbmcgaXMgZGlzYWJsZWQgKG5vXG4gKiBtZXRlcmluZy9lbmZvcmNlbWVudCBzdXJmYWNlIGV4aXN0cywgc28gbm90aGluZyBpcyBjYXBwZWQpLCBhbmQgaXQgaXMgTkVWRVJcbiAqIHNob3duIG9yIHNlbGVjdGFibGUgd2hlbiBiaWxsaW5nIGlzIGVuYWJsZWQg4oCUIHNlZSBgU1RBTkRBUkRfVElFUlNgLiAqL1xuZXhwb3J0IHR5cGUgUXVvdGFUaWVyID0gJ2RldmVsb3BlcicgfCAncHJvJyB8ICd0ZWFtJyB8ICdlbnRlcnByaXNlJyB8ICd1bmxpbWl0ZWQnO1xuXG4vKiogTGltaXQgdmFsdWVzIGZvciBlYWNoIHF1b3RhIHR5cGUgd2l0aGluIGEgdGllci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVvdGFUaWVyTGltaXRzIHtcbiAgcGx1Z2luczogbnVtYmVyO1xuICBwaXBlbGluZXM6IG51bWJlcjtcbiAgYXBpQ2FsbHM6IG51bWJlcjtcbiAgYWlDYWxsczogbnVtYmVyO1xuICAvKipcbiAgICogQWdncmVnYXRlIHJlZ2lzdHJ5IHN0b3JhZ2UgY2FwIGluIEJZVEVTLiBDb3VudGVkIGFjcm9zcyBldmVyeSByZXBvXG4gICAqIHVuZGVyIHRoZSBvcmcncyBgb3JnLXtvcmdJZH0vYCBuYW1lc3BhY2UuIC0xIG1lYW5zIHVubGltaXRlZC5cbiAgICogcHVzaC1nYXRlIHJlYWRzIHRoaXM7IHRoZSBpbWFnZS1yZWdpc3RyeSByZWplY3RzIHRva2VuIGlzc3VhbmNlIGZvclxuICAgKiBgcHVzaGAgc2NvcGUgd2hlbiB0aGUgb3JnJ3MgbWVhc3VyZWQgdXNhZ2UgZXhjZWVkcyB0aGUgbGltaXQuXG4gICAqL1xuICBzdG9yYWdlQnl0ZXM6IG51bWJlcjtcbiAgLyoqIENvdW50LXF1b3RhcyBvbiB0aGUgdXNlci1lZGl0YWJsZSBmZWF0dXJlIHRhYmxlcyBhZGRlZCB0byBjbG9zZSBwZXItb3JnXG4gICAqICBEb1MgdmlhIHNwYW0uIC0xIG1lYW5zIHVubGltaXRlZC4gKi9cbiAgZGFzaGJvYXJkczogbnVtYmVyO1xuICBhbGVydFJ1bGVzOiBudW1iZXI7XG4gIGFsZXJ0RGVzdGluYXRpb25zOiBudW1iZXI7XG4gIGlkcENvbmZpZ3M6IG51bWJlcjtcbiAgLyoqXG4gICAqIE1heCBvcmcgbWVtYmVycyAoYWN0aXZlIHVzZXJzIC8gc2VhdHMpLiAtMSA9IHVubGltaXRlZC4gVGhpcyBpcyB0aGUgXCJUZWFtXCJcbiAgICogdGllciBkaWZmZXJlbnRpYXRvciDigJQgZW5mb3JjZWQgYXQgbWVtYmVyLWludml0ZSB0aW1lIChhbiBpbnZpdGUgaXMgYmxvY2tlZFxuICAgKiB3aGVuIGFjdGl2ZSBtZW1iZXJzICsgcGVuZGluZyBpbnZpdGVzIHdvdWxkIGV4Y2VlZCB0aGlzKS5cbiAgICovXG4gIHNlYXRzOiBudW1iZXI7XG59XG5cbi8qKiBGdWxsIHByZXNldCBmb3IgYSBzaW5nbGUgdGllciAobGFiZWwgKyBsaW1pdHMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdW90YVRpZXJQcmVzZXQge1xuICBsYWJlbDogc3RyaW5nO1xuICBsaW1pdHM6IFF1b3RhVGllckxpbWl0cztcbn1cblxuLyoqXG4gKiBQcmVzZXQgbGltaXRzIGZvciBlYWNoIHRpZXIuIC0xIG1lYW5zIHVubGltaXRlZC5cbiAqXG4gKiBBSSBjYWxscyBhcmUgc2l6ZWQgbXVjaCBzbWFsbGVyIHRoYW4gYGFwaUNhbGxzYCBiZWNhdXNlIGVhY2ggY2FsbCBoYXNcbiAqIGV4dGVybmFsIHByb3ZpZGVyIGNvc3QgKH4kMC4wMSQwLjEwL2NhbGwpLiBEZXZlbG9wZXIgdGllciBhbGxvd3MgbGlnaHRcbiAqIGV4cGxvcmF0aW9uICg1MC9wZXJpb2QpOyBQcm8gbGlmdHMgdG8gMiw1MDA7IEVudGVycHJpc2UgaXMgY2FwcGVkIGhpZ2hcbiAqICgyNSwwMDApIOKAlCBmYWlyLXVzZSwgbm90IGxpdGVyYWxseSB1bmxpbWl0ZWQuXG4gKlxuICogYHN0b3JhZ2VCeXRlc2AgaXMgdGhlIGFnZ3JlZ2F0ZSByZWdpc3RyeSBjYXAgcGVyIG9yZy4gU2l6ZWRcbiAqIGFyb3VuZCBwbHVnaW4taW1hZ2UgcmVhbGl0aWVzOiBhIHR5cGljYWwgcGx1Z2luIGltYWdlIGlzIDIwMDUwMCBNQjtcbiAqIERldmVsb3BlcidzIDIgR0IgaG9sZHMgfjQgdmVyc2lvbnMgw5cgfjUwMCBNQiwgUHJvJ3MgNTAgR0IgY292ZXJzIGFcbiAqIG1hdHVyZSBjYXRhbG9nLiBPcGVyYXRvcnMgY2FuIG92ZXJyaWRlIHBlci1vcmcgdmlhIHRoZSBxdW90YSBDUlVEIEFQSS5cbiAqL1xuY29uc3QgR0IgPSAxMDI0ICogMTAyNCAqIDEwMjQ7XG5cbi8qKlxuICogQ29kZS1kZWZhdWx0IGxpbWl0cyBwZXIgdGllciDigJQgdGhlIGZhbGxiYWNrIHdoZW4gbm8gZW52IG92ZXJyaWRlIGlzIHNldC5cbiAqIC0xIG1lYW5zIHVubGltaXRlZC4gKENvdW50cyBzaXplZCB0byBcImNvbWZvcnRhYmx5IGVub3VnaCBmb3Igb25lIHRlYW0sIG5vdFxuICogc2NyaXB0IHNwYW1cIjogMjAgZGFzaGJvYXJkcywgNTAgYWxlcnQgcnVsZXMsIDEwIGRlc3RpbmF0aW9ucywgMSBJZFAgY29uZmlnXG4gKiBmb3IgRGV2ZWxvcGVyOyBzY2FsZWQgdXAgZm9yIFBybzsgLTEgKHVuY2FwcGVkKSBmb3IgdGhlIGNoZWFwIGNvdW50LXF1b3Rhc1xuICogb24gVGVhbS9FbnRlcnByaXNlIHdoaWxlIGNvc3QtZHJpdmluZyBxdW90YXMg4oCUIGluY2wuIGFwaUNhbGxzIOKAlCBzdGF5IGZpbml0ZS4pXG4gKi9cbmNvbnN0IERFRkFVTFRfVElFUl9MSU1JVFM6IFJlY29yZDxRdW90YVRpZXIsIFF1b3RhVGllckxpbWl0cz4gPSB7XG4gIC8vIEZyZWUgdGllcjogc2luZ2xlIHNlYXQsIGFwaUNhbGxzIENBUFBFRCAod2FzIHVubGltaXRlZCDigJQgYSBEb1MvYWJ1c2UgaG9sZVxuICAvLyBvbiBhIHNoYXJlZCByZXNvdXJjZSk7IGFpQ2FsbHMgc21hbGwgKGVhY2ggaGFzIH4kMC4wMS0wLjEwIGV4dGVybmFsIGNvc3QpLlxuICBkZXZlbG9wZXI6IHtcbiAgICBwbHVnaW5zOiAyNSxcbiAgICBwaXBlbGluZXM6IDUsXG4gICAgYXBpQ2FsbHM6IDI1XzAwMCxcbiAgICBhaUNhbGxzOiAyNSxcbiAgICBzdG9yYWdlQnl0ZXM6IDIgKiBHQixcbiAgICBkYXNoYm9hcmRzOiAyMCxcbiAgICBhbGVydFJ1bGVzOiA1MCxcbiAgICBhbGVydERlc3RpbmF0aW9uczogMTAsXG4gICAgaWRwQ29uZmlnczogMSxcbiAgICBzZWF0czogMSxcbiAgfSxcbiAgLy8gUHJvID0gb25lIHBvd2VyIHVzZXIsIGluZGl2aWR1YWwgcHJpY2luZy5cbiAgcHJvOiB7XG4gICAgcGx1Z2luczogNTAsXG4gICAgcGlwZWxpbmVzOiAxMCxcbiAgICBhcGlDYWxsczogNTAwXzAwMCxcbiAgICBhaUNhbGxzOiAxXzAwMCxcbiAgICBzdG9yYWdlQnl0ZXM6IDI1ICogR0IsXG4gICAgZGFzaGJvYXJkczogMjAwLFxuICAgIGFsZXJ0UnVsZXM6IDUwMCxcbiAgICBhbGVydERlc3RpbmF0aW9uczogNTAsXG4gICAgaWRwQ29uZmlnczogNSxcbiAgICBzZWF0czogMSxcbiAgfSxcbiAgLy8gVGVhbSA9IGNvbGxhYm9yYXRpb24gdGllcjsgdGhlIHNlYXQgbGltaXQgKDEwKSBpcyB0aGUgcmVhbCBkaWZmZXJlbnRpYXRvclxuICAvLyBvdmVyIFByby4gTGltaXRzIHNpdCBiZXR3ZWVuIFBybyBhbmQgRW50ZXJwcmlzZS5cbiAgdGVhbToge1xuICAgIHBsdWdpbnM6IDEwMCxcbiAgICBwaXBlbGluZXM6IDIwMCxcbiAgICBhcGlDYWxsczogMl8wMDBfMDAwLFxuICAgIGFpQ2FsbHM6IDVfMDAwLFxuICAgIHN0b3JhZ2VCeXRlczogMTUwICogR0IsXG4gICAgZGFzaGJvYXJkczogLTEsXG4gICAgYWxlcnRSdWxlczogLTEsXG4gICAgYWxlcnREZXN0aW5hdGlvbnM6IC0xLFxuICAgIGlkcENvbmZpZ3M6IDUsXG4gICAgc2VhdHM6IDEwLFxuICB9LFxuICAvLyBFbnRlcnByaXNlOiBvcmctd2lkZSwgaGlnaCBzZWF0IGNhcC4gRkFJUi1VU0Ug4oCUIGNvc3QgZHJpdmVycyAoYXBpQ2FsbHMsXG4gIC8vIGFpQ2FsbHMsIHN0b3JhZ2VCeXRlcykgY2FwcGVkIGhpZ2ggc28gb25lIGFjY291bnQgY2FuJ3QgcnVuIHVwIHVuYm91bmRlZFxuICAvLyBjb21wdXRlL3Byb3ZpZGVyL3N0b3JhZ2UgY29zdCBvbiBhIGZsYXQgcHJpY2U7IGNoZWFwIGNvdW50LXF1b3RhcyBzdGF5IC0xLlxuICBlbnRlcnByaXNlOiB7XG4gICAgcGx1Z2luczogMjUwLFxuICAgIHBpcGVsaW5lczogMjAwLFxuICAgIGFwaUNhbGxzOiAxMF8wMDBfMDAwLFxuICAgIGFpQ2FsbHM6IDE1XzAwMCxcbiAgICBzdG9yYWdlQnl0ZXM6IDUwMCAqIEdCLFxuICAgIGRhc2hib2FyZHM6IC0xLFxuICAgIGFsZXJ0UnVsZXM6IC0xLFxuICAgIGFsZXJ0RGVzdGluYXRpb25zOiAtMSxcbiAgICBpZHBDb25maWdzOiAtMSxcbiAgICBzZWF0czogMjUsXG4gIH0sXG4gIC8vIFVubGltaXRlZDogRVZFUlkgcXVvdGEgdW5jYXBwZWQgKC0xKS4gVGhlIGRlZmF1bHQgd2hlbiBiaWxsaW5nIGlzIGRpc2FibGVkXG4gIC8vIChubyBlbmZvcmNlbWVudCBzdXJmYWNlKSDigJQgbmV2ZXIgc2hvd24vc2VsZWN0YWJsZSB3aGVuIGJpbGxpbmcgaXMgZW5hYmxlZC5cbiAgdW5saW1pdGVkOiB7XG4gICAgcGx1Z2luczogLTEsXG4gICAgcGlwZWxpbmVzOiAtMSxcbiAgICBhcGlDYWxsczogLTEsXG4gICAgYWlDYWxsczogLTEsXG4gICAgc3RvcmFnZUJ5dGVzOiAtMSxcbiAgICBkYXNoYm9hcmRzOiAtMSxcbiAgICBhbGVydFJ1bGVzOiAtMSxcbiAgICBhbGVydERlc3RpbmF0aW9uczogLTEsXG4gICAgaWRwQ29uZmlnczogLTEsXG4gICAgc2VhdHM6IC0xLFxuICB9LFxufTtcblxuLyoqIFJlYWQgYW4gaW50ZWdlciBlbnYgdmFyLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGNvZGUgZGVmYXVsdC4gYC0xYCA9IHVubGltaXRlZC4gKi9cbmZ1bmN0aW9uIGVudkludChuYW1lOiBzdHJpbmcsIGZhbGxiYWNrOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudltuYW1lXTtcbiAgaWYgKHJhdyA9PT0gdW5kZWZpbmVkIHx8IHJhdyA9PT0gJycpIHJldHVybiBmYWxsYmFjaztcbiAgY29uc3QgbiA9IHBhcnNlSW50KHJhdywgMTApO1xuICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gZmFsbGJhY2sgOiBuO1xufVxuXG4vKiogUmVhZCBhIHN0cmluZyBlbnYgdmFyLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGNvZGUgZGVmYXVsdC4gKi9cbmZ1bmN0aW9uIGVudlN0cihuYW1lOiBzdHJpbmcsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudltuYW1lXTtcbiAgcmV0dXJuIHJhdyA9PT0gdW5kZWZpbmVkIHx8IHJhdyA9PT0gJycgPyBmYWxsYmFjayA6IHJhdztcbn1cblxuLyoqXG4gKiBQZXItdGllciBsaW1pdHMsIGVhY2ggb3ZlcnJpZGFibGUgdmlhIGBRVU9UQV9USUVSXzxUSUVSPl88TElNSVQ+YCBlbnYgdmFyc1xuICogKGUuZy4gYFFVT1RBX1RJRVJfUFJPX1BJUEVMSU5FUz0yNTBgLCBgUVVPVEFfVElFUl9ERVZFTE9QRVJfU1RPUkFHRV9CWVRFUz0uLi5gKS5cbiAqIFVuc2V0L2VtcHR5IOKGkiB0aGUgY29kZSBkZWZhdWx0LiBgLTFgID0gdW5saW1pdGVkLiBSZWFkIG9uY2UgYXQgbW9kdWxlIGxvYWQg4oCUXG4gKiBvbiBrOHMgdGhlc2UgZmxvdyBpbiB2aWEgdGhlIGBhcHAtZW52YCBDb25maWdNYXAgKGJ1aWx0IGZyb20gYC5lbnZgKS5cbiAqL1xuZnVuY3Rpb24gdGllckxpbWl0cyh0aWVyOiBRdW90YVRpZXIpOiBRdW90YVRpZXJMaW1pdHMge1xuICBjb25zdCBkID0gREVGQVVMVF9USUVSX0xJTUlUU1t0aWVyXTtcbiAgY29uc3QgVCA9IHRpZXIudG9VcHBlckNhc2UoKTtcbiAgcmV0dXJuIHtcbiAgICBwbHVnaW5zOiBlbnZJbnQoYFFVT1RBX1RJRVJfJHtUfV9QTFVHSU5TYCwgZC5wbHVnaW5zKSxcbiAgICBwaXBlbGluZXM6IGVudkludChgUVVPVEFfVElFUl8ke1R9X1BJUEVMSU5FU2AsIGQucGlwZWxpbmVzKSxcbiAgICBhcGlDYWxsczogZW52SW50KGBRVU9UQV9USUVSXyR7VH1fQVBJX0NBTExTYCwgZC5hcGlDYWxscyksXG4gICAgYWlDYWxsczogZW52SW50KGBRVU9UQV9USUVSXyR7VH1fQUlfQ0FMTFNgLCBkLmFpQ2FsbHMpLFxuICAgIHN0b3JhZ2VCeXRlczogZW52SW50KGBRVU9UQV9USUVSXyR7VH1fU1RPUkFHRV9CWVRFU2AsIGQuc3RvcmFnZUJ5dGVzKSxcbiAgICBkYXNoYm9hcmRzOiBlbnZJbnQoYFFVT1RBX1RJRVJfJHtUfV9EQVNIQk9BUkRTYCwgZC5kYXNoYm9hcmRzKSxcbiAgICBhbGVydFJ1bGVzOiBlbnZJbnQoYFFVT1RBX1RJRVJfJHtUfV9BTEVSVF9SVUxFU2AsIGQuYWxlcnRSdWxlcyksXG4gICAgYWxlcnREZXN0aW5hdGlvbnM6IGVudkludChgUVVPVEFfVElFUl8ke1R9X0FMRVJUX0RFU1RJTkFUSU9OU2AsIGQuYWxlcnREZXN0aW5hdGlvbnMpLFxuICAgIGlkcENvbmZpZ3M6IGVudkludChgUVVPVEFfVElFUl8ke1R9X0lEUF9DT05GSUdTYCwgZC5pZHBDb25maWdzKSxcbiAgICBzZWF0czogZW52SW50KGBRVU9UQV9USUVSXyR7VH1fU0VBVFNgLCBkLnNlYXRzKSxcbiAgfTtcbn1cblxuLy8gTGFiZWxzIGFyZSBvdmVycmlkYWJsZSB2aWEgYFFVT1RBX1RJRVJfPFRJRVI+X0xBQkVMYCAoZGlzcGxheSBuYW1lIG9ubHkpLlxuZXhwb3J0IGNvbnN0IFFVT1RBX1RJRVJTOiBSZWNvcmQ8UXVvdGFUaWVyLCBRdW90YVRpZXJQcmVzZXQ+ID0ge1xuICBkZXZlbG9wZXI6IHsgbGFiZWw6IGVudlN0cignUVVPVEFfVElFUl9ERVZFTE9QRVJfTEFCRUwnLCAnRGV2ZWxvcGVyJyksIGxpbWl0czogdGllckxpbWl0cygnZGV2ZWxvcGVyJykgfSxcbiAgcHJvOiB7IGxhYmVsOiBlbnZTdHIoJ1FVT1RBX1RJRVJfUFJPX0xBQkVMJywgJ1BybycpLCBsaW1pdHM6IHRpZXJMaW1pdHMoJ3BybycpIH0sXG4gIHRlYW06IHsgbGFiZWw6IGVudlN0cignUVVPVEFfVElFUl9URUFNX0xBQkVMJywgJ1RlYW0nKSwgbGltaXRzOiB0aWVyTGltaXRzKCd0ZWFtJykgfSxcbiAgZW50ZXJwcmlzZTogeyBsYWJlbDogZW52U3RyKCdRVU9UQV9USUVSX0VOVEVSUFJJU0VfTEFCRUwnLCAnRW50ZXJwcmlzZScpLCBsaW1pdHM6IHRpZXJMaW1pdHMoJ2VudGVycHJpc2UnKSB9LFxuICB1bmxpbWl0ZWQ6IHsgbGFiZWw6IGVudlN0cignUVVPVEFfVElFUl9VTkxJTUlURURfTEFCRUwnLCAnVW5saW1pdGVkJyksIGxpbWl0czogdGllckxpbWl0cygndW5saW1pdGVkJykgfSxcbn07XG5cbi8qKiBBbGwgdmFsaWQgdGllciBuYW1lcyAoaW5jbC4gYHVubGltaXRlZGApLiBVc2VkIGZvciB2YWxpZGF0aW9uIG9mIGEgKnN0b3JlZCpcbiAqICB0aWVyIOKAlCBgdW5saW1pdGVkYCBpcyBhIHZhbGlkIHZhbHVlIGV2ZW4gdGhvdWdoIGl0J3MgbmV2ZXIgb2ZmZXJlZCBmb3Igc2FsZS4gKi9cbmV4cG9ydCBjb25zdCBWQUxJRF9USUVSUzogcmVhZG9ubHkgUXVvdGFUaWVyW10gPSBPYmplY3Qua2V5cyhRVU9UQV9USUVSUykgYXMgUXVvdGFUaWVyW107XG5cbi8qKiBUaGUgc3RhbmRhcmQsIGJpbGxpbmctc2VsZWN0YWJsZSB0aWVycyDigJQgdGhlIG9uZXMgb2ZmZXJlZCBhcyBwdXJjaGFzYWJsZSBwbGFuc1xuICogIGFuZCBzaG93biBpbiB0aWVyIHBpY2tlcnMuIEV4Y2x1ZGVzIGB1bmxpbWl0ZWRgLCB3aGljaCBpcyB0aGUgYmlsbGluZy1ESVNBQkxFRFxuICogIGRlZmF1bHQgYW5kIGlzIG5ldmVyIGRpc3BsYXllZC9zZWxlY3RhYmxlIHdoZW4gYmlsbGluZyBpcyBlbmFibGVkLiAqL1xuZXhwb3J0IGNvbnN0IFNUQU5EQVJEX1RJRVJTOiByZWFkb25seSBRdW90YVRpZXJbXSA9IFsnZGV2ZWxvcGVyJywgJ3BybycsICd0ZWFtJywgJ2VudGVycHJpc2UnXTtcblxuLyoqIFdoZXRoZXIgdGhlIGJpbGxpbmcgc2VydmljZSBpcyBlbmFibGVkIGluIHRoaXMgZGVwbG95bWVudCAoYEJJTExJTkdfRU5BQkxFRGAsXG4gKiAgb3B0LW91dCBkZWZhdWx0LW9uIOKAlCBtaXJyb3JzIHRoZSBiaWxsaW5nL3BsYXRmb3JtIGNvbmZpZ3MpLiBXaXRoIGJpbGxpbmcgT0ZGXG4gKiAgdGhlcmUncyBubyBtZXRlcmluZy9lbmZvcmNlbWVudCBzdXJmYWNlLCBzbyB0aGUgZGVmYXVsdCB0aWVyIGlzIGB1bmxpbWl0ZWRgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQmlsbGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiAocHJvY2Vzcy5lbnYuQklMTElOR19FTkFCTEVEIHx8ICd0cnVlJykudG9Mb3dlckNhc2UoKSAhPT0gJ2ZhbHNlJztcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHRpZXIgYXNzaWduZWQgdG8gbmV3IG9yZ2FuaXphdGlvbnMuXG4gKiAtIEJpbGxpbmcgRElTQUJMRUQg4oaSIGB1bmxpbWl0ZWRgIChub3RoaW5nIGlzIG1ldGVyZWQsIHNvIGV2ZXJ5dGhpbmcgaXMgdW5jYXBwZWQpLlxuICogLSBCaWxsaW5nIEVOQUJMRUQgIOKGkiBgREVGQVVMVF9RVU9UQV9USUVSYCBpZiBpdCdzIGEgdmFsaWQgc3RhbmRhcmQgdGllciwgZWxzZSBgZGV2ZWxvcGVyYC5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElFUjogUXVvdGFUaWVyID0gIWlzQmlsbGluZ0VuYWJsZWQoKVxuICA/ICd1bmxpbWl0ZWQnXG4gIDogKGlzVmFsaWRUaWVyKHByb2Nlc3MuZW52LkRFRkFVTFRfUVVPVEFfVElFUiA/PyAnJykgJiYgcHJvY2Vzcy5lbnYuREVGQVVMVF9RVU9UQV9USUVSICE9PSAndW5saW1pdGVkJ1xuICAgID8gKHByb2Nlc3MuZW52LkRFRkFVTFRfUVVPVEFfVElFUiBhcyBRdW90YVRpZXIpXG4gICAgOiAnZGV2ZWxvcGVyJyk7XG5cbi8qKiBDaGVjayB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgUXVvdGFUaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUaWVyKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBRdW90YVRpZXIge1xuICAvLyBVc2UgdGhlIGV4cGxpY2l0IHR1cGxlLCBub3QgYHZhbHVlIGluIFFVT1RBX1RJRVJTYDogYGluYCB3YWxrcyB0aGUgcHJvdG90eXBlXG4gIC8vIGNoYWluLCBzbyBpbmhlcml0ZWQgT2JqZWN0IGtleXMgKCd0b1N0cmluZycsICdjb25zdHJ1Y3RvcicsIOKApikgd291bGQgcmV0dXJuXG4gIC8vIHRydWUgYW5kIHRoZW4gYGdldFRpZXJMaW1pdHNgIHdvdWxkIHJlYWQgYC5saW1pdHNgIG9mZiBhIGZ1bmN0aW9uIOKGkiBjcmFzaC5cbiAgLy8gYHRpZXJgIGlzIGF0dGFja2VyLWluZmx1ZW5jZWFibGUgKEpXVCAvIHJlcXVlc3QgYm9keSAvIERFRkFVTFRfUVVPVEFfVElFUiBlbnYpLlxuICByZXR1cm4gKFZBTElEX1RJRVJTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyh2YWx1ZSk7XG59XG5cbi8qKiBHZXQgdGhlIGRlZmF1bHQgbGltaXRzIGZvciBhIGdpdmVuIHRpZXIgKGZhbGxzIGJhY2sgdG8gZGV2ZWxvcGVyKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaWVyTGltaXRzKHRpZXI6IHN0cmluZyk6IFF1b3RhVGllckxpbWl0cyB7XG4gIHJldHVybiBpc1ZhbGlkVGllcih0aWVyKSA/IFFVT1RBX1RJRVJTW3RpZXJdLmxpbWl0czogUVVPVEFfVElFUlMuZGV2ZWxvcGVyLmxpbWl0cztcbn1cbiJdfQ==
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGEtdGllcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcXVvdGEtdGllcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQTJDdEM7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFFOUI7Ozs7OztHQU1HO0FBQ0gsTUFBTSxtQkFBbUIsR0FBdUM7SUFDOUQsNEVBQTRFO0lBQzVFLDZFQUE2RTtJQUM3RSxTQUFTLEVBQUU7UUFDVCxPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxDQUFDO1FBQ1osUUFBUSxFQUFFLE1BQU07UUFDaEIsT0FBTyxFQUFFLEVBQUU7UUFDWCxZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUU7UUFDcEIsVUFBVSxFQUFFLEVBQUU7UUFDZCxVQUFVLEVBQUUsRUFBRTtRQUNkLGlCQUFpQixFQUFFLEVBQUU7UUFDckIsVUFBVSxFQUFFLENBQUM7UUFDYixLQUFLLEVBQUUsQ0FBQztLQUNUO0lBQ0QsNENBQTRDO0lBQzVDLEdBQUcsRUFBRTtRQUNILE9BQU8sRUFBRSxFQUFFO1FBQ1gsU0FBUyxFQUFFLEVBQUU7UUFDYixRQUFRLEVBQUUsT0FBTztRQUNqQixPQUFPLEVBQUUsS0FBSztRQUNkLFlBQVksRUFBRSxFQUFFLEdBQUcsRUFBRTtRQUNyQixVQUFVLEVBQUUsR0FBRztRQUNmLFVBQVUsRUFBRSxHQUFHO1FBQ2YsaUJBQWlCLEVBQUUsRUFBRTtRQUNyQixVQUFVLEVBQUUsQ0FBQztRQUNiLEtBQUssRUFBRSxDQUFDO0tBQ1Q7SUFDRCw0RUFBNEU7SUFDNUUsbURBQW1EO0lBQ25ELElBQUksRUFBRTtRQUNKLE9BQU8sRUFBRSxHQUFHO1FBQ1osU0FBUyxFQUFFLEdBQUc7UUFDZCxRQUFRLEVBQUUsU0FBUztRQUNuQixPQUFPLEVBQUUsS0FBSztRQUNkLFlBQVks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QUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKiBBdmFpbGFibGUgcXVvdGEgdGllciBpZGVudGlmaWVycy5cbiAqXG4gKiBgdW5saW1pdGVkYCBpcyBhIHNwZWNpYWwgdGllcjogZXZlcnkgcXVvdGEgaXMgYC0xYCAodW5jYXBwZWQpIGFuZCBpdCBpbmNsdWRlc1xuICogZXZlcnkgZmVhdHVyZS9hZGQtb24gYnVuZGxlLiBJdCBpcyB0aGUgREVGQVVMVCB3aGVuIGJpbGxpbmcgaXMgZGlzYWJsZWQgKG5vXG4gKiBtZXRlcmluZy9lbmZvcmNlbWVudCBzdXJmYWNlIGV4aXN0cywgc28gbm90aGluZyBpcyBjYXBwZWQpLCBhbmQgaXQgaXMgTkVWRVJcbiAqIHNob3duIG9yIHNlbGVjdGFibGUgd2hlbiBiaWxsaW5nIGlzIGVuYWJsZWQg4oCUIHNlZSBgU1RBTkRBUkRfVElFUlNgLiAqL1xuZXhwb3J0IHR5cGUgUXVvdGFUaWVyID0gJ2RldmVsb3BlcicgfCAncHJvJyB8ICd0ZWFtJyB8ICdlbnRlcnByaXNlJyB8ICd1bmxpbWl0ZWQnO1xuXG4vKiogTGltaXQgdmFsdWVzIGZvciBlYWNoIHF1b3RhIHR5cGUgd2l0aGluIGEgdGllci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUXVvdGFUaWVyTGltaXRzIHtcbiAgcGx1Z2luczogbnVtYmVyO1xuICBwaXBlbGluZXM6IG51bWJlcjtcbiAgYXBpQ2FsbHM6IG51bWJlcjtcbiAgYWlDYWxsczogbnVtYmVyO1xuICAvKipcbiAgICogQWdncmVnYXRlIHJlZ2lzdHJ5IHN0b3JhZ2UgY2FwIGluIEJZVEVTLiBDb3VudGVkIGFjcm9zcyBldmVyeSByZXBvXG4gICAqIHVuZGVyIHRoZSBvcmcncyBgb3JnLXtvcmdJZH0vYCBuYW1lc3BhY2UuIC0xIG1lYW5zIHVubGltaXRlZC5cbiAgICogcHVzaC1nYXRlIHJlYWRzIHRoaXM7IHRoZSBpbWFnZS1yZWdpc3RyeSByZWplY3RzIHRva2VuIGlzc3VhbmNlIGZvclxuICAgKiBgcHVzaGAgc2NvcGUgd2hlbiB0aGUgb3JnJ3MgbWVhc3VyZWQgdXNhZ2UgZXhjZWVkcyB0aGUgbGltaXQuXG4gICAqL1xuICBzdG9yYWdlQnl0ZXM6IG51bWJlcjtcbiAgLyoqIENvdW50LXF1b3RhcyBvbiB0aGUgdXNlci1lZGl0YWJsZSBmZWF0dXJlIHRhYmxlcyBhZGRlZCB0byBjbG9zZSBwZXItb3JnXG4gICAqICBEb1MgdmlhIHNwYW0uIC0xIG1lYW5zIHVubGltaXRlZC4gKi9cbiAgZGFzaGJvYXJkczogbnVtYmVyO1xuICBhbGVydFJ1bGVzOiBudW1iZXI7XG4gIGFsZXJ0RGVzdGluYXRpb25zOiBudW1iZXI7XG4gIGlkcENvbmZpZ3M6IG51bWJlcjtcbiAgLyoqXG4gICAqIE1heCBvcmcgbWVtYmVycyAoYWN0aXZlIHVzZXJzIC8gc2VhdHMpLiAtMSA9IHVubGltaXRlZC4gVGhpcyBpcyB0aGUgXCJUZWFtXCJcbiAgICogdGllciBkaWZmZXJlbnRpYXRvciDigJQgZW5mb3JjZWQgYXQgbWVtYmVyLWludml0ZSB0aW1lIChhbiBpbnZpdGUgaXMgYmxvY2tlZFxuICAgKiB3aGVuIGFjdGl2ZSBtZW1iZXJzICsgcGVuZGluZyBpbnZpdGVzIHdvdWxkIGV4Y2VlZCB0aGlzKS5cbiAgICovXG4gIHNlYXRzOiBudW1iZXI7XG59XG5cbi8qKiBGdWxsIHByZXNldCBmb3IgYSBzaW5nbGUgdGllciAobGFiZWwgKyBsaW1pdHMpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdW90YVRpZXJQcmVzZXQge1xuICBsYWJlbDogc3RyaW5nO1xuICBsaW1pdHM6IFF1b3RhVGllckxpbWl0cztcbn1cblxuLyoqXG4gKiBQcmVzZXQgbGltaXRzIGZvciBlYWNoIHRpZXIuIC0xIG1lYW5zIHVubGltaXRlZC5cbiAqXG4gKiBBSSBjYWxscyBhcmUgc2l6ZWQgbXVjaCBzbWFsbGVyIHRoYW4gYGFwaUNhbGxzYCBiZWNhdXNlIGVhY2ggY2FsbCBoYXNcbiAqIGV4dGVybmFsIHByb3ZpZGVyIGNvc3QgKH4kMC4wMSQwLjEwL2NhbGwpLiBEZXZlbG9wZXIgdGllciBhbGxvd3MgbGlnaHRcbiAqIGV4cGxvcmF0aW9uICg1MC9wZXJpb2QpOyBQcm8gbGlmdHMgdG8gMiw1MDA7IEVudGVycHJpc2UgaXMgY2FwcGVkIGhpZ2hcbiAqICgyNSwwMDApIOKAlCBmYWlyLXVzZSwgbm90IGxpdGVyYWxseSB1bmxpbWl0ZWQuXG4gKlxuICogYHN0b3JhZ2VCeXRlc2AgaXMgdGhlIGFnZ3JlZ2F0ZSByZWdpc3RyeSBjYXAgcGVyIG9yZy4gU2l6ZWRcbiAqIGFyb3VuZCBwbHVnaW4taW1hZ2UgcmVhbGl0aWVzOiBhIHR5cGljYWwgcGx1Z2luIGltYWdlIGlzIDIwMDUwMCBNQjtcbiAqIERldmVsb3BlcidzIDIgR0IgaG9sZHMgfjQgdmVyc2lvbnMgw5cgfjUwMCBNQiwgUHJvJ3MgNTAgR0IgY292ZXJzIGFcbiAqIG1hdHVyZSBjYXRhbG9nLiBPcGVyYXRvcnMgY2FuIG92ZXJyaWRlIHBlci1vcmcgdmlhIHRoZSBxdW90YSBDUlVEIEFQSS5cbiAqL1xuY29uc3QgR0IgPSAxMDI0ICogMTAyNCAqIDEwMjQ7XG5cbi8qKlxuICogQ29kZS1kZWZhdWx0IGxpbWl0cyBwZXIgdGllciDigJQgdGhlIGZhbGxiYWNrIHdoZW4gbm8gZW52IG92ZXJyaWRlIGlzIHNldC5cbiAqIC0xIG1lYW5zIHVubGltaXRlZC4gKENvdW50cyBzaXplZCB0byBcImNvbWZvcnRhYmx5IGVub3VnaCBmb3Igb25lIHRlYW0sIG5vdFxuICogc2NyaXB0IHNwYW1cIjogMjAgZGFzaGJvYXJkcywgNTAgYWxlcnQgcnVsZXMsIDEwIGRlc3RpbmF0aW9ucywgMSBJZFAgY29uZmlnXG4gKiBmb3IgRGV2ZWxvcGVyOyBzY2FsZWQgdXAgZm9yIFBybzsgLTEgKHVuY2FwcGVkKSBmb3IgdGhlIGNoZWFwIGNvdW50LXF1b3Rhc1xuICogb24gVGVhbS9FbnRlcnByaXNlIHdoaWxlIGNvc3QtZHJpdmluZyBxdW90YXMg4oCUIGluY2wuIGFwaUNhbGxzIOKAlCBzdGF5IGZpbml0ZS4pXG4gKi9cbmNvbnN0IERFRkFVTFRfVElFUl9MSU1JVFM6IFJlY29yZDxRdW90YVRpZXIsIFF1b3RhVGllckxpbWl0cz4gPSB7XG4gIC8vIEZyZWUgdGllcjogc2luZ2xlIHNlYXQsIGFwaUNhbGxzIENBUFBFRCAod2FzIHVubGltaXRlZCDigJQgYSBEb1MvYWJ1c2UgaG9sZVxuICAvLyBvbiBhIHNoYXJlZCByZXNvdXJjZSk7IGFpQ2FsbHMgc21hbGwgKGVhY2ggaGFzIH4kMC4wMS0wLjEwIGV4dGVybmFsIGNvc3QpLlxuICBkZXZlbG9wZXI6IHtcbiAgICBwbHVnaW5zOiAyNSxcbiAgICBwaXBlbGluZXM6IDUsXG4gICAgYXBpQ2FsbHM6IDI1XzAwMCxcbiAgICBhaUNhbGxzOiAyNSxcbiAgICBzdG9yYWdlQnl0ZXM6IDIgKiBHQixcbiAgICBkYXNoYm9hcmRzOiAyMCxcbiAgICBhbGVydFJ1bGVzOiA1MCxcbiAgICBhbGVydERlc3RpbmF0aW9uczogMTAsXG4gICAgaWRwQ29uZmlnczogMSxcbiAgICBzZWF0czogMSxcbiAgfSxcbiAgLy8gUHJvID0gb25lIHBvd2VyIHVzZXIsIGluZGl2aWR1YWwgcHJpY2luZy5cbiAgcHJvOiB7XG4gICAgcGx1Z2luczogNTAsXG4gICAgcGlwZWxpbmVzOiAxMCxcbiAgICBhcGlDYWxsczogNTAwXzAwMCxcbiAgICBhaUNhbGxzOiAxXzAwMCxcbiAgICBzdG9yYWdlQnl0ZXM6IDI1ICogR0IsXG4gICAgZGFzaGJvYXJkczogMjAwLFxuICAgIGFsZXJ0UnVsZXM6IDUwMCxcbiAgICBhbGVydERlc3RpbmF0aW9uczogNTAsXG4gICAgaWRwQ29uZmlnczogNSxcbiAgICBzZWF0czogMSxcbiAgfSxcbiAgLy8gVGVhbSA9IGNvbGxhYm9yYXRpb24gdGllcjsgdGhlIHNlYXQgbGltaXQgKDEwKSBpcyB0aGUgcmVhbCBkaWZmZXJlbnRpYXRvclxuICAvLyBvdmVyIFByby4gTGltaXRzIHNpdCBiZXR3ZWVuIFBybyBhbmQgRW50ZXJwcmlzZS5cbiAgdGVhbToge1xuICAgIHBsdWdpbnM6IDEwMCxcbiAgICBwaXBlbGluZXM6IDIwMCxcbiAgICBhcGlDYWxsczogMl8wMDBfMDAwLFxuICAgIGFpQ2FsbHM6IDVfMDAwLFxuICAgIHN0b3JhZ2VCeXRlczogMTUwICogR0IsXG4gICAgZGFzaGJvYXJkczogLTEsXG4gICAgYWxlcnRSdWxlczogLTEsXG4gICAgYWxlcnREZXN0aW5hdGlvbnM6IC0xLFxuICAgIGlkcENvbmZpZ3M6IDUsXG4gICAgc2VhdHM6IDEwLFxuICB9LFxuICAvLyBFbnRlcnByaXNlOiBvcmctd2lkZSwgaGlnaCBzZWF0IGNhcC4gRkFJUi1VU0Ug4oCUIGNvc3QgZHJpdmVycyAoYXBpQ2FsbHMsXG4gIC8vIGFpQ2FsbHMsIHN0b3JhZ2VCeXRlcykgY2FwcGVkIGhpZ2ggc28gb25lIGFjY291bnQgY2FuJ3QgcnVuIHVwIHVuYm91bmRlZFxuICAvLyBjb21wdXRlL3Byb3ZpZGVyL3N0b3JhZ2UgY29zdCBvbiBhIGZsYXQgcHJpY2U7IGNoZWFwIGNvdW50LXF1b3RhcyBzdGF5IC0xLlxuICBlbnRlcnByaXNlOiB7XG4gICAgcGx1Z2luczogMjUwLFxuICAgIHBpcGVsaW5lczogMjAwLFxuICAgIGFwaUNhbGxzOiAxMF8wMDBfMDAwLFxuICAgIGFpQ2FsbHM6IDE1XzAwMCxcbiAgICBzdG9yYWdlQnl0ZXM6IDUwMCAqIEdCLFxuICAgIGRhc2hib2FyZHM6IC0xLFxuICAgIGFsZXJ0UnVsZXM6IC0xLFxuICAgIGFsZXJ0RGVzdGluYXRpb25zOiAtMSxcbiAgICBpZHBDb25maWdzOiAtMSxcbiAgICBzZWF0czogMjUsXG4gIH0sXG4gIC8vIFVubGltaXRlZDogRVZFUlkgcXVvdGEgdW5jYXBwZWQgKC0xKS4gVGhlIGRlZmF1bHQgd2hlbiBiaWxsaW5nIGlzIGRpc2FibGVkXG4gIC8vIChubyBlbmZvcmNlbWVudCBzdXJmYWNlKSDigJQgbmV2ZXIgc2hvd24vc2VsZWN0YWJsZSB3aGVuIGJpbGxpbmcgaXMgZW5hYmxlZC5cbiAgdW5saW1pdGVkOiB7XG4gICAgcGx1Z2luczogLTEsXG4gICAgcGlwZWxpbmVzOiAtMSxcbiAgICBhcGlDYWxsczogLTEsXG4gICAgYWlDYWxsczogLTEsXG4gICAgc3RvcmFnZUJ5dGVzOiAtMSxcbiAgICBkYXNoYm9hcmRzOiAtMSxcbiAgICBhbGVydFJ1bGVzOiAtMSxcbiAgICBhbGVydERlc3RpbmF0aW9uczogLTEsXG4gICAgaWRwQ29uZmlnczogLTEsXG4gICAgc2VhdHM6IC0xLFxuICB9LFxufTtcblxuLyoqIFJlYWQgYW4gaW50ZWdlciBlbnYgdmFyLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGNvZGUgZGVmYXVsdC4gYC0xYCA9IHVubGltaXRlZC4gKi9cbmZ1bmN0aW9uIGVudkludChuYW1lOiBzdHJpbmcsIGZhbGxiYWNrOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudltuYW1lXTtcbiAgaWYgKHJhdyA9PT0gdW5kZWZpbmVkIHx8IHJhdyA9PT0gJycpIHJldHVybiBmYWxsYmFjaztcbiAgY29uc3QgbiA9IHBhcnNlSW50KHJhdywgMTApO1xuICByZXR1cm4gTnVtYmVyLmlzTmFOKG4pID8gZmFsbGJhY2sgOiBuO1xufVxuXG4vKiogUmVhZCBhIHN0cmluZyBlbnYgdmFyLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGNvZGUgZGVmYXVsdC4gKi9cbmZ1bmN0aW9uIGVudlN0cihuYW1lOiBzdHJpbmcsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByYXcgPSBwcm9jZXNzLmVudltuYW1lXTtcbiAgcmV0dXJuIHJhdyA9PT0gdW5kZWZpbmVkIHx8IHJhdyA9PT0gJycgPyBmYWxsYmFjayA6IHJhdztcbn1cblxuLyoqXG4gKiBQZXItdGllciBsaW1pdHMsIGVhY2ggb3ZlcnJpZGFibGUgdmlhIGBRVU9UQV9USUVSXzxUSUVSPl88TElNSVQ+YCBlbnYgdmFyc1xuICogKGUuZy4gYFFVT1RBX1RJRVJfUFJPX1BJUEVMSU5FUz0yNTBgLCBgUVVPVEFfVElFUl9ERVZFTE9QRVJfU1RPUkFHRV9CWVRFUz0uLi5gKS5cbiAqIFVuc2V0L2VtcHR5IOKGkiB0aGUgY29kZSBkZWZhdWx0LiBgLTFgID0gdW5saW1pdGVkLiBSZWFkIG9uY2UgYXQgbW9kdWxlIGxvYWQg4oCUXG4gKiBvbiBrOHMgdGhlc2UgZmxvdyBpbiB2aWEgdGhlIGBhcHAtZW52YCBDb25maWdNYXAgKGJ1aWx0IGZyb20gYC5lbnZgKS5cbiAqL1xuZnVuY3Rpb24gdGllckxpbWl0cyh0aWVyOiBRdW90YVRpZXIpOiBRdW90YVRpZXJMaW1pdHMge1xuICBjb25zdCBkID0gREVGQVVMVF9USUVSX0xJTUlUU1t0aWVyXTtcbiAgY29uc3QgVCA9IHRpZXIudG9VcHBlckNhc2UoKTtcbiAgcmV0dXJuIHtcbiAgICBwbHVnaW5zOiBlbnZJbnQoYFFVT1RBX1RJRVJfJHtUfV9QTFVHSU5TYCwgZC5wbHVnaW5zKSxcbiAgICBwaXBlbGluZXM6IGVudkludChgUVVPVEFfVElFUl8ke1R9X1BJUEVMSU5FU2AsIGQucGlwZWxpbmVzKSxcbiAgICBhcGlDYWxsczogZW52SW50KGBRVU9UQV9USUVSXyR7VH1fQVBJX0NBTExTYCwgZC5hcGlDYWxscyksXG4gICAgYWlDYWxsczogZW52SW50KGBRVU9UQV9USUVSXyR7VH1fQUlfQ0FMTFNgLCBkLmFpQ2FsbHMpLFxuICAgIHN0b3JhZ2VCeXRlczogZW52SW50KGBRVU9UQV9USUVSXyR7VH1fU1RPUkFHRV9CWVRFU2AsIGQuc3RvcmFnZUJ5dGVzKSxcbiAgICBkYXNoYm9hcmRzOiBlbnZJbnQoYFFVT1RBX1RJRVJfJHtUfV9EQVNIQk9BUkRTYCwgZC5kYXNoYm9hcmRzKSxcbiAgICBhbGVydFJ1bGVzOiBlbnZJbnQoYFFVT1RBX1RJRVJfJHtUfV9BTEVSVF9SVUxFU2AsIGQuYWxlcnRSdWxlcyksXG4gICAgYWxlcnREZXN0aW5hdGlvbnM6IGVudkludChgUVVPVEFfVElFUl8ke1R9X0FMRVJUX0RFU1RJTkFUSU9OU2AsIGQuYWxlcnREZXN0aW5hdGlvbnMpLFxuICAgIGlkcENvbmZpZ3M6IGVudkludChgUVVPVEFfVElFUl8ke1R9X0lEUF9DT05GSUdTYCwgZC5pZHBDb25maWdzKSxcbiAgICBzZWF0czogZW52SW50KGBRVU9UQV9USUVSXyR7VH1fU0VBVFNgLCBkLnNlYXRzKSxcbiAgfTtcbn1cblxuLy8gTGFiZWxzIGFyZSBvdmVycmlkYWJsZSB2aWEgYFFVT1RBX1RJRVJfPFRJRVI+X0xBQkVMYCAoZGlzcGxheSBuYW1lIG9ubHkpLlxuZXhwb3J0IGNvbnN0IFFVT1RBX1RJRVJTOiBSZWNvcmQ8UXVvdGFUaWVyLCBRdW90YVRpZXJQcmVzZXQ+ID0ge1xuICBkZXZlbG9wZXI6IHsgbGFiZWw6IGVudlN0cignUVVPVEFfVElFUl9ERVZFTE9QRVJfTEFCRUwnLCAnRGV2ZWxvcGVyJyksIGxpbWl0czogdGllckxpbWl0cygnZGV2ZWxvcGVyJykgfSxcbiAgcHJvOiB7IGxhYmVsOiBlbnZTdHIoJ1FVT1RBX1RJRVJfUFJPX0xBQkVMJywgJ1BybycpLCBsaW1pdHM6IHRpZXJMaW1pdHMoJ3BybycpIH0sXG4gIHRlYW06IHsgbGFiZWw6IGVudlN0cignUVVPVEFfVElFUl9URUFNX0xBQkVMJywgJ1RlYW0nKSwgbGltaXRzOiB0aWVyTGltaXRzKCd0ZWFtJykgfSxcbiAgZW50ZXJwcmlzZTogeyBsYWJlbDogZW52U3RyKCdRVU9UQV9USUVSX0VOVEVSUFJJU0VfTEFCRUwnLCAnRW50ZXJwcmlzZScpLCBsaW1pdHM6IHRpZXJMaW1pdHMoJ2VudGVycHJpc2UnKSB9LFxuICB1bmxpbWl0ZWQ6IHsgbGFiZWw6IGVudlN0cignUVVPVEFfVElFUl9VTkxJTUlURURfTEFCRUwnLCAnVW5saW1pdGVkJyksIGxpbWl0czogdGllckxpbWl0cygndW5saW1pdGVkJykgfSxcbn07XG5cbi8qKiBBbGwgdmFsaWQgdGllciBuYW1lcyAoaW5jbC4gYHVubGltaXRlZGApLiBVc2VkIGZvciB2YWxpZGF0aW9uIG9mIGEgKnN0b3JlZCpcbiAqICB0aWVyIOKAlCBgdW5saW1pdGVkYCBpcyBhIHZhbGlkIHZhbHVlIGV2ZW4gdGhvdWdoIGl0J3MgbmV2ZXIgb2ZmZXJlZCBmb3Igc2FsZS4gKi9cbmV4cG9ydCBjb25zdCBWQUxJRF9USUVSUzogcmVhZG9ubHkgUXVvdGFUaWVyW10gPSBPYmplY3Qua2V5cyhRVU9UQV9USUVSUykgYXMgUXVvdGFUaWVyW107XG5cbi8qKiBUaGUgc3RhbmRhcmQsIGJpbGxpbmctc2VsZWN0YWJsZSB0aWVycyDigJQgdGhlIG9uZXMgb2ZmZXJlZCBhcyBwdXJjaGFzYWJsZSBwbGFuc1xuICogIGFuZCBzaG93biBpbiB0aWVyIHBpY2tlcnMuIERlcml2ZWQgYXMgXCJldmVyeSB2YWxpZCB0aWVyIGV4Y2VwdCBgdW5saW1pdGVkYFwiLFxuICogIHdoaWNoIGlzIHRoZSBiaWxsaW5nLURJU0FCTEVEIGRlZmF1bHQgYW5kIGlzIG5ldmVyIGRpc3BsYXllZC9zZWxlY3RhYmxlIHdoZW5cbiAqICBiaWxsaW5nIGlzIGVuYWJsZWQuIEtlcHQgRFJZIG9mZiBgVkFMSURfVElFUlNgIHNvIGFkZGluZyBhIHRpZXIgZmxvd3MgdGhyb3VnaC4gKi9cbmV4cG9ydCBjb25zdCBTVEFOREFSRF9USUVSUzogcmVhZG9ubHkgUXVvdGFUaWVyW10gPSBWQUxJRF9USUVSUy5maWx0ZXIoKHQpID0+IHQgIT09ICd1bmxpbWl0ZWQnKTtcblxuLyoqIFdoZXRoZXIgdGhlIGJpbGxpbmcgc2VydmljZSBpcyBlbmFibGVkIGluIHRoaXMgZGVwbG95bWVudCAoYEJJTExJTkdfRU5BQkxFRGAsXG4gKiAgb3B0LW91dCBkZWZhdWx0LW9uIOKAlCBtaXJyb3JzIHRoZSBiaWxsaW5nL3BsYXRmb3JtIGNvbmZpZ3MpLiBXaXRoIGJpbGxpbmcgT0ZGXG4gKiAgdGhlcmUncyBubyBtZXRlcmluZy9lbmZvcmNlbWVudCBzdXJmYWNlLCBzbyB0aGUgZGVmYXVsdCB0aWVyIGlzIGB1bmxpbWl0ZWRgLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQmlsbGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiAocHJvY2Vzcy5lbnYuQklMTElOR19FTkFCTEVEIHx8ICd0cnVlJykudG9Mb3dlckNhc2UoKSAhPT0gJ2ZhbHNlJztcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHRpZXIgYXNzaWduZWQgdG8gbmV3IG9yZ2FuaXphdGlvbnMuXG4gKiAtIEJpbGxpbmcgRElTQUJMRUQg4oaSIGB1bmxpbWl0ZWRgIChub3RoaW5nIGlzIG1ldGVyZWQsIHNvIGV2ZXJ5dGhpbmcgaXMgdW5jYXBwZWQpLlxuICogLSBCaWxsaW5nIEVOQUJMRUQgIOKGkiBgREVGQVVMVF9RVU9UQV9USUVSYCBpZiBpdCdzIGEgdmFsaWQgc3RhbmRhcmQgdGllciwgZWxzZSBgZGV2ZWxvcGVyYC5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElFUjogUXVvdGFUaWVyID0gIWlzQmlsbGluZ0VuYWJsZWQoKVxuICA/ICd1bmxpbWl0ZWQnXG4gIDogKGlzVmFsaWRUaWVyKHByb2Nlc3MuZW52LkRFRkFVTFRfUVVPVEFfVElFUiA/PyAnJykgJiYgcHJvY2Vzcy5lbnYuREVGQVVMVF9RVU9UQV9USUVSICE9PSAndW5saW1pdGVkJ1xuICAgID8gKHByb2Nlc3MuZW52LkRFRkFVTFRfUVVPVEFfVElFUiBhcyBRdW90YVRpZXIpXG4gICAgOiAnZGV2ZWxvcGVyJyk7XG5cbi8qKiBDaGVjayB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgUXVvdGFUaWVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRUaWVyKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBRdW90YVRpZXIge1xuICAvLyBVc2UgdGhlIGV4cGxpY2l0IHR1cGxlLCBub3QgYHZhbHVlIGluIFFVT1RBX1RJRVJTYDogYGluYCB3YWxrcyB0aGUgcHJvdG90eXBlXG4gIC8vIGNoYWluLCBzbyBpbmhlcml0ZWQgT2JqZWN0IGtleXMgKCd0b1N0cmluZycsICdjb25zdHJ1Y3RvcicsIOKApikgd291bGQgcmV0dXJuXG4gIC8vIHRydWUgYW5kIHRoZW4gYGdldFRpZXJMaW1pdHNgIHdvdWxkIHJlYWQgYC5saW1pdHNgIG9mZiBhIGZ1bmN0aW9uIOKGkiBjcmFzaC5cbiAgLy8gYHRpZXJgIGlzIGF0dGFja2VyLWluZmx1ZW5jZWFibGUgKEpXVCAvIHJlcXVlc3QgYm9keSAvIERFRkFVTFRfUVVPVEFfVElFUiBlbnYpLlxuICByZXR1cm4gKFZBTElEX1RJRVJTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyh2YWx1ZSk7XG59XG5cbi8qKiBHZXQgdGhlIGRlZmF1bHQgbGltaXRzIGZvciBhIGdpdmVuIHRpZXIgKGZhbGxzIGJhY2sgdG8gZGV2ZWxvcGVyKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaWVyTGltaXRzKHRpZXI6IHN0cmluZyk6IFF1b3RhVGllckxpbWl0cyB7XG4gIHJldHVybiBpc1ZhbGlkVGllcih0aWVyKSA/IFFVT1RBX1RJRVJTW3RpZXJdLmxpbWl0czogUVVPVEFfVElFUlMuZGV2ZWxvcGVyLmxpbWl0cztcbn1cbiJdfQ==
package/package.json CHANGED
@@ -87,7 +87,7 @@
87
87
  "access": "public",
88
88
  "registry": "https://registry.npmjs.org/"
89
89
  },
90
- "version": "3.4.101",
90
+ "version": "3.4.102",
91
91
  "bugs": {
92
92
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
93
93
  },