@archont561/qgis-sdk 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -33
- package/dist/bridge.d.ts +2 -205
- package/dist/bridge.js +3 -4
- package/dist/host.d.ts +2 -157
- package/dist/host.js +72 -430
- package/dist/index.d.ts +62 -95
- package/dist/index.js +399 -12
- package/dist/react.d.ts +61 -161
- package/dist/react.js +70 -139
- package/dist/shared/chunk-2hwva3a3.js +14 -0
- package/dist/shared/chunk-3zscfm3y.d.ts +342 -0
- package/dist/shared/chunk-7tgzmz0m.d.ts +252 -0
- package/dist/shared/chunk-8gawbn19.js +433 -0
- package/dist/shared/chunk-a33y575v.d.ts +155 -0
- package/dist/shared/chunk-pdj2fxjb.d.ts +17 -0
- package/dist/shared/chunk-stre69mw.js +777 -0
- package/dist/shared/chunk-t1vpt5yq.js +895 -0
- package/dist/shared/chunk-wtv4vt4q.d.ts +280 -0
- package/dist/svelte.d.ts +75 -0
- package/dist/svelte.js +70 -0
- package/dist/testing.d.ts +58 -30
- package/dist/testing.js +51 -5
- package/dist/vue.d.ts +106 -0
- package/dist/vue.js +91 -0
- package/package.json +21 -3
- package/dist/shared/chunk-0fknax6w.js +0 -207
- package/dist/shared/chunk-a7bjgeve.js +0 -422
package/dist/react.d.ts
CHANGED
|
@@ -1,116 +1,26 @@
|
|
|
1
|
+
import { WireTransport2, BridgeClientOptions2, BridgeClient2 } from "./shared/chunk-wtv4vt4q.js";
|
|
2
|
+
import "./shared/chunk-7tgzmz0m.js";
|
|
3
|
+
import { OperationMap2, StreamMap2, QgisSdkCore2, QgisSdk2 } from "./shared/chunk-a33y575v.js";
|
|
4
|
+
import { Store2, OperationState2, Operation2, StreamTerminalLike2, StreamHandleLike2, StreamHandlersLike2, Stream2, StreamState2, FormState2, FormOptions2, FormStore2, HostQueryState2, HostQueryStore2 } from "./shared/chunk-3zscfm3y.js";
|
|
5
|
+
import { QgisSdkError2 } from "./shared/chunk-pdj2fxjb.js";
|
|
1
6
|
import { ReactElement, ReactNode } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* Base class for expected SDK errors across the bridge boundary.
|
|
4
|
-
*/
|
|
5
|
-
declare class QgisSdkError extends Error {
|
|
6
|
-
readonly code: string;
|
|
7
|
-
constructor(message: string, code?: string);
|
|
8
|
-
}
|
|
9
|
-
/** The kinds of event a stream may carry; only `progress` may be coalesced. */
|
|
10
|
-
type StreamEventKind2 = "data" | "progress" | "state";
|
|
11
|
-
/** Why a subscription stopped. */
|
|
12
|
-
type StreamTerminalKind = "complete" | "error" | "cancelled" | "gap" | "disposed";
|
|
13
|
-
/** One event on a subscription. */
|
|
14
|
-
interface BridgeStreamEvent {
|
|
15
|
-
readonly kind: StreamEventKind2;
|
|
16
|
-
readonly payload: unknown;
|
|
17
|
-
}
|
|
18
|
-
/** The end of a subscription, as the host described it. */
|
|
19
|
-
interface BridgeStreamTerminal {
|
|
20
|
-
readonly kind: StreamTerminalKind;
|
|
21
|
-
readonly message?: string;
|
|
22
|
-
readonly dropped?: number;
|
|
23
|
-
}
|
|
24
|
-
/** The transport a client speaks through; a QWebChannel adapter or a script. */
|
|
25
|
-
interface WireTransport {
|
|
26
|
-
send(message: unknown): void;
|
|
27
|
-
subscribe(listener: (message: unknown) => void): () => void;
|
|
28
|
-
}
|
|
29
|
-
/** Options for {@link BridgeClient}. */
|
|
30
|
-
interface BridgeClientOptions {
|
|
31
|
-
readonly timeoutMs?: number;
|
|
32
|
-
}
|
|
33
|
-
/** Options for one invocation. */
|
|
34
|
-
interface InvokeOptions {
|
|
35
|
-
readonly signal?: AbortSignal;
|
|
36
|
-
}
|
|
37
|
-
/** Callbacks a subscription reports through. */
|
|
38
|
-
interface SubscriptionHandlers {
|
|
39
|
-
readonly onEvent?: (event: BridgeStreamEvent) => void;
|
|
40
|
-
readonly onTerminal?: (terminal: BridgeStreamTerminal) => void;
|
|
41
|
-
}
|
|
42
|
-
/** A live subscription, as the caller holds it. */
|
|
43
|
-
interface BridgeSubscription {
|
|
44
|
-
readonly id: string;
|
|
45
|
-
readonly closed: boolean;
|
|
46
|
-
close(): void;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Correlate invocations with replies over an injected transport.
|
|
50
|
-
*
|
|
51
|
-
* The client never retries: a timeout, an abort and a closed client are three
|
|
52
|
-
* different answers, and each is reported as itself.
|
|
53
|
-
*/
|
|
54
|
-
declare class BridgeClient {
|
|
55
|
-
private readonly transport;
|
|
56
|
-
private readonly timeoutMs;
|
|
57
|
-
private readonly pending;
|
|
58
|
-
private readonly subscriptions;
|
|
59
|
-
private readonly disposals;
|
|
60
|
-
private readonly unsubscribe;
|
|
61
|
-
private counter;
|
|
62
|
-
private closed;
|
|
63
|
-
private unmatched;
|
|
64
|
-
private breaks;
|
|
65
|
-
private lastProtocolError;
|
|
66
|
-
constructor(transport: WireTransport, options?: BridgeClientOptions);
|
|
67
|
-
/** Whether {@link close} has run; a closed client answers nothing. */
|
|
68
|
-
get isClosed(): boolean;
|
|
69
|
-
/** Replies that named no pending call: a late duplicate, or a stray message. */
|
|
70
|
-
get unmatchedReplies(): number;
|
|
71
|
-
/** Number of calls still waiting for a reply. */
|
|
72
|
-
get pendingCalls(): number;
|
|
73
|
-
/**
|
|
74
|
-
* Invoke one operation and settle with its value or with a typed failure.
|
|
75
|
-
*/
|
|
76
|
-
invoke(operation: string, payload?: Readonly<Record<string, unknown>>, options?: InvokeOptions): Promise<unknown>;
|
|
77
|
-
/**
|
|
78
|
-
* Open a subscription and resolve once the host has acknowledged it.
|
|
79
|
-
*
|
|
80
|
-
* Frames are matched to the subscription by id and by sequence; a frame that
|
|
81
|
-
* does not continue the sequence ends the subscription instead of being
|
|
82
|
-
* delivered out of order.
|
|
83
|
-
*/
|
|
84
|
-
subscribe(operation: string, payload?: Readonly<Record<string, unknown>>, handlers?: SubscriptionHandlers, options?: InvokeOptions): Promise<BridgeSubscription>;
|
|
85
|
-
/** Subscriptions still open; a leak check for callers and tests. */
|
|
86
|
-
get activeSubscriptions(): readonly string[];
|
|
87
|
-
/** Frames that did not continue their subscription's sequence. */
|
|
88
|
-
get sequenceBreaks(): number;
|
|
89
|
-
private send;
|
|
90
|
-
/**
|
|
91
|
-
* Refuse further calls, reject what is still pending, and stop listening.
|
|
92
|
-
*/
|
|
93
|
-
close(): void;
|
|
94
|
-
private settle;
|
|
95
|
-
private handle;
|
|
96
|
-
private handleFrame;
|
|
97
|
-
private endSubscription;
|
|
98
|
-
private disposeSubscription;
|
|
99
|
-
/** The last malformed message this client refused, if any. */
|
|
100
|
-
get protocolError(): Error | null;
|
|
101
|
-
}
|
|
102
7
|
/** A hook or provider was used outside the shape it needs. */
|
|
103
|
-
declare class QgisSdkBridgeReactError extends
|
|
8
|
+
declare class QgisSdkBridgeReactError extends QgisSdkError2 {
|
|
104
9
|
constructor(message: string);
|
|
105
10
|
}
|
|
106
|
-
/** Props for {@link BridgeProvider}: exactly one of `client` or `transport`. */
|
|
11
|
+
/** Props for {@link BridgeProvider}: exactly one of `qgis`, `client` or `transport`. */
|
|
107
12
|
interface BridgeProviderProps {
|
|
13
|
+
/**
|
|
14
|
+
* A `QgisSdk` the page built, whatever its schema; the provider shares it
|
|
15
|
+
* and never closes it. `useQgisSdk` hands it back under the page's types.
|
|
16
|
+
*/
|
|
17
|
+
readonly qgis?: QgisSdkCore2<unknown, unknown>;
|
|
108
18
|
/** A client the caller owns; the provider never closes it. */
|
|
109
|
-
readonly client?:
|
|
19
|
+
readonly client?: BridgeClient2;
|
|
110
20
|
/** A transport the provider builds and owns a client for. */
|
|
111
|
-
readonly transport?:
|
|
21
|
+
readonly transport?: WireTransport2;
|
|
112
22
|
/** Options for the owned client; ignored when `client` is given. */
|
|
113
|
-
readonly options?:
|
|
23
|
+
readonly options?: BridgeClientOptions2;
|
|
114
24
|
readonly children?: ReactNode;
|
|
115
25
|
}
|
|
116
26
|
/**
|
|
@@ -126,23 +36,21 @@ interface BridgeProviderProps {
|
|
|
126
36
|
*/
|
|
127
37
|
declare function BridgeProvider(props: BridgeProviderProps): ReactElement;
|
|
128
38
|
/** The client of the nearest {@link BridgeProvider}. */
|
|
129
|
-
declare function useBridgeClient():
|
|
39
|
+
declare function useBridgeClient(): BridgeClient2;
|
|
40
|
+
/**
|
|
41
|
+
* The `QgisSdk` of the nearest {@link BridgeProvider}.
|
|
42
|
+
*
|
|
43
|
+
* The type parameters name the generated `Operations` and `Streams`; they are
|
|
44
|
+
* the caller's claim, the same way the provider's `qgis` prop was the page's.
|
|
45
|
+
*/
|
|
46
|
+
declare function useQgisSdk<
|
|
47
|
+
O = OperationMap2,
|
|
48
|
+
S = StreamMap2
|
|
49
|
+
>(): QgisSdk2<O, S>;
|
|
130
50
|
/**
|
|
131
51
|
* Build a generated operation map once per client: `useOperations(createOperations)`.
|
|
132
52
|
*/
|
|
133
|
-
declare function useOperations<T>(create: (client:
|
|
134
|
-
/** Where one invocation stands. */
|
|
135
|
-
type OperationState<R> = {
|
|
136
|
-
readonly status: "idle";
|
|
137
|
-
} | {
|
|
138
|
-
readonly status: "pending";
|
|
139
|
-
} | {
|
|
140
|
-
readonly status: "ok";
|
|
141
|
-
readonly value: R;
|
|
142
|
-
} | {
|
|
143
|
-
readonly status: "error";
|
|
144
|
-
readonly error: Error;
|
|
145
|
-
};
|
|
53
|
+
declare function useOperations<T>(create: (client: BridgeClient2) => T): T;
|
|
146
54
|
/** Controls beyond running: abort what is in flight, or forget the outcome. */
|
|
147
55
|
interface OperationControls {
|
|
148
56
|
/** Abort the in-flight call locally; the host may still run it. */
|
|
@@ -150,13 +58,8 @@ interface OperationControls {
|
|
|
150
58
|
/** Back to `idle`, aborting anything in flight. */
|
|
151
59
|
reset(): void;
|
|
152
60
|
}
|
|
153
|
-
/**
|
|
154
|
-
|
|
155
|
-
I,
|
|
156
|
-
R
|
|
157
|
-
> = (input: I, options?: {
|
|
158
|
-
readonly signal?: AbortSignal;
|
|
159
|
-
}) => Promise<R>;
|
|
61
|
+
/** Read any store from a component; the snapshot is the render's value. */
|
|
62
|
+
declare function useStore<T>(store: Store2<T>): T;
|
|
160
63
|
/**
|
|
161
64
|
* Run a generated operation from a component.
|
|
162
65
|
*
|
|
@@ -168,39 +71,7 @@ type Operation<
|
|
|
168
71
|
declare function useOperation<
|
|
169
72
|
I,
|
|
170
73
|
R
|
|
171
|
-
>(operation:
|
|
172
|
-
/** How a stream ended, as the generated module reports it. */
|
|
173
|
-
interface StreamTerminalLike {
|
|
174
|
-
readonly kind: string;
|
|
175
|
-
readonly message?: string;
|
|
176
|
-
readonly dropped?: number;
|
|
177
|
-
}
|
|
178
|
-
/** The handle a generated stream member resolves with. */
|
|
179
|
-
interface StreamHandleLike {
|
|
180
|
-
readonly id: string;
|
|
181
|
-
readonly closed: boolean;
|
|
182
|
-
close(): void;
|
|
183
|
-
}
|
|
184
|
-
/** Handlers for a stream, as a generated module types them. */
|
|
185
|
-
interface StreamHandlersLike<E> {
|
|
186
|
-
readonly onEvent?: (event: E) => void;
|
|
187
|
-
readonly onTerminal?: (terminal: StreamTerminalLike) => void;
|
|
188
|
-
}
|
|
189
|
-
/** A stream member of a generated map. */
|
|
190
|
-
type Stream<
|
|
191
|
-
I,
|
|
192
|
-
E
|
|
193
|
-
> = (input: I, handlers: StreamHandlersLike<E>, options?: {
|
|
194
|
-
readonly signal?: AbortSignal;
|
|
195
|
-
}) => Promise<StreamHandleLike>;
|
|
196
|
-
/** Where one subscription stands. */
|
|
197
|
-
interface StreamState<E> {
|
|
198
|
-
/** `idle` with a null input, `failed` when the host refused to open it. */
|
|
199
|
-
readonly status: "idle" | "opening" | "open" | "ended" | "failed";
|
|
200
|
-
readonly lastEvent: E | null;
|
|
201
|
-
readonly terminal: StreamTerminalLike | null;
|
|
202
|
-
readonly error: Error | null;
|
|
203
|
-
}
|
|
74
|
+
>(operation: Operation2<I, R>): readonly [OperationState2<R>, (input: I) => Promise<R | undefined>, OperationControls];
|
|
204
75
|
/**
|
|
205
76
|
* Hold a generated stream open while a component is mounted.
|
|
206
77
|
*
|
|
@@ -213,5 +84,34 @@ interface StreamState<E> {
|
|
|
213
84
|
declare function useStream<
|
|
214
85
|
I,
|
|
215
86
|
E
|
|
216
|
-
>(open:
|
|
217
|
-
|
|
87
|
+
>(open: Stream2<I, E>, input: I | null, handlers?: StreamHandlersLike2<E>): StreamState2<E>;
|
|
88
|
+
/**
|
|
89
|
+
* The form of one declared action: `qgis.<id>` with its fields, values,
|
|
90
|
+
* issues and submission. The store is built once per `qgis` and `id` - the
|
|
91
|
+
* options are read on the first render only, like `useState`'s initial value
|
|
92
|
+
* - and unmounting aborts a submission in flight.
|
|
93
|
+
*/
|
|
94
|
+
declare function useForm<
|
|
95
|
+
O,
|
|
96
|
+
K extends keyof O & string
|
|
97
|
+
>(qgis: QgisSdkCore2<O, unknown>, id: K, options?: FormOptions2): readonly [FormState2<ResultOf<O, K>>, FormStore2<RequestOf<O, K> & object, ResultOf<O, K>>];
|
|
98
|
+
/**
|
|
99
|
+
* Read a host query store: `useHostQuery(layersQuery(qgis))` for a layer
|
|
100
|
+
* picker. `refresh` runs once on mount when `auto` is not `false`.
|
|
101
|
+
*/
|
|
102
|
+
declare function useHostQuery<T>(store: HostQueryStore2<T>, options?: {
|
|
103
|
+
readonly auto?: boolean;
|
|
104
|
+
}): readonly [HostQueryState2<T>, HostQueryStore2<T>];
|
|
105
|
+
type RequestOf<
|
|
106
|
+
O,
|
|
107
|
+
K extends keyof O
|
|
108
|
+
> = O[K] extends {
|
|
109
|
+
readonly request: infer Req;
|
|
110
|
+
} ? Req : never;
|
|
111
|
+
type ResultOf<
|
|
112
|
+
O,
|
|
113
|
+
K extends keyof O
|
|
114
|
+
> = O[K] extends {
|
|
115
|
+
readonly result: infer Res;
|
|
116
|
+
} ? Res : never;
|
|
117
|
+
export { BridgeProvider, BridgeProviderProps, Operation2 as Operation, OperationControls, OperationState2 as OperationState, QgisSdkBridgeReactError, Stream2 as Stream, StreamHandleLike2 as StreamHandleLike, StreamHandlersLike2 as StreamHandlersLike, StreamState2 as StreamState, StreamTerminalLike2 as StreamTerminalLike, useBridgeClient, useForm, useHostQuery, useOperation, useOperations, useQgisSdk, useStore, useStream };
|
package/dist/react.js
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
|
-
QgisSdkError2,
|
|
3
|
-
isPlainRecord2
|
|
4
|
-
} from "./shared/chunk-0fknax6w.js";
|
|
5
|
-
import {
|
|
6
|
-
QgisSdkBridgeAbortedError2,
|
|
7
2
|
BridgeClient2
|
|
8
|
-
} from "./shared/chunk-
|
|
3
|
+
} from "./shared/chunk-8gawbn19.js";
|
|
4
|
+
import {
|
|
5
|
+
OperationStore2,
|
|
6
|
+
StreamStore2,
|
|
7
|
+
FormStore2
|
|
8
|
+
} from "./shared/chunk-t1vpt5yq.js";
|
|
9
|
+
import {
|
|
10
|
+
QgisSdkError2
|
|
11
|
+
} from "./shared/chunk-2hwva3a3.js";
|
|
9
12
|
|
|
10
13
|
// src/react.ts
|
|
11
14
|
import {
|
|
12
15
|
createContext,
|
|
13
16
|
createElement,
|
|
14
|
-
useCallback,
|
|
15
17
|
useContext,
|
|
16
18
|
useEffect,
|
|
17
19
|
useMemo,
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
useState,
|
|
21
|
+
useSyncExternalStore
|
|
20
22
|
} from "react";
|
|
21
23
|
class QgisSdkBridgeReactError extends QgisSdkError2 {
|
|
22
24
|
constructor(message) {
|
|
@@ -25,9 +27,10 @@ class QgisSdkBridgeReactError extends QgisSdkError2 {
|
|
|
25
27
|
}
|
|
26
28
|
var ClientContext = createContext(null);
|
|
27
29
|
function BridgeProvider(props) {
|
|
28
|
-
const { client, transport, options, children } = props;
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
const { qgis, client, transport, options, children } = props;
|
|
31
|
+
const given = [qgis, client, transport].filter((source) => source !== undefined).length;
|
|
32
|
+
if (given !== 1) {
|
|
33
|
+
throw new QgisSdkBridgeReactError("BridgeProvider needs exactly one of qgis, client or transport");
|
|
31
34
|
}
|
|
32
35
|
const timeoutMs = options?.timeoutMs;
|
|
33
36
|
const [owned, setOwned] = useState(null);
|
|
@@ -42,155 +45,83 @@ function BridgeProvider(props) {
|
|
|
42
45
|
setOwned((current) => current === live ? null : current);
|
|
43
46
|
};
|
|
44
47
|
}, [transport, timeoutMs]);
|
|
45
|
-
const value =
|
|
48
|
+
const value = useMemo(() => {
|
|
49
|
+
if (qgis !== undefined) {
|
|
50
|
+
return { client: qgis.client, qgis };
|
|
51
|
+
}
|
|
52
|
+
const live = client ?? owned;
|
|
53
|
+
return live === null ? null : { client: live, qgis: null };
|
|
54
|
+
}, [qgis, client, owned]);
|
|
46
55
|
return createElement(ClientContext.Provider, { value }, value === null ? null : children);
|
|
47
56
|
}
|
|
57
|
+
function useShared(hook) {
|
|
58
|
+
const shared = useContext(ClientContext);
|
|
59
|
+
if (shared === null) {
|
|
60
|
+
throw new QgisSdkBridgeReactError(`${hook} needs a BridgeProvider above it`);
|
|
61
|
+
}
|
|
62
|
+
return shared;
|
|
63
|
+
}
|
|
48
64
|
function useBridgeClient() {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
65
|
+
return useShared("useBridgeClient").client;
|
|
66
|
+
}
|
|
67
|
+
function useQgisSdk() {
|
|
68
|
+
const shared = useShared("useQgisSdk");
|
|
69
|
+
if (shared.qgis === null) {
|
|
70
|
+
throw new QgisSdkBridgeReactError("useQgisSdk needs a BridgeProvider given a qgis instance");
|
|
52
71
|
}
|
|
53
|
-
return
|
|
72
|
+
return shared.qgis;
|
|
54
73
|
}
|
|
55
74
|
function useOperations(create) {
|
|
56
75
|
const client = useBridgeClient();
|
|
57
76
|
return useMemo(() => create(client), [create, client]);
|
|
58
77
|
}
|
|
59
|
-
|
|
60
|
-
|
|
78
|
+
function useStore(store) {
|
|
79
|
+
return useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);
|
|
80
|
+
}
|
|
61
81
|
function useOperation(operation) {
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
82
|
+
const store = useMemo(() => new OperationStore2(operation), [operation]);
|
|
83
|
+
useEffect(() => () => store.abort(), [store]);
|
|
84
|
+
const state = useStore(store);
|
|
85
|
+
const controls = useMemo(() => ({ abort: store.abort, reset: store.reset }), [store]);
|
|
86
|
+
return [state, store.run, controls];
|
|
87
|
+
}
|
|
88
|
+
function useStream(open, input, handlers = {}) {
|
|
89
|
+
const store = useMemo(() => new StreamStore2(open), [open]);
|
|
90
|
+
store.setHandlers(handlers);
|
|
71
91
|
useEffect(() => {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
};
|
|
77
|
-
}, [abort]);
|
|
78
|
-
const run = useCallback(async (input) => {
|
|
79
|
-
abort();
|
|
80
|
-
const mine = generation.current;
|
|
81
|
-
const signal = new AbortController;
|
|
82
|
-
controller.current = signal;
|
|
83
|
-
setState(PENDING);
|
|
84
|
-
try {
|
|
85
|
-
const value = await operation(input, { signal: signal.signal });
|
|
86
|
-
if (generation.current !== mine || !mounted.current) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
setState({ status: "ok", value });
|
|
90
|
-
return value;
|
|
91
|
-
} catch (error) {
|
|
92
|
-
if (generation.current !== mine || !mounted.current) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
if (error instanceof QgisSdkBridgeAbortedError2) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
setState({
|
|
99
|
-
status: "error",
|
|
100
|
-
error: error instanceof Error ? error : new Error(String(error))
|
|
101
|
-
});
|
|
102
|
-
return;
|
|
103
|
-
} finally {
|
|
104
|
-
if (controller.current === signal) {
|
|
105
|
-
controller.current = null;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}, [operation, abort]);
|
|
109
|
-
const reset = useCallback(() => {
|
|
110
|
-
abort();
|
|
111
|
-
setState(IDLE);
|
|
112
|
-
}, [abort]);
|
|
113
|
-
const controls = useMemo(() => ({ abort, reset }), [abort, reset]);
|
|
114
|
-
return [state, run, controls];
|
|
92
|
+
store.setInput(input);
|
|
93
|
+
});
|
|
94
|
+
useEffect(() => () => store.close(), [store]);
|
|
95
|
+
return useStore(store);
|
|
115
96
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
});
|
|
122
|
-
function stableKey(value) {
|
|
123
|
-
return JSON.stringify(value, (_key, item) => isPlainRecord2(item) ? Object.fromEntries(Object.entries(item).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)) : item);
|
|
97
|
+
function useForm(qgis, id, options) {
|
|
98
|
+
const [first] = useState(() => options ?? {});
|
|
99
|
+
const store = useMemo(() => new FormStore2(qgis, id, first), [qgis, id, first]);
|
|
100
|
+
useEffect(() => () => store.abort(), [store]);
|
|
101
|
+
return [useStore(store), store];
|
|
124
102
|
}
|
|
125
|
-
function
|
|
126
|
-
const
|
|
127
|
-
const latest = useRef(handlers);
|
|
128
|
-
latest.current = handlers;
|
|
129
|
-
const key = input === null ? null : stableKey(input);
|
|
130
|
-
const inputRef = useRef(input);
|
|
131
|
-
inputRef.current = input;
|
|
103
|
+
function useHostQuery(store, options = {}) {
|
|
104
|
+
const auto = options.auto !== false;
|
|
132
105
|
useEffect(() => {
|
|
133
|
-
if (
|
|
134
|
-
|
|
135
|
-
return;
|
|
106
|
+
if (auto) {
|
|
107
|
+
store.refresh();
|
|
136
108
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
setState({
|
|
141
|
-
status: "opening",
|
|
142
|
-
lastEvent: null,
|
|
143
|
-
terminal: null,
|
|
144
|
-
error: null
|
|
145
|
-
});
|
|
146
|
-
open(current, {
|
|
147
|
-
onEvent: (event) => {
|
|
148
|
-
if (cancelled) {
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
latest.current.onEvent?.(event);
|
|
152
|
-
setState((previous) => ({ ...previous, lastEvent: event }));
|
|
153
|
-
},
|
|
154
|
-
onTerminal: (terminal) => {
|
|
155
|
-
if (cancelled) {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
latest.current.onTerminal?.(terminal);
|
|
159
|
-
setState((previous) => ({ ...previous, status: "ended", terminal }));
|
|
160
|
-
}
|
|
161
|
-
}).then((opened) => {
|
|
162
|
-
if (cancelled) {
|
|
163
|
-
opened.close();
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
handle = opened;
|
|
167
|
-
setState((previous) => previous.status === "ended" ? previous : { ...previous, status: "open" });
|
|
168
|
-
}, (error) => {
|
|
169
|
-
if (cancelled) {
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
setState({
|
|
173
|
-
status: "failed",
|
|
174
|
-
lastEvent: null,
|
|
175
|
-
terminal: null,
|
|
176
|
-
error: error instanceof Error ? error : new Error(String(error))
|
|
177
|
-
});
|
|
178
|
-
});
|
|
179
|
-
return () => {
|
|
180
|
-
cancelled = true;
|
|
181
|
-
handle?.close();
|
|
182
|
-
};
|
|
183
|
-
}, [open, key]);
|
|
184
|
-
return state;
|
|
109
|
+
return () => store.abort();
|
|
110
|
+
}, [store, auto]);
|
|
111
|
+
return [useStore(store), store];
|
|
185
112
|
}
|
|
186
113
|
export {
|
|
187
114
|
BridgeProvider,
|
|
188
115
|
QgisSdkBridgeReactError,
|
|
189
116
|
useBridgeClient,
|
|
117
|
+
useForm,
|
|
118
|
+
useHostQuery,
|
|
190
119
|
useOperation,
|
|
191
120
|
useOperations,
|
|
121
|
+
useQgisSdk,
|
|
122
|
+
useStore,
|
|
192
123
|
useStream
|
|
193
124
|
};
|
|
194
125
|
|
|
195
|
-
//# debugId=
|
|
196
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL3JlYWN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgIi8qKlxuICogVGhpbiBSZWFjdCBiaW5kaW5ncyBvdmVyIHRoZSBicmlkZ2UgY2xpZW50IChUQVNLLTE4LCBkZWNpc2lvbi0xOCkuXG4gKlxuICogVGhpcyBlbnRyeSBwb2ludCBpcyBvcHRpb25hbCBhbmQgaXMgdGhlIG9ubHkgb25lIHRoYXQgaW1wb3J0cyBSZWFjdC4gSXQgYWRkc1xuICogbm8gc2Vjb25kIGNsaWVudDogYSBjb21wb25lbnQgcmVhY2hlcyB0aGUgc2FtZSBgQnJpZGdlQ2xpZW50YCBhIHZhbmlsbGEgcGFnZVxuICogd291bGQgYnVpbGQsIHRocm91Z2ggYSBwcm92aWRlciB0aGF0IGVpdGhlciBvd25zIG9uZSAoYW5kIGNsb3NlcyBpdCBvblxuICogdW5tb3VudCkgb3IgaXMgaGFuZGVkIG9uZSAoYW5kIGxlYXZlcyBpdCBhbG9uZSkuIFRoZSBob29rcyB0YWtlIHRoZVxuICogZnVuY3Rpb25zIGEgZ2VuZXJhdGVkIG1vZHVsZSBhbHJlYWR5IGV4cG9ydHMgLSBgb3BlcmF0aW9ucy5zaXRlcy5zdW1tYXJ5YCxcbiAqIGBvcGVyYXRpb25zLnNpdGVzLndhdGNoYCAtIHNvIHRoZSB0eXBlZCBjb250cmFjdCBpcyB0aGUgZ2VuZXJhdGVkIG9uZSwgbm90IGFcbiAqIFJlYWN0IGNvcHkgb2YgaXQuXG4gKlxuICogV2hhdCB0aGUgaG9va3MgYWRkIGlzIGxpZmV0aW1lOiBhIGNhbGwgYWJvcnRlZCB3aGVuIGl0cyBjb21wb25lbnQgdW5tb3VudHMsXG4gKiBhIHN0YWxlIHJlcGx5IGlnbm9yZWQsIGEgc3RyZWFtIGNsb3NlZCBvbiB1bm1vdW50IG9yIHdoZW4gaXRzIGlucHV0IGNoYW5nZXMsXG4gKiBhbmQgYSBzaW11bGF0ZWQgU3RyaWN0TW9kZSByZW1vdW50IHRoYXQgbGVhdmVzIGV4YWN0bHkgb25lIG9mIGVhY2guXG4gKi9cblxuaW1wb3J0IHtcblx0Y3JlYXRlQ29udGV4dCxcblx0Y3JlYXRlRWxlbWVudCxcblx0dHlwZSBSZWFjdEVsZW1lbnQsXG5cdHR5cGUgUmVhY3ROb2RlLFxuXHR1c2VDYWxsYmFjayxcblx0dXNlQ29udGV4dCxcblx0dXNlRWZmZWN0LFxuXHR1c2VNZW1vLFxuXHR1c2VSZWYsXG5cdHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG5cdEJyaWRnZUNsaWVudCxcblx0dHlwZSBCcmlkZ2VDbGllbnRPcHRpb25zLFxuXHRRZ2lzU2RrQnJpZGdlQWJvcnRlZEVycm9yLFxuXHR0eXBlIFdpcmVUcmFuc3BvcnQsXG59IGZyb20gXCIuL2JyaWRnZVwiO1xuaW1wb3J0IHsgaXNQbGFpblJlY29yZCwgUWdpc1Nka0Vycm9yIH0gZnJvbSBcIi4vaW5kZXhcIjtcblxuLyoqIEEgaG9vayBvciBwcm92aWRlciB3YXMgdXNlZCBvdXRzaWRlIHRoZSBzaGFwZSBpdCBuZWVkcy4gKi9cbmV4cG9ydCBjbGFzcyBRZ2lzU2RrQnJpZGdlUmVhY3RFcnJvciBleHRlbmRzIFFnaXNTZGtFcnJvciB7XG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcblx0XHRzdXBlcihtZXNzYWdlLCBcInJlYWN0X2JpbmRpbmdcIik7XG5cdH1cbn1cblxuY29uc3QgQ2xpZW50Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8QnJpZGdlQ2xpZW50IHwgbnVsbD4obnVsbCk7XG5cbi8qKiBQcm9wcyBmb3Ige0BsaW5rIEJyaWRnZVByb3ZpZGVyfTogZXhhY3RseSBvbmUgb2YgYGNsaWVudGAgb3IgYHRyYW5zcG9ydGAuICovXG5leHBvcnQgaW50ZXJmYWNlIEJyaWRnZVByb3ZpZGVyUHJvcHMge1xuXHQvKiogQSBjbGllbnQgdGhlIGNhbGxlciBvd25zOyB0aGUgcHJvdmlkZXIgbmV2ZXIgY2xvc2VzIGl0LiAqL1xuXHRyZWFkb25seSBjbGllbnQ/OiBCcmlkZ2VDbGllbnQ7XG5cdC8qKiBBIHRyYW5zcG9ydCB0aGUgcHJvdmlkZXIgYnVpbGRzIGFuZCBvd25zIGEgY2xpZW50IGZvci4gKi9cblx0cmVhZG9ubHkgdHJhbnNwb3J0PzogV2lyZVRyYW5zcG9ydDtcblx0LyoqIE9wdGlvbnMgZm9yIHRoZSBvd25lZCBjbGllbnQ7IGlnbm9yZWQgd2hlbiBgY2xpZW50YCBpcyBnaXZlbi4gKi9cblx0cmVhZG9ubHkgb3B0aW9ucz86IEJyaWRnZUNsaWVudE9wdGlvbnM7XG5cdHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3ROb2RlO1xufVxuXG4vKipcbiAqIFNoYXJlIG9uZSBjbGllbnQgd2l0aCBhIHN1YnRyZWUuXG4gKlxuICogQW4gb3duZWQgY2xpZW50IGlzIGNyZWF0ZWQgaW4gYW4gZWZmZWN0LCBuZXZlciBkdXJpbmcgcmVuZGVyLCBiZWNhdXNlXG4gKiBTdHJpY3RNb2RlIHJlbmRlcnMgdHdpY2UgYW5kIGEgY2xpZW50IG1hZGUgaW4gcmVuZGVyIHdvdWxkIGxlYXZlIGEgc2Vjb25kXG4gKiBsaXN0ZW5lciBvbiB0aGUgdHJhbnNwb3J0LiBVbnRpbCB0aGF0IGVmZmVjdCBoYXMgcnVuIHRoZSBzdWJ0cmVlIGlzIG5vdFxuICogcmVuZGVyZWQsIHdoaWNoIGlzIG9uZSB0aWNrLiBTdHJpY3RNb2RlJ3Mgc2ltdWxhdGVkIHVubW91bnQgY2xvc2VzIHRoZVxuICogb3duZWQgY2xpZW50IGFuZCB0aGUgZWZmZWN0IHRoYXQgZm9sbG93cyBtYWtlcyBhIG5ldyBvbmUsIHNvIHRoZSBzdWJ0cmVlXG4gKiBuZXZlciBob2xkcyBhIGRlYWQgY2xpZW50LiBUaGUgdHJhbnNwb3J0IG11c3QgYmUgc3RhYmxlIGFjcm9zcyByZW5kZXJzOyB0b1xuICogc3dhcCBpdCwgY2hhbmdlIHRoZSBwcm92aWRlcidzIGBrZXlgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gQnJpZGdlUHJvdmlkZXIocHJvcHM6IEJyaWRnZVByb3ZpZGVyUHJvcHMpOiBSZWFjdEVsZW1lbnQge1xuXHRjb25zdCB7IGNsaWVudCwgdHJhbnNwb3J0LCBvcHRpb25zLCBjaGlsZHJlbiB9ID0gcHJvcHM7XG5cdGlmICgoY2xpZW50ID09PSB1bmRlZmluZWQpID09PSAodHJhbnNwb3J0ID09PSB1bmRlZmluZWQpKSB7XG5cdFx0dGhyb3cgbmV3IFFnaXNTZGtCcmlkZ2VSZWFjdEVycm9yKFxuXHRcdFx0XCJCcmlkZ2VQcm92aWRlciBuZWVkcyBleGFjdGx5IG9uZSBvZiBjbGllbnQgb3IgdHJhbnNwb3J0XCIsXG5cdFx0KTtcblx0fVxuXHRjb25zdCB0aW1lb3V0TXMgPSBvcHRpb25zPy50aW1lb3V0TXM7XG5cdGNvbnN0IFtvd25lZCwgc2V0T3duZWRdID0gdXNlU3RhdGU8QnJpZGdlQ2xpZW50IHwgbnVsbD4obnVsbCk7XG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKHRyYW5zcG9ydCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRjb25zdCBsaXZlID0gbmV3IEJyaWRnZUNsaWVudChcblx0XHRcdHRyYW5zcG9ydCxcblx0XHRcdHRpbWVvdXRNcyA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHRpbWVvdXRNcyB9LFxuXHRcdCk7XG5cdFx0c2V0T3duZWQobGl2ZSk7XG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGxpdmUuY2xvc2UoKTtcblx0XHRcdHNldE93bmVkKChjdXJyZW50KSA9PiAoY3VycmVudCA9PT0gbGl2ZSA/IG51bGwgOiBjdXJyZW50KSk7XG5cdFx0fTtcblx0fSwgW3RyYW5zcG9ydCwgdGltZW91dE1zXSk7XG5cdGNvbnN0IHZhbHVlID0gY2xpZW50ID8/IG93bmVkO1xuXHRyZXR1cm4gY3JlYXRlRWxlbWVudChcblx0XHRDbGllbnRDb250ZXh0LlByb3ZpZGVyLFxuXHRcdHsgdmFsdWUgfSxcblx0XHR2YWx1ZSA9PT0gbnVsbCA/IG51bGwgOiBjaGlsZHJlbixcblx0KTtcbn1cblxuLyoqIFRoZSBjbGllbnQgb2YgdGhlIG5lYXJlc3Qge0BsaW5rIEJyaWRnZVByb3ZpZGVyfS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VCcmlkZ2VDbGllbnQoKTogQnJpZGdlQ2xpZW50IHtcblx0Y29uc3QgY2xpZW50ID0gdXNlQ29udGV4dChDbGllbnRDb250ZXh0KTtcblx0aWYgKGNsaWVudCA9PT0gbnVsbCkge1xuXHRcdHRocm93IG5ldyBRZ2lzU2RrQnJpZGdlUmVhY3RFcnJvcihcblx0XHRcdFwidXNlQnJpZGdlQ2xpZW50IG5lZWRzIGEgQnJpZGdlUHJvdmlkZXIgYWJvdmUgaXRcIixcblx0XHQpO1xuXHR9XG5cdHJldHVybiBjbGllbnQ7XG59XG5cbi8qKlxuICogQnVpbGQgYSBnZW5lcmF0ZWQgb3BlcmF0aW9uIG1hcCBvbmNlIHBlciBjbGllbnQ6IGB1c2VPcGVyYXRpb25zKGNyZWF0ZU9wZXJhdGlvbnMpYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU9wZXJhdGlvbnM8VD4oY3JlYXRlOiAoY2xpZW50OiBCcmlkZ2VDbGllbnQpID0+IFQpOiBUIHtcblx0Y29uc3QgY2xpZW50ID0gdXNlQnJpZGdlQ2xpZW50KCk7XG5cdHJldHVybiB1c2VNZW1vKCgpID0+IGNyZWF0ZShjbGllbnQpLCBbY3JlYXRlLCBjbGllbnRdKTtcbn1cblxuLyoqIFdoZXJlIG9uZSBpbnZvY2F0aW9uIHN0YW5kcy4gKi9cbmV4cG9ydCB0eXBlIE9wZXJhdGlvblN0YXRlPFI+ID1cblx0fCB7IHJlYWRvbmx5IHN0YXR1czogXCJpZGxlXCIgfVxuXHR8IHsgcmVhZG9ubHkgc3RhdHVzOiBcInBlbmRpbmdcIiB9XG5cdHwgeyByZWFkb25seSBzdGF0dXM6IFwib2tcIjsgcmVhZG9ubHkgdmFsdWU6IFIgfVxuXHR8IHsgcmVhZG9ubHkgc3RhdHVzOiBcImVycm9yXCI7IHJlYWRvbmx5IGVycm9yOiBFcnJvciB9O1xuXG4vKiogQ29udHJvbHMgYmV5b25kIHJ1bm5pbmc6IGFib3J0IHdoYXQgaXMgaW4gZmxpZ2h0LCBvciBmb3JnZXQgdGhlIG91dGNvbWUuICovXG5leHBvcnQgaW50ZXJmYWNlIE9wZXJhdGlvbkNvbnRyb2xzIHtcblx0LyoqIEFib3J0IHRoZSBpbi1mbGlnaHQgY2FsbCBsb2NhbGx5OyB0aGUgaG9zdCBtYXkgc3RpbGwgcnVuIGl0LiAqL1xuXHRhYm9ydCgpOiB2b2lkO1xuXHQvKiogQmFjayB0byBgaWRsZWAsIGFib3J0aW5nIGFueXRoaW5nIGluIGZsaWdodC4gKi9cblx0cmVzZXQoKTogdm9pZDtcbn1cblxuLyoqIEFuIG9wZXJhdGlvbiBtZW1iZXIgb2YgYSBnZW5lcmF0ZWQgbWFwOiBpbnB1dCwgb3B0aW9uYWwgc2lnbmFsLCBwcm9taXNlLiAqL1xuZXhwb3J0IHR5cGUgT3BlcmF0aW9uPEksIFI+ID0gKFxuXHRpbnB1dDogSSxcblx0b3B0aW9ucz86IHsgcmVhZG9ubHkgc2lnbmFsPzogQWJvcnRTaWduYWwgfSxcbikgPT4gUHJvbWlzZTxSPjtcblxuY29uc3QgSURMRTogT3BlcmF0aW9uU3RhdGU8bmV2ZXI+ID0gT2JqZWN0LmZyZWV6ZSh7IHN0YXR1czogXCJpZGxlXCIgfSk7XG5jb25zdCBQRU5ESU5HOiBPcGVyYXRpb25TdGF0ZTxuZXZlcj4gPSBPYmplY3QuZnJlZXplKHsgc3RhdHVzOiBcInBlbmRpbmdcIiB9KTtcblxuLyoqXG4gKiBSdW4gYSBnZW5lcmF0ZWQgb3BlcmF0aW9uIGZyb20gYSBjb21wb25lbnQuXG4gKlxuICogYHJ1bmAgcmVzb2x2ZXMgd2l0aCB0aGUgdmFsdWUsIG9yIHdpdGggYHVuZGVmaW5lZGAgd2hlbiB0aGUgY2FsbCBmYWlsZWQsIHdhc1xuICogYWJvcnRlZCBvciB3YXMgc3VwZXJzZWRlZCBieSBhIGxhdGVyIHJ1biAtIHRoZSBzdGF0ZSBjYXJyaWVzIHRoZSBlcnJvciwgc29cbiAqIHRoZSBwcm9taXNlIG5ldmVyIHJlamVjdHMgaW50byBhbiBldmVudCBoYW5kbGVyLiBPbmx5IHRoZSBsYXRlc3QgcnVuIGNhblxuICogY2hhbmdlIHRoZSBzdGF0ZTsgdW5tb3VudGluZyBhYm9ydHMgd2hhdGV2ZXIgaXMgaW4gZmxpZ2h0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlT3BlcmF0aW9uPEksIFI+KFxuXHRvcGVyYXRpb246IE9wZXJhdGlvbjxJLCBSPixcbik6IHJlYWRvbmx5IFtcblx0T3BlcmF0aW9uU3RhdGU8Uj4sXG5cdChpbnB1dDogSSkgPT4gUHJvbWlzZTxSIHwgdW5kZWZpbmVkPixcblx0T3BlcmF0aW9uQ29udHJvbHMsXG5dIHtcblx0Y29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZTxPcGVyYXRpb25TdGF0ZTxSPj4oSURMRSk7XG5cdGNvbnN0IGdlbmVyYXRpb24gPSB1c2VSZWYoMCk7XG5cdGNvbnN0IGNvbnRyb2xsZXIgPSB1c2VSZWY8QWJvcnRDb250cm9sbGVyIHwgbnVsbD4obnVsbCk7XG5cdGNvbnN0IG1vdW50ZWQgPSB1c2VSZWYodHJ1ZSk7XG5cblx0Y29uc3QgYWJvcnQgPSB1c2VDYWxsYmFjaygoKTogdm9pZCA9PiB7XG5cdFx0Z2VuZXJhdGlvbi5jdXJyZW50ICs9IDE7XG5cdFx0Y29udHJvbGxlci5jdXJyZW50Py5hYm9ydCgpO1xuXHRcdGNvbnRyb2xsZXIuY3VycmVudCA9IG51bGw7XG5cdH0sIFtdKTtcblxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdG1vdW50ZWQuY3VycmVudCA9IHRydWU7XG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdG1vdW50ZWQuY3VycmVudCA9IGZhbHNlO1xuXHRcdFx0YWJvcnQoKTtcblx0XHR9O1xuXHR9LCBbYWJvcnRdKTtcblxuXHRjb25zdCBydW4gPSB1c2VDYWxsYmFjayhcblx0XHRhc3luYyAoaW5wdXQ6IEkpOiBQcm9taXNlPFIgfCB1bmRlZmluZWQ+ID0+IHtcblx0XHRcdGFib3J0KCk7XG5cdFx0XHRjb25zdCBtaW5lID0gZ2VuZXJhdGlvbi5jdXJyZW50O1xuXHRcdFx0Y29uc3Qgc2lnbmFsID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXHRcdFx0Y29udHJvbGxlci5jdXJyZW50ID0gc2lnbmFsO1xuXHRcdFx0c2V0U3RhdGUoUEVORElORyk7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb25zdCB2YWx1ZSA9IGF3YWl0IG9wZXJhdGlvbihpbnB1dCwgeyBzaWduYWw6IHNpZ25hbC5zaWduYWwgfSk7XG5cdFx0XHRcdGlmIChnZW5lcmF0aW9uLmN1cnJlbnQgIT09IG1pbmUgfHwgIW1vdW50ZWQuY3VycmVudCkge1xuXHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0c2V0U3RhdGUoeyBzdGF0dXM6IFwib2tcIiwgdmFsdWUgfSk7XG5cdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdGlmIChnZW5lcmF0aW9uLmN1cnJlbnQgIT09IG1pbmUgfHwgIW1vdW50ZWQuY3VycmVudCkge1xuXHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGVycm9yIGluc3RhbmNlb2YgUWdpc1Nka0JyaWRnZUFib3J0ZWRFcnJvcikge1xuXHRcdFx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0c2V0U3RhdGUoe1xuXHRcdFx0XHRcdHN0YXR1czogXCJlcnJvclwiLFxuXHRcdFx0XHRcdGVycm9yOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSksXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0aWYgKGNvbnRyb2xsZXIuY3VycmVudCA9PT0gc2lnbmFsKSB7XG5cdFx0XHRcdFx0Y29udHJvbGxlci5jdXJyZW50ID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0W29wZXJhdGlvbiwgYWJvcnRdLFxuXHQpO1xuXG5cdGNvbnN0IHJlc2V0ID0gdXNlQ2FsbGJhY2soKCk6IHZvaWQgPT4ge1xuXHRcdGFib3J0KCk7XG5cdFx0c2V0U3RhdGUoSURMRSk7XG5cdH0sIFthYm9ydF0pO1xuXG5cdGNvbnN0IGNvbnRyb2xzID0gdXNlTWVtbygoKSA9PiAoeyBhYm9ydCwgcmVzZXQgfSksIFthYm9ydCwgcmVzZXRdKTtcblx0cmV0dXJuIFtzdGF0ZSwgcnVuLCBjb250cm9sc107XG59XG5cbi8qKiBIb3cgYSBzdHJlYW0gZW5kZWQsIGFzIHRoZSBnZW5lcmF0ZWQgbW9kdWxlIHJlcG9ydHMgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbVRlcm1pbmFsTGlrZSB7XG5cdHJlYWRvbmx5IGtpbmQ6IHN0cmluZztcblx0cmVhZG9ubHkgbWVzc2FnZT86IHN0cmluZztcblx0cmVhZG9ubHkgZHJvcHBlZD86IG51bWJlcjtcbn1cblxuLyoqIFRoZSBoYW5kbGUgYSBnZW5lcmF0ZWQgc3RyZWFtIG1lbWJlciByZXNvbHZlcyB3aXRoLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1IYW5kbGVMaWtlIHtcblx0cmVhZG9ubHkgaWQ6IHN0cmluZztcblx0cmVhZG9ubHkgY2xvc2VkOiBib29sZWFuO1xuXHRjbG9zZSgpOiB2b2lkO1xufVxuXG4vKiogSGFuZGxlcnMgZm9yIGEgc3RyZWFtLCBhcyBhIGdlbmVyYXRlZCBtb2R1bGUgdHlwZXMgdGhlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtSGFuZGxlcnNMaWtlPEU+IHtcblx0cmVhZG9ubHkgb25FdmVudD86IChldmVudDogRSkgPT4gdm9pZDtcblx0cmVhZG9ubHkgb25UZXJtaW5hbD86ICh0ZXJtaW5hbDogU3RyZWFtVGVybWluYWxMaWtlKSA9PiB2b2lkO1xufVxuXG4vKiogQSBzdHJlYW0gbWVtYmVyIG9mIGEgZ2VuZXJhdGVkIG1hcC4gKi9cbmV4cG9ydCB0eXBlIFN0cmVhbTxJLCBFPiA9IChcblx0aW5wdXQ6IEksXG5cdGhhbmRsZXJzOiBTdHJlYW1IYW5kbGVyc0xpa2U8RT4sXG5cdG9wdGlvbnM/OiB7IHJlYWRvbmx5IHNpZ25hbD86IEFib3J0U2lnbmFsIH0sXG4pID0+IFByb21pc2U8U3RyZWFtSGFuZGxlTGlrZT47XG5cbi8qKiBXaGVyZSBvbmUgc3Vic2NyaXB0aW9uIHN0YW5kcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtU3RhdGU8RT4ge1xuXHQvKiogYGlkbGVgIHdpdGggYSBudWxsIGlucHV0LCBgZmFpbGVkYCB3aGVuIHRoZSBob3N0IHJlZnVzZWQgdG8gb3BlbiBpdC4gKi9cblx0cmVhZG9ubHkgc3RhdHVzOiBcImlkbGVcIiB8IFwib3BlbmluZ1wiIHwgXCJvcGVuXCIgfCBcImVuZGVkXCIgfCBcImZhaWxlZFwiO1xuXHRyZWFkb25seSBsYXN0RXZlbnQ6IEUgfCBudWxsO1xuXHRyZWFkb25seSB0ZXJtaW5hbDogU3RyZWFtVGVybWluYWxMaWtlIHwgbnVsbDtcblx0cmVhZG9ubHkgZXJyb3I6IEVycm9yIHwgbnVsbDtcbn1cblxuY29uc3QgSURMRV9TVFJFQU06IFN0cmVhbVN0YXRlPG5ldmVyPiA9IE9iamVjdC5mcmVlemUoe1xuXHRzdGF0dXM6IFwiaWRsZVwiLFxuXHRsYXN0RXZlbnQ6IG51bGwsXG5cdHRlcm1pbmFsOiBudWxsLFxuXHRlcnJvcjogbnVsbCxcbn0pO1xuXG5mdW5jdGlvbiBzdGFibGVLZXkodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuXHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIChfa2V5LCBpdGVtOiB1bmtub3duKSA9PlxuXHRcdGlzUGxhaW5SZWNvcmQoaXRlbSlcblx0XHRcdD8gT2JqZWN0LmZyb21FbnRyaWVzKFxuXHRcdFx0XHRcdE9iamVjdC5lbnRyaWVzKGl0ZW0pLnNvcnQoKFthXSwgW2JdKSA9PiAoYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IDApKSxcblx0XHRcdFx0KVxuXHRcdFx0OiBpdGVtLFxuXHQpO1xufVxuXG4vKipcbiAqIEhvbGQgYSBnZW5lcmF0ZWQgc3RyZWFtIG9wZW4gd2hpbGUgYSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAqXG4gKiBUaGUgc3Vic2NyaXB0aW9uIGZvbGxvd3MgYG9wZW5gIGFuZCB0aGUgKmNvbnRlbnQqIG9mIGBpbnB1dGA6IGEgbmV3IG9iamVjdFxuICogd2l0aCB0aGUgc2FtZSBmaWVsZHMgZG9lcyBub3QgcmVvcGVuIGl0LCBhIGRpZmZlcmVudCBvbmUgY2xvc2VzIHRoZSBvbGRcbiAqIHN0cmVhbSBhbmQgb3BlbnMgYSBuZXcgb25lLCBhbmQgYG51bGxgIGNsb3NlcyBpdC4gSGFuZGxlcnMgYXJlIHJlYWQgZnJlc2hcbiAqIG9uIGV2ZXJ5IGZyYW1lLCBzbyBhIG5ldyBjbG9zdXJlIGRvZXMgbm90IHJlb3BlbiBhbnl0aGluZyBlaXRoZXIuIFVubW91bnRcbiAqIGNsb3NlcyB0aGUgc3RyZWFtLCBldmVuIGlmIHRoZSBob3N0IGhhcyBub3QgeWV0IGFja25vd2xlZGdlZCBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVN0cmVhbTxJLCBFPihcblx0b3BlbjogU3RyZWFtPEksIEU+LFxuXHRpbnB1dDogSSB8IG51bGwsXG5cdGhhbmRsZXJzOiBTdHJlYW1IYW5kbGVyc0xpa2U8RT4gPSB7fSxcbik6IFN0cmVhbVN0YXRlPEU+IHtcblx0Y29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZTxTdHJlYW1TdGF0ZTxFPj4oSURMRV9TVFJFQU0pO1xuXHRjb25zdCBsYXRlc3QgPSB1c2VSZWYoaGFuZGxlcnMpO1xuXHRsYXRlc3QuY3VycmVudCA9IGhhbmRsZXJzO1xuXHRjb25zdCBrZXkgPSBpbnB1dCA9PT0gbnVsbCA/IG51bGwgOiBzdGFibGVLZXkoaW5wdXQpO1xuXHQvLyBgaW5wdXRgIGlzIGRlbGliZXJhdGVseSByZWFkIHRocm91Z2ggYGtleWA6IHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWVcblx0Ly8gZmllbGRzIGFyZSB0aGUgc2FtZSBzdWJzY3JpcHRpb24uXG5cdGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKGlucHV0KTtcblx0aW5wdXRSZWYuY3VycmVudCA9IGlucHV0O1xuXG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0aWYgKGtleSA9PT0gbnVsbCkge1xuXHRcdFx0c2V0U3RhdGUoSURMRV9TVFJFQU0pO1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0Y29uc3QgY3VycmVudCA9IGlucHV0UmVmLmN1cnJlbnQgYXMgSTtcblx0XHRsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG5cdFx0bGV0IGhhbmRsZTogU3RyZWFtSGFuZGxlTGlrZSB8IG51bGwgPSBudWxsO1xuXHRcdHNldFN0YXRlKHtcblx0XHRcdHN0YXR1czogXCJvcGVuaW5nXCIsXG5cdFx0XHRsYXN0RXZlbnQ6IG51bGwsXG5cdFx0XHR0ZXJtaW5hbDogbnVsbCxcblx0XHRcdGVycm9yOiBudWxsLFxuXHRcdH0pO1xuXHRcdG9wZW4oY3VycmVudCwge1xuXHRcdFx0b25FdmVudDogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChjYW5jZWxsZWQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0bGF0ZXN0LmN1cnJlbnQub25FdmVudD8uKGV2ZW50KTtcblx0XHRcdFx0c2V0U3RhdGUoKHByZXZpb3VzKSA9PiAoeyAuLi5wcmV2aW91cywgbGFzdEV2ZW50OiBldmVudCB9KSk7XG5cdFx0XHR9LFxuXHRcdFx0b25UZXJtaW5hbDogKHRlcm1pbmFsKSA9PiB7XG5cdFx0XHRcdGlmIChjYW5jZWxsZWQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0bGF0ZXN0LmN1cnJlbnQub25UZXJtaW5hbD8uKHRlcm1pbmFsKTtcblx0XHRcdFx0c2V0U3RhdGUoKHByZXZpb3VzKSA9PiAoeyAuLi5wcmV2aW91cywgc3RhdHVzOiBcImVuZGVkXCIsIHRlcm1pbmFsIH0pKTtcblx0XHRcdH0sXG5cdFx0fSkudGhlbihcblx0XHRcdChvcGVuZWQpID0+IHtcblx0XHRcdFx0aWYgKGNhbmNlbGxlZCkge1xuXHRcdFx0XHRcdG9wZW5lZC5jbG9zZSgpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRoYW5kbGUgPSBvcGVuZWQ7XG5cdFx0XHRcdHNldFN0YXRlKChwcmV2aW91cykgPT5cblx0XHRcdFx0XHRwcmV2aW91cy5zdGF0dXMgPT09IFwiZW5kZWRcIlxuXHRcdFx0XHRcdFx0PyBwcmV2aW91c1xuXHRcdFx0XHRcdFx0OiB7IC4uLnByZXZpb3VzLCBzdGF0dXM6IFwib3BlblwiIH0sXG5cdFx0XHRcdCk7XG5cdFx0XHR9LFxuXHRcdFx0KGVycm9yOiB1bmtub3duKSA9PiB7XG5cdFx0XHRcdGlmIChjYW5jZWxsZWQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0c2V0U3RhdGUoe1xuXHRcdFx0XHRcdHN0YXR1czogXCJmYWlsZWRcIixcblx0XHRcdFx0XHRsYXN0RXZlbnQ6IG51bGwsXG5cdFx0XHRcdFx0dGVybWluYWw6IG51bGwsXG5cdFx0XHRcdFx0ZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGNhbmNlbGxlZCA9IHRydWU7XG5cdFx0XHRoYW5kbGU/LmNsb3NlKCk7XG5cdFx0fTtcblx0fSwgW29wZW4sIGtleV0pO1xuXG5cdHJldHVybiBzdGF0ZTtcbn1cbiIKICBdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7QUFnQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxQk8sTUFBTSxnQ0FBZ0MsY0FBYTtBQUFBLEVBQ2xELFdBQVcsQ0FBQyxTQUFpQjtBQUFBLElBQ25DLE1BQU0sU0FBUyxlQUFlO0FBQUE7QUFFaEM7QUFFQSxJQUFNLGdCQUFnQixjQUFtQyxJQUFJO0FBd0J0RCxTQUFTLGNBQWMsQ0FBQyxPQUEwQztBQUFBLEVBQ3hFLFFBQVEsUUFBUSxXQUFXLFNBQVMsYUFBYTtBQUFBLEVBQ2pELElBQUssV0FBVyxlQUFnQixjQUFjLFlBQVk7QUFBQSxJQUN6RCxNQUFNLElBQUks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O0FBQUEsTUFDakIsU0FBUyxXQUFXO0FBQUEsTUFDcEI7QUFBQSxJQUNEO0FBQUEsSUFDQSxNQUFNLFVBQVUsU0FBUztBQUFBLElBQ3pCLElBQUksWUFBWTtBQUFBLElBQ2hCLElBQUksU0FBa0M7QUFBQSxJQUN0QyxTQUFTO0FBQUEsTUFDUixRQUFRO0FBQUEsTUFDUixXQUFXO0FBQUEsTUFDWCxVQUFVO0FBQUEsTUFDVixPQUFPO0FBQUEsSUFDUixDQUFDO0FBQUEsSUFDRCxLQUFLLFNBQVM7QUFBQSxNQUNiLFNBQVMsQ0FBQyxVQUFVO0FBQUEsUUFDbkIsSUFBSSxXQUFXO0FBQUEsVUFDZDtBQUFBLFFBQ0Q7QUFBQSxRQUNBLE9BQU8sUUFBUSxVQUFVLEtBQUs7QUFBQSxRQUM5QixTQUFTLENBQUMsY0FBYyxLQUFLLFVBQVUsV0FBVyxNQUFNLEVBQUU7QUFBQTtBQUFBLE1BRTNELFlBQVksQ0FBQyxhQUFhO0FBQUEsUUFDekIsSUFBSSxXQUFXO0FBQUEsVUFDZDtBQUFBLFFBQ0Q7QUFBQSxRQUNBLE9BQU8sUUFBUSxhQUFhLFFBQVE7QUFBQSxRQUNwQyxTQUFTLENBQUMsY0FBYyxLQUFLLFVBQVUsUUFBUSxTQUFTLFNBQVMsRUFBRTtBQUFBO0FBQUEsSUFFckUsQ0FBQyxFQUFFLEtBQ0YsQ0FBQyxXQUFXO0FBQUEsTUFDWCxJQUFJLFdBQVc7QUFBQSxRQUNkLE9BQU8sTUFBTTtBQUFBLFFBQ2I7QUFBQSxNQUNEO0FBQUEsTUFDQSxTQUFTO0FBQUEsTUFDVCxTQUFTLENBQUMsYUFDVCxTQUFTLFdBQVcsVUFDakIsV0FDQSxLQUFLLFVBQVUsUUFBUSxPQUFPLENBQ2xDO0FBQUEsT0FFRCxDQUFDLFVBQW1CO0FBQUEsTUFDbkIsSUFBSSxXQUFXO0FBQUEsUUFDZDtBQUFBLE1BQ0Q7QUFBQSxNQUNBLFNBQVM7QUFBQSxRQUNSLFFBQVE7QUFBQSxRQUNSLFdBQVc7QUFBQSxRQUNYLFVBQVU7QUFBQSxRQUNWLE9BQU8saUJBQWlCLFFBQVEsUUFBUSxJQUFJLE1BQU0sT0FBTyxLQUFLLENBQUM7QUFBQSxNQUNoRSxDQUFDO0FBQUEsS0FFSDtBQUFBLElBQ0EsT0FBTyxNQUFNO0FBQUEsTUFDWixZQUFZO0FBQUEsTUFDWixRQUFRLE1BQU07QUFBQTtBQUFBLEtBRWIsQ0FBQyxNQUFNLEdBQUcsQ0FBQztBQUFBLEVBRWQsT0FBTztBQUFBOyIsCiAgImRlYnVnSWQiOiAiQjkxNzMxMTZEMEE4QUQ0MzY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
|
|
126
|
+
//# debugId=AF402B9327384C7B64756E2164756E21
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL3JlYWN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgIi8qKlxuICogVGhpbiBSZWFjdCBiaW5kaW5ncyBvdmVyIHRoZSBzdG9yZSBjb3JlIChkZWNpc2lvbi0xOCwgZGVjaXNpb24tNDcpLlxuICpcbiAqIFRoaXMgZW50cnkgcG9pbnQgaXMgb3B0aW9uYWwgYW5kIGlzIHRoZSBvbmx5IG9uZSB0aGF0IGltcG9ydHMgUmVhY3QuIEl0IGFkZHNcbiAqIG5vIHNlY29uZCBjbGllbnQ6IGEgY29tcG9uZW50IHJlYWNoZXMgdGhlIHNhbWUgYFFnaXNTZGtgIG9yIGBCcmlkZ2VDbGllbnRgIGFcbiAqIHZhbmlsbGEgcGFnZSB3b3VsZCBidWlsZCwgdGhyb3VnaCBhIHByb3ZpZGVyIHRoYXQgaXMgaGFuZGVkIGEgYFFnaXNTZGtgXG4gKiAoYW5kIGxlYXZlcyBpdCBhbG9uZSksIGlzIGhhbmRlZCBhIGNsaWVudCAoc2FtZSksIG9yIG93bnMgYSBjbGllbnQgYnVpbHQgb25cbiAqIGEgdHJhbnNwb3J0IChhbmQgY2xvc2VzIGl0IG9uIHVubW91bnQpLiBUaGUgaG9va3MgdGFrZSB0aGUgbWV0aG9kcyBhXG4gKiBgUWdpc1Nka2AgYWxyZWFkeSBoYXMgLSBgcWdpcy5zaXRlcy5zdW1tYXJ5YCwgYHFnaXMuc2l0ZXMud2F0Y2hgIC0gc29cbiAqIHRoZSB0eXBlZCBjb250cmFjdCBpcyB0aGUgZ2VuZXJhdGVkIG9uZSwgbm90IGEgUmVhY3QgY29weSBvZiBpdC5cbiAqXG4gKiBUaGUgYmVoYXZpb3VyIGxpdmVzIGluIGAuL3N0b3Jlc2A6IGB1c2VPcGVyYXRpb25gIGlzIGFuIGBPcGVyYXRpb25TdG9yZWBcbiAqIHJlYWQgdGhyb3VnaCBgdXNlU3luY0V4dGVybmFsU3RvcmVgLCBgdXNlU3RyZWFtYCBhIGBTdHJlYW1TdG9yZWAsIGB1c2VGb3JtYFxuICogYSBgRm9ybVN0b3JlYCBhbmQgYHVzZUhvc3RRdWVyeWAgYSBgSG9zdFF1ZXJ5U3RvcmVgLiBXaGF0IHRoZSBob29rcyBhZGQgaXNcbiAqIGxpZmV0aW1lOiBhIGNhbGwgYWJvcnRlZCB3aGVuIGl0cyBjb21wb25lbnQgdW5tb3VudHMsIGEgc3RyZWFtIGNsb3NlZCBvblxuICogdW5tb3VudCBvciB3aGVuIGl0cyBpbnB1dCBjaGFuZ2VzLCBhbmQgYSBzaW11bGF0ZWQgU3RyaWN0TW9kZSByZW1vdW50IHRoYXRcbiAqIGxlYXZlcyBleGFjdGx5IG9uZSBvZiBlYWNoLlxuICovXG5cbmltcG9ydCB7XG5cdGNyZWF0ZUNvbnRleHQsXG5cdGNyZWF0ZUVsZW1lbnQsXG5cdHR5cGUgUmVhY3RFbGVtZW50LFxuXHR0eXBlIFJlYWN0Tm9kZSxcblx0dXNlQ29udGV4dCxcblx0dXNlRWZmZWN0LFxuXHR1c2VNZW1vLFxuXHR1c2VTdGF0ZSxcblx0dXNlU3luY0V4dGVybmFsU3RvcmUsXG59IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcblx0QnJpZGdlQ2xpZW50LFxuXHR0eXBlIEJyaWRnZUNsaWVudE9wdGlvbnMsXG5cdHR5cGUgV2lyZVRyYW5zcG9ydCxcbn0gZnJvbSBcIi4vYnJpZGdlXCI7XG5pbXBvcnQgeyBRZ2lzU2RrRXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB0eXBlIHsgUWdpc1NkaywgUWdpc1Nka0NvcmUgfSBmcm9tIFwiLi9xZ2lzLXNka1wiO1xuaW1wb3J0IHR5cGUgeyBPcGVyYXRpb25NYXAsIFN0cmVhbU1hcCB9IGZyb20gXCIuL3NjaGVtYVwiO1xuaW1wb3J0IHtcblx0dHlwZSBGb3JtT3B0aW9ucyxcblx0dHlwZSBGb3JtU3RhdGUsXG5cdEZvcm1TdG9yZSxcblx0dHlwZSBIb3N0UXVlcnlTdGF0ZSxcblx0dHlwZSBIb3N0UXVlcnlTdG9yZSxcblx0dHlwZSBPcGVyYXRpb24sXG5cdHR5cGUgT3BlcmF0aW9uU3RhdGUsXG5cdE9wZXJhdGlvblN0b3JlLFxuXHR0eXBlIFN0b3JlLFxuXHR0eXBlIFN0cmVhbSxcblx0dHlwZSBTdHJlYW1IYW5kbGVyc0xpa2UsXG5cdHR5cGUgU3RyZWFtU3RhdGUsXG5cdFN0cmVhbVN0b3JlLFxufSBmcm9tIFwiLi9zdG9yZXNcIjtcblxuZXhwb3J0IHR5cGUge1xuXHRPcGVyYXRpb24sXG5cdE9wZXJhdGlvblN0YXRlLFxuXHRTdHJlYW0sXG5cdFN0cmVhbUhhbmRsZUxpa2UsXG5cdFN0cmVhbUhhbmRsZXJzTGlrZSxcblx0U3RyZWFtU3RhdGUsXG5cdFN0cmVhbVRlcm1pbmFsTGlrZSxcbn0gZnJvbSBcIi4vc3RvcmVzXCI7XG5cbi8qKiBBIGhvb2sgb3IgcHJvdmlkZXIgd2FzIHVzZWQgb3V0c2lkZSB0aGUgc2hhcGUgaXQgbmVlZHMuICovXG5leHBvcnQgY2xhc3MgUWdpc1Nka0JyaWRnZVJlYWN0RXJyb3IgZXh0ZW5kcyBRZ2lzU2RrRXJyb3Ige1xuXHRwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobWVzc2FnZSwgXCJyZWFjdF9iaW5kaW5nXCIpO1xuXHR9XG59XG5cbmludGVyZmFjZSBTaGFyZWQge1xuXHRyZWFkb25seSBjbGllbnQ6IEJyaWRnZUNsaWVudDtcblx0cmVhZG9ubHkgcWdpczogUWdpc1Nka0NvcmU8dW5rbm93biwgdW5rbm93bj4gfCBudWxsO1xufVxuXG5jb25zdCBDbGllbnRDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxTaGFyZWQgfCBudWxsPihudWxsKTtcblxuLyoqIFByb3BzIGZvciB7QGxpbmsgQnJpZGdlUHJvdmlkZXJ9OiBleGFjdGx5IG9uZSBvZiBgcWdpc2AsIGBjbGllbnRgIG9yIGB0cmFuc3BvcnRgLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCcmlkZ2VQcm92aWRlclByb3BzIHtcblx0LyoqXG5cdCAqIEEgYFFnaXNTZGtgIHRoZSBwYWdlIGJ1aWx0LCB3aGF0ZXZlciBpdHMgc2NoZW1hOyB0aGUgcHJvdmlkZXIgc2hhcmVzIGl0XG5cdCAqIGFuZCBuZXZlciBjbG9zZXMgaXQuIGB1c2VRZ2lzU2RrYCBoYW5kcyBpdCBiYWNrIHVuZGVyIHRoZSBwYWdlJ3MgdHlwZXMuXG5cdCAqL1xuXHRyZWFkb25seSBxZ2lzPzogUWdpc1Nka0NvcmU8dW5rbm93biwgdW5rbm93bj47XG5cdC8qKiBBIGNsaWVudCB0aGUgY2FsbGVyIG93bnM7IHRoZSBwcm92aWRlciBuZXZlciBjbG9zZXMgaXQuICovXG5cdHJlYWRvbmx5IGNsaWVudD86IEJyaWRnZUNsaWVudDtcblx0LyoqIEEgdHJhbnNwb3J0IHRoZSBwcm92aWRlciBidWlsZHMgYW5kIG93bnMgYSBjbGllbnQgZm9yLiAqL1xuXHRyZWFkb25seSB0cmFuc3BvcnQ/OiBXaXJlVHJhbnNwb3J0O1xuXHQvKiogT3B0aW9ucyBmb3IgdGhlIG93bmVkIGNsaWVudDsgaWdub3JlZCB3aGVuIGBjbGllbnRgIGlzIGdpdmVuLiAqL1xuXHRyZWFkb25seSBvcHRpb25zPzogQnJpZGdlQ2xpZW50T3B0aW9ucztcblx0cmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5cbi8qKlxuICogU2hhcmUgb25lIGNsaWVudCB3aXRoIGEgc3VidHJlZS5cbiAqXG4gKiBBbiBvd25lZCBjbGllbnQgaXMgY3JlYXRlZCBpbiBhbiBlZmZlY3QsIG5ldmVyIGR1cmluZyByZW5kZXIsIGJlY2F1c2VcbiAqIFN0cmljdE1vZGUgcmVuZGVycyB0d2ljZSBhbmQgYSBjbGllbnQgbWFkZSBpbiByZW5kZXIgd291bGQgbGVhdmUgYSBzZWNvbmRcbiAqIGxpc3RlbmVyIG9uIHRoZSB0cmFuc3BvcnQuIFVudGlsIHRoYXQgZWZmZWN0IGhhcyBydW4gdGhlIHN1YnRyZWUgaXMgbm90XG4gKiByZW5kZXJlZCwgd2hpY2ggaXMgb25lIHRpY2suIFN0cmljdE1vZGUncyBzaW11bGF0ZWQgdW5tb3VudCBjbG9zZXMgdGhlXG4gKiBvd25lZCBjbGllbnQgYW5kIHRoZSBlZmZlY3QgdGhhdCBmb2xsb3dzIG1ha2VzIGEgbmV3IG9uZSwgc28gdGhlIHN1YnRyZWVcbiAqIG5ldmVyIGhvbGRzIGEgZGVhZCBjbGllbnQuIFRoZSB0cmFuc3BvcnQgbXVzdCBiZSBzdGFibGUgYWNyb3NzIHJlbmRlcnM7IHRvXG4gKiBzd2FwIGl0LCBjaGFuZ2UgdGhlIHByb3ZpZGVyJ3MgYGtleWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBCcmlkZ2VQcm92aWRlcihwcm9wczogQnJpZGdlUHJvdmlkZXJQcm9wcyk6IFJlYWN0RWxlbWVudCB7XG5cdGNvbnN0IHsgcWdpcywgY2xpZW50LCB0cmFuc3BvcnQsIG9wdGlvbnMsIGNoaWxkcmVuIH0gPSBwcm9wcztcblx0Y29uc3QgZ2l2ZW4gPSBbcWdpcywgY2xpZW50LCB0cmFuc3BvcnRdLmZpbHRlcihcblx0XHQoc291cmNlKSA9PiBzb3VyY2UgIT09IHVuZGVmaW5lZCxcblx0KS5sZW5ndGg7XG5cdGlmIChnaXZlbiAhPT0gMSkge1xuXHRcdHRocm93IG5ldyBRZ2lzU2RrQnJpZGdlUmVhY3RFcnJvcihcblx0XHRcdFwiQnJpZGdlUHJvdmlkZXIgbmVlZHMgZXhhY3RseSBvbmUgb2YgcWdpcywgY2xpZW50IG9yIHRyYW5zcG9ydFwiLFxuXHRcdCk7XG5cdH1cblx0Y29uc3QgdGltZW91dE1zID0gb3B0aW9ucz8udGltZW91dE1zO1xuXHRjb25zdCBbb3duZWQsIHNldE93bmVkXSA9IHVzZVN0YXRlPEJyaWRnZUNsaWVudCB8IG51bGw+KG51bGwpO1xuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGlmICh0cmFuc3BvcnQgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0Y29uc3QgbGl2ZSA9IG5ldyBCcmlkZ2VDbGllbnQoXG5cdFx0XHR0cmFuc3BvcnQsXG5cdFx0XHR0aW1lb3V0TXMgPT09IHVuZGVmaW5lZCA/IHt9IDogeyB0aW1lb3V0TXMgfSxcblx0XHQpO1xuXHRcdHNldE93bmVkKGxpdmUpO1xuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRsaXZlLmNsb3NlKCk7XG5cdFx0XHRzZXRPd25lZCgoY3VycmVudCkgPT4gKGN1cnJlbnQgPT09IGxpdmUgPyBudWxsIDogY3VycmVudCkpO1xuXHRcdH07XG5cdH0sIFt0cmFuc3BvcnQsIHRpbWVvdXRNc10pO1xuXHRjb25zdCB2YWx1ZSA9IHVzZU1lbW8oKCk6IFNoYXJlZCB8IG51bGwgPT4ge1xuXHRcdGlmIChxZ2lzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiB7IGNsaWVudDogcWdpcy5jbGllbnQsIHFnaXMgfTtcblx0XHR9XG5cdFx0Y29uc3QgbGl2ZSA9IGNsaWVudCA/PyBvd25lZDtcblx0XHRyZXR1cm4gbGl2ZSA9PT0gbnVsbCA/IG51bGwgOiB7IGNsaWVudDogbGl2ZSwgcWdpczogbnVsbCB9O1xuXHR9LCBbcWdpcywgY2xpZW50LCBvd25lZF0pO1xuXHRyZXR1cm4gY3JlYXRlRWxlbWVudChcblx0XHRDbGllbnRDb250ZXh0LlByb3ZpZGVyLFxuXHRcdHsgdmFsdWUgfSxcblx0XHR2YWx1ZSA9PT0gbnVsbCA/IG51bGwgOiBjaGlsZHJlbixcblx0KTtcbn1cblxuZnVuY3Rpb24gdXNlU2hhcmVkKGhvb2s6IHN0cmluZyk6IFNoYXJlZCB7XG5cdGNvbnN0IHNoYXJlZCA9IHVzZUNvbnRleHQoQ2xpZW50Q29udGV4dCk7XG5cdGlmIChzaGFyZWQgPT09IG51bGwpIHtcblx0XHR0aHJvdyBuZXcgUWdpc1Nka0JyaWRnZVJlYWN0RXJyb3IoXG5cdFx0XHRgJHtob29rfSBuZWVkcyBhIEJyaWRnZVByb3ZpZGVyIGFib3ZlIGl0YCxcblx0XHQpO1xuXHR9XG5cdHJldHVybiBzaGFyZWQ7XG59XG5cbi8qKiBUaGUgY2xpZW50IG9mIHRoZSBuZWFyZXN0IHtAbGluayBCcmlkZ2VQcm92aWRlcn0uICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQnJpZGdlQ2xpZW50KCk6IEJyaWRnZUNsaWVudCB7XG5cdHJldHVybiB1c2VTaGFyZWQoXCJ1c2VCcmlkZ2VDbGllbnRcIikuY2xpZW50O1xufVxuXG4vKipcbiAqIFRoZSBgUWdpc1Nka2Agb2YgdGhlIG5lYXJlc3Qge0BsaW5rIEJyaWRnZVByb3ZpZGVyfS5cbiAqXG4gKiBUaGUgdHlwZSBwYXJhbWV0ZXJzIG5hbWUgdGhlIGdlbmVyYXRlZCBgT3BlcmF0aW9uc2AgYW5kIGBTdHJlYW1zYDsgdGhleSBhcmVcbiAqIHRoZSBjYWxsZXIncyBjbGFpbSwgdGhlIHNhbWUgd2F5IHRoZSBwcm92aWRlcidzIGBxZ2lzYCBwcm9wIHdhcyB0aGUgcGFnZSdzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUWdpc1NkazxPID0gT3BlcmF0aW9uTWFwLCBTID0gU3RyZWFtTWFwPigpOiBRZ2lzU2RrPE8sIFM+IHtcblx0Y29uc3Qgc2hhcmVkID0gdXNlU2hhcmVkKFwidXNlUWdpc1Nka1wiKTtcblx0aWYgKHNoYXJlZC5xZ2lzID09PSBudWxsKSB7XG5cdFx0dGhyb3cgbmV3IFFnaXNTZGtCcmlkZ2VSZWFjdEVycm9yKFxuXHRcdFx0XCJ1c2VRZ2lzU2RrIG5lZWRzIGEgQnJpZGdlUHJvdmlkZXIgZ2l2ZW4gYSBxZ2lzIGluc3RhbmNlXCIsXG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gc2hhcmVkLnFnaXMgYXMgdW5rbm93biBhcyBRZ2lzU2RrPE8sIFM+O1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgZ2VuZXJhdGVkIG9wZXJhdGlvbiBtYXAgb25jZSBwZXIgY2xpZW50OiBgdXNlT3BlcmF0aW9ucyhjcmVhdGVPcGVyYXRpb25zKWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VPcGVyYXRpb25zPFQ+KGNyZWF0ZTogKGNsaWVudDogQnJpZGdlQ2xpZW50KSA9PiBUKTogVCB7XG5cdGNvbnN0IGNsaWVudCA9IHVzZUJyaWRnZUNsaWVudCgpO1xuXHRyZXR1cm4gdXNlTWVtbygoKSA9PiBjcmVhdGUoY2xpZW50KSwgW2NyZWF0ZSwgY2xpZW50XSk7XG59XG5cbi8qKiBDb250cm9scyBiZXlvbmQgcnVubmluZzogYWJvcnQgd2hhdCBpcyBpbiBmbGlnaHQsIG9yIGZvcmdldCB0aGUgb3V0Y29tZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlcmF0aW9uQ29udHJvbHMge1xuXHQvKiogQWJvcnQgdGhlIGluLWZsaWdodCBjYWxsIGxvY2FsbHk7IHRoZSBob3N0IG1heSBzdGlsbCBydW4gaXQuICovXG5cdGFib3J0KCk6IHZvaWQ7XG5cdC8qKiBCYWNrIHRvIGBpZGxlYCwgYWJvcnRpbmcgYW55dGhpbmcgaW4gZmxpZ2h0LiAqL1xuXHRyZXNldCgpOiB2b2lkO1xufVxuXG4vKiogUmVhZCBhbnkgc3RvcmUgZnJvbSBhIGNvbXBvbmVudDsgdGhlIHNuYXBzaG90IGlzIHRoZSByZW5kZXIncyB2YWx1ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdG9yZTxUPihzdG9yZTogU3RvcmU8VD4pOiBUIHtcblx0cmV0dXJuIHVzZVN5bmNFeHRlcm5hbFN0b3JlKFxuXHRcdHN0b3JlLnN1YnNjcmliZSxcblx0XHRzdG9yZS5nZXRTbmFwc2hvdCxcblx0XHRzdG9yZS5nZXRTbmFwc2hvdCxcblx0KTtcbn1cblxuLyoqXG4gKiBSdW4gYSBnZW5lcmF0ZWQgb3BlcmF0aW9uIGZyb20gYSBjb21wb25lbnQuXG4gKlxuICogYHJ1bmAgcmVzb2x2ZXMgd2l0aCB0aGUgdmFsdWUsIG9yIHdpdGggYHVuZGVmaW5lZGAgd2hlbiB0aGUgY2FsbCBmYWlsZWQsIHdhc1xuICogYWJvcnRlZCBvciB3YXMgc3VwZXJzZWRlZCBieSBhIGxhdGVyIHJ1biAtIHRoZSBzdGF0ZSBjYXJyaWVzIHRoZSBlcnJvciwgc29cbiAqIHRoZSBwcm9taXNlIG5ldmVyIHJlamVjdHMgaW50byBhbiBldmVudCBoYW5kbGVyLiBPbmx5IHRoZSBsYXRlc3QgcnVuIGNhblxuICogY2hhbmdlIHRoZSBzdGF0ZTsgdW5tb3VudGluZyBhYm9ydHMgd2hhdGV2ZXIgaXMgaW4gZmxpZ2h0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlT3BlcmF0aW9uPEksIFI+KFxuXHRvcGVyYXRpb246IE9wZXJhdGlvbjxJLCBSPixcbik6IHJlYWRvbmx5IFtcblx0T3BlcmF0aW9uU3RhdGU8Uj4sXG5cdChpbnB1dDogSSkgPT4gUHJvbWlzZTxSIHwgdW5kZWZpbmVkPixcblx0T3BlcmF0aW9uQ29udHJvbHMsXG5dIHtcblx0Y29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IG5ldyBPcGVyYXRpb25TdG9yZShvcGVyYXRpb24pLCBbb3BlcmF0aW9uXSk7XG5cdHVzZUVmZmVjdCgoKSA9PiAoKSA9PiBzdG9yZS5hYm9ydCgpLCBbc3RvcmVdKTtcblx0Y29uc3Qgc3RhdGUgPSB1c2VTdG9yZShzdG9yZSk7XG5cdGNvbnN0IGNvbnRyb2xzID0gdXNlTWVtbyhcblx0XHQoKSA9PiAoeyBhYm9ydDogc3RvcmUuYWJvcnQsIHJlc2V0OiBzdG9yZS5yZXNldCB9KSxcblx0XHRbc3RvcmVdLFxuXHQpO1xuXHRyZXR1cm4gW3N0YXRlLCBzdG9yZS5ydW4sIGNvbnRyb2xzXTtcbn1cblxuLyoqXG4gKiBIb2xkIGEgZ2VuZXJhdGVkIHN0cmVhbSBvcGVuIHdoaWxlIGEgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gKlxuICogVGhlIHN1YnNjcmlwdGlvbiBmb2xsb3dzIGBvcGVuYCBhbmQgdGhlICpjb250ZW50KiBvZiBgaW5wdXRgOiBhIG5ldyBvYmplY3RcbiAqIHdpdGggdGhlIHNhbWUgZmllbGRzIGRvZXMgbm90IHJlb3BlbiBpdCwgYSBkaWZmZXJlbnQgb25lIGNsb3NlcyB0aGUgb2xkXG4gKiBzdHJlYW0gYW5kIG9wZW5zIGEgbmV3IG9uZSwgYW5kIGBudWxsYCBjbG9zZXMgaXQuIEhhbmRsZXJzIGFyZSByZWFkIGZyZXNoXG4gKiBvbiBldmVyeSBmcmFtZSwgc28gYSBuZXcgY2xvc3VyZSBkb2VzIG5vdCByZW9wZW4gYW55dGhpbmcgZWl0aGVyLiBVbm1vdW50XG4gKiBjbG9zZXMgdGhlIHN0cmVhbSwgZXZlbiBpZiB0aGUgaG9zdCBoYXMgbm90IHlldCBhY2tub3dsZWRnZWQgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTdHJlYW08SSwgRT4oXG5cdG9wZW46IFN0cmVhbTxJLCBFPixcblx0aW5wdXQ6IEkgfCBudWxsLFxuXHRoYW5kbGVyczogU3RyZWFtSGFuZGxlcnNMaWtlPEU+ID0ge30sXG4pOiBTdHJlYW1TdGF0ZTxFPiB7XG5cdGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBuZXcgU3RyZWFtU3RvcmUob3BlbiksIFtvcGVuXSk7XG5cdHN0b3JlLnNldEhhbmRsZXJzKGhhbmRsZXJzKTtcblx0Ly8gVGhlIHN0b3JlIGtleXMgdGhlIGlucHV0IGJ5IGNvbnRlbnQsIHNvIGFuIGVmZmVjdCBwZXIgcmVuZGVyIGlzIGNoZWFwXG5cdC8vIGFuZCBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBmaWVsZHMgcmVvcGVucyBub3RoaW5nLlxuXHR1c2VFZmZlY3QoKCkgPT4ge1xuXHRcdHN0b3JlLnNldElucHV0KGlucHV0KTtcblx0fSk7XG5cdHVzZUVmZmVjdCgoKSA9PiAoKSA9PiBzdG9yZS5jbG9zZSgpLCBbc3RvcmVdKTtcblx0cmV0dXJuIHVzZVN0b3JlKHN0b3JlKTtcbn1cblxuLyoqXG4gKiBUaGUgZm9ybSBvZiBvbmUgZGVjbGFyZWQgYWN0aW9uOiBgcWdpcy48aWQ+YCB3aXRoIGl0cyBmaWVsZHMsIHZhbHVlcyxcbiAqIGlzc3VlcyBhbmQgc3VibWlzc2lvbi4gVGhlIHN0b3JlIGlzIGJ1aWx0IG9uY2UgcGVyIGBxZ2lzYCBhbmQgYGlkYCAtIHRoZVxuICogb3B0aW9ucyBhcmUgcmVhZCBvbiB0aGUgZmlyc3QgcmVuZGVyIG9ubHksIGxpa2UgYHVzZVN0YXRlYCdzIGluaXRpYWwgdmFsdWVcbiAqIC0gYW5kIHVubW91bnRpbmcgYWJvcnRzIGEgc3VibWlzc2lvbiBpbiBmbGlnaHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VGb3JtPE8sIEsgZXh0ZW5kcyBrZXlvZiBPICYgc3RyaW5nPihcblx0cWdpczogUWdpc1Nka0NvcmU8TywgdW5rbm93bj4sXG5cdGlkOiBLLFxuXHRvcHRpb25zPzogRm9ybU9wdGlvbnMsXG4pOiByZWFkb25seSBbXG5cdEZvcm1TdGF0ZTxSZXN1bHRPZjxPLCBLPj4sXG5cdEZvcm1TdG9yZTxSZXF1ZXN0T2Y8TywgSz4gJiBvYmplY3QsIFJlc3VsdE9mPE8sIEs+Pixcbl0ge1xuXHRjb25zdCBbZmlyc3RdID0gdXNlU3RhdGUoKCkgPT4gb3B0aW9ucyA/PyB7fSk7XG5cdGNvbnN0IHN0b3JlID0gdXNlTWVtbyhcblx0XHQoKSA9PlxuXHRcdFx0bmV3IEZvcm1TdG9yZTxSZXF1ZXN0T2Y8TywgSz4gJiBvYmplY3QsIFJlc3VsdE9mPE8sIEs+Pihcblx0XHRcdFx0cWdpcyBhcyBRZ2lzU2RrQ29yZTx1bmtub3duLCB1bmtub3duPixcblx0XHRcdFx0aWQsXG5cdFx0XHRcdGZpcnN0LFxuXHRcdFx0KSxcblx0XHRbcWdpcywgaWQsIGZpcnN0XSxcblx0KTtcblx0Ly8gQWJvcnQsIG5vdCBkaXNwb3NlOiBTdHJpY3RNb2RlJ3Mgc2ltdWxhdGVkIHVubW91bnQga2VlcHMgdGhlIHN0b3JlLlxuXHR1c2VFZmZlY3QoKCkgPT4gKCkgPT4gc3RvcmUuYWJvcnQoKSwgW3N0b3JlXSk7XG5cdHJldHVybiBbdXNlU3RvcmUoc3RvcmUpLCBzdG9yZV07XG59XG5cbi8qKlxuICogUmVhZCBhIGhvc3QgcXVlcnkgc3RvcmU6IGB1c2VIb3N0UXVlcnkobGF5ZXJzUXVlcnkocWdpcykpYCBmb3IgYSBsYXllclxuICogcGlja2VyLiBgcmVmcmVzaGAgcnVucyBvbmNlIG9uIG1vdW50IHdoZW4gYGF1dG9gIGlzIG5vdCBgZmFsc2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSG9zdFF1ZXJ5PFQ+KFxuXHRzdG9yZTogSG9zdFF1ZXJ5U3RvcmU8VD4sXG5cdG9wdGlvbnM6IHsgcmVhZG9ubHkgYXV0bz86IGJvb2xlYW4gfSA9IHt9LFxuKTogcmVhZG9ubHkgW0hvc3RRdWVyeVN0YXRlPFQ+LCBIb3N0UXVlcnlTdG9yZTxUPl0ge1xuXHRjb25zdCBhdXRvID0gb3B0aW9ucy5hdXRvICE9PSBmYWxzZTtcblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRpZiAoYXV0bykge1xuXHRcdFx0dm9pZCBzdG9yZS5yZWZyZXNoKCk7XG5cdFx0fVxuXHRcdHJldHVybiAoKSA9PiBzdG9yZS5hYm9ydCgpO1xuXHR9LCBbc3RvcmUsIGF1dG9dKTtcblx0cmV0dXJuIFt1c2VTdG9yZShzdG9yZSksIHN0b3JlXTtcbn1cblxudHlwZSBSZXF1ZXN0T2Y8TywgSyBleHRlbmRzIGtleW9mIE8+ID0gT1tLXSBleHRlbmRzIHtcblx0cmVhZG9ubHkgcmVxdWVzdDogaW5mZXIgUmVxO1xufVxuXHQ/IFJlcVxuXHQ6IG5ldmVyO1xudHlwZSBSZXN1bHRPZjxPLCBLIGV4dGVuZHMga2V5b2YgTz4gPSBPW0tdIGV4dGVuZHMge1xuXHRyZWFkb25seSByZXN1bHQ6IGluZmVyIFJlcztcbn1cblx0PyBSZXNcblx0OiBuZXZlcjtcbiIKICBdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7QUFtQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOENPLE1BQU0sZ0NBQWdDLGNBQWE7QUFBQSxFQUNsRCxXQUFXLENBQUMsU0FBaUI7QUFBQSxJQUNuQyxNQUFNLFNBQVMsZUFBZTtBQUFBO0FBRWhDO0FBT0EsSUFBTSxnQkFBZ0IsY0FBNkIsSUFBSTtBQTZCaEQsU0FBUyxjQUFjLENBQUMsT0FBMEM7QUFBQSxFQUN4RSxRQUFRLE1BQU0sUUFBUSxXQUFXLFNBQVMsYUFBYTtBQUFBLEVBQ3ZELE1BQU0sUUFBUSxDQUFDLE1BQU0sUUFBUSxTQUFTLEVBQUUsT0FDdkMsQ0FBQyxXQUFXLFdBQVcsU0FDeEIsRUFBRTtBQUFBLEVBQ0YsSUFBSSxVQUFVLEdBQUc7QUFBQSxJQUNoQixNQUFNLElBQUksd0JBQ1QsK0RBQ0Q7QUFBQSxFQUNEO0FBQUEsRUFDQSxNQUFNLFlBQVksU0FBUztBQUFBLEVBQzNCLE9BQU8sT0FBTyxZQUFZLFNBQThCLElBQUk7QUFBQSxFQUM1RCxVQUFVLE1BQU07QUFBQSxJQUNmLElBQUksY0FBYyxXQUFXO0FBQUEsTUFDNUI7QUFBQSxJQUNEO0FBQUEsSUFDQSxNQUFNLE9BQU8sSUFBSSxjQUNoQixXQUNBLGNBQWMsWUFBWSxDQUFDLElBQUksRUFBRSxVQUFVLENBQzVDO0FBQUEsSUFDQSxTQUFTLElBQUk7QUFBQSxJQUNiLE9BQU8sTUFBTTtBQUFBLE1BQ1osS0FBSyxNQUFNO0FBQUEsTUFDWCxTQUFTLENBQUMsWUFBYSxZQUFZLE9BQU8sT0FBTyxPQUFRO0FBQUE7QUFBQSxLQUV4RCxDQUFDLFdBQVcsU0FBUyxDQUFDO0FBQUEsRUFDekIsTUFBTSxRQUFRLFFBQVEsTUFBcUI7QUFBQSxJQUMxQyxJQUFJLFNBQVMsV0FBVztBQUFBLE1BQ3ZCLE9BQU8sRUFBRSxRQUFRLEtBQUssUUFBUSxLQUFLO0FBQUEsSUFDcEM7QUFBQSxJQUNBLE1BQU0sT0FBTyxVQUFVO0FBQUEsSUFDdkIsT0FBTyxTQUFTLE9BQU8sT0FBTyxFQUFFLFFBQVEsTUFBTSxNQUFNLEtBQUs7QUFBQSxLQUN2RCxDQUFDLE1BQU0sUUFBUSxLQUFLLENBQUM7QUFBQSxFQUN4QixPQUFPLGNBQ04sY0FBYyxVQUNkLEVBQUUsTUFBTSxHQUNSLFVBQVUsT0FBTyxPQUFPLFFBQ3pCO0FBQUE7QUFHRCxTQUFTLFNBQVMsQ0FBQyxNQUFzQjtBQUFBLEVBQ3hDLE1BQU0sU0FBUyxXQUFXLGFBQWE7QUFBQSxFQUN2QyxJQUFJLFdBQVcsTUFBTTtBQUFBLElBQ3BCLE1BQU0sSUFBSSx3QkFDVCxHQUFHLHNDQUNKO0FBQUEsRUFDRDtBQUFBLEVBQ0EsT0FBTztBQUFBO0FBSUQsU0FBUyxlQUFlLEdBQWlCO0FBQUEsRUFDL0MsT0FBTyxVQUFVLGlCQUFpQixFQUFFO0FBQUE7QUFTOUIsU0FBUyxVQUEyQyxHQUFrQjtBQUFBLEVBQzVFLE1BQU0sU0FBUyxVQUFVLFlBQVk7QUFBQSxFQUNyQyxJQUFJLE9BQU8sU0FBUyxNQUFNO0FBQUEsSUFDekIsTUFBTSxJQUFJLHdCQUNULHlEQUNEO0FBQUEsRUFDRDtBQUFBLEVBQ0EsT0FBTyxPQUFPO0FBQUE7QUFNUixTQUFTLGFBQWdCLENBQUMsUUFBd0M7QUFBQSxFQUN4RSxNQUFNLFNBQVMsZ0JBQWdCO0FBQUEsRUFDL0IsT0FBTyxRQUFRLE1BQU0sT0FBTyxNQUFNLEdBQUcsQ0FBQyxRQUFRLE1BQU0sQ0FBQztBQUFBO0FBWS9DLFNBQVMsUUFBVyxDQUFDLE9BQW9CO0FBQUEsRUFDL0MsT0FBTyxxQkFDTixNQUFNLFdBQ04sTUFBTSxhQUNOLE1BQU0sV0FDUDtBQUFBO0FBV00sU0FBUyxZQUFrQixDQUNqQyxXQUtDO0FBQUEsRUFDRCxNQUFNLFFBQVEsUUFBUSxNQUFNLElBQUksZ0JBQWUsU0FBUyxHQUFHLENBQUMsU0FBUyxDQUFDO0FBQUEsRUFDdEUsVUFBVSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFBQSxFQUM1QyxNQUFNLFFBQVEsU0FBUyxLQUFLO0FBQUEsRUFDNUIsTUFBTSxXQUFXLFFBQ2hCLE9BQU8sRUFBRSxPQUFPLE1BQU0sT0FBTyxPQUFPLE1BQU0sTUFBTSxJQUNoRCxDQUFDLEtBQUssQ0FDUDtBQUFBLEVBQ0EsT0FBTyxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVE7QUFBQTtBQVk1QixTQUFTLFNBQWUsQ0FDOUIsTUFDQSxPQUNBLFdBQWtDLENBQUMsR0FDbEI7QUFBQSxFQUNqQixNQUFNLFFBQVEsUUFBUSxNQUFNLElBQUksYUFBWSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFBQSxFQUN6RCxNQUFNLFlBQVksUUFBUTtBQUFBLEVBRzFCLFVBQVUsTUFBTTtBQUFBLElBQ2YsTUFBTSxTQUFTLEtBQUs7QUFBQSxHQUNwQjtBQUFBLEVBQ0QsVUFBVSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFBQSxFQUM1QyxPQUFPLFNBQVMsS0FBSztBQUFBO0FBU2YsU0FBUyxPQUFzQyxDQUNyRCxNQUNBLElBQ0EsU0FJQztBQUFBLEVBQ0QsT0FBTyxTQUFTLFNBQVMsTUFBTSxXQUFXLENBQUMsQ0FBQztBQUFBLEVBQzVDLE1BQU0sUUFBUSxRQUNiLE1BQ0MsSUFBSSxXQUNILE1BQ0EsSUFDQSxLQUNELEdBQ0QsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUNqQjtBQUFBLEVBRUEsVUFBVSxNQUFNLE1BQU0sTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFBQSxFQUM1QyxPQUFPLENBQUMsU0FBUyxLQUFLLEdBQUcsS0FBSztBQUFBO0FBT3hCLFNBQVMsWUFBZSxDQUM5QixPQUNBLFVBQXVDLENBQUMsR0FDVTtBQUFBLEVBQ2xELE1BQU0sT0FBTyxRQUFRLFNBQVM7QUFBQSxFQUM5QixVQUFVLE1BQU07QUFBQSxJQUNmLElBQUksTUFBTTtBQUFBLE1BQ0osTUFBTSxRQUFRO0FBQUEsSUFDcEI7QUFBQSxJQUNBLE9BQU8sTUFBTSxNQUFNLE1BQU07QUFBQSxLQUN2QixDQUFDLE9BQU8sSUFBSSxDQUFDO0FBQUEsRUFDaEIsT0FBTyxDQUFDLFNBQVMsS0FBSyxHQUFHLEtBQUs7QUFBQTsiLAogICJkZWJ1Z0lkIjogIkFGNDAyQjkzMjczODRDN0I2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// src/errors.ts
|
|
2
|
+
class QgisSdkError2 extends Error {
|
|
3
|
+
code;
|
|
4
|
+
constructor(message, code = "sdk_error") {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = new.target.name;
|
|
7
|
+
this.code = code;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { QgisSdkError2 };
|
|
12
|
+
|
|
13
|
+
//# debugId=87B5084359C9044664756E2164756E21
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2Vycm9ycy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICIvKipcbiAqIFRoZSBvbmUgZXJyb3Igcm9vdCBvZiBgQGFyY2hvbnQ1NjEvcWdpcy1zZGtgLlxuICpcbiAqIEV2ZXJ5IGVycm9yIHRoaXMgcGFja2FnZSByYWlzZXMgLSB0cmFuc3BvcnQsIGhvc3QgY29udHJhY3QsIFJlYWN0IGJpbmRpbmcsXG4gKiB0ZXN0IGhhcm5lc3MgLSBleHRlbmRzIGBRZ2lzU2RrRXJyb3JgLCBzbyBhIHBhZ2UgY2FuIGNhdGNoIHRoZSBmYW1pbHkgaW4gb25lXG4gKiBgaW5zdGFuY2VvZmAgYW5kIHN3aXRjaCBvbiB0aGUgc3RhYmxlIHdpcmUgYGNvZGVgIHJhdGhlciB0aGFuIG9uIGNsYXNzIG5hbWVzXG4gKiBvciBtZXNzYWdlIHRleHQuIFRoZSBjbGFzcyBsaXZlcyBpbiBpdHMgb3duIG1vZHVsZSBzbyB0aGUgZW50cnkgcG9pbnRzIGNhblxuICogc2hhcmUgaXQgd2l0aG91dCBpbXBvcnRpbmcgZWFjaCBvdGhlci5cbiAqL1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGV4cGVjdGVkIFNESyBlcnJvcnMgYWNyb3NzIHRoZSBicmlkZ2UgYm91bmRhcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBRZ2lzU2RrRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG5cdHB1YmxpYyByZWFkb25seSBjb2RlOiBzdHJpbmc7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgY29kZTogc3RyaW5nID0gXCJzZGtfZXJyb3JcIikge1xuXHRcdHN1cGVyKG1lc3NhZ2UpO1xuXHRcdHRoaXMubmFtZSA9IG5ldy50YXJnZXQubmFtZTtcblx0XHR0aGlzLmNvZGUgPSBjb2RlO1xuXHR9XG59XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBYU8sTUFBTSxzQkFBcUIsTUFBTTtBQUFBLEVBQ3ZCO0FBQUEsRUFFVCxXQUFXLENBQUMsU0FBaUIsT0FBZSxhQUFhO0FBQUEsSUFDL0QsTUFBTSxPQUFPO0FBQUEsSUFDYixLQUFLLE9BQU8sV0FBVztBQUFBLElBQ3ZCLEtBQUssT0FBTztBQUFBO0FBRWQ7IiwKICAiZGVidWdJZCI6ICI4N0I1MDg0MzU5QzkwNDQ2NjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
|