@fgv/ts-json 1.9.4 → 1.9.6

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,47 @@
1
+ import { DetailedResult, Result } from '@fgv/ts-utils';
2
+ import { JsonContext, JsonReferenceMap, JsonReferenceMapFailureReason } from './jsonContext';
3
+ import { JsonObject, JsonValue } from './common';
4
+ /**
5
+ * A CompositeJsonMap presents a composed view of one or more other
6
+ * JsonReferenceMaps.
7
+ */
8
+ export declare class CompositeJsonMap implements JsonReferenceMap {
9
+ protected _maps: JsonReferenceMap[];
10
+ protected constructor(maps: JsonReferenceMap[]);
11
+ /**
12
+ * Creates a new @see CompositeJsonMap from the supplied maps
13
+ * @param maps one or more object maps to be composed
14
+ */
15
+ static create(maps: JsonReferenceMap[]): Result<CompositeJsonMap>;
16
+ /**
17
+ * Determine if a key might be valid for this map but does not determine
18
+ * if key actually exists. Allows key range to be constrained.
19
+ * @param key key to be tested
20
+ * @returns true if the key is in the valid range, false otherwise.
21
+ */
22
+ keyIsInRange(key: string): boolean;
23
+ /**
24
+ * Determines if an object with the specified key actually exists in the map.
25
+ * @param key key to be tested
26
+ * @returns true if an object with the specified key exists, false otherwise.
27
+ */
28
+ has(key: string): boolean;
29
+ /**
30
+ * Gets a JSON object specified by key.
31
+ * @param key key of the object to be retrieved
32
+ * @param context optional @see JsonContext used to format the object
33
+ * @returns Success with the formatted object if successful. Failure with detail 'unknown'
34
+ * if no such object exists, or failure with detail 'error' if the object was found but
35
+ * could not be formatted.
36
+ */
37
+ getJsonObject(key: string, context?: JsonContext): DetailedResult<JsonObject, JsonReferenceMapFailureReason>;
38
+ /**
39
+ * Gets a JSON value specified by key.
40
+ * @param key key of the object to be retrieved
41
+ * @param context Optional @see JsonContext used to format the value
42
+ * @returns Success with the formatted object if successful. Failure with detail 'unknown'
43
+ * if no such object exists, or failure with detail 'error' if the object was found but
44
+ * could not be formatted.
45
+ */
46
+ getJsonValue(key: string, context?: JsonContext): DetailedResult<JsonValue, JsonReferenceMapFailureReason>;
47
+ }
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2020 Erik Fortune
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all
13
+ * copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.CompositeJsonMap = void 0;
25
+ const ts_utils_1 = require("@fgv/ts-utils");
26
+ const common_1 = require("./common");
27
+ /**
28
+ * A CompositeJsonMap presents a composed view of one or more other
29
+ * JsonReferenceMaps.
30
+ */
31
+ class CompositeJsonMap {
32
+ constructor(maps) {
33
+ this._maps = maps;
34
+ }
35
+ /**
36
+ * Creates a new @see CompositeJsonMap from the supplied maps
37
+ * @param maps one or more object maps to be composed
38
+ */
39
+ static create(maps) {
40
+ return (0, ts_utils_1.captureResult)(() => new CompositeJsonMap(maps));
41
+ }
42
+ /**
43
+ * Determine if a key might be valid for this map but does not determine
44
+ * if key actually exists. Allows key range to be constrained.
45
+ * @param key key to be tested
46
+ * @returns true if the key is in the valid range, false otherwise.
47
+ */
48
+ keyIsInRange(key) {
49
+ return this._maps.find((map) => map.keyIsInRange(key)) !== undefined;
50
+ }
51
+ /**
52
+ * Determines if an object with the specified key actually exists in the map.
53
+ * @param key key to be tested
54
+ * @returns true if an object with the specified key exists, false otherwise.
55
+ */
56
+ has(key) {
57
+ return this._maps.find((map) => map.has(key)) !== undefined;
58
+ }
59
+ /**
60
+ * Gets a JSON object specified by key.
61
+ * @param key key of the object to be retrieved
62
+ * @param context optional @see JsonContext used to format the object
63
+ * @returns Success with the formatted object if successful. Failure with detail 'unknown'
64
+ * if no such object exists, or failure with detail 'error' if the object was found but
65
+ * could not be formatted.
66
+ */
67
+ getJsonObject(key, context) {
68
+ return this.getJsonValue(key, context).onSuccess((jv) => {
69
+ if (!(0, common_1.isJsonObject)(jv)) {
70
+ return (0, ts_utils_1.failWithDetail)(`${key}: not an object`, 'error');
71
+ }
72
+ return (0, ts_utils_1.succeedWithDetail)(jv);
73
+ });
74
+ }
75
+ /**
76
+ * Gets a JSON value specified by key.
77
+ * @param key key of the object to be retrieved
78
+ * @param context Optional @see JsonContext used to format the value
79
+ * @returns Success with the formatted object if successful. Failure with detail 'unknown'
80
+ * if no such object exists, or failure with detail 'error' if the object was found but
81
+ * could not be formatted.
82
+ */
83
+ // eslint-disable-next-line no-use-before-define
84
+ getJsonValue(key, context) {
85
+ for (const map of this._maps) {
86
+ if (map.keyIsInRange(key)) {
87
+ const result = map.getJsonValue(key, context);
88
+ if (result.isSuccess() || (result.detail === 'error')) {
89
+ return result;
90
+ }
91
+ }
92
+ }
93
+ return (0, ts_utils_1.failWithDetail)(`${key}: value not found`, 'unknown');
94
+ }
95
+ }
96
+ exports.CompositeJsonMap = CompositeJsonMap;
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlSnNvbk1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb3NpdGVKc29uTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQUF5RztBQUV6RyxxQ0FBK0Q7QUFFL0Q7OztHQUdHO0FBQ0gsTUFBYSxnQkFBZ0I7SUFHekIsWUFBc0IsSUFBd0I7UUFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBd0I7UUFDekMsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFlBQVksQ0FBQyxHQUFXO1FBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxHQUFHLENBQUMsR0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0ksYUFBYSxDQUFDLEdBQVcsRUFBRSxPQUFxQjtRQUNuRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3BELElBQUksQ0FBQyxJQUFBLHFCQUFZLEVBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ25CLE9BQU8sSUFBQSx5QkFBYyxFQUFDLEdBQUcsR0FBRyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQzthQUMzRDtZQUNELE9BQU8sSUFBQSw0QkFBaUIsRUFBQyxFQUFFLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsZ0RBQWdEO0lBQ3pDLFlBQVksQ0FBQyxHQUFXLEVBQUUsT0FBcUI7UUFDbEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzFCLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkIsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsRUFBRTtvQkFDbkQsT0FBTyxNQUFNLENBQUM7aUJBQ2pCO2FBQ0o7U0FDSjtRQUNELE9BQU8sSUFBQSx5QkFBYyxFQUFDLEdBQUcsR0FBRyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBQ0o7QUF2RUQsNENBdUVDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IERldGFpbGVkUmVzdWx0LCBSZXN1bHQsIGNhcHR1cmVSZXN1bHQsIGZhaWxXaXRoRGV0YWlsLCBzdWNjZWVkV2l0aERldGFpbCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgSnNvbkNvbnRleHQsIEpzb25SZWZlcmVuY2VNYXAsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uIH0gZnJvbSAnLi9qc29uQ29udGV4dCc7XG5pbXBvcnQgeyBKc29uT2JqZWN0LCBKc29uVmFsdWUsIGlzSnNvbk9iamVjdCB9IGZyb20gJy4vY29tbW9uJztcblxuLyoqXG4gKiBBIENvbXBvc2l0ZUpzb25NYXAgcHJlc2VudHMgYSBjb21wb3NlZCB2aWV3IG9mIG9uZSBvciBtb3JlIG90aGVyXG4gKiBKc29uUmVmZXJlbmNlTWFwcy5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbXBvc2l0ZUpzb25NYXAgaW1wbGVtZW50cyBKc29uUmVmZXJlbmNlTWFwIHtcbiAgICBwcm90ZWN0ZWQgX21hcHM6IEpzb25SZWZlcmVuY2VNYXBbXTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihtYXBzOiBKc29uUmVmZXJlbmNlTWFwW10pIHtcbiAgICAgICAgdGhpcy5fbWFwcyA9IG1hcHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBAc2VlIENvbXBvc2l0ZUpzb25NYXAgZnJvbSB0aGUgc3VwcGxpZWQgbWFwc1xuICAgICAqIEBwYXJhbSBtYXBzIG9uZSBvciBtb3JlIG9iamVjdCBtYXBzIHRvIGJlIGNvbXBvc2VkXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUobWFwczogSnNvblJlZmVyZW5jZU1hcFtdKTogUmVzdWx0PENvbXBvc2l0ZUpzb25NYXA+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IENvbXBvc2l0ZUpzb25NYXAobWFwcykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiBhIGtleSBtaWdodCBiZSB2YWxpZCBmb3IgdGhpcyBtYXAgYnV0IGRvZXMgbm90IGRldGVybWluZVxuICAgICAqIGlmIGtleSBhY3R1YWxseSBleGlzdHMuIEFsbG93cyBrZXkgcmFuZ2UgdG8gYmUgY29uc3RyYWluZWQuXG4gICAgICogQHBhcmFtIGtleSBrZXkgdG8gYmUgdGVzdGVkXG4gICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IGlzIGluIHRoZSB2YWxpZCByYW5nZSwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBrZXlJc0luUmFuZ2Uoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcHMuZmluZCgobWFwKSA9PiBtYXAua2V5SXNJblJhbmdlKGtleSkpICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGtleSBhY3R1YWxseSBleGlzdHMgaW4gdGhlIG1hcC5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSB0byBiZSB0ZXN0ZWRcbiAgICAgKiBAcmV0dXJucyB0cnVlIGlmIGFuIG9iamVjdCB3aXRoIHRoZSBzcGVjaWZpZWQga2V5IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcHMuZmluZCgobWFwKSA9PiBtYXAuaGFzKGtleSkpICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gb2JqZWN0IHNwZWNpZmllZCBieSBrZXkuXG4gICAgICogQHBhcmFtIGtleSBrZXkgb2YgdGhlIG9iamVjdCB0byBiZSByZXRyaWV2ZWRcbiAgICAgKiBAcGFyYW0gY29udGV4dCBvcHRpb25hbCBAc2VlIEpzb25Db250ZXh0IHVzZWQgdG8gZm9ybWF0IHRoZSBvYmplY3RcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggdGhlIGZvcm1hdHRlZCBvYmplY3QgaWYgc3VjY2Vzc2Z1bC4gRmFpbHVyZSB3aXRoIGRldGFpbCAndW5rbm93bidcbiAgICAgKiBpZiBubyBzdWNoIG9iamVjdCBleGlzdHMsIG9yIGZhaWx1cmUgd2l0aCBkZXRhaWwgJ2Vycm9yJyBpZiB0aGUgb2JqZWN0IHdhcyBmb3VuZCBidXRcbiAgICAgKiBjb3VsZCBub3QgYmUgZm9ybWF0dGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRKc29uT2JqZWN0KGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uT2JqZWN0LCBKc29uUmVmZXJlbmNlTWFwRmFpbHVyZVJlYXNvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRKc29uVmFsdWUoa2V5LCBjb250ZXh0KS5vblN1Y2Nlc3MoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWlzSnNvbk9iamVjdChqdikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFpbFdpdGhEZXRhaWwoYCR7a2V5fTogbm90IGFuIG9iamVjdGAsICdlcnJvcicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWRXaXRoRGV0YWlsKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEpTT04gdmFsdWUgc3BlY2lmaWVkIGJ5IGtleS5cbiAgICAgKiBAcGFyYW0ga2V5IGtleSBvZiB0aGUgb2JqZWN0IHRvIGJlIHJldHJpZXZlZFxuICAgICAqIEBwYXJhbSBjb250ZXh0IE9wdGlvbmFsIEBzZWUgSnNvbkNvbnRleHQgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlXG4gICAgICogQHJldHVybnMgU3VjY2VzcyB3aXRoIHRoZSBmb3JtYXR0ZWQgb2JqZWN0IGlmIHN1Y2Nlc3NmdWwuIEZhaWx1cmUgd2l0aCBkZXRhaWwgJ3Vua25vd24nXG4gICAgICogaWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBmYWlsdXJlIHdpdGggZGV0YWlsICdlcnJvcicgaWYgdGhlIG9iamVjdCB3YXMgZm91bmQgYnV0XG4gICAgICogY291bGQgbm90IGJlIGZvcm1hdHRlZC5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICBwdWJsaWMgZ2V0SnNvblZhbHVlKGtleTogc3RyaW5nLCBjb250ZXh0PzogSnNvbkNvbnRleHQpOiBEZXRhaWxlZFJlc3VsdDxKc29uVmFsdWUsIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uPiB7XG4gICAgICAgIGZvciAoY29uc3QgbWFwIG9mIHRoaXMuX21hcHMpIHtcbiAgICAgICAgICAgIGlmIChtYXAua2V5SXNJblJhbmdlKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBtYXAuZ2V0SnNvblZhbHVlKGtleSwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1N1Y2Nlc3MoKSB8fCAocmVzdWx0LmRldGFpbCA9PT0gJ2Vycm9yJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhaWxXaXRoRGV0YWlsKGAke2tleX06IHZhbHVlIG5vdCBmb3VuZGAsICd1bmtub3duJyk7XG4gICAgfVxufVxuIl19
package/contextHelpers.js CHANGED
@@ -24,7 +24,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.JsonContextHelper = void 0;
25
25
  const jsonContext_1 = require("./jsonContext");
26
26
  const ts_utils_1 = require("@fgv/ts-utils");
27
- const jsonReferenceMap_1 = require("./jsonReferenceMap");
27
+ const compositeJsonMap_1 = require("./compositeJsonMap");
28
28
  class JsonContextHelper {
29
29
  constructor(context) {
30
30
  this._context = context;
@@ -44,7 +44,7 @@ class JsonContextHelper {
44
44
  if (refs && (refs.length > 0)) {
45
45
  const full = (baseContext === null || baseContext === void 0 ? void 0 : baseContext.refs) ? [...refs, baseContext.refs] : refs;
46
46
  if (full.length > 1) {
47
- return jsonReferenceMap_1.CompositeJsonMap.create(full);
47
+ return compositeJsonMap_1.CompositeJsonMap.create(full);
48
48
  }
49
49
  return (0, ts_utils_1.succeed)(full[0]);
50
50
  }
@@ -98,4 +98,4 @@ class JsonContextHelper {
98
98
  }
99
99
  }
100
100
  exports.JsonContextHelper = JsonContextHelper;
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dEhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dEhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsK0NBQThHO0FBQzlHLDRDQUErRDtBQUMvRCx5REFBc0Q7QUFFdEQsTUFBYSxpQkFBaUI7SUFHMUIsWUFBbUIsT0FBcUI7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBcUI7UUFDdEMsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsV0FBa0MsRUFBRSxJQUFzQjs7UUFDdEYsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFVBQVUsbUNBQUksK0JBQWlCLENBQUM7WUFDNUQsT0FBTyxNQUFNLENBQUMsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsSUFBSSxtQ0FBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDaEQ7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxXQUFrQyxFQUFFLElBQXlCO1FBQ3pGLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtZQUMzQixNQUFNLElBQUksR0FBRyxDQUFBLFdBQVcsYUFB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QyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxhQUFhLENBQUMsR0FBMkQ7UUFDNUUsT0FBTyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQW1CO1FBQ25DLE9BQU8saUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNKO0FBaEZELDhDQWdGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgVGVtcGxhdGVWYXJzLCBWYXJpYWJsZVZhbHVlLCBkZWZhdWx0RXh0ZW5kVmFycyB9IGZyb20gJy4vanNvbkNvbnRleHQnO1xuaW1wb3J0IHsgUmVzdWx0LCBjYXB0dXJlUmVzdWx0LCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBDb21wb3NpdGVKc29uTWFwIH0gZnJvbSAnLi9qc29uUmVmZXJlbmNlTWFwJztcblxuZXhwb3J0IGNsYXNzIEpzb25Db250ZXh0SGVscGVyIHtcbiAgICBwcm90ZWN0ZWQgX2NvbnRleHQ/OiBKc29uQ29udGV4dDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb250ZXh0PzogSnNvbkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoY29udGV4dD86IEpzb25Db250ZXh0KTogUmVzdWx0PEpzb25Db250ZXh0SGVscGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uQ29udGV4dEhlbHBlcihjb250ZXh0KSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHRlbmRDb250ZXh0VmFycyhiYXNlQ29udGV4dDogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCB2YXJzPzogVmFyaWFibGVWYWx1ZVtdKTogUmVzdWx0PFRlbXBsYXRlVmFyc3x1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHZhcnMgJiYgKHZhcnMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZCA9IGJhc2VDb250ZXh0Py5leHRlbmRWYXJzID8/IGRlZmF1bHRFeHRlbmRWYXJzO1xuICAgICAgICAgICAgcmV0dXJuIGV4dGVuZChiYXNlQ29udGV4dD8udmFycyA/PyB7fSwgdmFycyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoYmFzZUNvbnRleHQ/LnZhcnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXh0ZW5kQ29udGV4dFJlZnMoYmFzZUNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCwgcmVmcz86IEpzb25SZWZlcmVuY2VNYXBbXSk6IFJlc3VsdDxKc29uUmVmZXJlbmNlTWFwfHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAocmVmcyAmJiAocmVmcy5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgY29uc3QgZnVsbCA9IGJhc2VDb250ZXh0Py5yZWZzID8gWy4uLnJlZnMsIGJhc2VDb250ZXh0LnJlZnNdIDogcmVmcztcbiAgICAgICAgICAgIGlmIChmdWxsLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9zaXRlSnNvbk1hcC5jcmVhdGUoZnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChmdWxsWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChiYXNlQ29udGV4dD8ucmVmcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHRlbmRDb250ZXh0KGJhc2VDb250ZXh0PzogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCBhZGQ/OiB7IHZhcnM/OiBWYXJpYWJsZVZhbHVlW10sIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwW10gfSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHRWYXJzKGJhc2VDb250ZXh0LCBhZGQ/LnZhcnMgfHwgW10pLm9uU3VjY2VzcygodmFycykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHRSZWZzKGJhc2VDb250ZXh0LCBhZGQ/LnJlZnMgfHwgW10pLm9uU3VjY2VzcygocmVmcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdmFycyAmJiAhcmVmcyAmJiAhYmFzZUNvbnRleHQ/LmV4dGVuZFZhcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcnRybjogSnNvbkNvbnRleHQgPSB7IHZhcnMsIHJlZnMgfTtcbiAgICAgICAgICAgICAgICBpZiAoYmFzZUNvbnRleHQ/LmV4dGVuZFZhcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcnRybi5leHRlbmRWYXJzID0gYmFzZUNvbnRleHQuZXh0ZW5kVmFycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQocnRybik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZUNvbnRleHQoYmFzZUNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCwgYWRkOiBKc29uQ29udGV4dHx1bmRlZmluZWQpOiBSZXN1bHQ8SnNvbkNvbnRleHR8dW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChiYXNlQ29udGV4dCkge1xuICAgICAgICAgICAgaWYgKGFkZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJ0cm46IEpzb25Db250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICB2YXJzOiBhZGQudmFycyA/PyBiYXNlQ29udGV4dC52YXJzLFxuICAgICAgICAgICAgICAgICAgICByZWZzOiBhZGQucmVmcyA/PyBiYXNlQ29udGV4dC5yZWZzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGFkZC5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJ0cm4uZXh0ZW5kVmFycyA9IGFkZC5leHRlbmRWYXJzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChiYXNlQ29udGV4dC5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJ0cm4uZXh0ZW5kVmFycyA9IGJhc2VDb250ZXh0LmV4dGVuZFZhcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHJ0cm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoYmFzZUNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKGFkZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4dGVuZFZhcnModmFycz86IFZhcmlhYmxlVmFsdWVbXSk6IFJlc3VsdDxUZW1wbGF0ZVZhcnN8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5leHRlbmRDb250ZXh0VmFycyh0aGlzLl9jb250ZXh0LCB2YXJzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXh0ZW5kUmVmcyhyZWZzPzogSnNvblJlZmVyZW5jZU1hcFtdKTogUmVzdWx0PEpzb25SZWZlcmVuY2VNYXB8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5leHRlbmRDb250ZXh0UmVmcyh0aGlzLl9jb250ZXh0LCByZWZzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXh0ZW5kQ29udGV4dChhZGQ/OiB7IHZhcnM/OiBWYXJpYWJsZVZhbHVlW10sIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwW10gfSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHQodGhpcy5fY29udGV4dCwgYWRkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVyZ2VDb250ZXh0KG1lcmdlPzogSnNvbkNvbnRleHQpOiBSZXN1bHQ8SnNvbkNvbnRleHR8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5tZXJnZUNvbnRleHQodGhpcy5fY29udGV4dCwgbWVyZ2UpO1xuICAgIH1cbn1cbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dEhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29udGV4dEhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBRUgsK0NBQThHO0FBQzlHLDRDQUErRDtBQUMvRCx5REFBc0Q7QUFFdEQsTUFBYSxpQkFBaUI7SUFHMUIsWUFBbUIsT0FBcUI7UUFDcEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBcUI7UUFDdEMsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsV0FBa0MsRUFBRSxJQUFzQjs7UUFDdEYsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLFVBQVUsbUNBQUksK0JBQWlCLENBQUM7WUFDNUQsT0FBTyxNQUFNLENBQUMsTUFBQSxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsSUFBSSxtQ0FBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDaEQ7UUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxXQUFXLGFBQVgsV0FBVyx1QkFBWCxXQUFXLENBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxXQUFrQyxFQUFFLElBQXlCO1FBQ3pGLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtZQUMzQixNQUFNLElBQUksR0FBRyxDQUFBLFdBQVcsYUFB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QyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxhQUFhLENBQUMsR0FBMkQ7UUFDNUUsT0FBTyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQW1CO1FBQ25DLE9BQU8saUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNKO0FBaEZELDhDQWdGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgeyBKc29uQ29udGV4dCwgSnNvblJlZmVyZW5jZU1hcCwgVGVtcGxhdGVWYXJzLCBWYXJpYWJsZVZhbHVlLCBkZWZhdWx0RXh0ZW5kVmFycyB9IGZyb20gJy4vanNvbkNvbnRleHQnO1xuaW1wb3J0IHsgUmVzdWx0LCBjYXB0dXJlUmVzdWx0LCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBDb21wb3NpdGVKc29uTWFwIH0gZnJvbSAnLi9jb21wb3NpdGVKc29uTWFwJztcblxuZXhwb3J0IGNsYXNzIEpzb25Db250ZXh0SGVscGVyIHtcbiAgICBwcm90ZWN0ZWQgX2NvbnRleHQ/OiBKc29uQ29udGV4dDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb250ZXh0PzogSnNvbkNvbnRleHQpIHtcbiAgICAgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoY29udGV4dD86IEpzb25Db250ZXh0KTogUmVzdWx0PEpzb25Db250ZXh0SGVscGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uQ29udGV4dEhlbHBlcihjb250ZXh0KSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHRlbmRDb250ZXh0VmFycyhiYXNlQ29udGV4dDogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCB2YXJzPzogVmFyaWFibGVWYWx1ZVtdKTogUmVzdWx0PFRlbXBsYXRlVmFyc3x1bmRlZmluZWQ+IHtcbiAgICAgICAgaWYgKHZhcnMgJiYgKHZhcnMubGVuZ3RoID4gMCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZCA9IGJhc2VDb250ZXh0Py5leHRlbmRWYXJzID8/IGRlZmF1bHRFeHRlbmRWYXJzO1xuICAgICAgICAgICAgcmV0dXJuIGV4dGVuZChiYXNlQ29udGV4dD8udmFycyA/PyB7fSwgdmFycyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1Y2NlZWQoYmFzZUNvbnRleHQ/LnZhcnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZXh0ZW5kQ29udGV4dFJlZnMoYmFzZUNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCwgcmVmcz86IEpzb25SZWZlcmVuY2VNYXBbXSk6IFJlc3VsdDxKc29uUmVmZXJlbmNlTWFwfHVuZGVmaW5lZD4ge1xuICAgICAgICBpZiAocmVmcyAmJiAocmVmcy5sZW5ndGggPiAwKSkge1xuICAgICAgICAgICAgY29uc3QgZnVsbCA9IGJhc2VDb250ZXh0Py5yZWZzID8gWy4uLnJlZnMsIGJhc2VDb250ZXh0LnJlZnNdIDogcmVmcztcbiAgICAgICAgICAgIGlmIChmdWxsLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29tcG9zaXRlSnNvbk1hcC5jcmVhdGUoZnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZChmdWxsWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VjY2VlZChiYXNlQ29udGV4dD8ucmVmcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBleHRlbmRDb250ZXh0KGJhc2VDb250ZXh0PzogSnNvbkNvbnRleHR8dW5kZWZpbmVkLCBhZGQ/OiB7IHZhcnM/OiBWYXJpYWJsZVZhbHVlW10sIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwW10gfSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHRWYXJzKGJhc2VDb250ZXh0LCBhZGQ/LnZhcnMgfHwgW10pLm9uU3VjY2VzcygodmFycykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHRSZWZzKGJhc2VDb250ZXh0LCBhZGQ/LnJlZnMgfHwgW10pLm9uU3VjY2VzcygocmVmcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdmFycyAmJiAhcmVmcyAmJiAhYmFzZUNvbnRleHQ/LmV4dGVuZFZhcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcnRybjogSnNvbkNvbnRleHQgPSB7IHZhcnMsIHJlZnMgfTtcbiAgICAgICAgICAgICAgICBpZiAoYmFzZUNvbnRleHQ/LmV4dGVuZFZhcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcnRybi5leHRlbmRWYXJzID0gYmFzZUNvbnRleHQuZXh0ZW5kVmFycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQocnRybik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtZXJnZUNvbnRleHQoYmFzZUNvbnRleHQ6IEpzb25Db250ZXh0fHVuZGVmaW5lZCwgYWRkOiBKc29uQ29udGV4dHx1bmRlZmluZWQpOiBSZXN1bHQ8SnNvbkNvbnRleHR8dW5kZWZpbmVkPiB7XG4gICAgICAgIGlmIChiYXNlQ29udGV4dCkge1xuICAgICAgICAgICAgaWYgKGFkZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJ0cm46IEpzb25Db250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICB2YXJzOiBhZGQudmFycyA/PyBiYXNlQ29udGV4dC52YXJzLFxuICAgICAgICAgICAgICAgICAgICByZWZzOiBhZGQucmVmcyA/PyBiYXNlQ29udGV4dC5yZWZzLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKGFkZC5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJ0cm4uZXh0ZW5kVmFycyA9IGFkZC5leHRlbmRWYXJzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChiYXNlQ29udGV4dC5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJ0cm4uZXh0ZW5kVmFycyA9IGJhc2VDb250ZXh0LmV4dGVuZFZhcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHJ0cm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoYmFzZUNvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdWNjZWVkKGFkZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGV4dGVuZFZhcnModmFycz86IFZhcmlhYmxlVmFsdWVbXSk6IFJlc3VsdDxUZW1wbGF0ZVZhcnN8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5leHRlbmRDb250ZXh0VmFycyh0aGlzLl9jb250ZXh0LCB2YXJzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXh0ZW5kUmVmcyhyZWZzPzogSnNvblJlZmVyZW5jZU1hcFtdKTogUmVzdWx0PEpzb25SZWZlcmVuY2VNYXB8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5leHRlbmRDb250ZXh0UmVmcyh0aGlzLl9jb250ZXh0LCByZWZzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZXh0ZW5kQ29udGV4dChhZGQ/OiB7IHZhcnM/OiBWYXJpYWJsZVZhbHVlW10sIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwW10gfSk6IFJlc3VsdDxKc29uQ29udGV4dHx1bmRlZmluZWQ+IHtcbiAgICAgICAgcmV0dXJuIEpzb25Db250ZXh0SGVscGVyLmV4dGVuZENvbnRleHQodGhpcy5fY29udGV4dCwgYWRkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVyZ2VDb250ZXh0KG1lcmdlPzogSnNvbkNvbnRleHQpOiBSZXN1bHQ8SnNvbkNvbnRleHR8dW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBKc29uQ29udGV4dEhlbHBlci5tZXJnZUNvbnRleHQodGhpcy5fY29udGV4dCwgbWVyZ2UpO1xuICAgIH1cbn1cbiJdfQ==
package/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  export * from './common';
2
2
  export * from './jsonConverter';
3
3
  export * from './jsonEditor/jsonEditor';
4
- export { JsonEditorOptions, JsonEditorValidationOptions } from './jsonEditor/jsonEditorState';
4
+ export { JsonEditorOptions, JsonEditorValidationOptions } from './jsonEditor/common';
5
5
  export * as EditorRules from './jsonEditor/rules';
6
- export { CompositeJsonMap, PrefixedJsonMap, SimpleJsonMap, } from './jsonReferenceMap';
6
+ export { CompositeJsonMap, } from './compositeJsonMap';
7
+ export { PrefixedJsonMap, SimpleJsonMap, } from './jsonReferenceMap';
7
8
  export { JsonReferenceMap, JsonReferenceMapFailureReason, TemplateVars, JsonContext, } from './jsonContext';
8
9
  export * as Converters from './converters';
9
10
  export * as File from './file';
package/index.js CHANGED
@@ -52,10 +52,11 @@ __exportStar(require("./common"), exports);
52
52
  __exportStar(require("./jsonConverter"), exports);
53
53
  __exportStar(require("./jsonEditor/jsonEditor"), exports);
54
54
  exports.EditorRules = __importStar(require("./jsonEditor/rules"));
55
+ var compositeJsonMap_1 = require("./compositeJsonMap");
56
+ Object.defineProperty(exports, "CompositeJsonMap", { enumerable: true, get: function () { return compositeJsonMap_1.CompositeJsonMap; } });
55
57
  var jsonReferenceMap_1 = require("./jsonReferenceMap");
56
- Object.defineProperty(exports, "CompositeJsonMap", { enumerable: true, get: function () { return jsonReferenceMap_1.CompositeJsonMap; } });
57
58
  Object.defineProperty(exports, "PrefixedJsonMap", { enumerable: true, get: function () { return jsonReferenceMap_1.PrefixedJsonMap; } });
58
59
  Object.defineProperty(exports, "SimpleJsonMap", { enumerable: true, get: function () { return jsonReferenceMap_1.SimpleJsonMap; } });
59
60
  exports.Converters = __importStar(require("./converters"));
60
61
  exports.File = __importStar(require("./file"));
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwyQ0FBeUI7QUFDekIsa0RBQWdDO0FBQ2hDLDBEQUF3QztBQUV4QyxrRUFBa0Q7QUFDbEQsdURBSTRCO0FBSHhCLG9IQUFBLGdCQUFnQixPQUFBO0FBQ2hCLG1IQUFBLGVBQWUsT0FBQTtBQUNmLGlIQUFBLGFBQWEsT0FBQTtBQVFqQiwyREFBMkM7QUFDM0MsK0NBQStCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vanNvbkNvbnZlcnRlcic7XG5leHBvcnQgKiBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvcic7XG5leHBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucywgSnNvbkVkaXRvclZhbGlkYXRpb25PcHRpb25zIH0gZnJvbSAnLi9qc29uRWRpdG9yL2pzb25FZGl0b3JTdGF0ZSc7XG5leHBvcnQgKiBhcyBFZGl0b3JSdWxlcyBmcm9tICcuL2pzb25FZGl0b3IvcnVsZXMnO1xuZXhwb3J0IHtcbiAgICBDb21wb3NpdGVKc29uTWFwLFxuICAgIFByZWZpeGVkSnNvbk1hcCxcbiAgICBTaW1wbGVKc29uTWFwLFxufSBmcm9tICcuL2pzb25SZWZlcmVuY2VNYXAnO1xuZXhwb3J0IHtcbiAgICBKc29uUmVmZXJlbmNlTWFwLFxuICAgIEpzb25SZWZlcmVuY2VNYXBGYWlsdXJlUmVhc29uLFxuICAgIFRlbXBsYXRlVmFycyxcbiAgICBKc29uQ29udGV4dCxcbn0gZnJvbSAnLi9qc29uQ29udGV4dCc7XG5leHBvcnQgKiBhcyBDb252ZXJ0ZXJzIGZyb20gJy4vY29udmVydGVycyc7XG5leHBvcnQgKiBhcyBGaWxlIGZyb20gJy4vZmlsZSc7XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwyQ0FBeUI7QUFDekIsa0RBQWdDO0FBQ2hDLDBEQUF3QztBQUV4QyxrRUFBa0Q7QUFDbEQsdURBRTRCO0FBRHhCLG9IQUFBLGdCQUFnQixPQUFBO0FBRXBCLHVEQUc0QjtBQUZ4QixtSEFBQSxlQUFlLE9BQUE7QUFDZixpSEFBQSxhQUFhLE9BQUE7QUFRakIsMkRBQTJDO0FBQzNDLCtDQUErQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2NvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2pzb25Db252ZXJ0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9qc29uRWRpdG9yL2pzb25FZGl0b3InO1xuZXhwb3J0IHsgSnNvbkVkaXRvck9wdGlvbnMsIEpzb25FZGl0b3JWYWxpZGF0aW9uT3B0aW9ucyB9IGZyb20gJy4vanNvbkVkaXRvci9jb21tb24nO1xuZXhwb3J0ICogYXMgRWRpdG9yUnVsZXMgZnJvbSAnLi9qc29uRWRpdG9yL3J1bGVzJztcbmV4cG9ydCB7XG4gICAgQ29tcG9zaXRlSnNvbk1hcCxcbn0gZnJvbSAnLi9jb21wb3NpdGVKc29uTWFwJztcbmV4cG9ydCB7XG4gICAgUHJlZml4ZWRKc29uTWFwLFxuICAgIFNpbXBsZUpzb25NYXAsXG59IGZyb20gJy4vanNvblJlZmVyZW5jZU1hcCc7XG5leHBvcnQge1xuICAgIEpzb25SZWZlcmVuY2VNYXAsXG4gICAgSnNvblJlZmVyZW5jZU1hcEZhaWx1cmVSZWFzb24sXG4gICAgVGVtcGxhdGVWYXJzLFxuICAgIEpzb25Db250ZXh0LFxufSBmcm9tICcuL2pzb25Db250ZXh0JztcbmV4cG9ydCAqIGFzIENvbnZlcnRlcnMgZnJvbSAnLi9jb252ZXJ0ZXJzJztcbmV4cG9ydCAqIGFzIEZpbGUgZnJvbSAnLi9maWxlJztcbiJdfQ==
package/jsonConverter.js CHANGED
@@ -289,4 +289,4 @@ RichJsonConverter.richOptions = {
289
289
  ...ConditionalJsonConverter.conditionalOptions,
290
290
  useReferences: true,
291
291
  };
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQU91QjtBQUN2Qiw4Q0FLNEI7QUFDNUIscUNBQTBFO0FBQzFFLCtDQU11QjtBQUV2Qix3REFBcUQ7QUErR3JEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGdDQUFnQyxDQUFDLE9BQXVDOztJQUNwRixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLCtCQUFpQixDQUFDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLG1DQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQzdELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxtQkFBbUIsbUNBQUksWUFBWSxDQUFDLENBQUM7SUFFekUsTUFBTSxPQUFPLEdBQXlCO1FBQ2xDLGlCQUFpQixFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGlCQUFpQixtQ0FBSSxRQUFRO1FBQ3pE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cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgQmFzZUNvbnZlcnRlcixcbiAgICBDb252ZXJ0ZXIsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBzdWNjZWVkLFxufSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7XG4gICAgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZSxcbiAgICBNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGUsXG4gICAgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUsXG4gICAgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUsXG59IGZyb20gJy4vanNvbkVkaXRvci9ydWxlcyc7XG5pbXBvcnQgeyBKc29uQXJyYXksIEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBKc29uQ29udGV4dCxcbiAgICBKc29uUmVmZXJlbmNlTWFwLFxuICAgIFRlbXBsYXRlVmFycyxcbiAgICBUZW1wbGF0ZVZhcnNFeHRlbmRGdW5jdGlvbixcbiAgICBkZWZhdWx0RXh0ZW5kVmFycyxcbn0gZnJvbSAnLi9qc29uQ29udGV4dCc7XG5cbmltcG9ydCB7IEpzb25FZGl0b3IgfSBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvcic7XG5pbXBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucyB9IGZyb20gJy4vanNvbkVkaXRvci9qc29uRWRpdG9yU3RhdGUnO1xuaW1wb3J0IHsgSnNvbkVkaXRvclJ1bGUgfSBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvclJ1bGUnO1xuXG4vKipcbiAqIENvbnZlcnNpb24gb3B0aW9ucyBmb3IgSnNvbkNvbnZlcnRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Db252ZXJ0ZXJPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiB0ZW1wbGF0ZSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSxcbiAgICAgKiB0aGVuIHN0cmluZyBwcm9wZXJ0eSB2YWx1ZXMgd2lsbCBiZSByZW5kZXJlZCB1c2luZ1xuICAgICAqIG11c3RhY2hlIGFuZCB0aG9zZSB2YXJpYWJsZXMuIE90aGVyd2lzZSBzdHJpbmcgcHJvcGVydGllc1xuICAgICAqIGFyZSBjb3BpZWQgd2l0aG91dCBtb2RpZmljYXRpb24uXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byB0cnVlIGlmIHZhcnMgYXJlIHN1cHBsaWVkIHdpdGggb3B0aW9ucyxcbiAgICAgKiBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgdXNlVmFsdWVUZW1wbGF0ZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiB0ZW1wbGF0ZSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSxcbiAgICAgKiB0aGVuIHN0cmluZyBwcm9wZXJ0eSBuYW1lcyB3aWxsIGJlIHJlbmRlcmVkIHVzaW5nXG4gICAgICogbXVzdGFjaGUgYW5kIHRob3NlIHZhcmlhYmxlcy4gT3RoZXJ3aXNlIHN0cmluZyBwcm9wZXJ0aWVzXG4gICAgICogYXJlIGNvcGllZCB3aXRob3V0IG1vZGlmaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIHRydWUgaWYgdmFycyBhcmUgc3VwcGxpZWQgd2l0aCBvcHRpb25zLFxuICAgICAqIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICB1c2VOYW1lVGVtcGxhdGVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSBhbmQgaWYgdGVtcGxhdGUgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUsXG4gICAgICogdGhlbiBzdHJpbmcgcHJvcGVydHkgbmFtZXMgd2lsbCBiZSBjb25zaWRlcmVkIGZvclxuICAgICAqIGNvbmRpdGlvbmFscy5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgaXMgdG8gbWF0Y2ggdXNlTmFtZVRlbXBsYXRlc1xuICAgICAqL1xuICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIChkZWZhdWx0KSB0aGVuIHByb3BlcnRpZXMgd2l0aCB1bmNvbmRpdGlvbmFsIG5hbWVzXG4gICAgICogKHdoaWNoIHN0YXJ0IHdpdGggISkgYXJlIGZsYXR0ZW5lZC5cbiAgICAgKi9cbiAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgYW5kIGlmIGJvdGggdGVtcGxhdGUgdmFyaWFibGVzIGFuZCBhXG4gICAgICogY29udGV4dCBkZXJpdmF0aW9uIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhlbiBwcm9wZXJ0aWVzXG4gICAgICogd2hpY2ggbWF0Y2ggdGhlIG11bHRpLXZhbHVlIG5hbWUgcGF0dGVybiB3aWxsIGJlIGV4cGFuZGVkLlxuICAgICAqIERlZmF1bHQgbWF0Y2hlcyB1c2VOYW1lVGVtcGxhdGVzLlxuICAgICAqXG4gICAgICogRGVmYXVsdCBpcyB0cnVlIHVubGVzcyBleHRlbmRWYXJzIGlzIGV4cGxpY2l0bHkgc2V0IHRvXG4gICAgICogdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIHVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhcmlhYmxlcyAobXVzdGFjaGUgdmlldykgdXNlZCB0byByZW5kZXIgdGVtcGxhdGVkIHN0cmluZyBuYW1lc1xuICAgICAqIGFuZCBwcm9wZXJ0aWVzLiAgU2VlIHRoZSBtdXN0YWNoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIG9mIG11c3RhY2hlXG4gICAgICogc3ludGF4IGFuZCB0aGUgdGVtcGxhdGUgdmlldy5cbiAgICAgKi9cbiAgICB2YXJzPzogVGVtcGxhdGVWYXJzO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHVzZWQgdG8gZXh0ZW5kIHZhcmlhYmxlcyBmb3IgY2hpbGRyZW4gb2YgYW4gYXJyYXkgbm9kZSBkdXJpbmdcbiAgICAgKiBleHBhbnNpb24uIERlZmF1bHQgaXMgdG8gdXNlIGEgYnVpbHQtaW4gZXh0ZW5zaW9uIGZ1bmN0aW9uIHVubGVzc1xuICAgICAqIGV4dGVuZFZhcnMgaXMgZXhwbGljaXRseSBzZXQgdG8gdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIGV4dGVuZFZhcnM/OiBUZW1wbGF0ZVZhcnNFeHRlbmRGdW5jdGlvbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgYW5kIGlmIGEgcmVmZXJlbmNlcyBtYXAgaXMgc3VwcGxpZWQsIHRoZW5cbiAgICAgKiByZWZlcmVuY2VzIGluIHRoZSBzb3VyY2Ugb2JqZWN0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZSBpZiByZWZzIGFyZSBwcmVzZW50IGluIG9wdGlvbnMsIGZhbHNlXG4gICAgICogb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHVzZVJlZmVyZW5jZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBBbiBvcHRpb25hbCBvYmplY3QgbWFwIHVzZWQgdG8gaW5zZXJ0IGFueSByZWZlcmVuY2VzIGluIHRoZVxuICAgICAqIGNvbnZlcnRlZCBKU09OLlxuICAgICAqL1xuICAgIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdlcnJvcicgKGRlZmF1bHQpIHRoZW4gYW55IHByb3BlcnR5IG5hbWVcbiAgICAgKiB0aGF0IGlzIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGNhdXNlcyBhbiBlcnJvciBhbmQgc3RvcHNcbiAgICAgKiBjb252ZXJzaW9uLiAgSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdpZ25vcmUnLCB0aGVuIG5hbWVzIHdoaWNoXG4gICAgICogYXJlIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlOYW1lOiAnZXJyb3InfCdpZ25vcmUnO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlWYWx1ZSBpcyAnZXJyb3InIChkZWZhdWx0KSB0aGVuIGFueSBpbGxlZ2FsXG4gICAgICogcHJvcGVydHkgdmFsdWUgY2F1c2VzIGFuIGVycm9yIGFuZCBzdG9wcyBjb252ZXJzaW9uLiAgSWZcbiAgICAgKiBvbkludmFsaWRQcm9wZXJ0eVZhbHVlIGlzICdpZ25vcmUnIHRoZW4gYW55IGludmFsaWQgcHJvcGVydHlcbiAgICAgKiB2YWx1ZXMgYXJlIHNpbGVudGx5IGlnbm9yZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlWYWx1ZTogJ2Vycm9yJ3wnaWdub3JlJztcblxuICAgIC8qKlxuICAgICAqIElmIG9uVW5rbm93blByb3BlcnR5VmFsdWUgaXMgZXJyb3IsIHRoZW4gYW55IHByb3BlcnR5IHdpdGhcbiAgICAgKiB2YWx1ZSB1bmRlZmluZWQgd2lsbCBjYXVzZSBhbiBlcnJvciBhbmQgc3RvcCBjb252ZXJzaW9uLiAgSWZcbiAgICAgKiBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgaXMgJ2lnbm9yZScgKGRlZmF1bHQpIHRoZW4gYW55XG4gICAgICogcHJvcGVydHkgd2l0aCB2YWx1ZSB1bmRlZmluZWQgaXMgc2lsZW50bHkgaWdub3JlZC5cbiAgICAgKi9cbiAgICBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWU6ICdlcnJvcid8J2lnbm9yZSc7XG59XG5cbi8qKlxuICogTWVyZ2VzIGFuIG9wdGlvbmFsbHkgc3VwcGxpZWQgcGFydGlhbCBzZXQgb2Ygb3B0aW9ucyB3aXRoIHRoZSBkZWZhdWx0XG4gKiBjb252ZXJ0ZXIgb3B0aW9ucywgcHJvZHVjaW5nIGEgZnVsbHktcmVzb2x2ZWQgc2V0IG9mIENvbnZlcnRlck9wdGlvbnNcbiAqIGFuZCB0YWtpbmcgYWxsIGR5bmFtaWMgcnVsZXMgaW50byBhY2NvdW50IChlLmcuIHRlbXBsYXRlIHVzYWdlIGVuYWJsZWRcbiAqIGlmIHZhcmlhYmxlcyBhcmUgc3VwcGxpZWQgYW5kIGRpc2FibGVkIGlmIG5vdClcbiAqIEBwYXJhbSBwYXJ0aWFsIEFuIG9wdGlvbmFsIHBhcnRpYWwgQHNlZSBKc29uQ29udmVydGVyT3B0aW9ucyB0byBiZSBtZXJnZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRGVmYXVsdEpzb25Db252ZXJ0ZXJPcHRpb25zKHBhcnRpYWw/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IEpzb25Db252ZXJ0ZXJPcHRpb25zIHtcbiAgICBjb25zdCBoYXZlVmFycyA9IChwYXJ0aWFsPy52YXJzICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGhhdmVSZWZzID0gKHBhcnRpYWw/LnJlZnMgIT09IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZXh0ZW5kZXIgPSBwYXJ0aWFsPy5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpID8gcGFydGlhbC5leHRlbmRWYXJzIDogZGVmYXVsdEV4dGVuZFZhcnM7XG4gICAgY29uc3QgaGF2ZUV4dGVuZGVyID0gKGV4dGVuZGVyICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IG5hbWVzRGVmYXVsdCA9IChwYXJ0aWFsPy51c2VOYW1lVGVtcGxhdGVzID8/IGhhdmVWYXJzKTtcbiAgICBjb25zdCBjb25kaXRpb25zRGVmYXVsdCA9IChwYXJ0aWFsPy51c2VDb25kaXRpb25hbE5hbWVzID8/IG5hbWVzRGVmYXVsdCk7XG5cbiAgICBjb25zdCBvcHRpb25zOiBKc29uQ29udmVydGVyT3B0aW9ucyA9IHtcbiAgICAgICAgdXNlVmFsdWVUZW1wbGF0ZXM6IHBhcnRpYWw/LnVzZVZhbHVlVGVtcGxhdGVzID8/IGhhdmVWYXJzLFxuICAgICAgICB1c2VOYW1lVGVtcGxhdGVzOiBuYW1lc0RlZmF1bHQsXG4gICAgICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGNvbmRpdGlvbnNEZWZhdWx0LFxuICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogcGFydGlhbD8uZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXMgPz8gY29uZGl0aW9uc0RlZmF1bHQsXG4gICAgICAgIHVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzOiBwYXJ0aWFsPy51c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lcyA/PyAoaGF2ZUV4dGVuZGVyICYmIG5hbWVzRGVmYXVsdCksXG4gICAgICAgIHVzZVJlZmVyZW5jZXM6IHBhcnRpYWw/LnVzZVJlZmVyZW5jZXMgPz8gaGF2ZVJlZnMsXG4gICAgICAgIG9uSW52YWxpZFByb3BlcnR5TmFtZTogcGFydGlhbD8ub25JbnZhbGlkUHJvcGVydHlOYW1lID8/ICdlcnJvcicsXG4gICAgICAgIG9uSW52YWxpZFByb3BlcnR5VmFsdWU6IHBhcnRpYWw/Lm9uSW52YWxpZFByb3BlcnR5VmFsdWUgPz8gJ2Vycm9yJyxcbiAgICAgICAgb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlOiBwYXJ0aWFsPy5vblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgPz8gJ2lnbm9yZScsXG4gICAgICAgIGV4dGVuZFZhcnM6IGV4dGVuZGVyLFxuICAgIH07XG4gICAgaWYgKHBhcnRpYWw/LnZhcnMpIHtcbiAgICAgICAgb3B0aW9ucy52YXJzID0gcGFydGlhbC52YXJzO1xuICAgIH1cbiAgICBpZiAocGFydGlhbD8ucmVmcykge1xuICAgICAgICBvcHRpb25zLnJlZnMgPSBwYXJ0aWFsLnJlZnM7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgQHNlZSBKc29uQ29udGV4dCB1c2luZyB2YWx1ZXMgc3VwcGxpZWQgaW4gYW4gb3B0aW9uYWwgcGFydGlhbFxuICogQHNlZSBKc29uQ29udmVydGVyT3B0aW9uc1xuICogQHBhcmFtIHBhcnRpYWwgT3B0aW9uYWwgcGFydGlhbCBAc2VlIEpzb25Db252ZXJ0ZXJPcHRpb25zIHVzZWQgdG8gcG9wdWxhdGUgdGhlIGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHRGcm9tQ29udmVydGVyT3B0aW9ucyhwYXJ0aWFsPzogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBKc29uQ29udGV4dHx1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbnRleHQ6IEpzb25Db250ZXh0ID0ge307XG4gICAgaWYgKHBhcnRpYWw/LnZhcnMpIHtcbiAgICAgICAgY29udGV4dC52YXJzID0gcGFydGlhbC52YXJzO1xuICAgIH1cbiAgICBpZiAocGFydGlhbD8ucmVmcykge1xuICAgICAgICBjb250ZXh0LnJlZnMgPSBwYXJ0aWFsLnJlZnM7XG4gICAgfVxuICAgIGlmIChwYXJ0aWFsPy5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgIGNvbnRleHQuZXh0ZW5kVmFycyA9IHBhcnRpYWwuZXh0ZW5kVmFycztcbiAgICB9XG4gICAgcmV0dXJuIChjb250ZXh0LnZhcnMgfHwgY29udGV4dC5yZWZzIHx8IGNvbnRleHQuZXh0ZW5kVmFycykgPyBjb250ZXh0IDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgQHNlZSBKc29uRWRpdG9yIGZyb20gYW4gb3B0aW9uYWxseSBzdXBwbGllZCBwYXJ0aWFsIEBzZWUgSnNvbkNvbnZlcnRlck9wdGlvbnMuXG4gKiBFeHBhbmRzIHN1cHBsaWVkIG9wdGlvbnMgd2l0aCBkZWZhdWx0IHZhbHVlcyBhbmQgY29uc3RydWN0cyBhbiBlZGl0b3Igd2l0aFxuICogbWF0Y2hpbmcgY29uZmlndXJhdGlvbiBhbmQgZGVmaW5lZCBydWxlcy5cbiAqIEBwYXJhbSBwYXJ0aWFsIE9wdGlvbmFsIHBhcnRpYWwgQHNlZSBKc29uQ29udmVydGVyT3B0aW9ucyB1c2VkIHRvIGNyZWF0ZSB0aGUgZWRpdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3IocGFydGlhbD86IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25FZGl0b3I+IHtcbiAgICBjb25zdCBjb252ZXJ0ZXJPcHRpb25zID0gbWVyZ2VEZWZhdWx0SnNvbkNvbnZlcnRlck9wdGlvbnMocGFydGlhbCk7XG4gICAgY29uc3QgY29udGV4dCA9IGNvbnRleHRGcm9tQ29udmVydGVyT3B0aW9ucyhwYXJ0aWFsKTtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0ge1xuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eU5hbWU6IGNvbnZlcnRlck9wdGlvbnMub25JbnZhbGlkUHJvcGVydHlOYW1lLFxuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eVZhbHVlOiBjb252ZXJ0ZXJPcHRpb25zLm9uSW52YWxpZFByb3BlcnR5VmFsdWUsXG4gICAgICAgIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZTogY29udmVydGVyT3B0aW9ucy5vblVuZGVmaW5lZFByb3BlcnR5VmFsdWUsXG4gICAgfTtcbiAgICBjb25zdCBlZGl0b3JPcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucyA9IHsgY29udGV4dCwgdmFsaWRhdGlvbiB9O1xuXG4gICAgY29uc3QgcnVsZXM6IEpzb25FZGl0b3JSdWxlW10gPSBbXTtcbiAgICBpZiAoY29udmVydGVyT3B0aW9ucy51c2VOYW1lVGVtcGxhdGVzIHx8IGNvbnZlcnRlck9wdGlvbnMudXNlVmFsdWVUZW1wbGF0ZXMpIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4uZWRpdG9yT3B0aW9ucyxcbiAgICAgICAgICAgIHVzZU5hbWVUZW1wbGF0ZXM6IGNvbnZlcnRlck9wdGlvbnMudXNlTmFtZVRlbXBsYXRlcyxcbiAgICAgICAgICAgIHVzZVZhbHVlVGVtcGxhdGVzOiBjb252ZXJ0ZXJPcHRpb25zLnVzZVZhbHVlVGVtcGxhdGVzLFxuICAgICAgICB9O1xuICAgICAgICBydWxlcy5wdXNoKG5ldyBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZSh0ZW1wbGF0ZU9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlQ29uZGl0aW9uYWxOYW1lcyB8fCBjb252ZXJ0ZXJPcHRpb25zLmZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbmFsT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLmVkaXRvck9wdGlvbnMsXG4gICAgICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogY29udmVydGVyT3B0aW9ucy5mbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlcyxcbiAgICAgICAgfTtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZShjb25kaXRpb25hbE9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlTXVsdGlWYWx1ZVRlbXBsYXRlTmFtZXMpIHtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlKGVkaXRvck9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlUmVmZXJlbmNlcykge1xuICAgICAgICBydWxlcy5wdXNoKG5ldyBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZShlZGl0b3JPcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpzb25FZGl0b3IuY3JlYXRlKGVkaXRvck9wdGlvbnMsIHJ1bGVzKTtcbn1cblxuLyoqXG4gKiBBIHRoaW4gd3JhcHBlciB0byBhbGxvdyBhbiBhcmJpdHJhcnkgQHNlZSBKc29uRWRpdG9yIHRvIGJlIHVzZWQgdmlhIHRoZVxuICogdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgcGF0dGVybi5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3JDb252ZXJ0ZXIgZXh0ZW5kcyBCYXNlQ29udmVydGVyPEpzb25WYWx1ZSwgSnNvbkNvbnRleHQ+IHtcbiAgICBwdWJsaWMgZWRpdG9yOiBKc29uRWRpdG9yO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIEpzb25FZGl0b3JDb252ZXJ0ZXIgd2hpY2ggdXNlcyB0aGUgc3VwcGxpZWQgZWRpdG9yXG4gICAgICogQHBhcmFtIGVkaXRvclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlZGl0b3I6IEpzb25FZGl0b3IpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICAoZnJvbSwgX3NlbGYsIGNvbnRleHQpID0+IHRoaXMuX2NvbnZlcnQoZnJvbSwgY29udGV4dCksXG4gICAgICAgICAgICBlZGl0b3Iub3B0aW9ucy5jb250ZXh0LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgSnNvbkVkaXRvckNvbnZlcnRlciB3aGljaCB1c2VzIHRoZSBzdXBwbGllZCBlZGl0b3JcbiAgICAgKiBAcGFyYW0gZWRpdG9yXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVXaXRoRWRpdG9yKGVkaXRvcjogSnNvbkVkaXRvcik6IFJlc3VsdDxKc29uRWRpdG9yQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uRWRpdG9yQ29udmVydGVyKGVkaXRvcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBkZXJpdmVkIGNvbnZlcnRlciB3aGljaCBmYWlscyBpZiB0aGUgcmVzdWx0aW5nIGNvbnZlcnRlZFxuICAgICAqIEBzZWUgSnNvblZhbHVlIGlzIG5vdCBhIEBzZWUgSnNvbk9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBvYmplY3QoKTogQ29udmVydGVyPEpzb25PYmplY3QsIEpzb25Db250ZXh0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcCgoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGBDYW5ub3QgY29udmVydCBcIiR7SlNPTi5zdHJpbmdpZnkoanYpfVwiIHRvIEpTT04gb2JqZWN0LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgZGVyaXZlZCBjb252ZXJ0ZXIgd2hpY2ggZmFpbHMgaWYgdGhlIHJlc3VsdGluZyBjb252ZXJ0ZWRcbiAgICAgKiBAc2VlIEpzb25WYWx1ZSBpcyBub3QgYSBAc2VlIEpzb25BcnJheVxuICAgICAqL1xuICAgIHB1YmxpYyBhcnJheSgpOiBDb252ZXJ0ZXI8SnNvbkFycmF5LCBKc29uQ29udGV4dD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoKCFBcnJheS5pc0FycmF5KGp2KSkgfHwgKHR5cGVvZiBqdiAhPT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYENhbm5vdCBjb252ZXJ0IFwiJHtKU09OLnN0cmluZ2lmeShqdil9XCIgdG8gSlNPTiBhcnJheS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0KGZyb206IHVua25vd24sIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IFJlc3VsdDxKc29uVmFsdWU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmNsb25lKGZyb20gYXMgSnNvblZhbHVlLCBjb250ZXh0KTtcbiAgICB9XG59XG5cbi8qKlxuICogQSB0cy11dGlscyBAc2VlIENvbnZlcnRlciBmcm9tIHVua25vd24gdG8gdHlwZS1zYWZlIEpTT04sIG9wdGlvbmFsbHkgcmVuZGVyaW5nXG4gKiBhbnkgc3RyaW5nIHByb3BlcnR5IG5hbWVzIG9yIHZhbHVlcyB1c2luZyBtdXN0YWNoZSB3aXRoIGEgc3VwcGxpZWQgdmlldy5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25Db252ZXJ0ZXIgZXh0ZW5kcyBKc29uRWRpdG9yQ29udmVydGVyIHtcbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvciBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBvcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3Iob3B0aW9ucykub3JUaHJvdygpO1xuICAgICAgICBzdXBlcihlZGl0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgY29udmVydGVyLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBjb252ZXJ0ZXJcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggYSBuZXcgSnNvbkNvbnZlcnRlciBvbiBzdWNjZXNzLCBvciBGYWlsdXJlIHdpdGggYW5cbiAgICAgKiBpbmZvcm1hdGl2ZSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBSZXN1bHQ8SnNvbkNvbnZlcnRlcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgSnNvbkNvbnZlcnRlcihvcHRpb25zKSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZWRKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8SnNvbkNvbnZlcnRlck9wdGlvbnMsICd1c2VOYW1lVGVtcGxhdGVzJ3wndXNlVmFsdWVUZW1wbGF0ZXMnfCd1c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lcyc+O1xuXG4vKipcbiAqIEEgdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgZnJvbSB1bmtub3duIHRvIHR5cGUtc2FmZSBKU09OIHdpdGggbXVzdGFjaGVcbiAqIHRlbXBsYXRlIHJlbmRlcmluZyBhbmQgbXVsdGktdmFsdWUgcHJvcGVydHkgbmFtZSBydWxlcyBlbmFibGVkIHJlZ2FyZGxlc3NcbiAqIG9mIGluaXRpYWwgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIgZXh0ZW5kcyBKc29uRWRpdG9yQ29udmVydGVyIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHRlbXBsYXRlT3B0aW9uczogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4gPSB7XG4gICAgICAgIHVzZU5hbWVUZW1wbGF0ZXM6IHRydWUsXG4gICAgICAgIHVzZVZhbHVlVGVtcGxhdGVzOiB0cnVlLFxuICAgICAgICB1c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lczogdHJ1ZSxcbiAgICAgICAgdXNlQ29uZGl0aW9uYWxOYW1lczogZmFsc2UsXG4gICAgICAgIGZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxUZW1wbGF0ZWRKc29uQ29udmVydGVyT3B0aW9ucz4pIHtcbiAgICAgICAgb3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgLi4uVGVtcGxhdGVkSnNvbkNvbnZlcnRlci50ZW1wbGF0ZU9wdGlvbnMgfTtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gY29udmVydGVyT3B0aW9uc1RvRWRpdG9yKG9wdGlvbnMpLm9yVGhyb3coKTtcbiAgICAgICAgc3VwZXIoZWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgVGVtcGxhdGVkSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25Db252ZXJ0ZXI+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIob3B0aW9ucykpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnMsICd1c2VDb25kaXRpb25hbE5hbWVzJz47XG5cbi8qKlxuICogQSB0cy11dGlscyBAc2VlIENvbnZlcnRlciBmcm9tIHVua25vd24gdG8gdHlwZS1zYWZlIEpTT04gd2l0aCBtdXN0YWNoZVxuICogdGVtcGxhdGUgcmVuZGVyaW5nLCBtdWx0aS12YWx1ZSBwcm9wZXJ0eSBuYW1lIGFuZCBjb25kaXRpb25hbCBwcm9wZXJ0eVxuICogbmFtZSBydWxlcyBlbmFibGVkIHJlZ2FyZGxlc3Mgb2YgaW5pdGlhbCBjb250ZXh0LlxuICovXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyIGV4dGVuZHMgSnNvbkVkaXRvckNvbnZlcnRlciB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBjb25kaXRpb25hbE9wdGlvbnM6IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+ID0ge1xuICAgICAgICAuLi5UZW1wbGF0ZWRKc29uQ29udmVydGVyLnRlbXBsYXRlT3B0aW9ucyxcbiAgICAgICAgdXNlQ29uZGl0aW9uYWxOYW1lczogdHJ1ZSxcbiAgICAgICAgZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXM6IHRydWUsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBDb25kaXRpb25hbEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxDb25kaXRpb25hbEpzb25Db252ZXJ0ZXJPcHRpb25zPikge1xuICAgICAgICBvcHRpb25zID0geyAuLi5vcHRpb25zLCAuLi5Db25kaXRpb25hbEpzb25Db252ZXJ0ZXIuY29uZGl0aW9uYWxPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnZlcnRlck9wdGlvbnNUb0VkaXRvcihvcHRpb25zKS5vclRocm93KCk7XG4gICAgICAgIHN1cGVyKGVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIENvbmRpdGlvbmFsSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8Q29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBSZXN1bHQ8SnNvbkNvbnZlcnRlcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyKG9wdGlvbnMpKTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFJpY2hKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8Q29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucywgJ3VzZVJlZmVyZW5jZXMnPjtcblxuLyoqXG4gKiBBIHRzLXV0aWxzIEBzZWUgQ29udmVydGVyIGZyb20gdW5rbm93biB0byB0eXBlLXNhZmUgSlNPTiB3aXRoIG11c3RhY2hlXG4gKiB0ZW1wbGF0ZSByZW5kZXJpbmcsIG11bHRpLXZhbHVlIHByb3BlcnR5IG5hbWUsIGNvbmRpdGlvbmFsIHByb3BlcnR5XG4gKiBuYW1lLCBhbmQgZXh0ZXJuYWwgcmVmZXJlbmNlIHJ1bGVzIGVuYWJsZWQgcmVnYXJkbGVzcyBvZiBpbml0aWFsIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoSnNvbkNvbnZlcnRlciBleHRlbmRzIEpzb25FZGl0b3JDb252ZXJ0ZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgcmljaE9wdGlvbnM6IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+ID0ge1xuICAgICAgICAuLi5Db25kaXRpb25hbEpzb25Db252ZXJ0ZXIuY29uZGl0aW9uYWxPcHRpb25zLFxuICAgICAgICB1c2VSZWZlcmVuY2VzOiB0cnVlLFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgUmljaEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxSaWNoSnNvbkNvbnZlcnRlck9wdGlvbnM+KSB7XG4gICAgICAgIG9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIC4uLlJpY2hKc29uQ29udmVydGVyLnJpY2hPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnZlcnRlck9wdGlvbnNUb0VkaXRvcihvcHRpb25zKS5vclRocm93KCk7XG4gICAgICAgIHN1cGVyKGVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIFJpY2hKc29uQ29udmVydGVyIHdpdGggc3VwcGxpZWQgb3JcbiAgICAgKiBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9yIGNvbnRleHQgZm9yIHRoZSBjb252ZXJ0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxSaWNoSnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25Db252ZXJ0ZXI+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFJpY2hKc29uQ29udmVydGVyKG9wdGlvbnMpKTtcbiAgICB9XG59XG4iXX0=
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9qc29uQ29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDRDQU91QjtBQUN2Qiw4Q0FLNEI7QUFDNUIscUNBQTBFO0FBQzFFLCtDQU11QjtBQUV2Qix3REFBcUQ7QUErR3JEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGdDQUFnQyxDQUFDLE9BQXVDOztJQUNwRixNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQztJQUMvQyxNQUFNLFFBQVEsR0FBRyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLCtCQUFpQixDQUFDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsZ0JBQWdCLG1DQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQzdELE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxtQkFBbUIsbUNBQUksWUFBWSxDQUFDLENBQUM7SUFFekUsTUFBTSxPQUFPLEdBQXlCO1FBQ2xDLGlCQUFpQixFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGlCQUFpQixtQ0FBSSxRQUFRO1FBQ3pELGdCQUFnQixFQUFFLFlBQVk7UUFDOUIsbUJBQW1CLEVBQUUsaUJBQWlCO1FBQ3RDLDBCQUEwQixFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLDBCQUEwQixtQ0FBSSxpQkFBaUI7UUFDcEYsMEJBQTBCLEVBQUUsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsMEJBQTBCLG1DQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQztRQUNqRyxhQUFhLEVBQUUsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsYUFBYSxtQ0FBSSxRQUFRO1FBQ2pELHFCQUFxQixFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLHFCQUFxQixtQ0FBSSxPQUFPO1FBQ2hFLHNCQUFzQixFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLHNCQUFzQixtQ0FBSSxPQUFPO1FBQ2xFLHdCQUF3QixFQUFFLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLHdCQUF3QixtQ0FBSSxRQUFRO1FBQ3ZFLFVBQVUsRUFBRSxRQUFRO0tBQ3ZCLENBQUM7SUFDRixJQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLEVBQUU7UUFDZixPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7S0FDL0I7SUFDRCxJQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLEVBQUU7UUFDZixPQUFPLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7S0FDL0I7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBM0JELDRFQTJCQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQiwyQkFBMkIsQ0FBQyxPQUF1QztJQUMvRSxNQUFNLE9BQU8sR0FBZ0IsRUFBRSxDQUFDO0lBQ2hDLElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksRUFBRTtRQUNmLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztLQUMvQjtJQUNELElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksRUFBRTtRQUNmLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztLQUMvQjtJQUNELElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGNBQWMsQ0FBQyxZQUFZLENBQUMsRUFBRTtRQUN2QyxPQUFPLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7S0FDM0M7SUFDRCxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdEYsQ0FBQztBQVpELGtFQVlDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxPQUF1QztJQUM1RSxNQUFNLGdCQUFnQixHQUFHLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLE1BQU0sT0FBTyxHQUFHLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELE1BQU0sVUFBVSxHQUFHO1FBQ2YscUJBQXFCLEVBQUUsZ0JBQWdCLENBQUMscUJBQXFCO1FBQzdELHNCQUFzQixFQUFFLGdCQUFnQixDQUFDLHNCQUFzQjtRQUMvRCx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyx3QkFBd0I7S0FDdEUsQ0FBQztJQUNGLE1BQU0sYUFBYSxHQUFzQixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUVqRSxNQUFNLEtBQUssR0FBcUIsRUFBRSxDQUFDO0lBQ25DLElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUU7UUFDekUsTUFBTSxlQUFlLEdBQUc7WUFDcEIsR0FBRyxhQUFhO1lBQ2hCLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLGdCQUFnQjtZQUNuRCxpQkFBaUIsRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUI7U0FDeEQsQ0FBQztRQUNGLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSwrQkFBdUIsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0tBQzVEO0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxtQkFBbUIsSUFBSSxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRTtRQUNyRixNQUFNLGtCQUFrQixHQUFHO1lBQ3ZCLEdBQUcsYUFBYTtZQUNoQiwwQkFBMEIsRUFBRSxnQkFBZ0IsQ0FBQywwQkFBMEI7U0FDMUUsQ0FBQztRQUNGLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxpQ0FBeUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7S0FDakU7SUFDRCxJQUFJLGdCQUFnQixDQUFDLDBCQUEwQixFQUFFO1FBQzdDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxnQ0FBd0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0tBQzNEO0lBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUU7UUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLCtCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7S0FDMUQ7SUFFRCxPQUFPLHVCQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBbENELDREQWtDQztBQUVEOzs7R0FHRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsd0JBQXFDO0lBRzFFOzs7T0FHRztJQUNILFlBQW1CLE1BQWtCO1FBQ2pDLEtBQUssQ0FDRCxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFDdEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ3pCLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQWtCO1FBQzdDLE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxJQUFBLHFCQUFZLEVBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ25CLE9BQU8sSUFBQSxlQUFJLEVBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUM7YUFDekU7WUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLO1FBQ1IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssUUFBUSxDQUFDLEVBQUU7Z0JBQ2xELE9BQU8sSUFBQSxlQUFJLEVBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDeEU7WUFDRCxPQUFPLElBQUEsa0JBQU8sRUFBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFUyxRQUFRLENBQUMsSUFBYSxFQUFFLE9BQXFCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0NBQ0o7QUFwREQsa0RBb0RDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsbUJBQW1CO0lBQ2xEOzs7T0FHRztJQUNILFlBQW1CLE9BQXVDO1FBQ3RELE1BQU0sTUFBTSxHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQXVDO1FBQ3hELE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztDQUNKO0FBbkJELHNDQW1CQztBQUlEOzs7O0dBSUc7QUFDSCxNQUFhLHNCQUF1QixTQUFRLG1CQUFtQjtJQVMzRDs7OztPQUlHO0lBQ0gsWUFBbUIsT0FBZ0Q7UUFDL0QsT0FBTyxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQWdEO1FBQ2pFLE9BQU8sSUFBQSx3QkFBYSxFQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDOztBQTNCTCx3REE0QkM7QUEzQjBCLHNDQUFlLEdBQWtDO0lBQ3BFLGdCQUFnQixFQUFFLElBQUk7SUFDdEIsaUJBQWlCLEVBQUUsSUFBSTtJQUN2QiwwQkFBMEIsRUFBRSxJQUFJO0lBQ2hDLG1CQUFtQixFQUFFLEtBQUs7SUFDMUIsMEJBQTBCLEVBQUUsS0FBSztDQUNwQyxDQUFDO0FBeUJOOzs7O0dBSUc7QUFDSCxNQUFhLHdCQUF5QixTQUFRLG1CQUFtQjtJQU83RDs7OztPQUlHO0lBQ0gsWUFBbUIsT0FBa0Q7UUFDakUsT0FBTyxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNELEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBa0Q7UUFDbkUsT0FBTyxJQUFBLHdCQUFhLEVBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7O0FBekJMLDREQTBCQztBQXpCMEIsMkNBQWtCLEdBQWtDO0lBQ3ZFLEdBQUcsc0JBQXNCLENBQUMsZUFBZTtJQUN6QyxtQkFBbUIsRUFBRSxJQUFJO0lBQ3pCLDBCQUEwQixFQUFFLElBQUk7Q0FDbkMsQ0FBQztBQXlCTjs7OztHQUlHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSxtQkFBbUI7SUFNdEQ7Ozs7T0FJRztJQUNILFlBQW1CLE9BQTJDO1FBQzFELE9BQU8sR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDM0QsTUFBTSxNQUFNLEdBQUcsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUEyQztRQUM1RCxPQUFPLElBQUEsd0JBQWEsRUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7QUF4QkwsOENBeUJDO0FBeEIwQiw2QkFBVyxHQUFrQztJQUNoRSxHQUFHLHdCQUF3QixDQUFDLGtCQUFrQjtJQUM5QyxhQUFhLEVBQUUsSUFBSTtDQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMCBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7XG4gICAgQmFzZUNvbnZlcnRlcixcbiAgICBDb252ZXJ0ZXIsXG4gICAgUmVzdWx0LFxuICAgIGNhcHR1cmVSZXN1bHQsXG4gICAgZmFpbCxcbiAgICBzdWNjZWVkLFxufSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7XG4gICAgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZSxcbiAgICBNdWx0aVZhbHVlSnNvbkVkaXRvclJ1bGUsXG4gICAgUmVmZXJlbmNlSnNvbkVkaXRvclJ1bGUsXG4gICAgVGVtcGxhdGVkSnNvbkVkaXRvclJ1bGUsXG59IGZyb20gJy4vanNvbkVkaXRvci9ydWxlcyc7XG5pbXBvcnQgeyBKc29uQXJyYXksIEpzb25PYmplY3QsIEpzb25WYWx1ZSwgaXNKc29uT2JqZWN0IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBKc29uQ29udGV4dCxcbiAgICBKc29uUmVmZXJlbmNlTWFwLFxuICAgIFRlbXBsYXRlVmFycyxcbiAgICBUZW1wbGF0ZVZhcnNFeHRlbmRGdW5jdGlvbixcbiAgICBkZWZhdWx0RXh0ZW5kVmFycyxcbn0gZnJvbSAnLi9qc29uQ29udGV4dCc7XG5cbmltcG9ydCB7IEpzb25FZGl0b3IgfSBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvcic7XG5pbXBvcnQgeyBKc29uRWRpdG9yT3B0aW9ucyB9IGZyb20gJy4vanNvbkVkaXRvci9jb21tb24nO1xuaW1wb3J0IHsgSnNvbkVkaXRvclJ1bGUgfSBmcm9tICcuL2pzb25FZGl0b3IvanNvbkVkaXRvclJ1bGUnO1xuXG4vKipcbiAqIENvbnZlcnNpb24gb3B0aW9ucyBmb3IgSnNvbkNvbnZlcnRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Db252ZXJ0ZXJPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiB0ZW1wbGF0ZSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSxcbiAgICAgKiB0aGVuIHN0cmluZyBwcm9wZXJ0eSB2YWx1ZXMgd2lsbCBiZSByZW5kZXJlZCB1c2luZ1xuICAgICAqIG11c3RhY2hlIGFuZCB0aG9zZSB2YXJpYWJsZXMuIE90aGVyd2lzZSBzdHJpbmcgcHJvcGVydGllc1xuICAgICAqIGFyZSBjb3BpZWQgd2l0aG91dCBtb2RpZmljYXRpb24uXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byB0cnVlIGlmIHZhcnMgYXJlIHN1cHBsaWVkIHdpdGggb3B0aW9ucyxcbiAgICAgKiBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgdXNlVmFsdWVUZW1wbGF0ZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIGFuZCBpZiB0ZW1wbGF0ZSB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZSxcbiAgICAgKiB0aGVuIHN0cmluZyBwcm9wZXJ0eSBuYW1lcyB3aWxsIGJlIHJlbmRlcmVkIHVzaW5nXG4gICAgICogbXVzdGFjaGUgYW5kIHRob3NlIHZhcmlhYmxlcy4gT3RoZXJ3aXNlIHN0cmluZyBwcm9wZXJ0aWVzXG4gICAgICogYXJlIGNvcGllZCB3aXRob3V0IG1vZGlmaWNhdGlvbi5cbiAgICAgKlxuICAgICAqIERlZmF1bHRzIHRvIHRydWUgaWYgdmFycyBhcmUgc3VwcGxpZWQgd2l0aCBvcHRpb25zLFxuICAgICAqIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICB1c2VOYW1lVGVtcGxhdGVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogSWYgdHJ1ZSBhbmQgaWYgdGVtcGxhdGUgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUsXG4gICAgICogdGhlbiBzdHJpbmcgcHJvcGVydHkgbmFtZXMgd2lsbCBiZSBjb25zaWRlcmVkIGZvclxuICAgICAqIGNvbmRpdGlvbmFscy5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgaXMgdG8gbWF0Y2ggdXNlTmFtZVRlbXBsYXRlc1xuICAgICAqL1xuICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBJZiB0cnVlIChkZWZhdWx0KSB0aGVuIHByb3BlcnRpZXMgd2l0aCB1bmNvbmRpdGlvbmFsIG5hbWVzXG4gICAgICogKHdoaWNoIHN0YXJ0IHdpdGggISkgYXJlIGZsYXR0ZW5lZC5cbiAgICAgKi9cbiAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgYW5kIGlmIGJvdGggdGVtcGxhdGUgdmFyaWFibGVzIGFuZCBhXG4gICAgICogY29udGV4dCBkZXJpdmF0aW9uIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhlbiBwcm9wZXJ0aWVzXG4gICAgICogd2hpY2ggbWF0Y2ggdGhlIG11bHRpLXZhbHVlIG5hbWUgcGF0dGVybiB3aWxsIGJlIGV4cGFuZGVkLlxuICAgICAqIERlZmF1bHQgbWF0Y2hlcyB1c2VOYW1lVGVtcGxhdGVzLlxuICAgICAqXG4gICAgICogRGVmYXVsdCBpcyB0cnVlIHVubGVzcyBleHRlbmRWYXJzIGlzIGV4cGxpY2l0bHkgc2V0IHRvXG4gICAgICogdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIHVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHZhcmlhYmxlcyAobXVzdGFjaGUgdmlldykgdXNlZCB0byByZW5kZXIgdGVtcGxhdGVkIHN0cmluZyBuYW1lc1xuICAgICAqIGFuZCBwcm9wZXJ0aWVzLiAgU2VlIHRoZSBtdXN0YWNoZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIG9mIG11c3RhY2hlXG4gICAgICogc3ludGF4IGFuZCB0aGUgdGVtcGxhdGUgdmlldy5cbiAgICAgKi9cbiAgICB2YXJzPzogVGVtcGxhdGVWYXJzO1xuXG4gICAgLyoqXG4gICAgICogTWV0aG9kIHVzZWQgdG8gZXh0ZW5kIHZhcmlhYmxlcyBmb3IgY2hpbGRyZW4gb2YgYW4gYXJyYXkgbm9kZSBkdXJpbmdcbiAgICAgKiBleHBhbnNpb24uIERlZmF1bHQgaXMgdG8gdXNlIGEgYnVpbHQtaW4gZXh0ZW5zaW9uIGZ1bmN0aW9uIHVubGVzc1xuICAgICAqIGV4dGVuZFZhcnMgaXMgZXhwbGljaXRseSBzZXQgdG8gdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIGV4dGVuZFZhcnM/OiBUZW1wbGF0ZVZhcnNFeHRlbmRGdW5jdGlvbjtcblxuICAgIC8qKlxuICAgICAqIElmIHRydWUgYW5kIGlmIGEgcmVmZXJlbmNlcyBtYXAgaXMgc3VwcGxpZWQsIHRoZW5cbiAgICAgKiByZWZlcmVuY2VzIGluIHRoZSBzb3VyY2Ugb2JqZWN0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAgICAgKlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZSBpZiByZWZzIGFyZSBwcmVzZW50IGluIG9wdGlvbnMsIGZhbHNlXG4gICAgICogb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHVzZVJlZmVyZW5jZXM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBBbiBvcHRpb25hbCBvYmplY3QgbWFwIHVzZWQgdG8gaW5zZXJ0IGFueSByZWZlcmVuY2VzIGluIHRoZVxuICAgICAqIGNvbnZlcnRlZCBKU09OLlxuICAgICAqL1xuICAgIHJlZnM/OiBKc29uUmVmZXJlbmNlTWFwO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdlcnJvcicgKGRlZmF1bHQpIHRoZW4gYW55IHByb3BlcnR5IG5hbWVcbiAgICAgKiB0aGF0IGlzIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGNhdXNlcyBhbiBlcnJvciBhbmQgc3RvcHNcbiAgICAgKiBjb252ZXJzaW9uLiAgSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdpZ25vcmUnLCB0aGVuIG5hbWVzIHdoaWNoXG4gICAgICogYXJlIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlOYW1lOiAnZXJyb3InfCdpZ25vcmUnO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlWYWx1ZSBpcyAnZXJyb3InIChkZWZhdWx0KSB0aGVuIGFueSBpbGxlZ2FsXG4gICAgICogcHJvcGVydHkgdmFsdWUgY2F1c2VzIGFuIGVycm9yIGFuZCBzdG9wcyBjb252ZXJzaW9uLiAgSWZcbiAgICAgKiBvbkludmFsaWRQcm9wZXJ0eVZhbHVlIGlzICdpZ25vcmUnIHRoZW4gYW55IGludmFsaWQgcHJvcGVydHlcbiAgICAgKiB2YWx1ZXMgYXJlIHNpbGVudGx5IGlnbm9yZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlWYWx1ZTogJ2Vycm9yJ3wnaWdub3JlJztcblxuICAgIC8qKlxuICAgICAqIElmIG9uVW5rbm93blByb3BlcnR5VmFsdWUgaXMgZXJyb3IsIHRoZW4gYW55IHByb3BlcnR5IHdpdGhcbiAgICAgKiB2YWx1ZSB1bmRlZmluZWQgd2lsbCBjYXVzZSBhbiBlcnJvciBhbmQgc3RvcCBjb252ZXJzaW9uLiAgSWZcbiAgICAgKiBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgaXMgJ2lnbm9yZScgKGRlZmF1bHQpIHRoZW4gYW55XG4gICAgICogcHJvcGVydHkgd2l0aCB2YWx1ZSB1bmRlZmluZWQgaXMgc2lsZW50bHkgaWdub3JlZC5cbiAgICAgKi9cbiAgICBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWU6ICdlcnJvcid8J2lnbm9yZSc7XG59XG5cbi8qKlxuICogTWVyZ2VzIGFuIG9wdGlvbmFsbHkgc3VwcGxpZWQgcGFydGlhbCBzZXQgb2Ygb3B0aW9ucyB3aXRoIHRoZSBkZWZhdWx0XG4gKiBjb252ZXJ0ZXIgb3B0aW9ucywgcHJvZHVjaW5nIGEgZnVsbHktcmVzb2x2ZWQgc2V0IG9mIENvbnZlcnRlck9wdGlvbnNcbiAqIGFuZCB0YWtpbmcgYWxsIGR5bmFtaWMgcnVsZXMgaW50byBhY2NvdW50IChlLmcuIHRlbXBsYXRlIHVzYWdlIGVuYWJsZWRcbiAqIGlmIHZhcmlhYmxlcyBhcmUgc3VwcGxpZWQgYW5kIGRpc2FibGVkIGlmIG5vdClcbiAqIEBwYXJhbSBwYXJ0aWFsIEFuIG9wdGlvbmFsIHBhcnRpYWwgQHNlZSBKc29uQ29udmVydGVyT3B0aW9ucyB0byBiZSBtZXJnZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRGVmYXVsdEpzb25Db252ZXJ0ZXJPcHRpb25zKHBhcnRpYWw/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPik6IEpzb25Db252ZXJ0ZXJPcHRpb25zIHtcbiAgICBjb25zdCBoYXZlVmFycyA9IChwYXJ0aWFsPy52YXJzICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IGhhdmVSZWZzID0gKHBhcnRpYWw/LnJlZnMgIT09IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgZXh0ZW5kZXIgPSBwYXJ0aWFsPy5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpID8gcGFydGlhbC5leHRlbmRWYXJzIDogZGVmYXVsdEV4dGVuZFZhcnM7XG4gICAgY29uc3QgaGF2ZUV4dGVuZGVyID0gKGV4dGVuZGVyICE9PSB1bmRlZmluZWQpO1xuICAgIGNvbnN0IG5hbWVzRGVmYXVsdCA9IChwYXJ0aWFsPy51c2VOYW1lVGVtcGxhdGVzID8/IGhhdmVWYXJzKTtcbiAgICBjb25zdCBjb25kaXRpb25zRGVmYXVsdCA9IChwYXJ0aWFsPy51c2VDb25kaXRpb25hbE5hbWVzID8/IG5hbWVzRGVmYXVsdCk7XG5cbiAgICBjb25zdCBvcHRpb25zOiBKc29uQ29udmVydGVyT3B0aW9ucyA9IHtcbiAgICAgICAgdXNlVmFsdWVUZW1wbGF0ZXM6IHBhcnRpYWw/LnVzZVZhbHVlVGVtcGxhdGVzID8/IGhhdmVWYXJzLFxuICAgICAgICB1c2VOYW1lVGVtcGxhdGVzOiBuYW1lc0RlZmF1bHQsXG4gICAgICAgIHVzZUNvbmRpdGlvbmFsTmFtZXM6IGNvbmRpdGlvbnNEZWZhdWx0LFxuICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogcGFydGlhbD8uZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXMgPz8gY29uZGl0aW9uc0RlZmF1bHQsXG4gICAgICAgIHVzZU11bHRpVmFsdWVUZW1wbGF0ZU5hbWVzOiBwYXJ0aWFsPy51c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lcyA/PyAoaGF2ZUV4dGVuZGVyICYmIG5hbWVzRGVmYXVsdCksXG4gICAgICAgIHVzZVJlZmVyZW5jZXM6IHBhcnRpYWw/LnVzZVJlZmVyZW5jZXMgPz8gaGF2ZVJlZnMsXG4gICAgICAgIG9uSW52YWxpZFByb3BlcnR5TmFtZTogcGFydGlhbD8ub25JbnZhbGlkUHJvcGVydHlOYW1lID8/ICdlcnJvcicsXG4gICAgICAgIG9uSW52YWxpZFByb3BlcnR5VmFsdWU6IHBhcnRpYWw/Lm9uSW52YWxpZFByb3BlcnR5VmFsdWUgPz8gJ2Vycm9yJyxcbiAgICAgICAgb25VbmRlZmluZWRQcm9wZXJ0eVZhbHVlOiBwYXJ0aWFsPy5vblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgPz8gJ2lnbm9yZScsXG4gICAgICAgIGV4dGVuZFZhcnM6IGV4dGVuZGVyLFxuICAgIH07XG4gICAgaWYgKHBhcnRpYWw/LnZhcnMpIHtcbiAgICAgICAgb3B0aW9ucy52YXJzID0gcGFydGlhbC52YXJzO1xuICAgIH1cbiAgICBpZiAocGFydGlhbD8ucmVmcykge1xuICAgICAgICBvcHRpb25zLnJlZnMgPSBwYXJ0aWFsLnJlZnM7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgQHNlZSBKc29uQ29udGV4dCB1c2luZyB2YWx1ZXMgc3VwcGxpZWQgaW4gYW4gb3B0aW9uYWwgcGFydGlhbFxuICogQHNlZSBKc29uQ29udmVydGVyT3B0aW9uc1xuICogQHBhcmFtIHBhcnRpYWwgT3B0aW9uYWwgcGFydGlhbCBAc2VlIEpzb25Db252ZXJ0ZXJPcHRpb25zIHVzZWQgdG8gcG9wdWxhdGUgdGhlIGNvbnRleHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRleHRGcm9tQ29udmVydGVyT3B0aW9ucyhwYXJ0aWFsPzogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBKc29uQ29udGV4dHx1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbnRleHQ6IEpzb25Db250ZXh0ID0ge307XG4gICAgaWYgKHBhcnRpYWw/LnZhcnMpIHtcbiAgICAgICAgY29udGV4dC52YXJzID0gcGFydGlhbC52YXJzO1xuICAgIH1cbiAgICBpZiAocGFydGlhbD8ucmVmcykge1xuICAgICAgICBjb250ZXh0LnJlZnMgPSBwYXJ0aWFsLnJlZnM7XG4gICAgfVxuICAgIGlmIChwYXJ0aWFsPy5oYXNPd25Qcm9wZXJ0eSgnZXh0ZW5kVmFycycpKSB7XG4gICAgICAgIGNvbnRleHQuZXh0ZW5kVmFycyA9IHBhcnRpYWwuZXh0ZW5kVmFycztcbiAgICB9XG4gICAgcmV0dXJuIChjb250ZXh0LnZhcnMgfHwgY29udGV4dC5yZWZzIHx8IGNvbnRleHQuZXh0ZW5kVmFycykgPyBjb250ZXh0IDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgQHNlZSBKc29uRWRpdG9yIGZyb20gYW4gb3B0aW9uYWxseSBzdXBwbGllZCBwYXJ0aWFsIEBzZWUgSnNvbkNvbnZlcnRlck9wdGlvbnMuXG4gKiBFeHBhbmRzIHN1cHBsaWVkIG9wdGlvbnMgd2l0aCBkZWZhdWx0IHZhbHVlcyBhbmQgY29uc3RydWN0cyBhbiBlZGl0b3Igd2l0aFxuICogbWF0Y2hpbmcgY29uZmlndXJhdGlvbiBhbmQgZGVmaW5lZCBydWxlcy5cbiAqIEBwYXJhbSBwYXJ0aWFsIE9wdGlvbmFsIHBhcnRpYWwgQHNlZSBKc29uQ29udmVydGVyT3B0aW9ucyB1c2VkIHRvIGNyZWF0ZSB0aGUgZWRpdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3IocGFydGlhbD86IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25FZGl0b3I+IHtcbiAgICBjb25zdCBjb252ZXJ0ZXJPcHRpb25zID0gbWVyZ2VEZWZhdWx0SnNvbkNvbnZlcnRlck9wdGlvbnMocGFydGlhbCk7XG4gICAgY29uc3QgY29udGV4dCA9IGNvbnRleHRGcm9tQ29udmVydGVyT3B0aW9ucyhwYXJ0aWFsKTtcbiAgICBjb25zdCB2YWxpZGF0aW9uID0ge1xuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eU5hbWU6IGNvbnZlcnRlck9wdGlvbnMub25JbnZhbGlkUHJvcGVydHlOYW1lLFxuICAgICAgICBvbkludmFsaWRQcm9wZXJ0eVZhbHVlOiBjb252ZXJ0ZXJPcHRpb25zLm9uSW52YWxpZFByb3BlcnR5VmFsdWUsXG4gICAgICAgIG9uVW5kZWZpbmVkUHJvcGVydHlWYWx1ZTogY29udmVydGVyT3B0aW9ucy5vblVuZGVmaW5lZFByb3BlcnR5VmFsdWUsXG4gICAgfTtcbiAgICBjb25zdCBlZGl0b3JPcHRpb25zOiBKc29uRWRpdG9yT3B0aW9ucyA9IHsgY29udGV4dCwgdmFsaWRhdGlvbiB9O1xuXG4gICAgY29uc3QgcnVsZXM6IEpzb25FZGl0b3JSdWxlW10gPSBbXTtcbiAgICBpZiAoY29udmVydGVyT3B0aW9ucy51c2VOYW1lVGVtcGxhdGVzIHx8IGNvbnZlcnRlck9wdGlvbnMudXNlVmFsdWVUZW1wbGF0ZXMpIHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGVPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4uZWRpdG9yT3B0aW9ucyxcbiAgICAgICAgICAgIHVzZU5hbWVUZW1wbGF0ZXM6IGNvbnZlcnRlck9wdGlvbnMudXNlTmFtZVRlbXBsYXRlcyxcbiAgICAgICAgICAgIHVzZVZhbHVlVGVtcGxhdGVzOiBjb252ZXJ0ZXJPcHRpb25zLnVzZVZhbHVlVGVtcGxhdGVzLFxuICAgICAgICB9O1xuICAgICAgICBydWxlcy5wdXNoKG5ldyBUZW1wbGF0ZWRKc29uRWRpdG9yUnVsZSh0ZW1wbGF0ZU9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlQ29uZGl0aW9uYWxOYW1lcyB8fCBjb252ZXJ0ZXJPcHRpb25zLmZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzKSB7XG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbmFsT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLmVkaXRvck9wdGlvbnMsXG4gICAgICAgICAgICBmbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlczogY29udmVydGVyT3B0aW9ucy5mbGF0dGVuVW5jb25kaXRpb25hbFZhbHVlcyxcbiAgICAgICAgfTtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgQ29uZGl0aW9uYWxKc29uRWRpdG9yUnVsZShjb25kaXRpb25hbE9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlTXVsdGlWYWx1ZVRlbXBsYXRlTmFtZXMpIHtcbiAgICAgICAgcnVsZXMucHVzaChuZXcgTXVsdGlWYWx1ZUpzb25FZGl0b3JSdWxlKGVkaXRvck9wdGlvbnMpKTtcbiAgICB9XG4gICAgaWYgKGNvbnZlcnRlck9wdGlvbnMudXNlUmVmZXJlbmNlcykge1xuICAgICAgICBydWxlcy5wdXNoKG5ldyBSZWZlcmVuY2VKc29uRWRpdG9yUnVsZShlZGl0b3JPcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpzb25FZGl0b3IuY3JlYXRlKGVkaXRvck9wdGlvbnMsIHJ1bGVzKTtcbn1cblxuLyoqXG4gKiBBIHRoaW4gd3JhcHBlciB0byBhbGxvdyBhbiBhcmJpdHJhcnkgQHNlZSBKc29uRWRpdG9yIHRvIGJlIHVzZWQgdmlhIHRoZVxuICogdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgcGF0dGVybi5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25FZGl0b3JDb252ZXJ0ZXIgZXh0ZW5kcyBCYXNlQ29udmVydGVyPEpzb25WYWx1ZSwgSnNvbkNvbnRleHQ+IHtcbiAgICBwdWJsaWMgZWRpdG9yOiBKc29uRWRpdG9yO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIEpzb25FZGl0b3JDb252ZXJ0ZXIgd2hpY2ggdXNlcyB0aGUgc3VwcGxpZWQgZWRpdG9yXG4gICAgICogQHBhcmFtIGVkaXRvclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlZGl0b3I6IEpzb25FZGl0b3IpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICAoZnJvbSwgX3NlbGYsIGNvbnRleHQpID0+IHRoaXMuX2NvbnZlcnQoZnJvbSwgY29udGV4dCksXG4gICAgICAgICAgICBlZGl0b3Iub3B0aW9ucy5jb250ZXh0LFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgSnNvbkVkaXRvckNvbnZlcnRlciB3aGljaCB1c2VzIHRoZSBzdXBwbGllZCBlZGl0b3JcbiAgICAgKiBAcGFyYW0gZWRpdG9yXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVXaXRoRWRpdG9yKGVkaXRvcjogSnNvbkVkaXRvcik6IFJlc3VsdDxKc29uRWRpdG9yQ29udmVydGVyPiB7XG4gICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBKc29uRWRpdG9yQ29udmVydGVyKGVkaXRvcikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBkZXJpdmVkIGNvbnZlcnRlciB3aGljaCBmYWlscyBpZiB0aGUgcmVzdWx0aW5nIGNvbnZlcnRlZFxuICAgICAqIEBzZWUgSnNvblZhbHVlIGlzIG5vdCBhIEBzZWUgSnNvbk9iamVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBvYmplY3QoKTogQ29udmVydGVyPEpzb25PYmplY3QsIEpzb25Db250ZXh0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hcCgoanYpID0+IHtcbiAgICAgICAgICAgIGlmICghaXNKc29uT2JqZWN0KGp2KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKGBDYW5ub3QgY29udmVydCBcIiR7SlNPTi5zdHJpbmdpZnkoanYpfVwiIHRvIEpTT04gb2JqZWN0LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQoanYpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgZGVyaXZlZCBjb252ZXJ0ZXIgd2hpY2ggZmFpbHMgaWYgdGhlIHJlc3VsdGluZyBjb252ZXJ0ZWRcbiAgICAgKiBAc2VlIEpzb25WYWx1ZSBpcyBub3QgYSBAc2VlIEpzb25BcnJheVxuICAgICAqL1xuICAgIHB1YmxpYyBhcnJheSgpOiBDb252ZXJ0ZXI8SnNvbkFycmF5LCBKc29uQ29udGV4dD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tYXAoKGp2KSA9PiB7XG4gICAgICAgICAgICBpZiAoKCFBcnJheS5pc0FycmF5KGp2KSkgfHwgKHR5cGVvZiBqdiAhPT0gJ29iamVjdCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoYENhbm5vdCBjb252ZXJ0IFwiJHtKU09OLnN0cmluZ2lmeShqdil9XCIgdG8gSlNPTiBhcnJheS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKGp2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jb252ZXJ0KGZyb206IHVua25vd24sIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IFJlc3VsdDxKc29uVmFsdWU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yLmNsb25lKGZyb20gYXMgSnNvblZhbHVlLCBjb250ZXh0KTtcbiAgICB9XG59XG5cbi8qKlxuICogQSB0cy11dGlscyBAc2VlIENvbnZlcnRlciBmcm9tIHVua25vd24gdG8gdHlwZS1zYWZlIEpTT04sIG9wdGlvbmFsbHkgcmVuZGVyaW5nXG4gKiBhbnkgc3RyaW5nIHByb3BlcnR5IG5hbWVzIG9yIHZhbHVlcyB1c2luZyBtdXN0YWNoZSB3aXRoIGEgc3VwcGxpZWQgdmlldy5cbiAqL1xuZXhwb3J0IGNsYXNzIEpzb25Db252ZXJ0ZXIgZXh0ZW5kcyBKc29uRWRpdG9yQ29udmVydGVyIHtcbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvciBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBvcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBQYXJ0aWFsPEpzb25Db252ZXJ0ZXJPcHRpb25zPikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb252ZXJ0ZXJPcHRpb25zVG9FZGl0b3Iob3B0aW9ucykub3JUaHJvdygpO1xuICAgICAgICBzdXBlcihlZGl0b3IpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgY29udmVydGVyLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnMgdG8gY29uZmlndXJlIHRoZSBjb252ZXJ0ZXJcbiAgICAgKiBAcmV0dXJucyBTdWNjZXNzIHdpdGggYSBuZXcgSnNvbkNvbnZlcnRlciBvbiBzdWNjZXNzLCBvciBGYWlsdXJlIHdpdGggYW5cbiAgICAgKiBpbmZvcm1hdGl2ZSBtZXNzYWdlIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBSZXN1bHQ8SnNvbkNvbnZlcnRlcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgSnNvbkNvbnZlcnRlcihvcHRpb25zKSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBUZW1wbGF0ZWRKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8SnNvbkNvbnZlcnRlck9wdGlvbnMsICd1c2VOYW1lVGVtcGxhdGVzJ3wndXNlVmFsdWVUZW1wbGF0ZXMnfCd1c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lcyc+O1xuXG4vKipcbiAqIEEgdHMtdXRpbHMgQHNlZSBDb252ZXJ0ZXIgZnJvbSB1bmtub3duIHRvIHR5cGUtc2FmZSBKU09OIHdpdGggbXVzdGFjaGVcbiAqIHRlbXBsYXRlIHJlbmRlcmluZyBhbmQgbXVsdGktdmFsdWUgcHJvcGVydHkgbmFtZSBydWxlcyBlbmFibGVkIHJlZ2FyZGxlc3NcbiAqIG9mIGluaXRpYWwgY29udGV4dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIgZXh0ZW5kcyBKc29uRWRpdG9yQ29udmVydGVyIHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IHRlbXBsYXRlT3B0aW9uczogUGFydGlhbDxKc29uQ29udmVydGVyT3B0aW9ucz4gPSB7XG4gICAgICAgIHVzZU5hbWVUZW1wbGF0ZXM6IHRydWUsXG4gICAgICAgIHVzZVZhbHVlVGVtcGxhdGVzOiB0cnVlLFxuICAgICAgICB1c2VNdWx0aVZhbHVlVGVtcGxhdGVOYW1lczogdHJ1ZSxcbiAgICAgICAgdXNlQ29uZGl0aW9uYWxOYW1lczogZmFsc2UsXG4gICAgICAgIGZsYXR0ZW5VbmNvbmRpdGlvbmFsVmFsdWVzOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxUZW1wbGF0ZWRKc29uQ29udmVydGVyT3B0aW9ucz4pIHtcbiAgICAgICAgb3B0aW9ucyA9IHsgLi4ub3B0aW9ucywgLi4uVGVtcGxhdGVkSnNvbkNvbnZlcnRlci50ZW1wbGF0ZU9wdGlvbnMgfTtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gY29udmVydGVyT3B0aW9uc1RvRWRpdG9yKG9wdGlvbnMpLm9yVGhyb3coKTtcbiAgICAgICAgc3VwZXIoZWRpdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgVGVtcGxhdGVkSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25Db252ZXJ0ZXI+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFRlbXBsYXRlZEpzb25Db252ZXJ0ZXIob3B0aW9ucykpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8VGVtcGxhdGVkSnNvbkNvbnZlcnRlck9wdGlvbnMsICd1c2VDb25kaXRpb25hbE5hbWVzJz47XG5cbi8qKlxuICogQSB0cy11dGlscyBAc2VlIENvbnZlcnRlciBmcm9tIHVua25vd24gdG8gdHlwZS1zYWZlIEpTT04gd2l0aCBtdXN0YWNoZVxuICogdGVtcGxhdGUgcmVuZGVyaW5nLCBtdWx0aS12YWx1ZSBwcm9wZXJ0eSBuYW1lIGFuZCBjb25kaXRpb25hbCBwcm9wZXJ0eVxuICogbmFtZSBydWxlcyBlbmFibGVkIHJlZ2FyZGxlc3Mgb2YgaW5pdGlhbCBjb250ZXh0LlxuICovXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyIGV4dGVuZHMgSnNvbkVkaXRvckNvbnZlcnRlciB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBjb25kaXRpb25hbE9wdGlvbnM6IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+ID0ge1xuICAgICAgICAuLi5UZW1wbGF0ZWRKc29uQ29udmVydGVyLnRlbXBsYXRlT3B0aW9ucyxcbiAgICAgICAgdXNlQ29uZGl0aW9uYWxOYW1lczogdHJ1ZSxcbiAgICAgICAgZmxhdHRlblVuY29uZGl0aW9uYWxWYWx1ZXM6IHRydWUsXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQHNlZSBDb25kaXRpb25hbEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxDb25kaXRpb25hbEpzb25Db252ZXJ0ZXJPcHRpb25zPikge1xuICAgICAgICBvcHRpb25zID0geyAuLi5vcHRpb25zLCAuLi5Db25kaXRpb25hbEpzb25Db252ZXJ0ZXIuY29uZGl0aW9uYWxPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnZlcnRlck9wdGlvbnNUb0VkaXRvcihvcHRpb25zKS5vclRocm93KCk7XG4gICAgICAgIHN1cGVyKGVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIENvbmRpdGlvbmFsSnNvbkNvbnZlcnRlciB3aXRoIHN1cHBsaWVkIG9yXG4gICAgICogZGVmYXVsdCBvcHRpb25zXG4gICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBvciBjb250ZXh0IGZvciB0aGUgY29udmVydGVyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUob3B0aW9ucz86IFBhcnRpYWw8Q29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucz4pOiBSZXN1bHQ8SnNvbkNvbnZlcnRlcj4ge1xuICAgICAgICByZXR1cm4gY2FwdHVyZVJlc3VsdCgoKSA9PiBuZXcgQ29uZGl0aW9uYWxKc29uQ29udmVydGVyKG9wdGlvbnMpKTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFJpY2hKc29uQ29udmVydGVyT3B0aW9ucyA9IE9taXQ8Q29uZGl0aW9uYWxKc29uQ29udmVydGVyT3B0aW9ucywgJ3VzZVJlZmVyZW5jZXMnPjtcblxuLyoqXG4gKiBBIHRzLXV0aWxzIEBzZWUgQ29udmVydGVyIGZyb20gdW5rbm93biB0byB0eXBlLXNhZmUgSlNPTiB3aXRoIG11c3RhY2hlXG4gKiB0ZW1wbGF0ZSByZW5kZXJpbmcsIG11bHRpLXZhbHVlIHByb3BlcnR5IG5hbWUsIGNvbmRpdGlvbmFsIHByb3BlcnR5XG4gKiBuYW1lLCBhbmQgZXh0ZXJuYWwgcmVmZXJlbmNlIHJ1bGVzIGVuYWJsZWQgcmVnYXJkbGVzcyBvZiBpbml0aWFsIGNvbnRleHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoSnNvbkNvbnZlcnRlciBleHRlbmRzIEpzb25FZGl0b3JDb252ZXJ0ZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgcmljaE9wdGlvbnM6IFBhcnRpYWw8SnNvbkNvbnZlcnRlck9wdGlvbnM+ID0ge1xuICAgICAgICAuLi5Db25kaXRpb25hbEpzb25Db252ZXJ0ZXIuY29uZGl0aW9uYWxPcHRpb25zLFxuICAgICAgICB1c2VSZWZlcmVuY2VzOiB0cnVlLFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEBzZWUgUmljaEpzb25Db252ZXJ0ZXIgd2l0aCBzdXBwbGllZCBvclxuICAgICAqIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3IgY29udGV4dCBmb3IgdGhlIGNvbnZlcnRlclxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zPzogUGFydGlhbDxSaWNoSnNvbkNvbnZlcnRlck9wdGlvbnM+KSB7XG4gICAgICAgIG9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIC4uLlJpY2hKc29uQ29udmVydGVyLnJpY2hPcHRpb25zIH07XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnZlcnRlck9wdGlvbnNUb0VkaXRvcihvcHRpb25zKS5vclRocm93KCk7XG4gICAgICAgIHN1cGVyKGVkaXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyBAc2VlIFJpY2hKc29uQ29udmVydGVyIHdpdGggc3VwcGxpZWQgb3JcbiAgICAgKiBkZWZhdWx0IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjb25maWd1cmF0aW9uIG9yIGNvbnRleHQgZm9yIHRoZSBjb252ZXJ0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShvcHRpb25zPzogUGFydGlhbDxSaWNoSnNvbkNvbnZlcnRlck9wdGlvbnM+KTogUmVzdWx0PEpzb25Db252ZXJ0ZXI+IHtcbiAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IFJpY2hKc29uQ29udmVydGVyKG9wdGlvbnMpKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ import { DetailedResult } from '@fgv/ts-utils';
2
+ import { JsonContext } from '../jsonContext';
3
+ import { JsonValue } from '../common';
4
+ export type JsonEditFailureReason = 'ignore' | 'inapplicable' | 'edited' | 'error';
5
+ export type JsonPropertyEditFailureReason = JsonEditFailureReason | 'deferred';
6
+ export type JsonEditorValidationRules = 'invalidPropertyName' | 'invalidPropertyValue' | 'undefinedPropertyValue';
7
+ export interface JsonEditorValidationOptions {
8
+ /**
9
+ * If onInvalidPropertyName is 'error' (default) then any property name
10
+ * that is invalid after template rendering causes an error and stops
11
+ * conversion. If onInvalidPropertyName is 'ignore', then names which
12
+ * are invalid after template rendering are passed through unchanged.
13
+ */
14
+ onInvalidPropertyName: 'error' | 'ignore';
15
+ /**
16
+ * If onInvalidPropertyValue is 'error' (default) then any illegal
17
+ * property value other than undefined causes an error and stops
18
+ * conversion. If onInvalidPropertyValue is 'ignore' then any
19
+ * invalid property values are silently ignored.
20
+ */
21
+ onInvalidPropertyValue: 'error' | 'ignore';
22
+ /**
23
+ * If onUnknownPropertyValue is error, then any property with
24
+ * value undefined will cause an error and stop conversion. If
25
+ * onUndefinedPropertyValue is 'ignore' (default) then any
26
+ * property with value undefined is silently ignored.
27
+ */
28
+ onUndefinedPropertyValue: 'error' | 'ignore';
29
+ }
30
+ export interface JsonEditorOptions {
31
+ context?: JsonContext;
32
+ validation: JsonEditorValidationOptions;
33
+ }
34
+ export interface IJsonCloneEditor {
35
+ clone(src: JsonValue, context?: JsonContext): DetailedResult<JsonValue, JsonEditFailureReason>;
36
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pzb25FZGl0b3IvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIwIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cbmltcG9ydCB7IERldGFpbGVkUmVzdWx0IH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBKc29uQ29udGV4dCB9IGZyb20gJy4uL2pzb25Db250ZXh0JztcbmltcG9ydCB7IEpzb25WYWx1ZSB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmV4cG9ydCB0eXBlIEpzb25FZGl0RmFpbHVyZVJlYXNvbiA9ICdpZ25vcmUnfCdpbmFwcGxpY2FibGUnfCdlZGl0ZWQnfCdlcnJvcic7XG5leHBvcnQgdHlwZSBKc29uUHJvcGVydHlFZGl0RmFpbHVyZVJlYXNvbiA9IEpzb25FZGl0RmFpbHVyZVJlYXNvbnwnZGVmZXJyZWQnO1xuXG5leHBvcnQgdHlwZSBKc29uRWRpdG9yVmFsaWRhdGlvblJ1bGVzID0gJ2ludmFsaWRQcm9wZXJ0eU5hbWUnfCdpbnZhbGlkUHJvcGVydHlWYWx1ZSd8J3VuZGVmaW5lZFByb3BlcnR5VmFsdWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25FZGl0b3JWYWxpZGF0aW9uT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdlcnJvcicgKGRlZmF1bHQpIHRoZW4gYW55IHByb3BlcnR5IG5hbWVcbiAgICAgKiB0aGF0IGlzIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGNhdXNlcyBhbiBlcnJvciBhbmQgc3RvcHNcbiAgICAgKiBjb252ZXJzaW9uLiAgSWYgb25JbnZhbGlkUHJvcGVydHlOYW1lIGlzICdpZ25vcmUnLCB0aGVuIG5hbWVzIHdoaWNoXG4gICAgICogYXJlIGludmFsaWQgYWZ0ZXIgdGVtcGxhdGUgcmVuZGVyaW5nIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlOYW1lOiAnZXJyb3InfCdpZ25vcmUnO1xuXG4gICAgLyoqXG4gICAgICogSWYgb25JbnZhbGlkUHJvcGVydHlWYWx1ZSBpcyAnZXJyb3InIChkZWZhdWx0KSB0aGVuIGFueSBpbGxlZ2FsXG4gICAgICogcHJvcGVydHkgdmFsdWUgb3RoZXIgdGhhbiB1bmRlZmluZWQgY2F1c2VzIGFuIGVycm9yIGFuZCBzdG9wc1xuICAgICAqIGNvbnZlcnNpb24uICBJZiBvbkludmFsaWRQcm9wZXJ0eVZhbHVlIGlzICdpZ25vcmUnIHRoZW4gYW55XG4gICAgICogaW52YWxpZCBwcm9wZXJ0eSB2YWx1ZXMgYXJlIHNpbGVudGx5IGlnbm9yZWQuXG4gICAgICovXG4gICAgb25JbnZhbGlkUHJvcGVydHlWYWx1ZTogJ2Vycm9yJ3wnaWdub3JlJztcblxuICAgIC8qKlxuICAgICAqIElmIG9uVW5rbm93blByb3BlcnR5VmFsdWUgaXMgZXJyb3IsIHRoZW4gYW55IHByb3BlcnR5IHdpdGhcbiAgICAgKiB2YWx1ZSB1bmRlZmluZWQgd2lsbCBjYXVzZSBhbiBlcnJvciBhbmQgc3RvcCBjb252ZXJzaW9uLiAgSWZcbiAgICAgKiBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWUgaXMgJ2lnbm9yZScgKGRlZmF1bHQpIHRoZW4gYW55XG4gICAgICogcHJvcGVydHkgd2l0aCB2YWx1ZSB1bmRlZmluZWQgaXMgc2lsZW50bHkgaWdub3JlZC5cbiAgICAgKi9cbiAgICBvblVuZGVmaW5lZFByb3BlcnR5VmFsdWU6ICdlcnJvcid8J2lnbm9yZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkVkaXRvck9wdGlvbnMge1xuICAgIGNvbnRleHQ/OiBKc29uQ29udGV4dDtcbiAgICB2YWxpZGF0aW9uOiBKc29uRWRpdG9yVmFsaWRhdGlvbk9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUpzb25DbG9uZUVkaXRvciB7XG4gICAgY2xvbmUoc3JjOiBKc29uVmFsdWUsIGNvbnRleHQ/OiBKc29uQ29udGV4dCk6IERldGFpbGVkUmVzdWx0PEpzb25WYWx1ZSwgSnNvbkVkaXRGYWlsdXJlUmVhc29uPjtcbn1cbiJdfQ==
@@ -1,3 +1,4 @@
1
+ export * from './common';
1
2
  export * from './jsonEditorRule';
2
3
  export * from './jsonEditor';
3
4
  export * from './jsonEditorState';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  /*
3
- * Copyright (c) 2020 Erik Fortune
3
+ * Copyright (c) 2023 Erik Fortune
4
4
  *
5
5
  * Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  * of this software and associated documentation files (the "Software"), to deal
@@ -48,8 +48,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
48
48
  };
49
49
  Object.defineProperty(exports, "__esModule", { value: true });
50
50
  exports.Rules = void 0;
51
+ __exportStar(require("./common"), exports);
51
52
  __exportStar(require("./jsonEditorRule"), exports);
52
53
  __exportStar(require("./jsonEditor"), exports);
53
54
  __exportStar(require("./jsonEditorState"), exports);
54
55
  exports.Rules = __importStar(require("./rules"));
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbkVkaXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILG1EQUFpQztBQUNqQywrQ0FBNkI7QUFDN0Isb0RBQWtDO0FBQ2xDLGlEQUFpQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjAgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2pzb25FZGl0b3JSdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vanNvbkVkaXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2pzb25FZGl0b3JTdGF0ZSc7XG5leHBvcnQgKiBhcyBSdWxlcyBmcm9tICcuL3J1bGVzJztcbiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvanNvbkVkaXRvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDJDQUF5QjtBQUN6QixtREFBaUM7QUFDakMsK0NBQTZCO0FBQzdCLG9EQUFrQztBQUNsQyxpREFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIzIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9jb21tb24nO1xuZXhwb3J0ICogZnJvbSAnLi9qc29uRWRpdG9yUnVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2pzb25FZGl0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9qc29uRWRpdG9yU3RhdGUnO1xuZXhwb3J0ICogYXMgUnVsZXMgZnJvbSAnLi9ydWxlcyc7XG4iXX0=
@@ -1,14 +1,15 @@
1
1
  import { DetailedResult, Result } from '@fgv/ts-utils';
2
+ import { IJsonCloneEditor, JsonEditFailureReason, JsonEditorOptions, JsonPropertyEditFailureReason } from './common';
2
3
  import { JsonArray, JsonObject, JsonValue } from '../common';
3
- import { JsonEditFailureReason, JsonEditorRule, JsonPropertyEditFailureReason } from './jsonEditorRule';
4
- import { JsonEditorOptions, JsonEditorState } from './jsonEditorState';
5
4
  import { JsonContext } from '../jsonContext';
5
+ import { JsonEditorRule } from './jsonEditorRule';
6
+ import { JsonEditorState } from './jsonEditorState';
6
7
  /**
7
8
  * The JsonEditor can be used to edit JSON objects in place or to clone any JSON value,
8
9
  * applying a default context and optional set of editor rules that were supplied at
9
10
  * initialization.
10
11
  */
11
- export declare class JsonEditor {
12
+ export declare class JsonEditor implements IJsonCloneEditor {
12
13
  protected static _default?: JsonEditor;
13
14
  /**
14
15
  * Full set of @see JsonEditorOptions in effect for this rule.