@oneteme/jquery-organizer 0.0.6 → 0.0.7

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.
@@ -173,19 +173,10 @@ export class OrganizerFacade {
173
173
  }
174
174
  onDynamicSliceKeysChange(keys) {
175
175
  const allFields = this._panelConfig.fields ?? [];
176
- const staticKeys = new Set((this._panelConfig.sliceConfigs ?? []).map(s => s.columnKey).filter((k) => !!k));
177
- const dynamicKeySet = new Set(keys);
178
- const existingKeys = new Set([...staticKeys, ...dynamicKeySet]);
179
176
  this.sliceBy.activeDynamicFields = keys
180
177
  .map(k => allFields.find(c => c.key === k))
181
178
  .filter((c) => !!c);
182
- const seen = new Set();
183
- this.sliceBy.availableForDynamic = allFields.filter(c => {
184
- if (c.sliceable === false || existingKeys.has(c.key) || seen.has(c.key))
185
- return false;
186
- seen.add(c.key);
187
- return true;
188
- });
179
+ this.sliceBy.availableForDynamic = this._availableForDynamic(new Set(keys));
189
180
  this._computeSliceLabel();
190
181
  this._events$.next({ type: 'dynamicSlicesChanged', keys });
191
182
  }
@@ -210,23 +201,42 @@ export class OrganizerFacade {
210
201
  this.fields.activeFields = [...defaultFields];
211
202
  }
212
203
  else {
213
- const allowedKeys = new Set((this._panelConfig.fields || []).map(c => c.key));
214
- this.fields.activeFields = this.fields.activeFields.filter(c => allowedKeys.has(c.key));
204
+ const current = this._definitionsByKey();
205
+ this.fields.activeFields = this.fields.activeFields
206
+ .filter(c => current.has(c.key))
207
+ .map(c => current.get(c.key));
215
208
  }
216
209
  }
217
- _refreshDynamicSliceMeta() {
218
- const allFields = this._panelConfig.fields ?? [];
219
- const staticKeys = new Set((this._panelConfig.sliceConfigs ?? []).map(s => s.columnKey).filter((k) => !!k));
220
- const activeDynKeys = new Set(this.sliceBy.activeDynamicFields.map(c => c.key));
221
- const seen1 = new Set();
222
- this.sliceBy.availableForDynamic = allFields.filter(c => {
223
- if (c.sliceable === false || staticKeys.has(c.key) || activeDynKeys.has(c.key) || seen1.has(c.key))
210
+ /** Première définition de chaque clé dans la config courante. */
211
+ _definitionsByKey() {
212
+ const byKey = new Map();
213
+ (this._panelConfig.fields || []).forEach(c => { if (!byKey.has(c.key))
214
+ byKey.set(c.key, c); });
215
+ return byKey;
216
+ }
217
+ _staticSliceKeys() {
218
+ return new Set((this._panelConfig.sliceConfigs ?? []).map(s => s.columnKey).filter((k) => !!k));
219
+ }
220
+ /** Champs proposables en slice dynamique, hors slices statiques et slices déjà actifs. */
221
+ _availableForDynamic(activeKeys) {
222
+ const staticKeys = this._staticSliceKeys();
223
+ const seen = new Set();
224
+ return (this._panelConfig.fields ?? []).filter(c => {
225
+ if (c.sliceable === false || staticKeys.has(c.key) || activeKeys.has(c.key) || seen.has(c.key))
224
226
  return false;
225
227
  if (!c.header && c.sliceable !== true)
226
228
  return false;
227
- seen1.add(c.key);
229
+ seen.add(c.key);
228
230
  return true;
229
231
  });
232
+ }
233
+ _refreshDynamicSliceMeta() {
234
+ const allFields = this._panelConfig.fields ?? [];
235
+ const staticKeys = this._staticSliceKeys();
236
+ const current = this._definitionsByKey();
237
+ this.sliceBy.activeDynamicFields = this.sliceBy.activeDynamicFields.map(c => current.get(c.key) ?? c);
238
+ const activeDynKeys = new Set(this.sliceBy.activeDynamicFields.map(c => c.key));
239
+ this.sliceBy.availableForDynamic = this._availableForDynamic(activeDynKeys);
230
240
  const seen2 = new Set();
231
241
  this.sliceBy.allDynamicFields = allFields.filter(c => {
232
242
  if (c.sliceable === false || staticKeys.has(c.key) || seen2.has(c.key))
@@ -266,4 +276,4 @@ export class OrganizerFacade {
266
276
  });
267
277
  }
268
278
  }
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvanF1ZXJ5LW9yZ2FuaXplci9zcmMvbGliL29yZ2FuaXplci1mYWNhZGUvb3JnYW5pemVyLWZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSS9CLE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBVztJQUNyQyxPQUFPLEdBQUc7U0FDUCxPQUFPLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO1NBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUVXLFdBQU0sR0FBaUM7WUFDOUMsWUFBWSxFQUFFLEVBQUU7WUFDaEIsY0FBYyxFQUFFLEtBQUs7U0FDdEIsQ0FBQztRQUVPLFlBQU8sR0FBMEI7WUFDeEMsU0FBUyxFQUFFLElBQUk7WUFDZixjQUFjLEVBQUUsS0FBSztTQUN0QixDQUFDO1FBRU8sWUFBTyxHQUFrQztZQUNoRCxtQkFBbUIsRUFBRSxFQUFFO1lBQ3ZCLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsZ0JBQWdCLEVBQUUsRUFBRTtZQUNwQixXQUFXLEVBQUUsT0FBTztTQUNyQixDQUFDO1FBRU0saUJBQVksR0FBaUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUM5RSxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBRTdCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBa0IsQ0FBQztRQUNqRCxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQXdRbEQsQ0FBQztJQXRRQyxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sS0FBSyxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQ3JCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUN6QyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEtBQUssS0FBSyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxJQUFJLHNCQUFzQjtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLG1CQUFtQixLQUFLLElBQUksQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQzNELElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssSUFBSTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUNwRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVM7WUFBRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUMzRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7YUFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7YUFDMUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1AsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDMUYsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsU0FBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQXVDO1FBQ2hELE9BQU8sS0FBSyxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxNQUFNLENBQUMsV0FBeUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDO1NBQzdEO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFnQjtRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDcEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDO1FBQ2xFLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBYTtRQUNwQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDcEQsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JFLElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNqRTthQUFNO1lBQ0wsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUMxRCxNQUFNLEVBQUUsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzFELE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxXQUFXLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ2pFO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzthQUNqQztTQUNGO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM3RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xHLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQWEsRUFBRSxPQUFnQjtRQUNuRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RCO2FBQU0sSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQWUsRUFBRSxLQUFhO1FBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDeEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUN0RSxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM5RCxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xHLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxHQUFXO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQWtCO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBYztRQUNyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDakQsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQ3hCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM3RixDQUFDO1FBQ0YsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsRUFBRSxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsR0FBRyxJQUFJO2FBQ3BDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQzFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RELElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxLQUFLLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ3RGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFXO1FBQzlCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPO1lBQ0wsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMxRCxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTO1lBQ2xDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUNuRSxDQUFDO0lBQ0osQ0FBQztJQUNELE9BQU8sS0FBVyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUU1QyxzQkFBc0IsQ0FBQyxJQUFpQjtRQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4RSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7U0FDL0M7YUFBTTtZQUNMLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6RjtJQUNILENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ2pELE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUN4QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDN0YsQ0FBQztRQUNGLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFaEYsTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdEQsSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLEtBQUssSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDakgsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQ3BELEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssS0FBSyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUNyRixJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUk7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDcEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ2xFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQzlELENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1FBQzlFLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztZQUFDLE9BQU87U0FBRTtRQUMvRixJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7WUFDZixJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUMvQixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLEtBQUssRUFBRSxLQUFLLElBQUksS0FBSyxFQUFFLFNBQVMsSUFBSSxHQUFHLENBQUM7Z0JBQ25FLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxJQUFJLEdBQUcsQ0FBQztZQUM5RSxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsR0FBRyxHQUFHLEtBQUssU0FBUyxDQUFDO0lBQy9DLENBQUM7SUFFTyxZQUFZLENBQUMsTUFBZ0I7UUFDbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUMvQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDbEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9yZ2FuaXplckV2ZW50LCBPcmdhbml6ZXJTdGF0ZSB9IGZyb20gJ0BvbmV0ZW1lL2pxdWVyeS1jb3JlJztcbmltcG9ydCB7IE9yZ2FuaXplckZpZWxkRGVmLCBPcmdhbml6ZXJGaWVsZHNTdGF0ZSwgT3JnYW5pemVyR3JvdXBCeVN0YXRlLCBPcmdhbml6ZXJQYW5lbENvbmZpZywgT3JnYW5pemVyU2xpY2VCeVN0YXRlIH0gZnJvbSAnLi9vcmdhbml6ZXItZmFjYWRlLnR5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGh1bWFuaXplS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGtleVxuICAgIC5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEgJDInKVxuICAgIC5yZXBsYWNlKC9bXy1dKy9nLCAnICcpXG4gICAgLnJlcGxhY2UoL14uLywgKHYpID0+IHYudG9VcHBlckNhc2UoKSk7XG59XG5cbmV4cG9ydCBjbGFzcyBPcmdhbml6ZXJGYWNhZGU8VEZpZWxkIGV4dGVuZHMgT3JnYW5pemVyRmllbGREZWYgPSBPcmdhbml6ZXJGaWVsZERlZj4ge1xuXG4gIHJlYWRvbmx5IGZpZWxkczogT3JnYW5pemVyRmllbGRzU3RhdGU8VEZpZWxkPiA9IHtcbiAgICBhY3RpdmVGaWVsZHM6IFtdLFxuICAgIHVzZXJDdXN0b21pemVkOiBmYWxzZSxcbiAgfTtcblxuICByZWFkb25seSBncm91cEJ5OiBPcmdhbml6ZXJHcm91cEJ5U3RhdGUgPSB7XG4gICAgYWN0aXZlS2V5OiBudWxsLFxuICAgIHVzZXJDdXN0b21pemVkOiBmYWxzZSxcbiAgfTtcblxuICByZWFkb25seSBzbGljZUJ5OiBPcmdhbml6ZXJTbGljZUJ5U3RhdGU8VEZpZWxkPiA9IHtcbiAgICBhY3RpdmVEeW5hbWljRmllbGRzOiBbXSxcbiAgICBhdmFpbGFibGVGb3JEeW5hbWljOiBbXSxcbiAgICBhbGxEeW5hbWljRmllbGRzOiBbXSxcbiAgICBhY3RpdmVMYWJlbDogJ0F1Y3VuJyxcbiAgfTtcblxuICBwcml2YXRlIF9wYW5lbENvbmZpZzogT3JnYW5pemVyUGFuZWxDb25maWc8VEZpZWxkPiA9IHsgZmllbGRzOiBbXSwgc2xpY2VDb25maWdzOiBbXSB9O1xuICBwcml2YXRlIF9oaWRkZW5TdGF0aWNLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRzJCA9IG5ldyBTdWJqZWN0PE9yZ2FuaXplckV2ZW50PigpO1xuICByZWFkb25seSBldmVudHMkID0gdGhpcy5fZXZlbnRzJC5hc09ic2VydmFibGUoKTtcblxuICBnZXQgZW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGFuZWxDb25maWcuY29uZmlnPy5lbmFibGVkID09PSB0cnVlO1xuICB9XG5cbiAgZ2V0IHNob3dGaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZDtcbiAgfVxuXG4gIGdldCBzaG93R3JvdXBCeVNlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZCAmJiB0aGlzLmdyb3VwQnlGaWVsZHMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdldCBzaG93U2xpY2VCeVNlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlZCAmJiAoXG4gICAgICAodGhpcy5fcGFuZWxDb25maWcuc2xpY2VDb25maWdzPy5sZW5ndGggPz8gMCkgPiAwIHx8XG4gICAgICB0aGlzLnNsaWNlQnkuYWxsRHluYW1pY0ZpZWxkcy5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIGdldCBhbGxvd0ZpZWxkUmVtb3ZhbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGFuZWxDb25maWcuY29uZmlnPy5lbmFibGVGaWVsZFJlbW92YWwgIT09IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGlzRmllbGREcmFnRHJvcEVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BhbmVsQ29uZmlnLmNvbmZpZz8uZW5hYmxlRmllbGREcmFnRHJvcCA9PT0gdHJ1ZTtcbiAgfVxuXG4gIGdldCBtZW51QmFzZUZpZWxkcygpOiBURmllbGRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3VuaXF1ZUJ5S2V5KCh0aGlzLl9wYW5lbENvbmZpZy5maWVsZHMgfHwgW10pLmZpbHRlcihjID0+ICFjLm9wdGlvbmFsKSk7XG4gIH1cblxuICBnZXQgbWVudU9wdGlvbmFsRmllbGRzKCk6IFRGaWVsZFtdIHtcbiAgICByZXR1cm4gdGhpcy5fdW5pcXVlQnlLZXkoKHRoaXMuX3BhbmVsQ29uZmlnLmZpZWxkcyB8fCBbXSkuZmlsdGVyKGMgPT4gYy5vcHRpb25hbCkpO1xuICB9XG5cbiAgZ2V0IHRvdGFsRmllbGRDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiBuZXcgU2V0KCh0aGlzLl9wYW5lbENvbmZpZy5maWVsZHMgfHwgW10pLm1hcChjID0+IGMua2V5KSkuc2l6ZTtcbiAgfVxuXG4gIGdldCBncm91cEJ5RmllbGRzKCk6IFRGaWVsZFtdIHtcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgcmV0dXJuICh0aGlzLl9wYW5lbENvbmZpZy5maWVsZHMgfHwgW10pLmZpbHRlcihjID0+IHtcbiAgICAgIGlmIChjLmdyb3VwYWJsZSA9PT0gZmFsc2UgfHwgc2Vlbi5oYXMoYy5rZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoIWMuaGVhZGVyICYmIGMuZ3JvdXBhYmxlICE9PSB0cnVlKSByZXR1cm4gZmFsc2U7XG4gICAgICBzZWVuLmFkZChjLmtleSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBhY3RpdmVHcm91cEJ5TGFiZWwoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuZ3JvdXBCeS5hY3RpdmVLZXkpIHJldHVybiB0aGlzLl9wYW5lbENvbmZpZy5ub25lTGFiZWwgPz8gJ0F1Y3VuJztcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZ3JvdXBCeUZpZWxkcy5maW5kKGMgPT4gYy5rZXkgPT09IHRoaXMuZ3JvdXBCeS5hY3RpdmVLZXkpO1xuICAgIHJldHVybiBmaWVsZD8uaGVhZGVyIHx8IHRoaXMuZ3JvdXBCeS5hY3RpdmVLZXk7XG4gIH1cblxuICBnZXQgc3RhdGljU2xpY2VzRm9yTWVudSgpOiBBcnJheTx7IGtleTogc3RyaW5nOyB0aXRsZTogc3RyaW5nOyBpY29uPzogc3RyaW5nIH0+IHtcbiAgICByZXR1cm4gKHRoaXMuX3BhbmVsQ29uZmlnLnNsaWNlQ29uZmlncyA/PyBbXSlcbiAgICAgIC5maWx0ZXIocyA9PiAhIXMuY29sdW1uS2V5KVxuICAgICAgLm1hcChzID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRJY29uID0gKHRoaXMuX3BhbmVsQ29uZmlnLmZpZWxkcyA/PyBbXSkuZmluZChjID0+IGMua2V5ID09PSBzLmNvbHVtbktleSk/Lmljb247XG4gICAgICAgIHJldHVybiB7IGtleTogcy5jb2x1bW5LZXkhLCB0aXRsZTogcy50aXRsZSB8fCBodW1hbml6ZUtleShzLmNvbHVtbktleSEpLCBpY29uOiBzLmljb24gPz8gZmllbGRJY29uIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIGZpZWxkTGFiZWwoZmllbGQ6IHsga2V5OiBzdHJpbmc7IGhlYWRlcj86IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZmllbGQuaGVhZGVyIHx8IGh1bWFuaXplS2V5KGZpZWxkLmtleSk7XG4gIH1cblxuICB1cGRhdGUocGFuZWxDb25maWc6IE9yZ2FuaXplclBhbmVsQ29uZmlnPFRGaWVsZD4pOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbENvbmZpZyA9IHBhbmVsQ29uZmlnO1xuICAgIHRoaXMuX3JlZnJlc2hEZWZhdWx0RmllbGRzKCk7XG4gICAgdGhpcy5fcmVmcmVzaER5bmFtaWNTbGljZU1ldGEoKTtcbiAgICBpZiAoIXRoaXMuZ3JvdXBCeS51c2VyQ3VzdG9taXplZCkge1xuICAgICAgdGhpcy5ncm91cEJ5LmFjdGl2ZUtleSA9IHBhbmVsQ29uZmlnLmRlZmF1bHRHcm91cEJ5ID8/IG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2V0QWN0aXZlRmllbGRzKGZpZWxkczogVEZpZWxkW10pOiB2b2lkIHtcbiAgICB0aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMgPSBmaWVsZHM7XG4gICAgdGhpcy5maWVsZHMudXNlckN1c3RvbWl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgc2V0VXNlckN1c3RvbWl6ZWQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmZpZWxkcy51c2VyQ3VzdG9taXplZCA9IHZhbHVlO1xuICB9XG5cbiAgcmVzZXRUb0RlZmF1bHRzKCk6IHZvaWQge1xuICAgIHRoaXMuZmllbGRzLnVzZXJDdXN0b21pemVkID0gZmFsc2U7XG4gICAgdGhpcy5ncm91cEJ5LnVzZXJDdXN0b21pemVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVmcmVzaERlZmF1bHRGaWVsZHMoKTtcbiAgICB0aGlzLmdyb3VwQnkuYWN0aXZlS2V5ID0gdGhpcy5fcGFuZWxDb25maWcuZGVmYXVsdEdyb3VwQnkgPz8gbnVsbDtcbiAgICB0aGlzLnNsaWNlQnkuYWN0aXZlRHluYW1pY0ZpZWxkcyA9IFtdO1xuICAgIHRoaXMuX3JlZnJlc2hEeW5hbWljU2xpY2VNZXRhKCk7XG4gIH1cblxuICBhZGRGaWVsZChmaWVsZDogVEZpZWxkKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnRmllbGRzID0gdGhpcy5fcGFuZWxDb25maWcuZmllbGRzID8/IFtdO1xuICAgIGNvbnN0IGNvbmZpZ0luZGV4ID0gY29uZmlnRmllbGRzLmZpbmRJbmRleChjID0+IGMua2V5ID09PSBmaWVsZC5rZXkpO1xuICAgIGlmIChjb25maWdJbmRleCA9PT0gLTEpIHtcbiAgICAgIHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcyA9IFsuLi50aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMsIGZpZWxkXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5zZXJ0QmVmb3JlID0gdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzLmZpbmRJbmRleChjID0+IHtcbiAgICAgICAgY29uc3QgY2kgPSBjb25maWdGaWVsZHMuZmluZEluZGV4KGNjID0+IGNjLmtleSA9PT0gYy5rZXkpO1xuICAgICAgICByZXR1cm4gY2kgIT09IC0xICYmIGNpID4gY29uZmlnSW5kZXg7XG4gICAgICB9KTtcbiAgICAgIGlmIChpbnNlcnRCZWZvcmUgPT09IC0xKSB7XG4gICAgICAgIHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcyA9IFsuLi50aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMsIGZpZWxkXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBbLi4udGhpcy5maWVsZHMuYWN0aXZlRmllbGRzXTtcbiAgICAgICAgY29weS5zcGxpY2UoaW5zZXJ0QmVmb3JlLCAwLCBmaWVsZCk7XG4gICAgICAgIHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcyA9IGNvcHk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZmllbGRzLnVzZXJDdXN0b21pemVkID0gdHJ1ZTtcbiAgICB0aGlzLl9ldmVudHMkLm5leHQoeyB0eXBlOiAnZmllbGRzQ2hhbmdlZCcsIGZpZWxkSWRzOiB0aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMubWFwKGMgPT4gYy5rZXkpIH0pO1xuICB9XG5cbiAgcmVtb3ZlRmllbGQoZmllbGRLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzLmZpbmQoYyA9PiBjLmtleSA9PT0gZmllbGRLZXkpO1xuICAgIGlmICghZmllbGQpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIWZpZWxkLm9wdGlvbmFsICYmICF0aGlzLmFsbG93RmllbGRSZW1vdmFsKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcy5sZW5ndGggPD0gMSkgcmV0dXJuIGZhbHNlO1xuICAgIHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcyA9IHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcy5maWx0ZXIoYyA9PiBjLmtleSAhPT0gZmllbGRLZXkpO1xuICAgIHRoaXMuZmllbGRzLnVzZXJDdXN0b21pemVkID0gdHJ1ZTtcbiAgICB0aGlzLl9ldmVudHMkLm5leHQoeyB0eXBlOiAnZmllbGRzQ2hhbmdlZCcsIGZpZWxkSWRzOiB0aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMubWFwKGMgPT4gYy5rZXkpIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdG9nZ2xlRmllbGRWaXNpYmlsaXR5KGZpZWxkOiBURmllbGQsIHZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBpc1Zpc2libGUgPSB0aGlzLmlzRmllbGRWaXNpYmxlKGZpZWxkLmtleSk7XG4gICAgaWYgKHZpc2libGUgJiYgIWlzVmlzaWJsZSkge1xuICAgICAgdGhpcy5hZGRGaWVsZChmaWVsZCk7XG4gICAgfSBlbHNlIGlmICghdmlzaWJsZSAmJiBpc1Zpc2libGUpIHtcbiAgICAgIHRoaXMucmVtb3ZlRmllbGQoZmllbGQua2V5KTtcbiAgICB9XG4gIH1cblxuICByZW9yZGVyRmllbGRzKGZyb21LZXk6IHN0cmluZywgdG9LZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHByZXYgPSB0aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMuZmluZEluZGV4KGMgPT4gYy5rZXkgPT09IGZyb21LZXkpO1xuICAgIGNvbnN0IGN1cnIgPSB0aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMuZmluZEluZGV4KGMgPT4gYy5rZXkgPT09IHRvS2V5KTtcbiAgICBpZiAocHJldiA9PT0gLTEgfHwgY3VyciA9PT0gLTEgfHwgcHJldiA9PT0gY3VycikgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHJlb3JkZXJlZCA9IFsuLi50aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHNdO1xuICAgIGNvbnN0IFttb3ZlZF0gPSByZW9yZGVyZWQuc3BsaWNlKHByZXYsIDEpO1xuICAgIHJlb3JkZXJlZC5zcGxpY2UoY3VyciwgMCwgbW92ZWQpO1xuICAgIHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcyA9IHJlb3JkZXJlZDtcbiAgICB0aGlzLmZpZWxkcy51c2VyQ3VzdG9taXplZCA9IHRydWU7XG4gICAgdGhpcy5fZXZlbnRzJC5uZXh0KHsgdHlwZTogJ2ZpZWxkc0NoYW5nZWQnLCBmaWVsZElkczogdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzLm1hcChjID0+IGMua2V5KSB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlzRmllbGRWaXNpYmxlKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcy5zb21lKGMgPT4gYy5rZXkgPT09IGtleSk7XG4gIH1cblxuICBzZXRHcm91cEJ5KGtleTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgIHRoaXMuZ3JvdXBCeS5hY3RpdmVLZXkgPSBrZXk7XG4gICAgdGhpcy5ncm91cEJ5LnVzZXJDdXN0b21pemVkID0gdHJ1ZTtcbiAgICB0aGlzLl9ldmVudHMkLm5leHQoeyB0eXBlOiAnZ3JvdXBCeUNoYW5nZWQnLCBrZXkgfSk7XG4gIH1cblxuICBvbkR5bmFtaWNTbGljZUtleXNDaGFuZ2Uoa2V5czogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBhbGxGaWVsZHMgPSB0aGlzLl9wYW5lbENvbmZpZy5maWVsZHMgPz8gW107XG4gICAgY29uc3Qgc3RhdGljS2V5cyA9IG5ldyBTZXQoXG4gICAgICAodGhpcy5fcGFuZWxDb25maWcuc2xpY2VDb25maWdzID8/IFtdKS5tYXAocyA9PiBzLmNvbHVtbktleSkuZmlsdGVyKChrKTogayBpcyBzdHJpbmcgPT4gISFrKVxuICAgICk7XG4gICAgY29uc3QgZHluYW1pY0tleVNldCA9IG5ldyBTZXQoa2V5cyk7XG4gICAgY29uc3QgZXhpc3RpbmdLZXlzID0gbmV3IFNldChbLi4uc3RhdGljS2V5cywgLi4uZHluYW1pY0tleVNldF0pO1xuXG4gICAgdGhpcy5zbGljZUJ5LmFjdGl2ZUR5bmFtaWNGaWVsZHMgPSBrZXlzXG4gICAgICAubWFwKGsgPT4gYWxsRmllbGRzLmZpbmQoYyA9PiBjLmtleSA9PT0gaykpXG4gICAgICAuZmlsdGVyKChjKTogYyBpcyBURmllbGQgPT4gISFjKTtcblxuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICB0aGlzLnNsaWNlQnkuYXZhaWxhYmxlRm9yRHluYW1pYyA9IGFsbEZpZWxkcy5maWx0ZXIoYyA9PiB7XG4gICAgICBpZiAoYy5zbGljZWFibGUgPT09IGZhbHNlIHx8IGV4aXN0aW5nS2V5cy5oYXMoYy5rZXkpIHx8IHNlZW4uaGFzKGMua2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgc2Vlbi5hZGQoYy5rZXkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9jb21wdXRlU2xpY2VMYWJlbCgpO1xuICAgIHRoaXMuX2V2ZW50cyQubmV4dCh7IHR5cGU6ICdkeW5hbWljU2xpY2VzQ2hhbmdlZCcsIGtleXMgfSk7XG4gIH1cblxuICBpc0R5bmFtaWNTbGljZUFjdGl2ZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNsaWNlQnkuYWN0aXZlRHluYW1pY0ZpZWxkcy5zb21lKGMgPT4gYy5rZXkgPT09IGtleSk7XG4gIH1cblxuICB0b09yZ2FuaXplclN0YXRlKCk6IE9yZ2FuaXplclN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWRGaWVsZElkczogdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzLm1hcChjID0+IGMua2V5KSxcbiAgICAgIGdyb3VwQnlLZXk6IHRoaXMuZ3JvdXBCeS5hY3RpdmVLZXksXG4gICAgICBkeW5hbWljU2xpY2VLZXlzOiB0aGlzLnNsaWNlQnkuYWN0aXZlRHluYW1pY0ZpZWxkcy5tYXAoYyA9PiBjLmtleSksXG4gICAgfTtcbiAgfVxuICBkZXN0cm95KCk6IHZvaWQgeyB0aGlzLl9ldmVudHMkLmNvbXBsZXRlKCkgfVxuXG4gIHVwZGF0ZUhpZGRlblN0YXRpY0tleXMoa2V5czogU2V0PHN0cmluZz4pOiB2b2lkIHtcbiAgICB0aGlzLl9oaWRkZW5TdGF0aWNLZXlzID0ga2V5cztcbiAgICB0aGlzLl9jb21wdXRlU2xpY2VMYWJlbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVmcmVzaERlZmF1bHRGaWVsZHMoKTogdm9pZCB7XG4gICAgY29uc3QgZGVmYXVsdEZpZWxkcyA9ICh0aGlzLl9wYW5lbENvbmZpZy5maWVsZHMgfHwgW10pLmZpbHRlcihjID0+ICFjLm9wdGlvbmFsKTtcbiAgICBpZiAoIXRoaXMuZmllbGRzLnVzZXJDdXN0b21pemVkIHx8IHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcyA9IFsuLi5kZWZhdWx0RmllbGRzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYWxsb3dlZEtleXMgPSBuZXcgU2V0KCh0aGlzLl9wYW5lbENvbmZpZy5maWVsZHMgfHwgW10pLm1hcChjID0+IGMua2V5KSk7XG4gICAgICB0aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMgPSB0aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMuZmlsdGVyKGMgPT4gYWxsb3dlZEtleXMuaGFzKGMua2V5KSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVmcmVzaER5bmFtaWNTbGljZU1ldGEoKTogdm9pZCB7XG4gICAgY29uc3QgYWxsRmllbGRzID0gdGhpcy5fcGFuZWxDb25maWcuZmllbGRzID8/IFtdO1xuICAgIGNvbnN0IHN0YXRpY0tleXMgPSBuZXcgU2V0KFxuICAgICAgKHRoaXMuX3BhbmVsQ29uZmlnLnNsaWNlQ29uZmlncyA/PyBbXSkubWFwKHMgPT4gcy5jb2x1bW5LZXkpLmZpbHRlcigoayk6IGsgaXMgc3RyaW5nID0+ICEhaylcbiAgICApO1xuICAgIGNvbnN0IGFjdGl2ZUR5bktleXMgPSBuZXcgU2V0KHRoaXMuc2xpY2VCeS5hY3RpdmVEeW5hbWljRmllbGRzLm1hcChjID0+IGMua2V5KSk7XG5cbiAgICBjb25zdCBzZWVuMSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHRoaXMuc2xpY2VCeS5hdmFpbGFibGVGb3JEeW5hbWljID0gYWxsRmllbGRzLmZpbHRlcihjID0+IHtcbiAgICAgIGlmIChjLnNsaWNlYWJsZSA9PT0gZmFsc2UgfHwgc3RhdGljS2V5cy5oYXMoYy5rZXkpIHx8IGFjdGl2ZUR5bktleXMuaGFzKGMua2V5KSB8fCBzZWVuMS5oYXMoYy5rZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoIWMuaGVhZGVyICYmIGMuc2xpY2VhYmxlICE9PSB0cnVlKSByZXR1cm4gZmFsc2U7XG4gICAgICBzZWVuMS5hZGQoYy5rZXkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG5cbiAgICBjb25zdCBzZWVuMiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHRoaXMuc2xpY2VCeS5hbGxEeW5hbWljRmllbGRzID0gYWxsRmllbGRzLmZpbHRlcihjID0+IHtcbiAgICAgIGlmIChjLnNsaWNlYWJsZSA9PT0gZmFsc2UgfHwgc3RhdGljS2V5cy5oYXMoYy5rZXkpIHx8IHNlZW4yLmhhcyhjLmtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICghYy5oZWFkZXIgJiYgYy5zbGljZWFibGUgIT09IHRydWUpIHJldHVybiBmYWxzZTtcbiAgICAgIHNlZW4yLmFkZChjLmtleSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICB0aGlzLl9jb21wdXRlU2xpY2VMYWJlbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY29tcHV0ZVNsaWNlTGFiZWwoKTogdm9pZCB7XG4gICAgY29uc3QgdmlzaWJsZVN0YXRpY3MgPSAodGhpcy5fcGFuZWxDb25maWcuc2xpY2VDb25maWdzID8/IFtdKS5maWx0ZXIoXG4gICAgICBzID0+ICFzLmNvbHVtbktleSB8fCAhdGhpcy5faGlkZGVuU3RhdGljS2V5cy5oYXMocy5jb2x1bW5LZXkpXG4gICAgKTtcbiAgICBjb25zdCB0b3RhbCA9IHZpc2libGVTdGF0aWNzLmxlbmd0aCArIHRoaXMuc2xpY2VCeS5hY3RpdmVEeW5hbWljRmllbGRzLmxlbmd0aDtcbiAgICBpZiAodG90YWwgPT09IDApIHsgdGhpcy5zbGljZUJ5LmFjdGl2ZUxhYmVsID0gdGhpcy5fcGFuZWxDb25maWcubm9uZUxhYmVsID8/ICdBdWN1bic7IHJldHVybjsgfVxuICAgIGlmICh0b3RhbCA9PT0gMSkge1xuICAgICAgaWYgKHZpc2libGVTdGF0aWNzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25zdCBmaXJzdCA9IHZpc2libGVTdGF0aWNzWzBdO1xuICAgICAgICB0aGlzLnNsaWNlQnkuYWN0aXZlTGFiZWwgPSBmaXJzdD8udGl0bGUgfHwgZmlyc3Q/LmNvbHVtbktleSB8fCAnMSc7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2xpY2VCeS5hY3RpdmVMYWJlbCA9IHRoaXMuc2xpY2VCeS5hY3RpdmVEeW5hbWljRmllbGRzWzBdPy5oZWFkZXIgfHwgJzEnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNsaWNlQnkuYWN0aXZlTGFiZWwgPSBgJHt0b3RhbH0gYWN0aWZzYDtcbiAgfVxuXG4gIHByaXZhdGUgX3VuaXF1ZUJ5S2V5KGZpZWxkczogVEZpZWxkW10pOiBURmllbGRbXSB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHJldHVybiBmaWVsZHMuZmlsdGVyKGMgPT4ge1xuICAgICAgaWYgKHNlZW4uaGFzKGMua2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgc2Vlbi5hZGQoYy5rZXkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
279
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvanF1ZXJ5LW9yZ2FuaXplci9zcmMvbGliL29yZ2FuaXplci1mYWNhZGUvb3JnYW5pemVyLWZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSS9CLE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBVztJQUNyQyxPQUFPLEdBQUc7U0FDUCxPQUFPLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDO1NBQ3RDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO1NBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUVXLFdBQU0sR0FBaUM7WUFDOUMsWUFBWSxFQUFFLEVBQUU7WUFDaEIsY0FBYyxFQUFFLEtBQUs7U0FDdEIsQ0FBQztRQUVPLFlBQU8sR0FBMEI7WUFDeEMsU0FBUyxFQUFFLElBQUk7WUFDZixjQUFjLEVBQUUsS0FBSztTQUN0QixDQUFDO1FBRU8sWUFBTyxHQUFrQztZQUNoRCxtQkFBbUIsRUFBRSxFQUFFO1lBQ3ZCLG1CQUFtQixFQUFFLEVBQUU7WUFDdkIsZ0JBQWdCLEVBQUUsRUFBRTtZQUNwQixXQUFXLEVBQUUsT0FBTztTQUNyQixDQUFDO1FBRU0saUJBQVksR0FBaUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUM5RSxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBRTdCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztRQUN0RCxZQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FB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LElBQUksT0FBTyxDQUFDO1lBQUMsT0FBTztTQUFFO1FBQy9GLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNmLElBQUksY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQy9CLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLEtBQUssSUFBSSxLQUFLLEVBQUUsU0FBUyxJQUFJLEdBQUcsQ0FBQztnQkFDbkUsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLElBQUksR0FBRyxDQUFDO1lBQzlFLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLEdBQUcsS0FBSyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUVPLFlBQVksQ0FBQyxNQUFnQjtRQUNuQyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQy9CLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhcnRPcmdhbml6ZXJFdmVudCwgQ2hhcnRPcmdhbml6ZXJTdGF0ZSB9IGZyb20gJ0BvbmV0ZW1lL2pxdWVyeS1jb3JlJztcbmltcG9ydCB7IE9yZ2FuaXplckZpZWxkRGVmLCBPcmdhbml6ZXJGaWVsZHNTdGF0ZSwgT3JnYW5pemVyR3JvdXBCeVN0YXRlLCBPcmdhbml6ZXJQYW5lbENvbmZpZywgT3JnYW5pemVyU2xpY2VCeVN0YXRlIH0gZnJvbSAnLi9vcmdhbml6ZXItZmFjYWRlLnR5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGh1bWFuaXplS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGtleVxuICAgIC5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEgJDInKVxuICAgIC5yZXBsYWNlKC9bXy1dKy9nLCAnICcpXG4gICAgLnJlcGxhY2UoL14uLywgKHYpID0+IHYudG9VcHBlckNhc2UoKSk7XG59XG5cbmV4cG9ydCBjbGFzcyBPcmdhbml6ZXJGYWNhZGU8VEZpZWxkIGV4dGVuZHMgT3JnYW5pemVyRmllbGREZWYgPSBPcmdhbml6ZXJGaWVsZERlZj4ge1xuXG4gIHJlYWRvbmx5IGZpZWxkczogT3JnYW5pemVyRmllbGRzU3RhdGU8VEZpZWxkPiA9IHtcbiAgICBhY3RpdmVGaWVsZHM6IFtdLFxuICAgIHVzZXJDdXN0b21pemVkOiBmYWxzZSxcbiAgfTtcblxuICByZWFkb25seSBncm91cEJ5OiBPcmdhbml6ZXJHcm91cEJ5U3RhdGUgPSB7XG4gICAgYWN0aXZlS2V5OiBudWxsLFxuICAgIHVzZXJDdXN0b21pemVkOiBmYWxzZSxcbiAgfTtcblxuICByZWFkb25seSBzbGljZUJ5OiBPcmdhbml6ZXJTbGljZUJ5U3RhdGU8VEZpZWxkPiA9IHtcbiAgICBhY3RpdmVEeW5hbWljRmllbGRzOiBbXSxcbiAgICBhdmFpbGFibGVGb3JEeW5hbWljOiBbXSxcbiAgICBhbGxEeW5hbWljRmllbGRzOiBbXSxcbiAgICBhY3RpdmVMYWJlbDogJ0F1Y3VuJyxcbiAgfTtcblxuICBwcml2YXRlIF9wYW5lbENvbmZpZzogT3JnYW5pemVyUGFuZWxDb25maWc8VEZpZWxkPiA9IHsgZmllbGRzOiBbXSwgc2xpY2VDb25maWdzOiBbXSB9O1xuICBwcml2YXRlIF9oaWRkZW5TdGF0aWNLZXlzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRzJCA9IG5ldyBTdWJqZWN0PENoYXJ0T3JnYW5pemVyRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IGV2ZW50cyQgPSB0aGlzLl9ldmVudHMkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9wYW5lbENvbmZpZy5jb25maWc/LmVuYWJsZWQgPT09IHRydWU7XG4gIH1cblxuICBnZXQgc2hvd0ZpZWxkcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkO1xuICB9XG5cbiAgZ2V0IHNob3dHcm91cEJ5U2VjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkICYmIHRoaXMuZ3JvdXBCeUZpZWxkcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IHNob3dTbGljZUJ5U2VjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVkICYmIChcbiAgICAgICh0aGlzLl9wYW5lbENvbmZpZy5zbGljZUNvbmZpZ3M/Lmxlbmd0aCA/PyAwKSA+IDAgfHxcbiAgICAgIHRoaXMuc2xpY2VCeS5hbGxEeW5hbWljRmllbGRzLmxlbmd0aCA+IDBcbiAgICApO1xuICB9XG5cbiAgZ2V0IGFsbG93RmllbGRSZW1vdmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9wYW5lbENvbmZpZy5jb25maWc/LmVuYWJsZUZpZWxkUmVtb3ZhbCAhPT0gZmFsc2U7XG4gIH1cblxuICBnZXQgaXNGaWVsZERyYWdEcm9wRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGFuZWxDb25maWcuY29uZmlnPy5lbmFibGVGaWVsZERyYWdEcm9wID09PSB0cnVlO1xuICB9XG5cbiAgZ2V0IG1lbnVCYXNlRmllbGRzKCk6IFRGaWVsZFtdIHtcbiAgICByZXR1cm4gdGhpcy5fdW5pcXVlQnlLZXkoKHRoaXMuX3BhbmVsQ29uZmlnLmZpZWxkcyB8fCBbXSkuZmlsdGVyKGMgPT4gIWMub3B0aW9uYWwpKTtcbiAgfVxuXG4gIGdldCBtZW51T3B0aW9uYWxGaWVsZHMoKTogVEZpZWxkW10ge1xuICAgIHJldHVybiB0aGlzLl91bmlxdWVCeUtleSgodGhpcy5fcGFuZWxDb25maWcuZmllbGRzIHx8IFtdKS5maWx0ZXIoYyA9PiBjLm9wdGlvbmFsKSk7XG4gIH1cblxuICBnZXQgdG90YWxGaWVsZENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIG5ldyBTZXQoKHRoaXMuX3BhbmVsQ29uZmlnLmZpZWxkcyB8fCBbXSkubWFwKGMgPT4gYy5rZXkpKS5zaXplO1xuICB9XG5cbiAgZ2V0IGdyb3VwQnlGaWVsZHMoKTogVEZpZWxkW10ge1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICByZXR1cm4gKHRoaXMuX3BhbmVsQ29uZmlnLmZpZWxkcyB8fCBbXSkuZmlsdGVyKGMgPT4ge1xuICAgICAgaWYgKGMuZ3JvdXBhYmxlID09PSBmYWxzZSB8fCBzZWVuLmhhcyhjLmtleSkpIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICghYy5oZWFkZXIgJiYgYy5ncm91cGFibGUgIT09IHRydWUpIHJldHVybiBmYWxzZTtcbiAgICAgIHNlZW4uYWRkKGMua2V5KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGFjdGl2ZUdyb3VwQnlMYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5ncm91cEJ5LmFjdGl2ZUtleSkgcmV0dXJuIHRoaXMuX3BhbmVsQ29uZmlnLm5vbmVMYWJlbCA/PyAnQXVjdW4nO1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5ncm91cEJ5RmllbGRzLmZpbmQoYyA9PiBjLmtleSA9PT0gdGhpcy5ncm91cEJ5LmFjdGl2ZUtleSk7XG4gICAgcmV0dXJuIGZpZWxkPy5oZWFkZXIgfHwgdGhpcy5ncm91cEJ5LmFjdGl2ZUtleTtcbiAgfVxuXG4gIGdldCBzdGF0aWNTbGljZXNGb3JNZW51KCk6IEFycmF5PHsga2V5OiBzdHJpbmc7IHRpdGxlOiBzdHJpbmc7IGljb24/OiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiAodGhpcy5fcGFuZWxDb25maWcuc2xpY2VDb25maWdzID8/IFtdKVxuICAgICAgLmZpbHRlcihzID0+ICEhcy5jb2x1bW5LZXkpXG4gICAgICAubWFwKHMgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZEljb24gPSAodGhpcy5fcGFuZWxDb25maWcuZmllbGRzID8/IFtdKS5maW5kKGMgPT4gYy5rZXkgPT09IHMuY29sdW1uS2V5KT8uaWNvbjtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBzLmNvbHVtbktleSEsIHRpdGxlOiBzLnRpdGxlIHx8IGh1bWFuaXplS2V5KHMuY29sdW1uS2V5ISksIGljb246IHMuaWNvbiA/PyBmaWVsZEljb24gfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZmllbGRMYWJlbChmaWVsZDogeyBrZXk6IHN0cmluZzsgaGVhZGVyPzogc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIHJldHVybiBmaWVsZC5oZWFkZXIgfHwgaHVtYW5pemVLZXkoZmllbGQua2V5KTtcbiAgfVxuXG4gIHVwZGF0ZShwYW5lbENvbmZpZzogT3JnYW5pemVyUGFuZWxDb25maWc8VEZpZWxkPik6IHZvaWQge1xuICAgIHRoaXMuX3BhbmVsQ29uZmlnID0gcGFuZWxDb25maWc7XG4gICAgdGhpcy5fcmVmcmVzaERlZmF1bHRGaWVsZHMoKTtcbiAgICB0aGlzLl9yZWZyZXNoRHluYW1pY1NsaWNlTWV0YSgpO1xuICAgIGlmICghdGhpcy5ncm91cEJ5LnVzZXJDdXN0b21pemVkKSB7XG4gICAgICB0aGlzLmdyb3VwQnkuYWN0aXZlS2V5ID0gcGFuZWxDb25maWcuZGVmYXVsdEdyb3VwQnkgPz8gbnVsbDtcbiAgICB9XG4gIH1cblxuICBzZXRBY3RpdmVGaWVsZHMoZmllbGRzOiBURmllbGRbXSk6IHZvaWQge1xuICAgIHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcyA9IGZpZWxkcztcbiAgICB0aGlzLmZpZWxkcy51c2VyQ3VzdG9taXplZCA9IHRydWU7XG4gIH1cblxuICBzZXRVc2VyQ3VzdG9taXplZCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZmllbGRzLnVzZXJDdXN0b21pemVkID0gdmFsdWU7XG4gIH1cblxuICByZXNldFRvRGVmYXVsdHMoKTogdm9pZCB7XG4gICAgdGhpcy5maWVsZHMudXNlckN1c3RvbWl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmdyb3VwQnkudXNlckN1c3RvbWl6ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWZyZXNoRGVmYXVsdEZpZWxkcygpO1xuICAgIHRoaXMuZ3JvdXBCeS5hY3RpdmVLZXkgPSB0aGlzLl9wYW5lbENvbmZpZy5kZWZhdWx0R3JvdXBCeSA/PyBudWxsO1xuICAgIHRoaXMuc2xpY2VCeS5hY3RpdmVEeW5hbWljRmllbGRzID0gW107XG4gICAgdGhpcy5fcmVmcmVzaER5bmFtaWNTbGljZU1ldGEoKTtcbiAgfVxuXG4gIGFkZEZpZWxkKGZpZWxkOiBURmllbGQpOiB2b2lkIHtcbiAgICBjb25zdCBjb25maWdGaWVsZHMgPSB0aGlzLl9wYW5lbENvbmZpZy5maWVsZHMgPz8gW107XG4gICAgY29uc3QgY29uZmlnSW5kZXggPSBjb25maWdGaWVsZHMuZmluZEluZGV4KGMgPT4gYy5rZXkgPT09IGZpZWxkLmtleSk7XG4gICAgaWYgKGNvbmZpZ0luZGV4ID09PSAtMSkge1xuICAgICAgdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzID0gWy4uLnRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcywgZmllbGRdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbnNlcnRCZWZvcmUgPSB0aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMuZmluZEluZGV4KGMgPT4ge1xuICAgICAgICBjb25zdCBjaSA9IGNvbmZpZ0ZpZWxkcy5maW5kSW5kZXgoY2MgPT4gY2Mua2V5ID09PSBjLmtleSk7XG4gICAgICAgIHJldHVybiBjaSAhPT0gLTEgJiYgY2kgPiBjb25maWdJbmRleDtcbiAgICAgIH0pO1xuICAgICAgaWYgKGluc2VydEJlZm9yZSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzID0gWy4uLnRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcywgZmllbGRdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29weSA9IFsuLi50aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHNdO1xuICAgICAgICBjb3B5LnNwbGljZShpbnNlcnRCZWZvcmUsIDAsIGZpZWxkKTtcbiAgICAgICAgdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzID0gY29weTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5maWVsZHMudXNlckN1c3RvbWl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuX2V2ZW50cyQubmV4dCh7IHR5cGU6ICdmaWVsZHNDaGFuZ2VkJywgZmllbGRJZHM6IHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcy5tYXAoYyA9PiBjLmtleSkgfSk7XG4gIH1cblxuICByZW1vdmVGaWVsZChmaWVsZEtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZmllbGQgPSB0aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMuZmluZChjID0+IGMua2V5ID09PSBmaWVsZEtleSk7XG4gICAgaWYgKCFmaWVsZCkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghZmllbGQub3B0aW9uYWwgJiYgIXRoaXMuYWxsb3dGaWVsZFJlbW92YWwpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodGhpcy5maWVsZHMuYWN0aXZlRmllbGRzLmxlbmd0aCA8PSAxKSByZXR1cm4gZmFsc2U7XG4gICAgdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzID0gdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzLmZpbHRlcihjID0+IGMua2V5ICE9PSBmaWVsZEtleSk7XG4gICAgdGhpcy5maWVsZHMudXNlckN1c3RvbWl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuX2V2ZW50cyQubmV4dCh7IHR5cGU6ICdmaWVsZHNDaGFuZ2VkJywgZmllbGRJZHM6IHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcy5tYXAoYyA9PiBjLmtleSkgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICB0b2dnbGVGaWVsZFZpc2liaWxpdHkoZmllbGQ6IFRGaWVsZCwgdmlzaWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IHRoaXMuaXNGaWVsZFZpc2libGUoZmllbGQua2V5KTtcbiAgICBpZiAodmlzaWJsZSAmJiAhaXNWaXNpYmxlKSB7XG4gICAgICB0aGlzLmFkZEZpZWxkKGZpZWxkKTtcbiAgICB9IGVsc2UgaWYgKCF2aXNpYmxlICYmIGlzVmlzaWJsZSkge1xuICAgICAgdGhpcy5yZW1vdmVGaWVsZChmaWVsZC5rZXkpO1xuICAgIH1cbiAgfVxuXG4gIHJlb3JkZXJGaWVsZHMoZnJvbUtleTogc3RyaW5nLCB0b0tleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcHJldiA9IHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcy5maW5kSW5kZXgoYyA9PiBjLmtleSA9PT0gZnJvbUtleSk7XG4gICAgY29uc3QgY3VyciA9IHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcy5maW5kSW5kZXgoYyA9PiBjLmtleSA9PT0gdG9LZXkpO1xuICAgIGlmIChwcmV2ID09PSAtMSB8fCBjdXJyID09PSAtMSB8fCBwcmV2ID09PSBjdXJyKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgcmVvcmRlcmVkID0gWy4uLnRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkc107XG4gICAgY29uc3QgW21vdmVkXSA9IHJlb3JkZXJlZC5zcGxpY2UocHJldiwgMSk7XG4gICAgcmVvcmRlcmVkLnNwbGljZShjdXJyLCAwLCBtb3ZlZCk7XG4gICAgdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzID0gcmVvcmRlcmVkO1xuICAgIHRoaXMuZmllbGRzLnVzZXJDdXN0b21pemVkID0gdHJ1ZTtcbiAgICB0aGlzLl9ldmVudHMkLm5leHQoeyB0eXBlOiAnZmllbGRzQ2hhbmdlZCcsIGZpZWxkSWRzOiB0aGlzLmZpZWxkcy5hY3RpdmVGaWVsZHMubWFwKGMgPT4gYy5rZXkpIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaXNGaWVsZFZpc2libGUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzLnNvbWUoYyA9PiBjLmtleSA9PT0ga2V5KTtcbiAgfVxuXG4gIHNldEdyb3VwQnkoa2V5OiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5ncm91cEJ5LmFjdGl2ZUtleSA9IGtleTtcbiAgICB0aGlzLmdyb3VwQnkudXNlckN1c3RvbWl6ZWQgPSB0cnVlO1xuICAgIHRoaXMuX2V2ZW50cyQubmV4dCh7IHR5cGU6ICdncm91cEJ5Q2hhbmdlZCcsIGtleSB9KTtcbiAgfVxuXG4gIG9uRHluYW1pY1NsaWNlS2V5c0NoYW5nZShrZXlzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGNvbnN0IGFsbEZpZWxkcyA9IHRoaXMuX3BhbmVsQ29uZmlnLmZpZWxkcyA/PyBbXTtcblxuICAgIHRoaXMuc2xpY2VCeS5hY3RpdmVEeW5hbWljRmllbGRzID0ga2V5c1xuICAgICAgLm1hcChrID0+IGFsbEZpZWxkcy5maW5kKGMgPT4gYy5rZXkgPT09IGspKVxuICAgICAgLmZpbHRlcigoYyk6IGMgaXMgVEZpZWxkID0+ICEhYyk7XG4gICAgdGhpcy5zbGljZUJ5LmF2YWlsYWJsZUZvckR5bmFtaWMgPSB0aGlzLl9hdmFpbGFibGVGb3JEeW5hbWljKG5ldyBTZXQoa2V5cykpO1xuXG4gICAgdGhpcy5fY29tcHV0ZVNsaWNlTGFiZWwoKTtcbiAgICB0aGlzLl9ldmVudHMkLm5leHQoeyB0eXBlOiAnZHluYW1pY1NsaWNlc0NoYW5nZWQnLCBrZXlzIH0pO1xuICB9XG5cbiAgaXNEeW5hbWljU2xpY2VBY3RpdmUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zbGljZUJ5LmFjdGl2ZUR5bmFtaWNGaWVsZHMuc29tZShjID0+IGMua2V5ID09PSBrZXkpO1xuICB9XG5cbiAgdG9Pcmdhbml6ZXJTdGF0ZSgpOiBDaGFydE9yZ2FuaXplclN0YXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VsZWN0ZWRGaWVsZElkczogdGhpcy5maWVsZHMuYWN0aXZlRmllbGRzLm1hcChjID0+IGMua2V5KSxcbiAgICAgIGdyb3VwQnlLZXk6IHRoaXMuZ3JvdXBCeS5hY3RpdmVLZXksXG4gICAgICBkeW5hbWljU2xpY2VLZXlzOiB0aGlzLnNsaWNlQnkuYWN0aXZlRHluYW1pY0ZpZWxkcy5tYXAoYyA9PiBjLmtleSksXG4gICAgfTtcbiAgfVxuICBkZXN0cm95KCk6IHZvaWQgeyB0aGlzLl9ldmVudHMkLmNvbXBsZXRlKCkgfVxuXG4gIHVwZGF0ZUhpZGRlblN0YXRpY0tleXMoa2V5czogU2V0PHN0cmluZz4pOiB2b2lkIHtcbiAgICB0aGlzLl9oaWRkZW5TdGF0aWNLZXlzID0ga2V5cztcbiAgICB0aGlzLl9jb21wdXRlU2xpY2VMYWJlbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVmcmVzaERlZmF1bHRGaWVsZHMoKTogdm9pZCB7XG4gICAgY29uc3QgZGVmYXVsdEZpZWxkcyA9ICh0aGlzLl9wYW5lbENvbmZpZy5maWVsZHMgfHwgW10pLmZpbHRlcihjID0+ICFjLm9wdGlvbmFsKTtcbiAgICBpZiAoIXRoaXMuZmllbGRzLnVzZXJDdXN0b21pemVkIHx8IHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcyA9IFsuLi5kZWZhdWx0RmllbGRzXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuX2RlZmluaXRpb25zQnlLZXkoKTtcbiAgICAgIHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkcyA9IHRoaXMuZmllbGRzLmFjdGl2ZUZpZWxkc1xuICAgICAgICAuZmlsdGVyKGMgPT4gY3VycmVudC5oYXMoYy5rZXkpKVxuICAgICAgICAubWFwKGMgPT4gY3VycmVudC5nZXQoYy5rZXkpISk7XG4gICAgfVxuICB9XG5cbiAgLyoqIFByZW1pw6hyZSBkw6lmaW5pdGlvbiBkZSBjaGFxdWUgY2zDqSBkYW5zIGxhIGNvbmZpZyBjb3VyYW50ZS4gKi9cbiAgcHJpdmF0ZSBfZGVmaW5pdGlvbnNCeUtleSgpOiBNYXA8c3RyaW5nLCBURmllbGQ+IHtcbiAgICBjb25zdCBieUtleSA9IG5ldyBNYXA8c3RyaW5nLCBURmllbGQ+KCk7XG4gICAgKHRoaXMuX3BhbmVsQ29uZmlnLmZpZWxkcyB8fCBbXSkuZm9yRWFjaChjID0+IHsgaWYgKCFieUtleS5oYXMoYy5rZXkpKSBieUtleS5zZXQoYy5rZXksIGMpOyB9KTtcbiAgICByZXR1cm4gYnlLZXk7XG4gIH1cblxuICBwcml2YXRlIF9zdGF0aWNTbGljZUtleXMoKTogU2V0PHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgU2V0KCh0aGlzLl9wYW5lbENvbmZpZy5zbGljZUNvbmZpZ3MgPz8gW10pLm1hcChzID0+IHMuY29sdW1uS2V5KS5maWx0ZXIoKGspOiBrIGlzIHN0cmluZyA9PiAhIWspKTtcbiAgfVxuXG4gIC8qKiBDaGFtcHMgcHJvcG9zYWJsZXMgZW4gc2xpY2UgZHluYW1pcXVlLCBob3JzIHNsaWNlcyBzdGF0aXF1ZXMgZXQgc2xpY2VzIGTDqWrDoCBhY3RpZnMuICovXG4gIHByaXZhdGUgX2F2YWlsYWJsZUZvckR5bmFtaWMoYWN0aXZlS2V5czogU2V0PHN0cmluZz4pOiBURmllbGRbXSB7XG4gICAgY29uc3Qgc3RhdGljS2V5cyA9IHRoaXMuX3N0YXRpY1NsaWNlS2V5cygpO1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICByZXR1cm4gKHRoaXMuX3BhbmVsQ29uZmlnLmZpZWxkcyA/PyBbXSkuZmlsdGVyKGMgPT4ge1xuICAgICAgaWYgKGMuc2xpY2VhYmxlID09PSBmYWxzZSB8fCBzdGF0aWNLZXlzLmhhcyhjLmtleSkgfHwgYWN0aXZlS2V5cy5oYXMoYy5rZXkpIHx8IHNlZW4uaGFzKGMua2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKCFjLmhlYWRlciAmJiBjLnNsaWNlYWJsZSAhPT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgc2Vlbi5hZGQoYy5rZXkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWZyZXNoRHluYW1pY1NsaWNlTWV0YSgpOiB2b2lkIHtcbiAgICBjb25zdCBhbGxGaWVsZHMgPSB0aGlzLl9wYW5lbENvbmZpZy5maWVsZHMgPz8gW107XG4gICAgY29uc3Qgc3RhdGljS2V5cyA9IHRoaXMuX3N0YXRpY1NsaWNlS2V5cygpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLl9kZWZpbml0aW9uc0J5S2V5KCk7XG4gICAgdGhpcy5zbGljZUJ5LmFjdGl2ZUR5bmFtaWNGaWVsZHMgPSB0aGlzLnNsaWNlQnkuYWN0aXZlRHluYW1pY0ZpZWxkcy5tYXAoYyA9PiBjdXJyZW50LmdldChjLmtleSkgPz8gYyk7XG4gICAgY29uc3QgYWN0aXZlRHluS2V5cyA9IG5ldyBTZXQodGhpcy5zbGljZUJ5LmFjdGl2ZUR5bmFtaWNGaWVsZHMubWFwKGMgPT4gYy5rZXkpKTtcblxuICAgIHRoaXMuc2xpY2VCeS5hdmFpbGFibGVGb3JEeW5hbWljID0gdGhpcy5fYXZhaWxhYmxlRm9yRHluYW1pYyhhY3RpdmVEeW5LZXlzKTtcblxuICAgIGNvbnN0IHNlZW4yID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgdGhpcy5zbGljZUJ5LmFsbER5bmFtaWNGaWVsZHMgPSBhbGxGaWVsZHMuZmlsdGVyKGMgPT4ge1xuICAgICAgaWYgKGMuc2xpY2VhYmxlID09PSBmYWxzZSB8fCBzdGF0aWNLZXlzLmhhcyhjLmtleSkgfHwgc2VlbjIuaGFzKGMua2V5KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaWYgKCFjLmhlYWRlciAmJiBjLnNsaWNlYWJsZSAhPT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgc2VlbjIuYWRkKGMua2V5KTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIHRoaXMuX2NvbXB1dGVTbGljZUxhYmVsKCk7XG4gIH1cblxuICBwcml2YXRlIF9jb21wdXRlU2xpY2VMYWJlbCgpOiB2b2lkIHtcbiAgICBjb25zdCB2aXNpYmxlU3RhdGljcyA9ICh0aGlzLl9wYW5lbENvbmZpZy5zbGljZUNvbmZpZ3MgPz8gW10pLmZpbHRlcihcbiAgICAgIHMgPT4gIXMuY29sdW1uS2V5IHx8ICF0aGlzLl9oaWRkZW5TdGF0aWNLZXlzLmhhcyhzLmNvbHVtbktleSlcbiAgICApO1xuICAgIGNvbnN0IHRvdGFsID0gdmlzaWJsZVN0YXRpY3MubGVuZ3RoICsgdGhpcy5zbGljZUJ5LmFjdGl2ZUR5bmFtaWNGaWVsZHMubGVuZ3RoO1xuICAgIGlmICh0b3RhbCA9PT0gMCkgeyB0aGlzLnNsaWNlQnkuYWN0aXZlTGFiZWwgPSB0aGlzLl9wYW5lbENvbmZpZy5ub25lTGFiZWwgPz8gJ0F1Y3VuJzsgcmV0dXJuOyB9XG4gICAgaWYgKHRvdGFsID09PSAxKSB7XG4gICAgICBpZiAodmlzaWJsZVN0YXRpY3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gdmlzaWJsZVN0YXRpY3NbMF07XG4gICAgICAgIHRoaXMuc2xpY2VCeS5hY3RpdmVMYWJlbCA9IGZpcnN0Py50aXRsZSB8fCBmaXJzdD8uY29sdW1uS2V5IHx8ICcxJztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zbGljZUJ5LmFjdGl2ZUxhYmVsID0gdGhpcy5zbGljZUJ5LmFjdGl2ZUR5bmFtaWNGaWVsZHNbMF0/LmhlYWRlciB8fCAnMSc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2xpY2VCeS5hY3RpdmVMYWJlbCA9IGAke3RvdGFsfSBhY3RpZnNgO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5pcXVlQnlLZXkoZmllbGRzOiBURmllbGRbXSk6IFRGaWVsZFtdIHtcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoYyA9PiB7XG4gICAgICBpZiAoc2Vlbi5oYXMoYy5rZXkpKSByZXR1cm4gZmFsc2U7XG4gICAgICBzZWVuLmFkZChjLmtleSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWZhY2FkZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvanF1ZXJ5LW9yZ2FuaXplci9zcmMvbGliL29yZ2FuaXplci1mYWNhZGUvb3JnYW5pemVyLWZhY2FkZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2xpY2VDb25maWcgfSBmcm9tICcuLi9zbGljZS1wYW5lbC9zbGljZS1wYW5lbC5tb2RlbCc7XG5pbXBvcnQgeyBPcmdhbml6ZXJDb25maWcgfSBmcm9tICdAb25ldGVtZS9qcXVlcnktY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyRmllbGREZWYge1xuICBrZXk6IHN0cmluZztcbiAgaGVhZGVyPzogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBvcHRpb25hbD86IGJvb2xlYW47XG4gIGdyb3VwYWJsZT86IGJvb2xlYW47XG4gIHNsaWNlYWJsZT86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclBhbmVsQ29uZmlnPFRGaWVsZCBleHRlbmRzIE9yZ2FuaXplckZpZWxkRGVmID0gT3JnYW5pemVyRmllbGREZWY+IHtcbiAgY29uZmlnPzogT3JnYW5pemVyQ29uZmlnO1xuICBmaWVsZHM6IFRGaWVsZFtdO1xuICBzbGljZUNvbmZpZ3M6IFNsaWNlQ29uZmlnPGFueT5bXTtcbiAgbm9uZUxhYmVsPzogc3RyaW5nO1xuICBkZWZhdWx0R3JvdXBCeT86IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyRmllbGRzU3RhdGU8VEZpZWxkIGV4dGVuZHMgT3JnYW5pemVyRmllbGREZWYgPSBPcmdhbml6ZXJGaWVsZERlZj4ge1xuICBhY3RpdmVGaWVsZHM6IFRGaWVsZFtdO1xuICB1c2VyQ3VzdG9taXplZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJHcm91cEJ5U3RhdGUge1xuICBhY3RpdmVLZXk6IHN0cmluZyB8IG51bGw7XG4gIHVzZXJDdXN0b21pemVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplclNsaWNlQnlTdGF0ZTxURmllbGQgZXh0ZW5kcyBPcmdhbml6ZXJGaWVsZERlZiA9IE9yZ2FuaXplckZpZWxkRGVmPiB7XG4gIGFjdGl2ZUR5bmFtaWNGaWVsZHM6IFRGaWVsZFtdO1xuICBhdmFpbGFibGVGb3JEeW5hbWljOiBURmllbGRbXTtcbiAgYWxsRHluYW1pY0ZpZWxkczogVEZpZWxkW107XG4gIGFjdGl2ZUxhYmVsOiBzdHJpbmc7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pemVyLWZhY2FkZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uZXRlbWUvanF1ZXJ5LW9yZ2FuaXplci9zcmMvbGliL29yZ2FuaXplci1mYWNhZGUvb3JnYW5pemVyLWZhY2FkZS50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2xpY2VDb25maWcgfSBmcm9tICcuLi9zbGljZS1wYW5lbC9zbGljZS1wYW5lbC5tb2RlbCc7XG5pbXBvcnQgeyBDaGFydE9yZ2FuaXplckNvbmZpZyB9IGZyb20gJ0BvbmV0ZW1lL2pxdWVyeS1jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJGaWVsZERlZiB7XG4gIGtleTogc3RyaW5nO1xuICBoZWFkZXI/OiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgZ3JvdXBhYmxlPzogYm9vbGVhbjtcbiAgc2xpY2VhYmxlPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyUGFuZWxDb25maWc8VEZpZWxkIGV4dGVuZHMgT3JnYW5pemVyRmllbGREZWYgPSBPcmdhbml6ZXJGaWVsZERlZj4ge1xuICBjb25maWc/OiBDaGFydE9yZ2FuaXplckNvbmZpZztcbiAgZmllbGRzOiBURmllbGRbXTtcbiAgc2xpY2VDb25maWdzOiBTbGljZUNvbmZpZzxhbnk+W107XG4gIG5vbmVMYWJlbD86IHN0cmluZztcbiAgZGVmYXVsdEdyb3VwQnk/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXplckZpZWxkc1N0YXRlPFRGaWVsZCBleHRlbmRzIE9yZ2FuaXplckZpZWxkRGVmID0gT3JnYW5pemVyRmllbGREZWY+IHtcbiAgYWN0aXZlRmllbGRzOiBURmllbGRbXTtcbiAgdXNlckN1c3RvbWl6ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3JnYW5pemVyR3JvdXBCeVN0YXRlIHtcbiAgYWN0aXZlS2V5OiBzdHJpbmcgfCBudWxsO1xuICB1c2VyQ3VzdG9taXplZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdhbml6ZXJTbGljZUJ5U3RhdGU8VEZpZWxkIGV4dGVuZHMgT3JnYW5pemVyRmllbGREZWYgPSBPcmdhbml6ZXJGaWVsZERlZj4ge1xuICBhY3RpdmVEeW5hbWljRmllbGRzOiBURmllbGRbXTtcbiAgYXZhaWxhYmxlRm9yRHluYW1pYzogVEZpZWxkW107XG4gIGFsbER5bmFtaWNGaWVsZHM6IFRGaWVsZFtdO1xuICBhY3RpdmVMYWJlbDogc3RyaW5nO1xufVxuIl19