@payloadcms/db-postgres 0.8.1 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/count.d.ts.map +1 -1
- package/dist/count.js +3 -6
- package/dist/create.d.ts.map +1 -1
- package/dist/create.js +9 -6
- package/dist/createGlobal.d.ts.map +1 -1
- package/dist/createGlobal.js +9 -6
- package/dist/createGlobalVersion.d.ts.map +1 -1
- package/dist/createGlobalVersion.js +11 -10
- package/dist/createVersion.d.ts.map +1 -1
- package/dist/createVersion.js +22 -21
- package/dist/deleteMany.d.ts.map +1 -1
- package/dist/deleteMany.js +8 -6
- package/dist/deleteOne.d.ts.map +1 -1
- package/dist/deleteOne.js +3 -6
- package/dist/deleteVersions.d.ts.map +1 -1
- package/dist/deleteVersions.js +8 -7
- package/dist/find/traverseFields.d.ts.map +1 -1
- package/dist/find/traverseFields.js +13 -22
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +8 -6
- package/dist/findGlobal.d.ts.map +1 -1
- package/dist/findGlobal.js +8 -6
- package/dist/findGlobalVersions.d.ts.map +1 -1
- package/dist/findGlobalVersions.js +8 -7
- package/dist/findOne.d.ts.map +1 -1
- package/dist/findOne.js +8 -6
- package/dist/findVersions.d.ts.map +1 -1
- package/dist/findVersions.js +8 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -8
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +10 -8
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +12 -41
- package/dist/queries/parseParams.js +3 -3
- package/dist/queryDrafts.d.ts.map +1 -1
- package/dist/queryDrafts.js +8 -7
- package/dist/schema/build.d.ts +4 -3
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/build.js +86 -45
- package/dist/schema/{getTableName.d.ts → createTableName.d.ts} +5 -7
- package/dist/schema/createTableName.d.ts.map +1 -0
- package/dist/schema/createTableName.js +43 -0
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +40 -18
- package/dist/schema/validateExistingBlockIsIdentical.d.ts.map +1 -1
- package/dist/schema/validateExistingBlockIsIdentical.js +1 -1
- package/dist/transform/read/hasManyText.d.ts +2 -2
- package/dist/transform/read/hasManyText.d.ts.map +1 -1
- package/dist/transform/read/hasManyText.js +2 -2
- package/dist/transform/read/index.js +3 -3
- package/dist/transform/write/array.d.ts +2 -2
- package/dist/transform/write/array.d.ts.map +1 -1
- package/dist/transform/write/array.js +4 -4
- package/dist/transform/write/blocks.js +2 -2
- package/dist/transform/write/index.js +5 -5
- package/dist/transform/write/texts.js +3 -3
- package/dist/transform/write/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.js +6 -15
- package/dist/transform/write/types.d.ts +1 -1
- package/dist/transform/write/types.d.ts.map +1 -1
- package/dist/types.d.ts +3 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +3 -6
- package/dist/updateGlobal.d.ts.map +1 -1
- package/dist/updateGlobal.js +8 -6
- package/dist/updateGlobalVersion.d.ts.map +1 -1
- package/dist/updateGlobalVersion.js +3 -7
- package/dist/updateVersion.d.ts.map +1 -1
- package/dist/updateVersion.js +3 -7
- package/dist/upsertRow/index.js +3 -3
- package/dist/upsertRow/insertArrays.js +2 -2
- package/package.json +2 -2
- package/dist/schema/getTableName.d.ts.map +0 -1
- package/dist/schema/getTableName.js +0 -43
package/dist/schema/build.js
CHANGED
@@ -8,23 +8,23 @@ Object.defineProperty(exports, "buildTable", {
|
|
8
8
|
return buildTable;
|
9
9
|
}
|
10
10
|
});
|
11
|
+
const _types = require("payload/types");
|
11
12
|
const _drizzleorm = require("drizzle-orm");
|
12
13
|
const _pgcore = require("drizzle-orm/pg-core");
|
13
|
-
const
|
14
|
-
const
|
14
|
+
const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
|
15
|
+
const _createTableName = require("./createTableName");
|
15
16
|
const _parentIDColumnMap = require("./parentIDColumnMap");
|
16
17
|
const _setColumnID = require("./setColumnID");
|
17
18
|
const _traverseFields = require("./traverseFields");
|
19
|
+
function _interop_require_default(obj) {
|
20
|
+
return obj && obj.__esModule ? obj : {
|
21
|
+
default: obj
|
22
|
+
};
|
23
|
+
}
|
18
24
|
const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildNumbers, buildRelationships, buildTexts, disableNotNull, disableUnique = false, fields, rootRelationsToBuild, rootRelationships, rootTableIDColType, rootTableName: incomingRootTableName, tableName, timestamps, versions })=>{
|
19
25
|
const rootTableName = incomingRootTableName || tableName;
|
20
26
|
const columns = baseColumns;
|
21
27
|
const indexes = {};
|
22
|
-
let hasLocalizedField = false;
|
23
|
-
let hasLocalizedRelationshipField = false;
|
24
|
-
let hasManyTextField = false;
|
25
|
-
let hasManyNumberField = false;
|
26
|
-
let hasLocalizedManyTextField = false;
|
27
|
-
let hasLocalizedManyNumberField = false;
|
28
28
|
const localesColumns = {};
|
29
29
|
const localesIndexes = {};
|
30
30
|
let localesTable;
|
@@ -40,7 +40,7 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildNumb
|
|
40
40
|
columns,
|
41
41
|
fields
|
42
42
|
});
|
43
|
-
|
43
|
+
const { hasLocalizedField, hasLocalizedManyNumberField, hasLocalizedManyTextField, hasLocalizedRelationshipField, hasManyNumberField, hasManyTextField } = (0, _traverseFields.traverseFields)({
|
44
44
|
adapter,
|
45
45
|
buildNumbers,
|
46
46
|
buildRelationships,
|
@@ -60,7 +60,7 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildNumb
|
|
60
60
|
rootTableIDColType: rootTableIDColType || idColType,
|
61
61
|
rootTableName,
|
62
62
|
versions
|
63
|
-
})
|
63
|
+
});
|
64
64
|
if (timestamps) {
|
65
65
|
columns.createdAt = (0, _pgcore.timestamp)('created_at', {
|
66
66
|
mode: 'string',
|
@@ -78,25 +78,33 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildNumb
|
|
78
78
|
config[key] = func(cols);
|
79
79
|
return config;
|
80
80
|
}, {});
|
81
|
-
|
81
|
+
const result = Object.entries(indexes).reduce((acc, [colName, func])=>{
|
82
82
|
acc[colName] = func(cols);
|
83
83
|
return acc;
|
84
84
|
}, extraConfig);
|
85
|
+
return result;
|
85
86
|
});
|
86
87
|
adapter.tables[tableName] = table;
|
87
88
|
if (hasLocalizedField) {
|
88
89
|
const localeTableName = `${tableName}${adapter.localesSuffix}`;
|
89
90
|
localesColumns.id = (0, _pgcore.serial)('id').primaryKey();
|
90
91
|
localesColumns._locale = adapter.enums.enum__locales('_locale').notNull();
|
91
|
-
localesColumns._parentID = _parentIDColumnMap.parentIDColumnMap[idColType]('_parent_id').
|
92
|
-
onDelete: 'cascade'
|
93
|
-
}).notNull();
|
92
|
+
localesColumns._parentID = _parentIDColumnMap.parentIDColumnMap[idColType]('_parent_id').notNull();
|
94
93
|
localesTable = adapter.pgSchema.table(localeTableName, localesColumns, (cols)=>{
|
95
94
|
return Object.entries(localesIndexes).reduce((acc, [colName, func])=>{
|
96
95
|
acc[colName] = func(cols);
|
97
96
|
return acc;
|
98
97
|
}, {
|
99
|
-
_localeParent: (0, _pgcore.unique)(`${localeTableName}_locale_parent_id_unique`).on(cols._locale, cols._parentID)
|
98
|
+
_localeParent: (0, _pgcore.unique)(`${localeTableName}_locale_parent_id_unique`).on(cols._locale, cols._parentID),
|
99
|
+
_parentIdFk: (0, _pgcore.foreignKey)({
|
100
|
+
name: `${localeTableName}_parent_id_fk`,
|
101
|
+
columns: [
|
102
|
+
cols._parentID
|
103
|
+
],
|
104
|
+
foreignColumns: [
|
105
|
+
table.id
|
106
|
+
]
|
107
|
+
}).onDelete('cascade')
|
100
108
|
});
|
101
109
|
});
|
102
110
|
adapter.tables[localeTableName] = localesTable;
|
@@ -117,9 +125,7 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildNumb
|
|
117
125
|
const columns = {
|
118
126
|
id: (0, _pgcore.serial)('id').primaryKey(),
|
119
127
|
order: (0, _pgcore.integer)('order').notNull(),
|
120
|
-
parent: _parentIDColumnMap.parentIDColumnMap[idColType]('parent_id').
|
121
|
-
onDelete: 'cascade'
|
122
|
-
}).notNull(),
|
128
|
+
parent: _parentIDColumnMap.parentIDColumnMap[idColType]('parent_id').notNull(),
|
123
129
|
path: (0, _pgcore.varchar)('path').notNull(),
|
124
130
|
text: (0, _pgcore.varchar)('text')
|
125
131
|
};
|
@@ -127,16 +133,25 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildNumb
|
|
127
133
|
columns.locale = adapter.enums.enum__locales('locale');
|
128
134
|
}
|
129
135
|
textsTable = adapter.pgSchema.table(textsTableName, columns, (cols)=>{
|
130
|
-
const
|
131
|
-
orderParentIdx: (0, _pgcore.index)(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent)
|
136
|
+
const config = {
|
137
|
+
orderParentIdx: (0, _pgcore.index)(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent),
|
138
|
+
parentFk: (0, _pgcore.foreignKey)({
|
139
|
+
name: `${textsTableName}_parent_fk`,
|
140
|
+
columns: [
|
141
|
+
cols.parent
|
142
|
+
],
|
143
|
+
foreignColumns: [
|
144
|
+
table.id
|
145
|
+
]
|
146
|
+
}).onDelete('cascade')
|
132
147
|
};
|
133
148
|
if (hasManyTextField === 'index') {
|
134
|
-
|
149
|
+
config.text_idx = (0, _pgcore.index)(`${textsTableName}_text_idx`).on(cols.text);
|
135
150
|
}
|
136
151
|
if (hasLocalizedManyTextField) {
|
137
|
-
|
152
|
+
config.localeParent = (0, _pgcore.index)(`${textsTableName}_locale_parent`).on(cols.locale, cols.parent);
|
138
153
|
}
|
139
|
-
return
|
154
|
+
return config;
|
140
155
|
});
|
141
156
|
adapter.tables[textsTableName] = textsTable;
|
142
157
|
const textsTableRelations = (0, _drizzleorm.relations)(textsTable, ({ one })=>({
|
@@ -157,25 +172,32 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildNumb
|
|
157
172
|
id: (0, _pgcore.serial)('id').primaryKey(),
|
158
173
|
number: (0, _pgcore.numeric)('number'),
|
159
174
|
order: (0, _pgcore.integer)('order').notNull(),
|
160
|
-
parent: _parentIDColumnMap.parentIDColumnMap[idColType]('parent_id').
|
161
|
-
onDelete: 'cascade'
|
162
|
-
}).notNull(),
|
175
|
+
parent: _parentIDColumnMap.parentIDColumnMap[idColType]('parent_id').notNull(),
|
163
176
|
path: (0, _pgcore.varchar)('path').notNull()
|
164
177
|
};
|
165
178
|
if (hasLocalizedManyNumberField) {
|
166
179
|
columns.locale = adapter.enums.enum__locales('locale');
|
167
180
|
}
|
168
181
|
numbersTable = adapter.pgSchema.table(numbersTableName, columns, (cols)=>{
|
169
|
-
const
|
170
|
-
orderParentIdx: (0, _pgcore.index)(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent)
|
182
|
+
const config = {
|
183
|
+
orderParentIdx: (0, _pgcore.index)(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent),
|
184
|
+
parentFk: (0, _pgcore.foreignKey)({
|
185
|
+
name: `${numbersTableName}_parent_fk`,
|
186
|
+
columns: [
|
187
|
+
cols.parent
|
188
|
+
],
|
189
|
+
foreignColumns: [
|
190
|
+
table.id
|
191
|
+
]
|
192
|
+
}).onDelete('cascade')
|
171
193
|
};
|
172
194
|
if (hasManyNumberField === 'index') {
|
173
|
-
|
195
|
+
config.numberIdx = (0, _pgcore.index)(`${numbersTableName}_number_idx`).on(cols.number);
|
174
196
|
}
|
175
197
|
if (hasLocalizedManyNumberField) {
|
176
|
-
|
198
|
+
config.localeParent = (0, _pgcore.index)(`${numbersTableName}_locale_parent`).on(cols.locale, cols.parent);
|
177
199
|
}
|
178
|
-
return
|
200
|
+
return config;
|
179
201
|
});
|
180
202
|
adapter.tables[numbersTableName] = numbersTable;
|
181
203
|
const numbersTableRelations = (0, _drizzleorm.relations)(numbersTable, ({ one })=>({
|
@@ -195,36 +217,55 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildNumb
|
|
195
217
|
const relationshipColumns = {
|
196
218
|
id: (0, _pgcore.serial)('id').primaryKey(),
|
197
219
|
order: (0, _pgcore.integer)('order'),
|
198
|
-
parent: _parentIDColumnMap.parentIDColumnMap[idColType]('parent_id').
|
199
|
-
onDelete: 'cascade'
|
200
|
-
}).notNull(),
|
220
|
+
parent: _parentIDColumnMap.parentIDColumnMap[idColType]('parent_id').notNull(),
|
201
221
|
path: (0, _pgcore.varchar)('path').notNull()
|
202
222
|
};
|
203
223
|
if (hasLocalizedRelationshipField) {
|
204
224
|
relationshipColumns.locale = adapter.enums.enum__locales('locale');
|
205
225
|
}
|
226
|
+
const relationExtraConfig = {};
|
227
|
+
const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`;
|
206
228
|
relationships.forEach((relationTo)=>{
|
207
229
|
const relationshipConfig = adapter.payload.collections[relationTo].config;
|
208
|
-
const formattedRelationTo = (0,
|
230
|
+
const formattedRelationTo = (0, _createTableName.createTableName)({
|
209
231
|
adapter,
|
210
232
|
config: relationshipConfig,
|
211
233
|
throwValidationError: true
|
212
234
|
});
|
213
235
|
let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer';
|
214
236
|
const relatedCollectionCustomID = relationshipConfig.fields.find((field)=>(0, _types.fieldAffectsData)(field) && field.name === 'id');
|
215
|
-
|
216
|
-
if (
|
217
|
-
|
218
|
-
|
219
|
-
})
|
237
|
+
const relatedCollectionCustomIDType = relatedCollectionCustomID?.type;
|
238
|
+
if (relatedCollectionCustomIDType === 'number') colType = 'numeric';
|
239
|
+
if (relatedCollectionCustomIDType === 'text') colType = 'varchar';
|
240
|
+
relationshipColumns[`${relationTo}ID`] = _parentIDColumnMap.parentIDColumnMap[colType](`${formattedRelationTo}_id`);
|
241
|
+
relationExtraConfig[`${relationTo}IdFk`] = (cols)=>(0, _pgcore.foreignKey)({
|
242
|
+
name: `${relationshipsTableName}_${(0, _tosnakecase.default)(relationTo)}_fk`,
|
243
|
+
columns: [
|
244
|
+
cols[`${relationTo}ID`]
|
245
|
+
],
|
246
|
+
foreignColumns: [
|
247
|
+
adapter.tables[formattedRelationTo].id
|
248
|
+
]
|
249
|
+
}).onDelete('cascade');
|
220
250
|
});
|
221
|
-
const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`;
|
222
251
|
relationshipsTable = adapter.pgSchema.table(relationshipsTableName, relationshipColumns, (cols)=>{
|
223
|
-
const result = {
|
252
|
+
const result = Object.entries(relationExtraConfig).reduce((config, [key, func])=>{
|
253
|
+
config[key] = func(cols);
|
254
|
+
return config;
|
255
|
+
}, {
|
224
256
|
order: (0, _pgcore.index)(`${relationshipsTableName}_order_idx`).on(cols.order),
|
257
|
+
parentFk: (0, _pgcore.foreignKey)({
|
258
|
+
name: `${relationshipsTableName}_parent_fk`,
|
259
|
+
columns: [
|
260
|
+
cols.parent
|
261
|
+
],
|
262
|
+
foreignColumns: [
|
263
|
+
table.id
|
264
|
+
]
|
265
|
+
}).onDelete('cascade'),
|
225
266
|
parentIdx: (0, _pgcore.index)(`${relationshipsTableName}_parent_idx`).on(cols.parent),
|
226
267
|
pathIdx: (0, _pgcore.index)(`${relationshipsTableName}_path_idx`).on(cols.path)
|
227
|
-
};
|
268
|
+
});
|
228
269
|
if (hasLocalizedRelationshipField) {
|
229
270
|
result.localeIdx = (0, _pgcore.index)(`${relationshipsTableName}_locale_idx`).on(cols.locale);
|
230
271
|
}
|
@@ -244,7 +285,7 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildNumb
|
|
244
285
|
})
|
245
286
|
};
|
246
287
|
relationships.forEach((relationTo)=>{
|
247
|
-
const relatedTableName = (0,
|
288
|
+
const relatedTableName = (0, _createTableName.createTableName)({
|
248
289
|
adapter,
|
249
290
|
config: adapter.payload.collections[relationTo].config,
|
250
291
|
throwValidationError: true
|
@@ -293,4 +334,4 @@ const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, buildNumb
|
|
293
334
|
};
|
294
335
|
};
|
295
336
|
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvYnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHtcbiAgSW5kZXhCdWlsZGVyLFxuICBQZ0NvbHVtbkJ1aWxkZXIsXG4gIFBnVGFibGVXaXRoQ29sdW1ucyxcbiAgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXIsXG59IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgdHlwZSB7IEZpZWxkIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgcmVsYXRpb25zIH0gZnJvbSAnZHJpenpsZS1vcm0nXG5pbXBvcnQgeyBpbmRleCwgaW50ZWdlciwgbnVtZXJpYywgc2VyaWFsLCB0aW1lc3RhbXAsIHVuaXF1ZSwgdmFyY2hhciB9IGZyb20gJ2RyaXp6bGUtb3JtL3BnLWNvcmUnXG5pbXBvcnQgeyBmaWVsZEFmZmVjdHNEYXRhIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmljQ29sdW1ucywgR2VuZXJpY1RhYmxlLCBJRFR5cGUsIFBvc3RncmVzQWRhcHRlciB9IGZyb20gJy4uL3R5cGVzJ1xuXG5pbXBvcnQgeyBnZXRUYWJsZU5hbWUgfSBmcm9tICcuL2dldFRhYmxlTmFtZSdcbmltcG9ydCB7IHBhcmVudElEQ29sdW1uTWFwIH0gZnJvbSAnLi9wYXJlbnRJRENvbHVtbk1hcCdcbmltcG9ydCB7IHNldENvbHVtbklEIH0gZnJvbSAnLi9zZXRDb2x1bW5JRCdcbmltcG9ydCB7IHRyYXZlcnNlRmllbGRzIH0gZnJvbSAnLi90cmF2ZXJzZUZpZWxkcydcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYmFzZUNvbHVtbnM/OiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+XG4gIGJhc2VFeHRyYUNvbmZpZz86IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXI+XG4gIGJ1aWxkTnVtYmVycz86IGJvb2xlYW5cbiAgYnVpbGRSZWxhdGlvbnNoaXBzPzogYm9vbGVhblxuICBidWlsZFRleHRzPzogYm9vbGVhblxuICBkaXNhYmxlTm90TnVsbDogYm9vbGVhblxuICBkaXNhYmxlVW5pcXVlOiBib29sZWFuXG4gIGZpZWxkczogRmllbGRbXVxuICByb290UmVsYXRpb25zVG9CdWlsZD86IE1hcDxzdHJpbmcsIHN0cmluZz5cbiAgcm9vdFJlbGF0aW9uc2hpcHM/OiBTZXQ8c3RyaW5nPlxuICByb290VGFibGVJRENvbFR5cGU/OiBzdHJpbmdcbiAgcm9vdFRhYmxlTmFtZT86IHN0cmluZ1xuICB0YWJsZU5hbWU6IHN0cmluZ1xuICB0aW1lc3RhbXBzPzogYm9vbGVhblxuICB2ZXJzaW9uczogYm9vbGVhblxufVxuXG50eXBlIFJlc3VsdCA9IHtcbiAgaGFzTWFueU51bWJlckZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxuICBoYXNNYW55VGV4dEZpZWxkOiAnaW5kZXgnIHwgYm9vbGVhblxuICByZWxhdGlvbnNUb0J1aWxkOiBNYXA8c3RyaW5nLCBzdHJpbmc+XG59XG5cbmV4cG9ydCBjb25zdCBidWlsZFRhYmxlID0gKHtcbiAgYWRhcHRlcixcbiAgYmFzZUNvbHVtbnMgPSB7fSxcbiAgYmFzZUV4dHJhQ29uZmlnID0ge30sXG4gIGJ1aWxkTnVtYmVycyxcbiAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICBidWlsZFRleHRzLFxuICBkaXNhYmxlTm90TnVsbCxcbiAgZGlzYWJsZVVuaXF1ZSA9IGZhbHNlLFxuICBmaWVsZHMsXG4gIHJvb3RSZWxhdGlvbnNUb0J1aWxkLFxuICByb290UmVsYXRpb25zaGlwcyxcbiAgcm9vdFRhYmxlSURDb2xUeXBlLFxuICByb290VGFibGVOYW1lOiBpbmNvbWluZ1Jvb3RUYWJsZU5hbWUsXG4gIHRhYmxlTmFtZSxcbiAgdGltZXN0YW1wcyxcbiAgdmVyc2lvbnMsXG59OiBBcmdzKTogUmVzdWx0ID0+IHtcbiAgY29uc3Qgcm9vdFRhYmxlTmFtZSA9IGluY29taW5nUm9vdFRhYmxlTmFtZSB8fCB0YWJsZU5hbWVcbiAgY29uc3QgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IGJhc2VDb2x1bW5zXG4gIGNvbnN0IGluZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPiA9IHt9XG5cbiAgbGV0IGhhc0xvY2FsaXplZEZpZWxkID0gZmFsc2VcbiAgbGV0IGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkID0gZmFsc2VcbiAgbGV0IGhhc01hbnlUZXh0RmllbGQ6ICdpbmRleCcgfCBib29sZWFuID0gZmFsc2VcbiAgbGV0IGhhc01hbnlOdW1iZXJGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW4gPSBmYWxzZVxuICBsZXQgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCA9IGZhbHNlXG4gIGxldCBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQgPSBmYWxzZVxuXG4gIGNvbnN0IGxvY2FsZXNDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge31cbiAgY29uc3QgbG9jYWxlc0luZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPiA9IHt9XG4gIGxldCBsb2NhbGVzVGFibGU6IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIGxldCB0ZXh0c1RhYmxlOiBHZW5lcmljVGFibGUgfCBQZ1RhYmxlV2l0aENvbHVtbnM8YW55PlxuICBsZXQgbnVtYmVyc1RhYmxlOiBHZW5lcmljVGFibGUgfCBQZ1RhYmxlV2l0aENvbHVtbnM8YW55PlxuXG4gIC8vIFJlbGF0aW9uc2hpcHMgdG8gdGhlIGJhc2UgY29sbGVjdGlvblxuICBjb25zdCByZWxhdGlvbnNoaXBzOiBTZXQ8c3RyaW5nPiA9IHJvb3RSZWxhdGlvbnNoaXBzIHx8IG5ldyBTZXQoKVxuXG4gIGxldCByZWxhdGlvbnNoaXBzVGFibGU6IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG5cbiAgLy8gRHJpenpsZSByZWxhdGlvbnNcbiAgY29uc3QgcmVsYXRpb25zVG9CdWlsZDogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKVxuXG4gIGNvbnN0IGlkQ29sVHlwZTogSURUeXBlID0gc2V0Q29sdW1uSUQoeyBhZGFwdGVyLCBjb2x1bW5zLCBmaWVsZHMgfSlcblxuICA7KHtcbiAgICBoYXNMb2NhbGl6ZWRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCxcbiAgICBoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCxcbiAgICBoYXNNYW55TnVtYmVyRmllbGQsXG4gICAgaGFzTWFueVRleHRGaWVsZCxcbiAgfSA9IHRyYXZlcnNlRmllbGRzKHtcbiAgICBhZGFwdGVyLFxuICAgIGJ1aWxkTnVtYmVycyxcbiAgICBidWlsZFJlbGF0aW9uc2hpcHMsXG4gICAgYnVpbGRUZXh0cyxcbiAgICBjb2x1bW5zLFxuICAgIGRpc2FibGVOb3ROdWxsLFxuICAgIGRpc2FibGVVbmlxdWUsXG4gICAgZmllbGRzLFxuICAgIGluZGV4ZXMsXG4gICAgbG9jYWxlc0NvbHVtbnMsXG4gICAgbG9jYWxlc0luZGV4ZXMsXG4gICAgbmV3VGFibGVOYW1lOiB0YWJsZU5hbWUsXG4gICAgcGFyZW50VGFibGVOYW1lOiB0YWJsZU5hbWUsXG4gICAgcmVsYXRpb25zVG9CdWlsZCxcbiAgICByZWxhdGlvbnNoaXBzLFxuICAgIHJvb3RSZWxhdGlvbnNUb0J1aWxkOiByb290UmVsYXRpb25zVG9CdWlsZCB8fCByZWxhdGlvbnNUb0J1aWxkLFxuICAgIHJvb3RUYWJsZUlEQ29sVHlwZTogcm9vdFRhYmxlSURDb2xUeXBlIHx8IGlkQ29sVHlwZSxcbiAgICByb290VGFibGVOYW1lLFxuICAgIHZlcnNpb25zLFxuICB9KSlcblxuICBpZiAodGltZXN0YW1wcykge1xuICAgIGNvbHVtbnMuY3JlYXRlZEF0ID0gdGltZXN0YW1wKCdjcmVhdGVkX2F0Jywge1xuICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICBwcmVjaXNpb246IDMsXG4gICAgICB3aXRoVGltZXpvbmU6IHRydWUsXG4gICAgfSlcbiAgICAgIC5kZWZhdWx0Tm93KClcbiAgICAgIC5ub3ROdWxsKClcbiAgICBjb2x1bW5zLnVwZGF0ZWRBdCA9IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHtcbiAgICAgIG1vZGU6ICdzdHJpbmcnLFxuICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgIH0pXG4gICAgICAuZGVmYXVsdE5vdygpXG4gICAgICAubm90TnVsbCgpXG4gIH1cblxuICBjb25zdCB0YWJsZSA9IGFkYXB0ZXIucGdTY2hlbWEudGFibGUodGFibGVOYW1lLCBjb2x1bW5zLCAoY29scykgPT4ge1xuICAgIGNvbnN0IGV4dHJhQ29uZmlnID0gT2JqZWN0LmVudHJpZXMoYmFzZUV4dHJhQ29uZmlnKS5yZWR1Y2UoKGNvbmZpZywgW2tleSwgZnVuY10pID0+IHtcbiAgICAgIGNvbmZpZ1trZXldID0gZnVuYyhjb2xzKVxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIH0sIHt9KVxuXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGluZGV4ZXMpLnJlZHVjZSgoYWNjLCBbY29sTmFtZSwgZnVuY10pID0+IHtcbiAgICAgIGFjY1tjb2xOYW1lXSA9IGZ1bmMoY29scylcbiAgICAgIHJldHVybiBhY2NcbiAgICB9LCBleHRyYUNvbmZpZylcbiAgfSlcblxuICBhZGFwdGVyLnRhYmxlc1t0YWJsZU5hbWVdID0gdGFibGVcblxuICBpZiAoaGFzTG9jYWxpemVkRmllbGQpIHtcbiAgICBjb25zdCBsb2NhbGVUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9JHthZGFwdGVyLmxvY2FsZXNTdWZmaXh9YFxuICAgIGxvY2FsZXNDb2x1bW5zLmlkID0gc2VyaWFsKCdpZCcpLnByaW1hcnlLZXkoKVxuICAgIGxvY2FsZXNDb2x1bW5zLl9sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ19sb2NhbGUnKS5ub3ROdWxsKClcbiAgICBsb2NhbGVzQ29sdW1ucy5fcGFyZW50SUQgPSBwYXJlbnRJRENvbHVtbk1hcFtpZENvbFR5cGVdKCdfcGFyZW50X2lkJylcbiAgICAgIC5yZWZlcmVuY2VzKCgpID0+IHRhYmxlLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgIC5ub3ROdWxsKClcblxuICAgIGxvY2FsZXNUYWJsZSA9IGFkYXB0ZXIucGdTY2hlbWEudGFibGUobG9jYWxlVGFibGVOYW1lLCBsb2NhbGVzQ29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhsb2NhbGVzSW5kZXhlcykucmVkdWNlKFxuICAgICAgICAoYWNjLCBbY29sTmFtZSwgZnVuY10pID0+IHtcbiAgICAgICAgICBhY2NbY29sTmFtZV0gPSBmdW5jKGNvbHMpXG4gICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgX2xvY2FsZVBhcmVudDogdW5pcXVlKGAke2xvY2FsZVRhYmxlTmFtZX1fbG9jYWxlX3BhcmVudF9pZF91bmlxdWVgKS5vbihcbiAgICAgICAgICAgIGNvbHMuX2xvY2FsZSxcbiAgICAgICAgICAgIGNvbHMuX3BhcmVudElELFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfSlcblxuICAgIGFkYXB0ZXIudGFibGVzW2xvY2FsZVRhYmxlTmFtZV0gPSBsb2NhbGVzVGFibGVcblxuICAgIGNvbnN0IGxvY2FsZXNUYWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyhsb2NhbGVzVGFibGUsICh7IG9uZSB9KSA9PiAoe1xuICAgICAgX3BhcmVudElEOiBvbmUodGFibGUsIHtcbiAgICAgICAgZmllbGRzOiBbbG9jYWxlc1RhYmxlLl9wYXJlbnRJRF0sXG4gICAgICAgIHJlZmVyZW5jZXM6IFt0YWJsZS5pZF0sXG4gICAgICB9KSxcbiAgICB9KSlcblxuICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHtsb2NhbGVUYWJsZU5hbWV9YF0gPSBsb2NhbGVzVGFibGVSZWxhdGlvbnNcbiAgfVxuXG4gIGlmIChoYXNNYW55VGV4dEZpZWxkICYmIGJ1aWxkVGV4dHMpIHtcbiAgICBjb25zdCB0ZXh0c1RhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9X3RleHRzYFxuICAgIGNvbnN0IGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICBpZDogc2VyaWFsKCdpZCcpLnByaW1hcnlLZXkoKSxcbiAgICAgIG9yZGVyOiBpbnRlZ2VyKCdvcmRlcicpLm5vdE51bGwoKSxcbiAgICAgIHBhcmVudDogcGFyZW50SURDb2x1bW5NYXBbaWRDb2xUeXBlXSgncGFyZW50X2lkJylcbiAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAubm90TnVsbCgpLFxuICAgICAgcGF0aDogdmFyY2hhcigncGF0aCcpLm5vdE51bGwoKSxcbiAgICAgIHRleHQ6IHZhcmNoYXIoJ3RleHQnKSxcbiAgICB9XG5cbiAgICBpZiAoaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkge1xuICAgICAgY29sdW1ucy5sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ2xvY2FsZScpXG4gICAgfVxuXG4gICAgdGV4dHNUYWJsZSA9IGFkYXB0ZXIucGdTY2hlbWEudGFibGUodGV4dHNUYWJsZU5hbWUsIGNvbHVtbnMsIChjb2xzKSA9PiB7XG4gICAgICBjb25zdCBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCBJbmRleEJ1aWxkZXI+ID0ge1xuICAgICAgICBvcmRlclBhcmVudElkeDogaW5kZXgoYCR7dGV4dHNUYWJsZU5hbWV9X29yZGVyX3BhcmVudF9pZHhgKS5vbihjb2xzLm9yZGVyLCBjb2xzLnBhcmVudCksXG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNNYW55VGV4dEZpZWxkID09PSAnaW5kZXgnKSB7XG4gICAgICAgIGluZGV4ZXMudGV4dF9pZHggPSBpbmRleChgJHt0ZXh0c1RhYmxlTmFtZX1fdGV4dF9pZHhgKS5vbihjb2xzLnRleHQpXG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkKSB7XG4gICAgICAgIGluZGV4ZXMubG9jYWxlUGFyZW50ID0gaW5kZXgoYCR7dGV4dHNUYWJsZU5hbWV9X2xvY2FsZV9wYXJlbnRgKS5vbihjb2xzLmxvY2FsZSwgY29scy5wYXJlbnQpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbmRleGVzXG4gICAgfSlcblxuICAgIGFkYXB0ZXIudGFibGVzW3RleHRzVGFibGVOYW1lXSA9IHRleHRzVGFibGVcblxuICAgIGNvbnN0IHRleHRzVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnModGV4dHNUYWJsZSwgKHsgb25lIH0pID0+ICh7XG4gICAgICBwYXJlbnQ6IG9uZSh0YWJsZSwge1xuICAgICAgICBmaWVsZHM6IFt0ZXh0c1RhYmxlLnBhcmVudF0sXG4gICAgICAgIHJlZmVyZW5jZXM6IFt0YWJsZS5pZF0sXG4gICAgICB9KSxcbiAgICB9KSlcblxuICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHt0ZXh0c1RhYmxlTmFtZX1gXSA9IHRleHRzVGFibGVSZWxhdGlvbnNcbiAgfVxuXG4gIGlmIChoYXNNYW55TnVtYmVyRmllbGQgJiYgYnVpbGROdW1iZXJzKSB7XG4gICAgY29uc3QgbnVtYmVyc1RhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9X251bWJlcnNgXG4gICAgY29uc3QgY29sdW1uczogUmVjb3JkPHN0cmluZywgUGdDb2x1bW5CdWlsZGVyPiA9IHtcbiAgICAgIGlkOiBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpLFxuICAgICAgbnVtYmVyOiBudW1lcmljKCdudW1iZXInKSxcbiAgICAgIG9yZGVyOiBpbnRlZ2VyKCdvcmRlcicpLm5vdE51bGwoKSxcbiAgICAgIHBhcmVudDogcGFyZW50SURDb2x1bW5NYXBbaWRDb2xUeXBlXSgncGFyZW50X2lkJylcbiAgICAgICAgLnJlZmVyZW5jZXMoKCkgPT4gdGFibGUuaWQsIHsgb25EZWxldGU6ICdjYXNjYWRlJyB9KVxuICAgICAgICAubm90TnVsbCgpLFxuICAgICAgcGF0aDogdmFyY2hhcigncGF0aCcpLm5vdE51bGwoKSxcbiAgICB9XG5cbiAgICBpZiAoaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSB7XG4gICAgICBjb2x1bW5zLmxvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnbG9jYWxlJylcbiAgICB9XG5cbiAgICBudW1iZXJzVGFibGUgPSBhZGFwdGVyLnBnU2NoZW1hLnRhYmxlKG51bWJlcnNUYWJsZU5hbWUsIGNvbHVtbnMsIChjb2xzKSA9PiB7XG4gICAgICBjb25zdCBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCBJbmRleEJ1aWxkZXI+ID0ge1xuICAgICAgICBvcmRlclBhcmVudElkeDogaW5kZXgoYCR7bnVtYmVyc1RhYmxlTmFtZX1fb3JkZXJfcGFyZW50X2lkeGApLm9uKGNvbHMub3JkZXIsIGNvbHMucGFyZW50KSxcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCA9PT0gJ2luZGV4Jykge1xuICAgICAgICBpbmRleGVzLm51bWJlcklkeCA9IGluZGV4KGAke251bWJlcnNUYWJsZU5hbWV9X251bWJlcl9pZHhgKS5vbihjb2xzLm51bWJlcilcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgICBpbmRleGVzLmxvY2FsZVBhcmVudCA9IGluZGV4KGAke251bWJlcnNUYWJsZU5hbWV9X2xvY2FsZV9wYXJlbnRgKS5vbihcbiAgICAgICAgICBjb2xzLmxvY2FsZSxcbiAgICAgICAgICBjb2xzLnBhcmVudCxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5kZXhlc1xuICAgIH0pXG5cbiAgICBhZGFwdGVyLnRhYmxlc1tudW1iZXJzVGFibGVOYW1lXSA9IG51bWJlcnNUYWJsZVxuXG4gICAgY29uc3QgbnVtYmVyc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKG51bWJlcnNUYWJsZSwgKHsgb25lIH0pID0+ICh7XG4gICAgICBwYXJlbnQ6IG9uZSh0YWJsZSwge1xuICAgICAgICBmaWVsZHM6IFtudW1iZXJzVGFibGUucGFyZW50XSxcbiAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgIH0pLFxuICAgIH0pKVxuXG4gICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke251bWJlcnNUYWJsZU5hbWV9YF0gPSBudW1iZXJzVGFibGVSZWxhdGlvbnNcbiAgfVxuXG4gIGlmIChidWlsZFJlbGF0aW9uc2hpcHMpIHtcbiAgICBpZiAocmVsYXRpb25zaGlwcy5zaXplKSB7XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICBpZDogc2VyaWFsKCdpZCcpLnByaW1hcnlLZXkoKSxcbiAgICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJyksXG4gICAgICAgIHBhcmVudDogcGFyZW50SURDb2x1bW5NYXBbaWRDb2xUeXBlXSgncGFyZW50X2lkJylcbiAgICAgICAgICAucmVmZXJlbmNlcygoKSA9PiB0YWJsZS5pZCwgeyBvbkRlbGV0ZTogJ2Nhc2NhZGUnIH0pXG4gICAgICAgICAgLm5vdE51bGwoKSxcbiAgICAgICAgcGF0aDogdmFyY2hhcigncGF0aCcpLm5vdE51bGwoKSxcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSB7XG4gICAgICAgIHJlbGF0aW9uc2hpcENvbHVtbnMubG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdsb2NhbGUnKVxuICAgICAgfVxuXG4gICAgICByZWxhdGlvbnNoaXBzLmZvckVhY2goKHJlbGF0aW9uVG8pID0+IHtcbiAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwQ29uZmlnID0gYWRhcHRlci5wYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmNvbmZpZ1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRSZWxhdGlvblRvID0gZ2V0VGFibGVOYW1lKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGNvbmZpZzogcmVsYXRpb25zaGlwQ29uZmlnLFxuICAgICAgICAgIHRocm93VmFsaWRhdGlvbkVycm9yOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICBsZXQgY29sVHlwZSA9IGFkYXB0ZXIuaWRUeXBlID09PSAndXVpZCcgPyAndXVpZCcgOiAnaW50ZWdlcidcbiAgICAgICAgY29uc3QgcmVsYXRlZENvbGxlY3Rpb25DdXN0b21JRCA9IHJlbGF0aW9uc2hpcENvbmZpZy5maWVsZHMuZmluZChcbiAgICAgICAgICAoZmllbGQpID0+IGZpZWxkQWZmZWN0c0RhdGEoZmllbGQpICYmIGZpZWxkLm5hbWUgPT09ICdpZCcsXG4gICAgICAgIClcbiAgICAgICAgaWYgKHJlbGF0ZWRDb2xsZWN0aW9uQ3VzdG9tSUQ/LnR5cGUgPT09ICdudW1iZXInKSBjb2xUeXBlID0gJ251bWVyaWMnXG4gICAgICAgIGlmIChyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEPy50eXBlID09PSAndGV4dCcpIGNvbFR5cGUgPSAndmFyY2hhcidcblxuICAgICAgICByZWxhdGlvbnNoaXBDb2x1bW5zW2Ake3JlbGF0aW9uVG99SURgXSA9IHBhcmVudElEQ29sdW1uTWFwW2NvbFR5cGVdKFxuICAgICAgICAgIGAke2Zvcm1hdHRlZFJlbGF0aW9uVG99X2lkYCxcbiAgICAgICAgKS5yZWZlcmVuY2VzKCgpID0+IGFkYXB0ZXIudGFibGVzW2Zvcm1hdHRlZFJlbGF0aW9uVG9dLmlkLCB7IG9uRGVsZXRlOiAnY2FzY2FkZScgfSlcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9JHthZGFwdGVyLnJlbGF0aW9uc2hpcHNTdWZmaXh9YFxuXG4gICAgICByZWxhdGlvbnNoaXBzVGFibGUgPSBhZGFwdGVyLnBnU2NoZW1hLnRhYmxlKFxuICAgICAgICByZWxhdGlvbnNoaXBzVGFibGVOYW1lLFxuICAgICAgICByZWxhdGlvbnNoaXBDb2x1bW5zLFxuICAgICAgICAoY29scykgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICAgICAgICBvcmRlcjogaW5kZXgoYCR7cmVsYXRpb25zaGlwc1RhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5vcmRlciksXG4gICAgICAgICAgICBwYXJlbnRJZHg6IGluZGV4KGAke3JlbGF0aW9uc2hpcHNUYWJsZU5hbWV9X3BhcmVudF9pZHhgKS5vbihjb2xzLnBhcmVudCksXG4gICAgICAgICAgICBwYXRoSWR4OiBpbmRleChgJHtyZWxhdGlvbnNoaXBzVGFibGVOYW1lfV9wYXRoX2lkeGApLm9uKGNvbHMucGF0aCksXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGhhc0xvY2FsaXplZFJlbGF0aW9uc2hpcEZpZWxkKSB7XG4gICAgICAgICAgICByZXN1bHQubG9jYWxlSWR4ID0gaW5kZXgoYCR7cmVsYXRpb25zaGlwc1RhYmxlTmFtZX1fbG9jYWxlX2lkeGApLm9uKGNvbHMubG9jYWxlKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfSxcbiAgICAgIClcblxuICAgICAgYWRhcHRlci50YWJsZXNbcmVsYXRpb25zaGlwc1RhYmxlTmFtZV0gPSByZWxhdGlvbnNoaXBzVGFibGVcblxuICAgICAgY29uc3QgcmVsYXRpb25zaGlwc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKHJlbGF0aW9uc2hpcHNUYWJsZSwgKHsgb25lIH0pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHtcbiAgICAgICAgICBwYXJlbnQ6IG9uZSh0YWJsZSwge1xuICAgICAgICAgICAgZmllbGRzOiBbcmVsYXRpb25zaGlwc1RhYmxlLnBhcmVudF0sXG4gICAgICAgICAgICByZWZlcmVuY2VzOiBbdGFibGUuaWRdLFxuICAgICAgICAgICAgcmVsYXRpb25OYW1lOiAnX3JlbHMnLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9XG5cbiAgICAgICAgcmVsYXRpb25zaGlwcy5mb3JFYWNoKChyZWxhdGlvblRvKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVsYXRlZFRhYmxlTmFtZSA9IGdldFRhYmxlTmFtZSh7XG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgY29uZmlnOiBhZGFwdGVyLnBheWxvYWQuY29sbGVjdGlvbnNbcmVsYXRpb25Ub10uY29uZmlnLFxuICAgICAgICAgICAgdGhyb3dWYWxpZGF0aW9uRXJyb3I6IHRydWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgICBjb25zdCBpZENvbHVtbk5hbWUgPSBgJHtyZWxhdGlvblRvfUlEYFxuICAgICAgICAgIHJlc3VsdFtpZENvbHVtbk5hbWVdID0gb25lKGFkYXB0ZXIudGFibGVzW3JlbGF0ZWRUYWJsZU5hbWVdLCB7XG4gICAgICAgICAgICBmaWVsZHM6IFtyZWxhdGlvbnNoaXBzVGFibGVbaWRDb2x1bW5OYW1lXV0sXG4gICAgICAgICAgICByZWZlcmVuY2VzOiBbYWRhcHRlci50YWJsZXNbcmVsYXRlZFRhYmxlTmFtZV0uaWRdLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgfSlcblxuICAgICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke3JlbGF0aW9uc2hpcHNUYWJsZU5hbWV9YF0gPSByZWxhdGlvbnNoaXBzVGFibGVSZWxhdGlvbnNcbiAgICB9XG4gIH1cblxuICBjb25zdCB0YWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyh0YWJsZSwgKHsgbWFueSB9KSA9PiB7XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZWxhdGlvbjxzdHJpbmc+PiA9IHt9XG5cbiAgICByZWxhdGlvbnNUb0J1aWxkLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICByZXN1bHRba2V5XSA9IG1hbnkoYWRhcHRlci50YWJsZXNbdmFsXSlcbiAgICB9KVxuXG4gICAgaWYgKGhhc0xvY2FsaXplZEZpZWxkKSB7XG4gICAgICByZXN1bHQuX2xvY2FsZXMgPSBtYW55KGxvY2FsZXNUYWJsZSlcbiAgICB9XG5cbiAgICBpZiAoaGFzTWFueVRleHRGaWVsZCkge1xuICAgICAgcmVzdWx0Ll90ZXh0cyA9IG1hbnkodGV4dHNUYWJsZSlcbiAgICB9XG4gICAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCkge1xuICAgICAgcmVzdWx0Ll9udW1iZXJzID0gbWFueShudW1iZXJzVGFibGUpXG4gICAgfVxuXG4gICAgaWYgKHJlbGF0aW9uc2hpcHMuc2l6ZSAmJiByZWxhdGlvbnNoaXBzVGFibGUpIHtcbiAgICAgIHJlc3VsdC5fcmVscyA9IG1hbnkocmVsYXRpb25zaGlwc1RhYmxlLCB7XG4gICAgICAgIHJlbGF0aW9uTmFtZTogJ19yZWxzJyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KVxuXG4gIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHt0YWJsZU5hbWV9YF0gPSB0YWJsZVJlbGF0aW9uc1xuXG4gIHJldHVybiB7IGhhc01hbnlOdW1iZXJGaWVsZCwgaGFzTWFueVRleHRGaWVsZCwgcmVsYXRpb25zVG9CdWlsZCB9XG59XG4iXSwibmFtZXMiOlsiYnVpbGRUYWJsZSIsImFkYXB0ZXIiLCJiYXNlQ29sdW1ucyIsImJhc2VFeHRyYUNvbmZpZyIsImJ1aWxkTnVtYmVycyIsImJ1aWxkUmVsYXRpb25zaGlwcyIsImJ1aWxkVGV4dHMiLCJkaXNhYmxlTm90TnVsbCIsImRpc2FibGVVbmlxdWUiLCJmaWVsZHMiLCJyb290UmVsYXRpb25zVG9CdWlsZCIsInJvb3RSZWxhdGlvbnNoaXBzIiwicm9vdFRhYmxlSURDb2xUeXBlIiwicm9vdFRhYmxlTmFtZSIsImluY29taW5nUm9vdFRhYmxlTmFtZSIsInRhYmxlTmFtZSIsInRpbWVzdGFtcHMiLCJ2ZXJzaW9ucyIsImNvbHVtbnMiLCJpbmRleGVzIiwiaGFzTG9jYWxpemVkRmllbGQiLCJoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImhhc01hbnlUZXh0RmllbGQiLCJoYXNNYW55TnVtYmVyRmllbGQiLCJoYXNMb2NhbGl6ZWRNYW55VGV4dEZpZWxkIiwiaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkIiwibG9jYWxlc0NvbHVtbnMiLCJsb2NhbGVzSW5kZXhlcyIsImxvY2FsZXNUYWJsZSIsInRleHRzVGFibGUiLCJudW1iZXJzVGFibGUiLCJyZWxhdGlvbnNoaXBzIiwiU2V0IiwicmVsYXRpb25zaGlwc1RhYmxlIiwicmVsYXRpb25zVG9CdWlsZCIsIk1hcCIsImlkQ29sVHlwZSIsInNldENvbHVtbklEIiwidHJhdmVyc2VGaWVsZHMiLCJuZXdUYWJsZU5hbWUiLCJwYXJlbnRUYWJsZU5hbWUiLCJjcmVhdGVkQXQiLCJ0aW1lc3RhbXAiLCJtb2RlIiwicHJlY2lzaW9uIiwid2l0aFRpbWV6b25lIiwiZGVmYXVsdE5vdyIsIm5vdE51bGwiLCJ1cGRhdGVkQXQiLCJ0YWJsZSIsInBnU2NoZW1hIiwiY29scyIsImV4dHJhQ29uZmlnIiwiT2JqZWN0IiwiZW50cmllcyIsInJlZHVjZSIsImNvbmZpZyIsImtleSIsImZ1bmMiLCJhY2MiLCJjb2xOYW1lIiwidGFibGVzIiwibG9jYWxlVGFibGVOYW1lIiwibG9jYWxlc1N1ZmZpeCIsImlkIiwic2VyaWFsIiwicHJpbWFyeUtleSIsIl9sb2NhbGUiLCJlbnVtcyIsImVudW1fX2xvY2FsZXMiLCJfcGFyZW50SUQiLCJwYXJlbnRJRENvbHVtbk1hcCIsInJlZmVyZW5jZXMiLCJvbkRlbGV0ZSIsIl9sb2NhbGVQYXJlbnQiLCJ1bmlxdWUiLCJvbiIsImxvY2FsZXNUYWJsZVJlbGF0aW9ucyIsInJlbGF0aW9ucyIsIm9uZSIsInRleHRzVGFibGVOYW1lIiwib3JkZXIiLCJpbnRlZ2VyIiwicGFyZW50IiwicGF0aCIsInZhcmNoYXIiLCJ0ZXh0IiwibG9jYWxlIiwib3JkZXJQYXJlbnRJZHgiLCJpbmRleCIsInRleHRfaWR4IiwibG9jYWxlUGFyZW50IiwidGV4dHNUYWJsZVJlbGF0aW9ucyIsIm51bWJlcnNUYWJsZU5hbWUiLCJudW1iZXIiLCJudW1lcmljIiwibnVtYmVySWR4IiwibnVtYmVyc1RhYmxlUmVsYXRpb25zIiwic2l6ZSIsInJlbGF0aW9uc2hpcENvbHVtbnMiLCJmb3JFYWNoIiwicmVsYXRpb25UbyIsInJlbGF0aW9uc2hpcENvbmZpZyIsInBheWxvYWQiLCJjb2xsZWN0aW9ucyIsImZvcm1hdHRlZFJlbGF0aW9uVG8iLCJnZXRUYWJsZU5hbWUiLCJ0aHJvd1ZhbGlkYXRpb25FcnJvciIsImNvbFR5cGUiLCJpZFR5cGUiLCJyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEIiwiZmluZCIsImZpZWxkIiwiZmllbGRBZmZlY3RzRGF0YSIsIm5hbWUiLCJ0eXBlIiwicmVsYXRpb25zaGlwc1RhYmxlTmFtZSIsInJlbGF0aW9uc2hpcHNTdWZmaXgiLCJyZXN1bHQiLCJwYXJlbnRJZHgiLCJwYXRoSWR4IiwibG9jYWxlSWR4IiwicmVsYXRpb25zaGlwc1RhYmxlUmVsYXRpb25zIiwicmVsYXRpb25OYW1lIiwicmVsYXRlZFRhYmxlTmFtZSIsImlkQ29sdW1uTmFtZSIsInRhYmxlUmVsYXRpb25zIiwibWFueSIsInZhbCIsIl9sb2NhbGVzIiwiX3RleHRzIiwiX251bWJlcnMiLCJfcmVscyJdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DOzs7OytCQThDdkJBOzs7ZUFBQUE7Ozs0QkFwQ2E7d0JBQ2tEO3VCQUMzQzs4QkFJSjttQ0FDSzs2QkFDTjtnQ0FDRztBQTJCeEIsTUFBTUEsYUFBYSxDQUFDLEVBQ3pCQyxPQUFPLEVBQ1BDLGNBQWMsQ0FBQyxDQUFDLEVBQ2hCQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQ3BCQyxZQUFZLEVBQ1pDLGtCQUFrQixFQUNsQkMsVUFBVSxFQUNWQyxjQUFjLEVBQ2RDLGdCQUFnQixLQUFLLEVBQ3JCQyxNQUFNLEVBQ05DLG9CQUFvQixFQUNwQkMsaUJBQWlCLEVBQ2pCQyxrQkFBa0IsRUFDbEJDLGVBQWVDLHFCQUFxQixFQUNwQ0MsU0FBUyxFQUNUQyxVQUFVLEVBQ1ZDLFFBQVEsRUFDSDtJQUNMLE1BQU1KLGdCQUFnQkMseUJBQXlCQztJQUMvQyxNQUFNRyxVQUEyQ2hCO0lBQ2pELE1BQU1pQixVQUFrRSxDQUFDO0lBRXpFLElBQUlDLG9CQUFvQjtJQUN4QixJQUFJQyxnQ0FBZ0M7SUFDcEMsSUFBSUMsbUJBQXNDO0lBQzFDLElBQUlDLHFCQUF3QztJQUM1QyxJQUFJQyw0QkFBNEI7SUFDaEMsSUFBSUMsOEJBQThCO0lBRWxDLE1BQU1DLGlCQUFrRCxDQUFDO0lBQ3pELE1BQU1DLGlCQUF5RSxDQUFDO0lBQ2hGLElBQUlDO0lBQ0osSUFBSUM7SUFDSixJQUFJQztJQUVKLHVDQUF1QztJQUN2QyxNQUFNQyxnQkFBNkJwQixxQkFBcUIsSUFBSXFCO0lBRTVELElBQUlDO0lBRUosb0JBQW9CO0lBQ3BCLE1BQU1DLG1CQUF3QyxJQUFJQztJQUVsRCxNQUFNQyxZQUFvQkMsSUFBQUEsd0JBQVcsRUFBQztRQUFFcEM7UUFBU2lCO1FBQVNUO0lBQU87SUFFL0QsQ0FBQSxFQUNBVyxpQkFBaUIsRUFDakJLLDJCQUEy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
|
337
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvYnVpbGQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbmltcG9ydCB0eXBlIHsgUmVsYXRpb24gfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB0eXBlIHtcbiAgRm9yZWlnbktleUJ1aWxkZXIsXG4gIEluZGV4QnVpbGRlcixcbiAgUGdDb2x1bW5CdWlsZGVyLFxuICBQZ1RhYmxlV2l0aENvbHVtbnMsXG4gIFVuaXF1ZUNvbnN0cmFpbnRCdWlsZGVyLFxufSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJ1xuaW1wb3J0IHsgRmllbGQsIGZpZWxkQWZmZWN0c0RhdGEgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuXG5pbXBvcnQgeyByZWxhdGlvbnMgfSBmcm9tICdkcml6emxlLW9ybSdcbmltcG9ydCB7XG4gIGZvcmVpZ25LZXksXG4gIGluZGV4LFxuICBpbnRlZ2VyLFxuICBudW1lcmljLFxuICBzZXJpYWwsXG4gIHRpbWVzdGFtcCxcbiAgdW5pcXVlLFxuICB2YXJjaGFyLFxufSBmcm9tICdkcml6emxlLW9ybS9wZy1jb3JlJ1xuaW1wb3J0IHRvU25ha2VDYXNlIGZyb20gJ3RvLXNuYWtlLWNhc2UnXG5cbmltcG9ydCB0eXBlIHsgR2VuZXJpY0NvbHVtbnMsIEdlbmVyaWNUYWJsZSwgSURUeXBlLCBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgY3JlYXRlVGFibGVOYW1lIH0gZnJvbSAnLi9jcmVhdGVUYWJsZU5hbWUnXG5pbXBvcnQgeyBwYXJlbnRJRENvbHVtbk1hcCB9IGZyb20gJy4vcGFyZW50SURDb2x1bW5NYXAnXG5pbXBvcnQgeyBzZXRDb2x1bW5JRCB9IGZyb20gJy4vc2V0Q29sdW1uSUQnXG5pbXBvcnQgeyB0cmF2ZXJzZUZpZWxkcyB9IGZyb20gJy4vdHJhdmVyc2VGaWVsZHMnXG5cbmV4cG9ydCB0eXBlIEJhc2VFeHRyYUNvbmZpZyA9IFJlY29yZDxcbiAgc3RyaW5nLFxuICAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEZvcmVpZ25LZXlCdWlsZGVyIHwgSW5kZXhCdWlsZGVyIHwgVW5pcXVlQ29uc3RyYWludEJ1aWxkZXJcbj5cblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgYmFzZUNvbHVtbnM/OiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+XG4gIGJhc2VFeHRyYUNvbmZpZz86IEJhc2VFeHRyYUNvbmZpZ1xuICBidWlsZE51bWJlcnM/OiBib29sZWFuXG4gIGJ1aWxkUmVsYXRpb25zaGlwcz86IGJvb2xlYW5cbiAgYnVpbGRUZXh0cz86IGJvb2xlYW5cbiAgZGlzYWJsZU5vdE51bGw6IGJvb2xlYW5cbiAgZGlzYWJsZVVuaXF1ZTogYm9vbGVhblxuICBmaWVsZHM6IEZpZWxkW11cbiAgcm9vdFJlbGF0aW9uc1RvQnVpbGQ/OiBNYXA8c3RyaW5nLCBzdHJpbmc+XG4gIHJvb3RSZWxhdGlvbnNoaXBzPzogU2V0PHN0cmluZz5cbiAgcm9vdFRhYmxlSURDb2xUeXBlPzogc3RyaW5nXG4gIHJvb3RUYWJsZU5hbWU/OiBzdHJpbmdcbiAgdGFibGVOYW1lOiBzdHJpbmdcbiAgdGltZXN0YW1wcz86IGJvb2xlYW5cbiAgdmVyc2lvbnM6IGJvb2xlYW5cbn1cblxudHlwZSBSZXN1bHQgPSB7XG4gIGhhc01hbnlOdW1iZXJGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW5cbiAgaGFzTWFueVRleHRGaWVsZDogJ2luZGV4JyB8IGJvb2xlYW5cbiAgcmVsYXRpb25zVG9CdWlsZDogTWFwPHN0cmluZywgc3RyaW5nPlxufVxuXG5leHBvcnQgY29uc3QgYnVpbGRUYWJsZSA9ICh7XG4gIGFkYXB0ZXIsXG4gIGJhc2VDb2x1bW5zID0ge30sXG4gIGJhc2VFeHRyYUNvbmZpZyA9IHt9LFxuICBidWlsZE51bWJlcnMsXG4gIGJ1aWxkUmVsYXRpb25zaGlwcyxcbiAgYnVpbGRUZXh0cyxcbiAgZGlzYWJsZU5vdE51bGwsXG4gIGRpc2FibGVVbmlxdWUgPSBmYWxzZSxcbiAgZmllbGRzLFxuICByb290UmVsYXRpb25zVG9CdWlsZCxcbiAgcm9vdFJlbGF0aW9uc2hpcHMsXG4gIHJvb3RUYWJsZUlEQ29sVHlwZSxcbiAgcm9vdFRhYmxlTmFtZTogaW5jb21pbmdSb290VGFibGVOYW1lLFxuICB0YWJsZU5hbWUsXG4gIHRpbWVzdGFtcHMsXG4gIHZlcnNpb25zLFxufTogQXJncyk6IFJlc3VsdCA9PiB7XG4gIGNvbnN0IHJvb3RUYWJsZU5hbWUgPSBpbmNvbWluZ1Jvb3RUYWJsZU5hbWUgfHwgdGFibGVOYW1lXG4gIGNvbnN0IGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSBiYXNlQ29sdW1uc1xuICBjb25zdCBpbmRleGVzOiBSZWNvcmQ8c3RyaW5nLCAoY29sczogR2VuZXJpY0NvbHVtbnMpID0+IEluZGV4QnVpbGRlcj4gPSB7fVxuXG4gIGNvbnN0IGxvY2FsZXNDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge31cbiAgY29uc3QgbG9jYWxlc0luZGV4ZXM6IFJlY29yZDxzdHJpbmcsIChjb2xzOiBHZW5lcmljQ29sdW1ucykgPT4gSW5kZXhCdWlsZGVyPiA9IHt9XG4gIGxldCBsb2NhbGVzVGFibGU6IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG4gIGxldCB0ZXh0c1RhYmxlOiBHZW5lcmljVGFibGUgfCBQZ1RhYmxlV2l0aENvbHVtbnM8YW55PlxuICBsZXQgbnVtYmVyc1RhYmxlOiBHZW5lcmljVGFibGUgfCBQZ1RhYmxlV2l0aENvbHVtbnM8YW55PlxuXG4gIC8vIFJlbGF0aW9uc2hpcHMgdG8gdGhlIGJhc2UgY29sbGVjdGlvblxuICBjb25zdCByZWxhdGlvbnNoaXBzOiBTZXQ8c3RyaW5nPiA9IHJvb3RSZWxhdGlvbnNoaXBzIHx8IG5ldyBTZXQoKVxuXG4gIGxldCByZWxhdGlvbnNoaXBzVGFibGU6IEdlbmVyaWNUYWJsZSB8IFBnVGFibGVXaXRoQ29sdW1uczxhbnk+XG5cbiAgLy8gRHJpenpsZSByZWxhdGlvbnNcbiAgY29uc3QgcmVsYXRpb25zVG9CdWlsZDogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKVxuXG4gIGNvbnN0IGlkQ29sVHlwZTogSURUeXBlID0gc2V0Q29sdW1uSUQoeyBhZGFwdGVyLCBjb2x1bW5zLCBmaWVsZHMgfSlcblxuICBjb25zdCB7XG4gICAgaGFzTG9jYWxpemVkRmllbGQsXG4gICAgaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkLFxuICAgIGhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQsXG4gICAgaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQsXG4gICAgaGFzTWFueU51bWJlckZpZWxkLFxuICAgIGhhc01hbnlUZXh0RmllbGQsXG4gIH0gPSB0cmF2ZXJzZUZpZWxkcyh7XG4gICAgYWRhcHRlcixcbiAgICBidWlsZE51bWJlcnMsXG4gICAgYnVpbGRSZWxhdGlvbnNoaXBzLFxuICAgIGJ1aWxkVGV4dHMsXG4gICAgY29sdW1ucyxcbiAgICBkaXNhYmxlTm90TnVsbCxcbiAgICBkaXNhYmxlVW5pcXVlLFxuICAgIGZpZWxkcyxcbiAgICBpbmRleGVzLFxuICAgIGxvY2FsZXNDb2x1bW5zLFxuICAgIGxvY2FsZXNJbmRleGVzLFxuICAgIG5ld1RhYmxlTmFtZTogdGFibGVOYW1lLFxuICAgIHBhcmVudFRhYmxlTmFtZTogdGFibGVOYW1lLFxuICAgIHJlbGF0aW9uc1RvQnVpbGQsXG4gICAgcmVsYXRpb25zaGlwcyxcbiAgICByb290UmVsYXRpb25zVG9CdWlsZDogcm9vdFJlbGF0aW9uc1RvQnVpbGQgfHwgcmVsYXRpb25zVG9CdWlsZCxcbiAgICByb290VGFibGVJRENvbFR5cGU6IHJvb3RUYWJsZUlEQ29sVHlwZSB8fCBpZENvbFR5cGUsXG4gICAgcm9vdFRhYmxlTmFtZSxcbiAgICB2ZXJzaW9ucyxcbiAgfSlcblxuICBpZiAodGltZXN0YW1wcykge1xuICAgIGNvbHVtbnMuY3JlYXRlZEF0ID0gdGltZXN0YW1wKCdjcmVhdGVkX2F0Jywge1xuICAgICAgbW9kZTogJ3N0cmluZycsXG4gICAgICBwcmVjaXNpb246IDMsXG4gICAgICB3aXRoVGltZXpvbmU6IHRydWUsXG4gICAgfSlcbiAgICAgIC5kZWZhdWx0Tm93KClcbiAgICAgIC5ub3ROdWxsKClcbiAgICBjb2x1bW5zLnVwZGF0ZWRBdCA9IHRpbWVzdGFtcCgndXBkYXRlZF9hdCcsIHtcbiAgICAgIG1vZGU6ICdzdHJpbmcnLFxuICAgICAgcHJlY2lzaW9uOiAzLFxuICAgICAgd2l0aFRpbWV6b25lOiB0cnVlLFxuICAgIH0pXG4gICAgICAuZGVmYXVsdE5vdygpXG4gICAgICAubm90TnVsbCgpXG4gIH1cblxuICBjb25zdCB0YWJsZSA9IGFkYXB0ZXIucGdTY2hlbWEudGFibGUodGFibGVOYW1lLCBjb2x1bW5zLCAoY29scykgPT4ge1xuICAgIGNvbnN0IGV4dHJhQ29uZmlnID0gT2JqZWN0LmVudHJpZXMoYmFzZUV4dHJhQ29uZmlnKS5yZWR1Y2UoKGNvbmZpZywgW2tleSwgZnVuY10pID0+IHtcbiAgICAgIGNvbmZpZ1trZXldID0gZnVuYyhjb2xzKVxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIH0sIHt9KVxuXG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMoaW5kZXhlcykucmVkdWNlKChhY2MsIFtjb2xOYW1lLCBmdW5jXSkgPT4ge1xuICAgICAgYWNjW2NvbE5hbWVdID0gZnVuYyhjb2xzKVxuICAgICAgcmV0dXJuIGFjY1xuICAgIH0sIGV4dHJhQ29uZmlnKVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9KVxuXG4gIGFkYXB0ZXIudGFibGVzW3RhYmxlTmFtZV0gPSB0YWJsZVxuXG4gIGlmIChoYXNMb2NhbGl6ZWRGaWVsZCkge1xuICAgIGNvbnN0IGxvY2FsZVRhYmxlTmFtZSA9IGAke3RhYmxlTmFtZX0ke2FkYXB0ZXIubG9jYWxlc1N1ZmZpeH1gXG4gICAgbG9jYWxlc0NvbHVtbnMuaWQgPSBzZXJpYWwoJ2lkJykucHJpbWFyeUtleSgpXG4gICAgbG9jYWxlc0NvbHVtbnMuX2xvY2FsZSA9IGFkYXB0ZXIuZW51bXMuZW51bV9fbG9jYWxlcygnX2xvY2FsZScpLm5vdE51bGwoKVxuICAgIGxvY2FsZXNDb2x1bW5zLl9wYXJlbnRJRCA9IHBhcmVudElEQ29sdW1uTWFwW2lkQ29sVHlwZV0oJ19wYXJlbnRfaWQnKS5ub3ROdWxsKClcblxuICAgIGxvY2FsZXNUYWJsZSA9IGFkYXB0ZXIucGdTY2hlbWEudGFibGUobG9jYWxlVGFibGVOYW1lLCBsb2NhbGVzQ29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhsb2NhbGVzSW5kZXhlcykucmVkdWNlKFxuICAgICAgICAoYWNjLCBbY29sTmFtZSwgZnVuY10pID0+IHtcbiAgICAgICAgICBhY2NbY29sTmFtZV0gPSBmdW5jKGNvbHMpXG4gICAgICAgICAgcmV0dXJuIGFjY1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgX2xvY2FsZVBhcmVudDogdW5pcXVlKGAke2xvY2FsZVRhYmxlTmFtZX1fbG9jYWxlX3BhcmVudF9pZF91bmlxdWVgKS5vbihcbiAgICAgICAgICAgIGNvbHMuX2xvY2FsZSxcbiAgICAgICAgICAgIGNvbHMuX3BhcmVudElELFxuICAgICAgICAgICksXG4gICAgICAgICAgX3BhcmVudElkRms6IGZvcmVpZ25LZXkoe1xuICAgICAgICAgICAgbmFtZTogYCR7bG9jYWxlVGFibGVOYW1lfV9wYXJlbnRfaWRfZmtgLFxuICAgICAgICAgICAgY29sdW1uczogW2NvbHMuX3BhcmVudElEXSxcbiAgICAgICAgICAgIGZvcmVpZ25Db2x1bW5zOiBbdGFibGUuaWRdLFxuICAgICAgICAgIH0pLm9uRGVsZXRlKCdjYXNjYWRlJyksXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfSlcblxuICAgIGFkYXB0ZXIudGFibGVzW2xvY2FsZVRhYmxlTmFtZV0gPSBsb2NhbGVzVGFibGVcblxuICAgIGNvbnN0IGxvY2FsZXNUYWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyhsb2NhbGVzVGFibGUsICh7IG9uZSB9KSA9PiAoe1xuICAgICAgX3BhcmVudElEOiBvbmUodGFibGUsIHtcbiAgICAgICAgZmllbGRzOiBbbG9jYWxlc1RhYmxlLl9wYXJlbnRJRF0sXG4gICAgICAgIHJlZmVyZW5jZXM6IFt0YWJsZS5pZF0sXG4gICAgICB9KSxcbiAgICB9KSlcblxuICAgIGFkYXB0ZXIucmVsYXRpb25zW2ByZWxhdGlvbnNfJHtsb2NhbGVUYWJsZU5hbWV9YF0gPSBsb2NhbGVzVGFibGVSZWxhdGlvbnNcbiAgfVxuXG4gIGlmIChoYXNNYW55VGV4dEZpZWxkICYmIGJ1aWxkVGV4dHMpIHtcbiAgICBjb25zdCB0ZXh0c1RhYmxlTmFtZSA9IGAke3Jvb3RUYWJsZU5hbWV9X3RleHRzYFxuICAgIGNvbnN0IGNvbHVtbnM6IFJlY29yZDxzdHJpbmcsIFBnQ29sdW1uQnVpbGRlcj4gPSB7XG4gICAgICBpZDogc2VyaWFsKCdpZCcpLnByaW1hcnlLZXkoKSxcbiAgICAgIG9yZGVyOiBpbnRlZ2VyKCdvcmRlcicpLm5vdE51bGwoKSxcbiAgICAgIHBhcmVudDogcGFyZW50SURDb2x1bW5NYXBbaWRDb2xUeXBlXSgncGFyZW50X2lkJykubm90TnVsbCgpLFxuICAgICAgcGF0aDogdmFyY2hhcigncGF0aCcpLm5vdE51bGwoKSxcbiAgICAgIHRleHQ6IHZhcmNoYXIoJ3RleHQnKSxcbiAgICB9XG5cbiAgICBpZiAoaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkge1xuICAgICAgY29sdW1ucy5sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ2xvY2FsZScpXG4gICAgfVxuXG4gICAgdGV4dHNUYWJsZSA9IGFkYXB0ZXIucGdTY2hlbWEudGFibGUodGV4dHNUYWJsZU5hbWUsIGNvbHVtbnMsIChjb2xzKSA9PiB7XG4gICAgICBjb25zdCBjb25maWc6IFJlY29yZDxzdHJpbmcsIEZvcmVpZ25LZXlCdWlsZGVyIHwgSW5kZXhCdWlsZGVyPiA9IHtcbiAgICAgICAgb3JkZXJQYXJlbnRJZHg6IGluZGV4KGAke3RleHRzVGFibGVOYW1lfV9vcmRlcl9wYXJlbnRfaWR4YCkub24oY29scy5vcmRlciwgY29scy5wYXJlbnQpLFxuICAgICAgICBwYXJlbnRGazogZm9yZWlnbktleSh7XG4gICAgICAgICAgbmFtZTogYCR7dGV4dHNUYWJsZU5hbWV9X3BhcmVudF9ma2AsXG4gICAgICAgICAgY29sdW1uczogW2NvbHMucGFyZW50XSxcbiAgICAgICAgICBmb3JlaWduQ29sdW1uczogW3RhYmxlLmlkXSxcbiAgICAgICAgfSkub25EZWxldGUoJ2Nhc2NhZGUnKSxcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc01hbnlUZXh0RmllbGQgPT09ICdpbmRleCcpIHtcbiAgICAgICAgY29uZmlnLnRleHRfaWR4ID0gaW5kZXgoYCR7dGV4dHNUYWJsZU5hbWV9X3RleHRfaWR4YCkub24oY29scy50ZXh0KVxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkTWFueVRleHRGaWVsZCkge1xuICAgICAgICBjb25maWcubG9jYWxlUGFyZW50ID0gaW5kZXgoYCR7dGV4dHNUYWJsZU5hbWV9X2xvY2FsZV9wYXJlbnRgKS5vbihjb2xzLmxvY2FsZSwgY29scy5wYXJlbnQpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb25maWdcbiAgICB9KVxuXG4gICAgYWRhcHRlci50YWJsZXNbdGV4dHNUYWJsZU5hbWVdID0gdGV4dHNUYWJsZVxuXG4gICAgY29uc3QgdGV4dHNUYWJsZVJlbGF0aW9ucyA9IHJlbGF0aW9ucyh0ZXh0c1RhYmxlLCAoeyBvbmUgfSkgPT4gKHtcbiAgICAgIHBhcmVudDogb25lKHRhYmxlLCB7XG4gICAgICAgIGZpZWxkczogW3RleHRzVGFibGUucGFyZW50XSxcbiAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgIH0pLFxuICAgIH0pKVxuXG4gICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke3RleHRzVGFibGVOYW1lfWBdID0gdGV4dHNUYWJsZVJlbGF0aW9uc1xuICB9XG5cbiAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCAmJiBidWlsZE51bWJlcnMpIHtcbiAgICBjb25zdCBudW1iZXJzVGFibGVOYW1lID0gYCR7cm9vdFRhYmxlTmFtZX1fbnVtYmVyc2BcbiAgICBjb25zdCBjb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgaWQ6IHNlcmlhbCgnaWQnKS5wcmltYXJ5S2V5KCksXG4gICAgICBudW1iZXI6IG51bWVyaWMoJ251bWJlcicpLFxuICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJykubm90TnVsbCgpLFxuICAgICAgcGFyZW50OiBwYXJlbnRJRENvbHVtbk1hcFtpZENvbFR5cGVdKCdwYXJlbnRfaWQnKS5ub3ROdWxsKCksXG4gICAgICBwYXRoOiB2YXJjaGFyKCdwYXRoJykubm90TnVsbCgpLFxuICAgIH1cblxuICAgIGlmIChoYXNMb2NhbGl6ZWRNYW55TnVtYmVyRmllbGQpIHtcbiAgICAgIGNvbHVtbnMubG9jYWxlID0gYWRhcHRlci5lbnVtcy5lbnVtX19sb2NhbGVzKCdsb2NhbGUnKVxuICAgIH1cblxuICAgIG51bWJlcnNUYWJsZSA9IGFkYXB0ZXIucGdTY2hlbWEudGFibGUobnVtYmVyc1RhYmxlTmFtZSwgY29sdW1ucywgKGNvbHMpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZzogUmVjb3JkPHN0cmluZywgRm9yZWlnbktleUJ1aWxkZXIgfCBJbmRleEJ1aWxkZXI+ID0ge1xuICAgICAgICBvcmRlclBhcmVudElkeDogaW5kZXgoYCR7bnVtYmVyc1RhYmxlTmFtZX1fb3JkZXJfcGFyZW50X2lkeGApLm9uKGNvbHMub3JkZXIsIGNvbHMucGFyZW50KSxcbiAgICAgICAgcGFyZW50Rms6IGZvcmVpZ25LZXkoe1xuICAgICAgICAgIG5hbWU6IGAke251bWJlcnNUYWJsZU5hbWV9X3BhcmVudF9ma2AsXG4gICAgICAgICAgY29sdW1uczogW2NvbHMucGFyZW50XSxcbiAgICAgICAgICBmb3JlaWduQ29sdW1uczogW3RhYmxlLmlkXSxcbiAgICAgICAgfSkub25EZWxldGUoJ2Nhc2NhZGUnKSxcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc01hbnlOdW1iZXJGaWVsZCA9PT0gJ2luZGV4Jykge1xuICAgICAgICBjb25maWcubnVtYmVySWR4ID0gaW5kZXgoYCR7bnVtYmVyc1RhYmxlTmFtZX1fbnVtYmVyX2lkeGApLm9uKGNvbHMubnVtYmVyKVxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkTWFueU51bWJlckZpZWxkKSB7XG4gICAgICAgIGNvbmZpZy5sb2NhbGVQYXJlbnQgPSBpbmRleChgJHtudW1iZXJzVGFibGVOYW1lfV9sb2NhbGVfcGFyZW50YCkub24oXG4gICAgICAgICAgY29scy5sb2NhbGUsXG4gICAgICAgICAgY29scy5wYXJlbnQsXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbmZpZ1xuICAgIH0pXG5cbiAgICBhZGFwdGVyLnRhYmxlc1tudW1iZXJzVGFibGVOYW1lXSA9IG51bWJlcnNUYWJsZVxuXG4gICAgY29uc3QgbnVtYmVyc1RhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKG51bWJlcnNUYWJsZSwgKHsgb25lIH0pID0+ICh7XG4gICAgICBwYXJlbnQ6IG9uZSh0YWJsZSwge1xuICAgICAgICBmaWVsZHM6IFtudW1iZXJzVGFibGUucGFyZW50XSxcbiAgICAgICAgcmVmZXJlbmNlczogW3RhYmxlLmlkXSxcbiAgICAgIH0pLFxuICAgIH0pKVxuXG4gICAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke251bWJlcnNUYWJsZU5hbWV9YF0gPSBudW1iZXJzVGFibGVSZWxhdGlvbnNcbiAgfVxuXG4gIGlmIChidWlsZFJlbGF0aW9uc2hpcHMpIHtcbiAgICBpZiAocmVsYXRpb25zaGlwcy5zaXplKSB7XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBDb2x1bW5zOiBSZWNvcmQ8c3RyaW5nLCBQZ0NvbHVtbkJ1aWxkZXI+ID0ge1xuICAgICAgICBpZDogc2VyaWFsKCdpZCcpLnByaW1hcnlLZXkoKSxcbiAgICAgICAgb3JkZXI6IGludGVnZXIoJ29yZGVyJyksXG4gICAgICAgIHBhcmVudDogcGFyZW50SURDb2x1bW5NYXBbaWRDb2xUeXBlXSgncGFyZW50X2lkJykubm90TnVsbCgpLFxuICAgICAgICBwYXRoOiB2YXJjaGFyKCdwYXRoJykubm90TnVsbCgpLFxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIHtcbiAgICAgICAgcmVsYXRpb25zaGlwQ29sdW1ucy5sb2NhbGUgPSBhZGFwdGVyLmVudW1zLmVudW1fX2xvY2FsZXMoJ2xvY2FsZScpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlbGF0aW9uRXh0cmFDb25maWc6IEJhc2VFeHRyYUNvbmZpZyA9IHt9XG5cbiAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNUYWJsZU5hbWUgPSBgJHt0YWJsZU5hbWV9JHthZGFwdGVyLnJlbGF0aW9uc2hpcHNTdWZmaXh9YFxuXG4gICAgICByZWxhdGlvbnNoaXBzLmZvckVhY2goKHJlbGF0aW9uVG8pID0+IHtcbiAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwQ29uZmlnID0gYWRhcHRlci5wYXlsb2FkLmNvbGxlY3Rpb25zW3JlbGF0aW9uVG9dLmNvbmZpZ1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRSZWxhdGlvblRvID0gY3JlYXRlVGFibGVOYW1lKHtcbiAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgIGNvbmZpZzogcmVsYXRpb25zaGlwQ29uZmlnLFxuICAgICAgICAgIHRocm93VmFsaWRhdGlvbkVycm9yOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICBsZXQgY29sVHlwZSA9IGFkYXB0ZXIuaWRUeXBlID09PSAndXVpZCcgPyAndXVpZCcgOiAnaW50ZWdlcidcblxuICAgICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEID0gcmVsYXRpb25zaGlwQ29uZmlnLmZpZWxkcy5maW5kKFxuICAgICAgICAgIChmaWVsZCkgPT4gZmllbGRBZmZlY3RzRGF0YShmaWVsZCkgJiYgZmllbGQubmFtZSA9PT0gJ2lkJyxcbiAgICAgICAgKVxuICAgICAgICBjb25zdCByZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEVHlwZSA9IHJlbGF0ZWRDb2xsZWN0aW9uQ3VzdG9tSUQ/LnR5cGVcblxuICAgICAgICBpZiAocmVsYXRlZENvbGxlY3Rpb25DdXN0b21JRFR5cGUgPT09ICdudW1iZXInKSBjb2xUeXBlID0gJ251bWVyaWMnXG4gICAgICAgIGlmIChyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEVHlwZSA9PT0gJ3RleHQnKSBjb2xUeXBlID0gJ3ZhcmNoYXInXG5cbiAgICAgICAgcmVsYXRpb25zaGlwQ29sdW1uc1tgJHtyZWxhdGlvblRvfUlEYF0gPSBwYXJlbnRJRENvbHVtbk1hcFtjb2xUeXBlXShcbiAgICAgICAgICBgJHtmb3JtYXR0ZWRSZWxhdGlvblRvfV9pZGAsXG4gICAgICAgIClcblxuICAgICAgICByZWxhdGlvbkV4dHJhQ29uZmlnW2Ake3JlbGF0aW9uVG99SWRGa2BdID0gKGNvbHMpID0+XG4gICAgICAgICAgZm9yZWlnbktleSh7XG4gICAgICAgICAgICBuYW1lOiBgJHtyZWxhdGlvbnNoaXBzVGFibGVOYW1lfV8ke3RvU25ha2VDYXNlKHJlbGF0aW9uVG8pfV9ma2AsXG4gICAgICAgICAgICBjb2x1bW5zOiBbY29sc1tgJHtyZWxhdGlvblRvfUlEYF1dLFxuICAgICAgICAgICAgZm9yZWlnbkNvbHVtbnM6IFthZGFwdGVyLnRhYmxlc1tmb3JtYXR0ZWRSZWxhdGlvblRvXS5pZF0sXG4gICAgICAgICAgfSkub25EZWxldGUoJ2Nhc2NhZGUnKVxuICAgICAgfSlcblxuICAgICAgcmVsYXRpb25zaGlwc1RhYmxlID0gYWRhcHRlci5wZ1NjaGVtYS50YWJsZShcbiAgICAgICAgcmVsYXRpb25zaGlwc1RhYmxlTmFtZSxcbiAgICAgICAgcmVsYXRpb25zaGlwQ29sdW1ucyxcbiAgICAgICAgKGNvbHMpID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIEZvcmVpZ25LZXlCdWlsZGVyIHwgSW5kZXhCdWlsZGVyPiA9IE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgcmVsYXRpb25FeHRyYUNvbmZpZyxcbiAgICAgICAgICApLnJlZHVjZShcbiAgICAgICAgICAgIChjb25maWcsIFtrZXksIGZ1bmNdKSA9PiB7XG4gICAgICAgICAgICAgIGNvbmZpZ1trZXldID0gZnVuYyhjb2xzKVxuICAgICAgICAgICAgICByZXR1cm4gY29uZmlnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBvcmRlcjogaW5kZXgoYCR7cmVsYXRpb25zaGlwc1RhYmxlTmFtZX1fb3JkZXJfaWR4YCkub24oY29scy5vcmRlciksXG4gICAgICAgICAgICAgIHBhcmVudEZrOiBmb3JlaWduS2V5KHtcbiAgICAgICAgICAgICAgICBuYW1lOiBgJHtyZWxhdGlvbnNoaXBzVGFibGVOYW1lfV9wYXJlbnRfZmtgLFxuICAgICAgICAgICAgICAgIGNvbHVtbnM6IFtjb2xzLnBhcmVudF0sXG4gICAgICAgICAgICAgICAgZm9yZWlnbkNvbHVtbnM6IFt0YWJsZS5pZF0sXG4gICAgICAgICAgICAgIH0pLm9uRGVsZXRlKCdjYXNjYWRlJyksXG4gICAgICAgICAgICAgIHBhcmVudElkeDogaW5kZXgoYCR7cmVsYXRpb25zaGlwc1RhYmxlTmFtZX1fcGFyZW50X2lkeGApLm9uKGNvbHMucGFyZW50KSxcbiAgICAgICAgICAgICAgcGF0aElkeDogaW5kZXgoYCR7cmVsYXRpb25zaGlwc1RhYmxlTmFtZX1fcGF0aF9pZHhgKS5vbihjb2xzLnBhdGgpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApXG5cbiAgICAgICAgICBpZiAoaGFzTG9jYWxpemVkUmVsYXRpb25zaGlwRmllbGQpIHtcbiAgICAgICAgICAgIHJlc3VsdC5sb2NhbGVJZHggPSBpbmRleChgJHtyZWxhdGlvbnNoaXBzVGFibGVOYW1lfV9sb2NhbGVfaWR4YCkub24oY29scy5sb2NhbGUpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9LFxuICAgICAgKVxuXG4gICAgICBhZGFwdGVyLnRhYmxlc1tyZWxhdGlvbnNoaXBzVGFibGVOYW1lXSA9IHJlbGF0aW9uc2hpcHNUYWJsZVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBzVGFibGVSZWxhdGlvbnMgPSByZWxhdGlvbnMocmVsYXRpb25zaGlwc1RhYmxlLCAoeyBvbmUgfSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge1xuICAgICAgICAgIHBhcmVudDogb25lKHRhYmxlLCB7XG4gICAgICAgICAgICBmaWVsZHM6IFtyZWxhdGlvbnNoaXBzVGFibGUucGFyZW50XSxcbiAgICAgICAgICAgIHJlZmVyZW5jZXM6IFt0YWJsZS5pZF0sXG4gICAgICAgICAgICByZWxhdGlvbk5hbWU6ICdfcmVscycsXG4gICAgICAgICAgfSksXG4gICAgICAgIH1cblxuICAgICAgICByZWxhdGlvbnNoaXBzLmZvckVhY2goKHJlbGF0aW9uVG8pID0+IHtcbiAgICAgICAgICBjb25zdCByZWxhdGVkVGFibGVOYW1lID0gY3JlYXRlVGFibGVOYW1lKHtcbiAgICAgICAgICAgIGFkYXB0ZXIsXG4gICAgICAgICAgICBjb25maWc6IGFkYXB0ZXIucGF5bG9hZC5jb2xsZWN0aW9uc1tyZWxhdGlvblRvXS5jb25maWcsXG4gICAgICAgICAgICB0aHJvd1ZhbGlkYXRpb25FcnJvcjogdHJ1ZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnN0IGlkQ29sdW1uTmFtZSA9IGAke3JlbGF0aW9uVG99SURgXG4gICAgICAgICAgcmVzdWx0W2lkQ29sdW1uTmFtZV0gPSBvbmUoYWRhcHRlci50YWJsZXNbcmVsYXRlZFRhYmxlTmFtZV0sIHtcbiAgICAgICAgICAgIGZpZWxkczogW3JlbGF0aW9uc2hpcHNUYWJsZVtpZENvbHVtbk5hbWVdXSxcbiAgICAgICAgICAgIHJlZmVyZW5jZXM6IFthZGFwdGVyLnRhYmxlc1tyZWxhdGVkVGFibGVOYW1lXS5pZF0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9KVxuXG4gICAgICBhZGFwdGVyLnJlbGF0aW9uc1tgcmVsYXRpb25zXyR7cmVsYXRpb25zaGlwc1RhYmxlTmFtZX1gXSA9IHJlbGF0aW9uc2hpcHNUYWJsZVJlbGF0aW9uc1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRhYmxlUmVsYXRpb25zID0gcmVsYXRpb25zKHRhYmxlLCAoeyBtYW55IH0pID0+IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFJlbGF0aW9uPHN0cmluZz4+ID0ge31cblxuICAgIHJlbGF0aW9uc1RvQnVpbGQuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgIHJlc3VsdFtrZXldID0gbWFueShhZGFwdGVyLnRhYmxlc1t2YWxdKVxuICAgIH0pXG5cbiAgICBpZiAoaGFzTG9jYWxpemVkRmllbGQpIHtcbiAgICAgIHJlc3VsdC5fbG9jYWxlcyA9IG1hbnkobG9jYWxlc1RhYmxlKVxuICAgIH1cblxuICAgIGlmIChoYXNNYW55VGV4dEZpZWxkKSB7XG4gICAgICByZXN1bHQuX3RleHRzID0gbWFueSh0ZXh0c1RhYmxlKVxuICAgIH1cbiAgICBpZiAoaGFzTWFueU51bWJlckZpZWxkKSB7XG4gICAgICByZXN1bHQuX251bWJlcnMgPSBtYW55KG51bWJlcnNUYWJsZSlcbiAgICB9XG5cbiAgICBpZiAocmVsYXRpb25zaGlwcy5zaXplICYmIHJlbGF0aW9uc2hpcHNUYWJsZSkge1xuICAgICAgcmVzdWx0Ll9yZWxzID0gbWFueShyZWxhdGlvbnNoaXBzVGFibGUsIHtcbiAgICAgICAgcmVsYXRpb25OYW1lOiAnX3JlbHMnLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH0pXG5cbiAgYWRhcHRlci5yZWxhdGlvbnNbYHJlbGF0aW9uc18ke3RhYmxlTmFtZX1gXSA9IHRhYmxlUmVsYXRpb25zXG5cbiAgcmV0dXJuIHsgaGFzTWFueU51bWJlckZpZWxkLCBoYXNNYW55VGV4dEZpZWxkLCByZWxhdGlvbnNUb0J1aWxkIH1cbn1cbiJdLCJuYW1lcyI6WyJidWlsZFRhYmxlIiwiYWRhcHRlciIsImJhc2VDb2x1bW5zIiwiYmFzZUV4dHJhQ29uZmlnIiwiYnVpbGROdW1iZXJzIiwiYnVpbGRSZWxhdGlvbnNoaXBzIiwiYnVpbGRUZXh0cyIsImRpc2FibGVOb3ROdWxsIiwiZGlzYWJsZVVuaXF1ZSIsImZpZWxkcyIsInJvb3RSZWxhdGlvbnNUb0J1aWxkIiwicm9vdFJlbGF0aW9uc2hpcHMiLCJyb290VGFibGVJRENvbFR5cGUiLCJyb290VGFibGVOYW1lIiwiaW5jb21pbmdSb290VGFibGVOYW1lIiwidGFibGVOYW1lIiwidGltZXN0YW1wcyIsInZlcnNpb25zIiwiY29sdW1ucyIsImluZGV4ZXMiLCJsb2NhbGVzQ29sdW1ucyIsImxvY2FsZXNJbmRleGVzIiwibG9jYWxlc1RhYmxlIiwidGV4dHNUYWJsZSIsIm51bWJlcnNUYWJsZSIsInJlbGF0aW9uc2hpcHMiLCJTZXQiLCJyZWxhdGlvbnNoaXBzVGFibGUiLCJyZWxhdGlvbnNUb0J1aWxkIiwiTWFwIiwiaWRDb2xUeXBlIiwic2V0Q29sdW1uSUQiLCJoYXNMb2NhbGl6ZWRGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlOdW1iZXJGaWVsZCIsImhhc0xvY2FsaXplZE1hbnlUZXh0RmllbGQiLCJoYXNMb2NhbGl6ZWRSZWxhdGlvbnNoaXBGaWVsZCIsImhhc01hbnlOdW1iZXJGaWVsZCIsImhhc01hbnlUZXh0RmllbGQiLCJ0cmF2ZXJzZUZpZWxkcyIsIm5ld1RhYmxlTmFtZSIsInBhcmVudFRhYmxlTmFtZSIsImNyZWF0ZWRBdCIsInRpbWVzdGFtcCIsIm1vZGUiLCJwcmVjaXNpb24iLCJ3aXRoVGltZXpvbmUiLCJkZWZhdWx0Tm93Iiwibm90TnVsbCIsInVwZGF0ZWRBdCIsInRhYmxlIiwicGdTY2hlbWEiLCJjb2xzIiwiZXh0cmFDb25maWciLCJPYmplY3QiLCJlbnRyaWVzIiwicmVkdWNlIiwiY29uZmlnIiwia2V5IiwiZnVuYyIsInJlc3VsdCIsImFjYyIsImNvbE5hbWUiLCJ0YWJsZXMiLCJsb2NhbGVUYWJsZU5hbWUiLCJsb2NhbGVzU3VmZml4IiwiaWQiLCJzZXJpYWwiLCJwcmltYXJ5S2V5IiwiX2xvY2FsZSIsImVudW1zIiwiZW51bV9fbG9jYWxlcyIsIl9wYXJlbnRJRCIsInBhcmVudElEQ29sdW1uTWFwIiwiX2xvY2FsZVBhcmVudCIsInVuaXF1ZSIsIm9uIiwiX3BhcmVudElkRmsiLCJmb3JlaWduS2V5IiwibmFtZSIsImZvcmVpZ25Db2x1bW5zIiwib25EZWxldGUiLCJsb2NhbGVzVGFibGVSZWxhdGlvbnMiLCJyZWxhdGlvbnMiLCJvbmUiLCJyZWZlcmVuY2VzIiwidGV4dHNUYWJsZU5hbWUiLCJvcmRlciIsImludGVnZXIiLCJwYXJlbnQiLCJwYXRoIiwidmFyY2hhciIsInRleHQiLCJsb2NhbGUiLCJvcmRlclBhcmVudElkeCIsImluZGV4IiwicGFyZW50RmsiLCJ0ZXh0X2lkeCIsImxvY2FsZVBhcmVudCIsInRleHRzVGFibGVSZWxhdGlvbnMiLCJudW1iZXJzVGFibGVOYW1lIiwibnVtYmVyIiwibnVtZXJpYyIsIm51bWJlcklkeCIsIm51bWJlcnNUYWJsZVJlbGF0aW9ucyIsInNpemUiLCJyZWxhdGlvbnNoaXBDb2x1bW5zIiwicmVsYXRpb25FeHRyYUNvbmZpZyIsInJlbGF0aW9uc2hpcHNUYWJsZU5hbWUiLCJyZWxhdGlvbnNoaXBzU3VmZml4IiwiZm9yRWFjaCIsInJlbGF0aW9uVG8iLCJyZWxhdGlvbnNoaXBDb25maWciLCJwYXlsb2FkIiwiY29sbGVjdGlvbnMiLCJmb3JtYXR0ZWRSZWxhdGlvblRvIiwiY3JlYXRlVGFibGVOYW1lIiwidGhyb3dWYWxpZGF0aW9uRXJyb3IiLCJjb2xUeXBlIiwiaWRUeXBlIiwicmVsYXRlZENvbGxlY3Rpb25DdXN0b21JRCIsImZpbmQiLCJmaWVsZCIsImZpZWxkQWZmZWN0c0RhdGEiLCJyZWxhdGVkQ29sbGVjdGlvbkN1c3RvbUlEVHlwZSIsInR5cGUiLCJ0b1NuYWtlQ2FzZSIsInBhcmVudElkeCIsInBhdGhJZHgiLCJsb2NhbGVJZHgiLCJyZWxhdGlvbnNoaXBzVGFibGVSZWxhdGlvbnMiLCJyZWxhdGlvbk5hbWUiLCJyZWxhdGVkVGFibGVOYW1lIiwiaWRDb2x1bW5OYW1lIiwidGFibGVSZWxhdGlvbnMiLCJtYW55IiwidmFsIiwiX2xvY2FsZXMiLCJfdGV4dHMiLCJfbnVtYmVycyIsIl9yZWxzIl0sIm1hcHBpbmdzIjoiQUFBQSxvQ0FBb0M7Ozs7K0JBNkR2QkE7OztlQUFBQTs7O3VCQXBEMkI7NEJBRWQ7d0JBVW5CO29FQUNpQjtpQ0FJUTttQ0FDRTs2QkFDTjtnQ0FDRzs7Ozs7O0FBZ0N4QixNQUFNQSxhQUFhLENBQUMsRUFDekJDLE9BQU8sRUFDUEMsY0FBYyxDQUFDLENBQUMsRUFDaEJDLGtCQUFrQixDQUFDLENBQUMsRUFDcEJDLFlBQVksRUFDWkMsa0JBQWtCLEVBQ2xCQyxVQUFVLEVBQ1ZDLGNBQWMsRUFDZEMsZ0JBQWdCLEtBQUssRUFDckJDLE1BQU0sRUFDTkMsb0JBQW9CLEVBQ3BCQyxpQkFBaUIsRUFDakJDLGtCQUFrQixFQUNsQkMsZUFBZUMscUJBQXFCLEVBQ3BDQyxTQUFTLEVBQ1RDLFVBQVUsRUFDVkMsUUFBUSxFQUNIO0lBQ0wsTUFBTUosZ0JBQWdCQyx5QkFBeUJDO0lBQy9DLE1BQU1HLFVBQTJDaEI7SUFDakQsTUFBTWlCLFVBQWtFLENBQUM7SUFFekUsTUFBTUMsaUJBQWtELENBQUM7SUFDekQsTUFBTUMsaUJBQXlFLENBQUM7SUFD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
|
@@ -9,24 +9,22 @@ type Args = {
|
|
9
9
|
name?: string;
|
10
10
|
slug?: string;
|
11
11
|
};
|
12
|
-
/** Localized tables need to be given the locales suffix */
|
13
|
-
locales?: boolean;
|
14
12
|
/** For nested tables passed for the user custom dbName functions to handle their own iterations */
|
15
13
|
parentTableName?: string;
|
16
14
|
/** For sub tables (array for example) this needs to include the parentTableName */
|
17
15
|
prefix?: string;
|
18
|
-
/** Adds the relationships suffix */
|
19
|
-
relationships?: boolean;
|
20
16
|
/** For tables based on fields that could have both enumName and dbName (ie: select with hasMany), default: 'dbName' */
|
21
17
|
target?: 'dbName' | 'enumName';
|
22
18
|
throwValidationError?: boolean;
|
23
|
-
/** Adds the versions suffix
|
19
|
+
/** Adds the versions suffix to the default table name - should only be used on the base collection to avoid duplicate suffixing */
|
24
20
|
versions?: boolean;
|
21
|
+
/** Adds the versions suffix to custom dbName only - this is used while creating blocks / selects / arrays / etc */
|
22
|
+
versionsCustomName?: boolean;
|
25
23
|
};
|
26
24
|
/**
|
27
25
|
* Used to name database enums and tables
|
28
26
|
* Returns the table or enum name for a given entity
|
29
27
|
*/
|
30
|
-
export declare const
|
28
|
+
export declare const createTableName: ({ adapter, config: { name, slug }, config, parentTableName, prefix, target, throwValidationError, versions, versionsCustomName, }: Args) => string;
|
31
29
|
export {};
|
32
|
-
//# sourceMappingURL=
|
30
|
+
//# sourceMappingURL=createTableName.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"createTableName.d.ts","sourceRoot":"","sources":["../../src/schema/createTableName.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAKxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,8CAA8C;IAC9C,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,gBAAgB,CAAA;QACzB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;QAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,mGAAmG;IACnG,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uHAAuH;IACvH,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,mIAAmI;IACnI,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mHAAmH;IACnH,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,sIAUzB,IAAI,KAAG,MAsCT,CAAA"}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
Object.defineProperty(exports, "createTableName", {
|
6
|
+
enumerable: true,
|
7
|
+
get: function() {
|
8
|
+
return createTableName;
|
9
|
+
}
|
10
|
+
});
|
11
|
+
const _errors = require("payload/errors");
|
12
|
+
const _tosnakecase = /*#__PURE__*/ _interop_require_default(require("to-snake-case"));
|
13
|
+
function _interop_require_default(obj) {
|
14
|
+
return obj && obj.__esModule ? obj : {
|
15
|
+
default: obj
|
16
|
+
};
|
17
|
+
}
|
18
|
+
const createTableName = ({ adapter, config: { name, slug }, config, parentTableName, prefix = '', target = 'dbName', throwValidationError = false, versions = false, versionsCustomName = false })=>{
|
19
|
+
let customNameDefinition = config[target];
|
20
|
+
let defaultTableName = `${prefix}${(0, _tosnakecase.default)(name ?? slug)}`;
|
21
|
+
if (versions) defaultTableName = `_${defaultTableName}${adapter.versionsSuffix}`;
|
22
|
+
let customTableNameResult;
|
23
|
+
if (!customNameDefinition && target === 'enumName') {
|
24
|
+
customNameDefinition = config['dbName'];
|
25
|
+
}
|
26
|
+
if (customNameDefinition) {
|
27
|
+
customTableNameResult = typeof customNameDefinition === 'function' ? customNameDefinition({
|
28
|
+
tableName: parentTableName
|
29
|
+
}) : customNameDefinition;
|
30
|
+
if (versionsCustomName) customTableNameResult = `_${customTableNameResult}${adapter.versionsSuffix}`;
|
31
|
+
}
|
32
|
+
const result = customTableNameResult || defaultTableName;
|
33
|
+
adapter.tableNameMap.set(defaultTableName, result);
|
34
|
+
if (!throwValidationError) {
|
35
|
+
return result;
|
36
|
+
}
|
37
|
+
if (result.length > 63) {
|
38
|
+
throw new _errors.APIError(`Exceeded max identifier length for table or enum name of 63 characters. Invalid name: ${result}`);
|
39
|
+
}
|
40
|
+
return result;
|
41
|
+
};
|
42
|
+
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvY3JlYXRlVGFibGVOYW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgREJJZGVudGlmaWVyTmFtZSB9IGZyb20gJ3BheWxvYWQvZGF0YWJhc2UnXG5cbmltcG9ydCB7IEFQSUVycm9yIH0gZnJvbSAncGF5bG9hZC9lcnJvcnMnXG5pbXBvcnQgdG9TbmFrZUNhc2UgZnJvbSAndG8tc25ha2UtY2FzZSdcblxuaW1wb3J0IHR5cGUgeyBQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tICcuLi90eXBlcydcblxudHlwZSBBcmdzID0ge1xuICBhZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXJcbiAgLyoqIFRoZSBjb2xsZWN0aW9uLCBnbG9iYWwgb3IgZmllbGQgY29uZmlnICoqL1xuICBjb25maWc6IHtcbiAgICBkYk5hbWU/OiBEQklkZW50aWZpZXJOYW1lXG4gICAgZW51bU5hbWU/OiBEQklkZW50aWZpZXJOYW1lXG4gICAgbmFtZT86IHN0cmluZ1xuICAgIHNsdWc/OiBzdHJpbmdcbiAgfVxuICAvKiogRm9yIG5lc3RlZCB0YWJsZXMgcGFzc2VkIGZvciB0aGUgdXNlciBjdXN0b20gZGJOYW1lIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlaXIgb3duIGl0ZXJhdGlvbnMgKi9cbiAgcGFyZW50VGFibGVOYW1lPzogc3RyaW5nXG4gIC8qKiBGb3Igc3ViIHRhYmxlcyAoYXJyYXkgZm9yIGV4YW1wbGUpIHRoaXMgbmVlZHMgdG8gaW5jbHVkZSB0aGUgcGFyZW50VGFibGVOYW1lICovXG4gIHByZWZpeD86IHN0cmluZ1xuICAvKiogRm9yIHRhYmxlcyBiYXNlZCBvbiBmaWVsZHMgdGhhdCBjb3VsZCBoYXZlIGJvdGggZW51bU5hbWUgYW5kIGRiTmFtZSAoaWU6IHNlbGVjdCB3aXRoIGhhc01hbnkpLCBkZWZhdWx0OiAnZGJOYW1lJyAqL1xuICB0YXJnZXQ/OiAnZGJOYW1lJyB8ICdlbnVtTmFtZSdcbiAgdGhyb3dWYWxpZGF0aW9uRXJyb3I/OiBib29sZWFuXG4gIC8qKiBBZGRzIHRoZSB2ZXJzaW9ucyBzdWZmaXggdG8gdGhlIGRlZmF1bHQgdGFibGUgbmFtZSAtIHNob3VsZCBvbmx5IGJlIHVzZWQgb24gdGhlIGJhc2UgY29sbGVjdGlvbiB0byBhdm9pZCBkdXBsaWNhdGUgc3VmZml4aW5nICovXG4gIHZlcnNpb25zPzogYm9vbGVhblxuICAvKiogQWRkcyB0aGUgdmVyc2lvbnMgc3VmZml4IHRvIGN1c3RvbSBkYk5hbWUgb25seSAtIHRoaXMgaXMgdXNlZCB3aGlsZSBjcmVhdGluZyBibG9ja3MgLyBzZWxlY3RzIC8gYXJyYXlzIC8gZXRjICovXG4gIHZlcnNpb25zQ3VzdG9tTmFtZT86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBVc2VkIHRvIG5hbWUgZGF0YWJhc2UgZW51bXMgYW5kIHRhYmxlc1xuICogUmV0dXJucyB0aGUgdGFibGUgb3IgZW51bSBuYW1lIGZvciBhIGdpdmVuIGVudGl0eVxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlVGFibGVOYW1lID0gKHtcbiAgYWRhcHRlcixcbiAgY29uZmlnOiB7IG5hbWUsIHNsdWcgfSxcbiAgY29uZmlnLFxuICBwYXJlbnRUYWJsZU5hbWUsXG4gIHByZWZpeCA9ICcnLFxuICB0YXJnZXQgPSAnZGJOYW1lJyxcbiAgdGhyb3dWYWxpZGF0aW9uRXJyb3IgPSBmYWxzZSxcbiAgdmVyc2lvbnMgPSBmYWxzZSxcbiAgdmVyc2lvbnNDdXN0b21OYW1lID0gZmFsc2UsXG59OiBBcmdzKTogc3RyaW5nID0+IHtcbiAgbGV0IGN1c3RvbU5hbWVEZWZpbml0aW9uID0gY29uZmlnW3RhcmdldF1cblxuICBsZXQgZGVmYXVsdFRhYmxlTmFtZSA9IGAke3ByZWZpeH0ke3RvU25ha2VDYXNlKG5hbWUgPz8gc2x1Zyl9YFxuXG4gIGlmICh2ZXJzaW9ucykgZGVmYXVsdFRhYmxlTmFtZSA9IGBfJHtkZWZhdWx0VGFibGVOYW1lfSR7YWRhcHRlci52ZXJzaW9uc1N1ZmZpeH1gXG5cbiAgbGV0IGN1c3RvbVRhYmxlTmFtZVJlc3VsdDogc3RyaW5nXG5cbiAgaWYgKCFjdXN0b21OYW1lRGVmaW5pdGlvbiAmJiB0YXJnZXQgPT09ICdlbnVtTmFtZScpIHtcbiAgICBjdXN0b21OYW1lRGVmaW5pdGlvbiA9IGNvbmZpZ1snZGJOYW1lJ11cbiAgfVxuXG4gIGlmIChjdXN0b21OYW1lRGVmaW5pdGlvbikge1xuICAgIGN1c3RvbVRhYmxlTmFtZVJlc3VsdCA9XG4gICAgICB0eXBlb2YgY3VzdG9tTmFtZURlZmluaXRpb24gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBjdXN0b21OYW1lRGVmaW5pdGlvbih7IHRhYmxlTmFtZTogcGFyZW50VGFibGVOYW1lIH0pXG4gICAgICAgIDogY3VzdG9tTmFtZURlZmluaXRpb25cblxuICAgIGlmICh2ZXJzaW9uc0N1c3RvbU5hbWUpXG4gICAgICBjdXN0b21UYWJsZU5hbWVSZXN1bHQgPSBgXyR7Y3VzdG9tVGFibGVOYW1lUmVzdWx0fSR7YWRhcHRlci52ZXJzaW9uc1N1ZmZpeH1gXG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBjdXN0b21UYWJsZU5hbWVSZXN1bHQgfHwgZGVmYXVsdFRhYmxlTmFtZVxuXG4gIGFkYXB0ZXIudGFibGVOYW1lTWFwLnNldChkZWZhdWx0VGFibGVOYW1lLCByZXN1bHQpXG5cbiAgaWYgKCF0aHJvd1ZhbGlkYXRpb25FcnJvcikge1xuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIGlmIChyZXN1bHQubGVuZ3RoID4gNjMpIHtcbiAgICB0aHJvdyBuZXcgQVBJRXJyb3IoXG4gICAgICBgRXhjZWVkZWQgbWF4IGlkZW50aWZpZXIgbGVuZ3RoIGZvciB0YWJsZSBvciBlbnVtIG5hbWUgb2YgNjMgY2hhcmFjdGVycy4gSW52YWxpZCBuYW1lOiAke3Jlc3VsdH1gLFxuICAgIClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVUYWJsZU5hbWUiLCJhZGFwdGVyIiwiY29uZmlnIiwibmFtZSIsInNsdWciLCJwYXJlbnRUYWJsZU5hbWUiLCJwcmVmaXgiLCJ0YXJnZXQiLCJ0aHJvd1ZhbGlkYXRpb25FcnJvciIsInZlcnNpb25zIiwidmVyc2lvbnNDdXN0b21OYW1lIiwiY3VzdG9tTmFtZURlZmluaXRpb24iLCJkZWZhdWx0VGFibGVOYW1lIiwidG9TbmFrZUNhc2UiLCJ2ZXJzaW9uc1N1ZmZpeCIsImN1c3RvbVRhYmxlTmFtZVJlc3VsdCIsInRhYmxlTmFtZSIsInJlc3VsdCIsInRhYmxlTmFtZU1hcCIsInNldCIsImxlbmd0aCIsIkFQSUVycm9yIl0sIm1hcHBpbmdzIjoiOzs7OytCQWlDYUE7OztlQUFBQTs7O3dCQS9CWTtvRUFDRDs7Ozs7O0FBOEJqQixNQUFNQSxrQkFBa0IsQ0FBQyxFQUM5QkMsT0FBTyxFQUNQQyxRQUFRLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFLEVBQ3RCRixNQUFNLEVBQ05HLGVBQWUsRUFDZkMsU0FBUyxFQUFFLEVBQ1hDLFNBQVMsUUFBUSxFQUNqQkMsdUJBQXVCLEtBQUssRUFDNUJDLFdBQVcsS0FBSyxFQUNoQkMscUJBQXFCLEtBQUssRUFDckI7SUFDTCxJQUFJQyx1QkFBdUJULE1BQU0sQ0FBQ0ssT0FBTztJQUV6QyxJQUFJSyxtQkFBbUIsQ0FBQyxFQUFFTixPQUFPLEVBQUVPLElBQUFBLG9CQUFXLEVBQUNWLFFBQVFDLE1BQU0sQ0FBQztJQUU5RCxJQUFJSyxVQUFVRyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUVBLGlCQUFpQixFQUFFWCxRQUFRYSxjQUFjLENBQUMsQ0FBQztJQUVoRixJQUFJQztJQUVKLElBQUksQ0FBQ0osd0JBQXdCSixXQUFXLFlBQVk7UUFDbERJLHVCQUF1QlQsTUFBTSxDQUFDLFNBQVM7SUFDekM7SUFFQSxJQUFJUyxzQkFBc0I7UUFDeEJJLHdCQUNFLE9BQU9KLHlCQUF5QixhQUM1QkEscUJBQXFCO1lBQUVLLFdBQVdYO1FBQWdCLEtBQ2xETTtRQUVOLElBQUlELG9CQUNGSyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUVBLHNCQUFzQixFQUFFZCxRQUFRYSxjQUFjLENBQUMsQ0FBQztJQUNoRjtJQUVBLE1BQU1HLFNBQVNGLHlCQUF5Qkg7SUFFeENYLFFBQVFpQixZQUFZLENBQUNDLEdBQUcsQ0FBQ1Asa0JBQWtCSztJQUUzQyxJQUFJLENBQUNULHNCQUFzQjtRQUN6QixPQUFPUztJQUNUO0lBRUEsSUFBSUEsT0FBT0csTUFBTSxHQUFHLElBQUk7UUFDdEIsTUFBTSxJQUFJQyxnQkFBUSxDQUNoQixDQUFDLHNGQUFzRixFQUFFSixPQUFPLENBQUM7SUFFckc7SUFFQSxPQUFPQTtBQUNUIn0=
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAsBtD,OAAO,KAAK,EAAE,cAAc,EAAU,eAAe,EAAE,MAAM,UAAU,CAAA;AAWvE,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,2BAA2B,EAAE,OAAO,CAAA;IACpC,yBAAyB,EAAE,OAAO,CAAA;IAClC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,sUAuBxB,IAAI,KAAG,MAsnBT,CAAA"}
|