ag-psd 14.4.0 → 14.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## v14.5.0
4
+ - Added support for zip compression without prediction of image data
5
+ - Added support for `compress` option when writing
6
+
3
7
  ## v14.4.0
4
8
  - Added support for `layerMaskAsGlobalMask` flag
5
9
  - Added support for `interpolationMethod` for gradient overlay layer blending mode
package/TODO CHANGED
@@ -1,4 +1,11 @@
1
+ - remove gulp
2
+
1
3
  - can we remove sectionDivider property ?
2
4
  - can we remove nameSource property ?
3
5
 
4
6
  - improve vector fill / stroke help sections
7
+
8
+ check: https://github.com/TheNicker/libpsd
9
+
10
+ - zip with prediction: https://github.com/TheNicker/libpsd/blob/master/src/psd_zip.c
11
+ - also support saving with zip compression ?
package/dist/abr.d.ts CHANGED
@@ -122,6 +122,9 @@ export interface Brush {
122
122
  usePressureOverridesSize: boolean;
123
123
  usePressureOverridesOpacity: boolean;
124
124
  useLegacy: boolean;
125
+ flowDynamics?: BrushDynamics;
126
+ opacityDynamics?: BrushDynamics;
127
+ sizeDynamics?: BrushDynamics;
125
128
  };
126
129
  }
127
130
  export declare function readAbr(buffer: ArrayBufferView, options?: {
package/dist/abr.js CHANGED
@@ -31,7 +31,7 @@ function parseBrushShape(desc) {
31
31
  return shape;
32
32
  }
33
33
  function readAbr(buffer, options) {
34
- var _a;
34
+ var _a, _b;
35
35
  if (options === void 0) { options = {}; }
36
36
  var reader = (0, psdReader_1.createReader)(buffer.buffer, buffer.byteOffset, buffer.byteLength);
37
37
  var version = (0, psdReader_1.readInt16)(reader);
@@ -105,8 +105,8 @@ function readAbr(buffer, options) {
105
105
  case 'desc': {
106
106
  var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
107
107
  // console.log(require('util').inspect(desc, false, 99, true));
108
- for (var _i = 0, _b = desc.Brsh; _i < _b.length; _i++) {
109
- var brush = _b[_i];
108
+ for (var _i = 0, _c = desc.Brsh; _i < _c.length; _i++) {
109
+ var brush = _c[_i];
110
110
  var b = {
111
111
  name: brush['Nm '],
112
112
  shape: parseBrushShape(brush.Brsh),
@@ -205,21 +205,27 @@ function readAbr(buffer, options) {
205
205
  if (to) {
206
206
  b.toolOptions = {
207
207
  brushPreset: to.brushPreset,
208
- flow: to.flow,
209
- smooth: to.Smoo,
210
- mode: descriptor_1.BlnM.decode(to['Md ']),
211
- opacity: to.Opct,
212
- smoothing: to.smoothing,
213
- smoothingValue: to.smoothingValue,
214
- smoothingRadiusMode: to.smoothingRadiusMode,
215
- smoothingCatchup: to.smoothingCatchup,
216
- smoothingCatchupAtEnd: to.smoothingCatchupAtEnd,
217
- smoothingZoomCompensation: to.smoothingZoomCompensation,
218
- pressureSmoothing: to.pressureSmoothing,
219
- usePressureOverridesSize: to.usePressureOverridesSize,
220
- usePressureOverridesOpacity: to.usePressureOverridesOpacity,
221
- useLegacy: to.useLegacy,
208
+ flow: to.flow || 0,
209
+ smooth: to.Smoo || 0,
210
+ mode: descriptor_1.BlnM.decode(to['Md '] || 'BlnM.Nrml'),
211
+ opacity: (_a = to.Opct) !== null && _a !== void 0 ? _a : 1,
212
+ smoothing: !!to.smoothing,
213
+ smoothingValue: to.smoothingValue || 0,
214
+ smoothingRadiusMode: !!to.smoothingRadiusMode,
215
+ smoothingCatchup: !!to.smoothingCatchup,
216
+ smoothingCatchupAtEnd: !!to.smoothingCatchupAtEnd,
217
+ smoothingZoomCompensation: !!to.smoothingZoomCompensation,
218
+ pressureSmoothing: !!to.pressureSmoothing,
219
+ usePressureOverridesSize: !!to.usePressureOverridesSize,
220
+ usePressureOverridesOpacity: !!to.usePressureOverridesOpacity,
221
+ useLegacy: !!to.useLegacy,
222
222
  };
223
+ if (to.prVr)
224
+ b.toolOptions.flowDynamics = parseDynamics(to.prVr);
225
+ if (to.opVr)
226
+ b.toolOptions.opacityDynamics = parseDynamics(to.opVr);
227
+ if (to.szVr)
228
+ b.toolOptions.sizeDynamics = parseDynamics(to.szVr);
223
229
  }
224
230
  brushes.push(b);
225
231
  }
@@ -236,7 +242,7 @@ function readAbr(buffer, options) {
236
242
  // TODO: what is this ?
237
243
  var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
238
244
  if (options.logMissingFeatures) {
239
- if ((_a = desc.hierarchy) === null || _a === void 0 ? void 0 : _a.length) {
245
+ if ((_b = desc.hierarchy) === null || _b === void 0 ? void 0 : _b.length) {
240
246
  console.log('unhandled phry section', desc);
241
247
  }
242
248
  }
@@ -259,4 +265,4 @@ function readAbr(buffer, options) {
259
265
  }
260
266
  exports.readAbr = readAbr;
261
267
 
262
- //# sourceMappingURL=data:application/json;charset=utf8;base64,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RCwwQkF3T0MiLCJmaWxlIjoiYWJyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmxuTSwgRGVzY3JpcHRvclVuaXRzVmFsdWUsIHBhcnNlQW5nbGUsIHBhcnNlUGVyY2VudCwgcGFyc2VVbml0c1RvTnVtYmVyLCByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IgfSBmcm9tICcuL2Rlc2NyaXB0b3InO1xyXG5pbXBvcnQgeyBCbGVuZE1vZGUsIFBhdHRlcm5JbmZvIH0gZnJvbSAnLi9wc2QnO1xyXG5pbXBvcnQge1xyXG5cdGNoZWNrU2lnbmF0dXJlLCBjcmVhdGVSZWFkZXIsIHJlYWRCeXRlcywgcmVhZERhdGFSTEUsIHJlYWRJbnQxNiwgcmVhZEludDMyLCByZWFkUGFzY2FsU3RyaW5nLCByZWFkUGF0dGVybixcclxuXHRyZWFkU2lnbmF0dXJlLCByZWFkVWludDE2LCByZWFkVWludDMyLCByZWFkVWludDgsIHNraXBCeXRlc1xyXG59IGZyb20gJy4vcHNkUmVhZGVyJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWJyIHtcclxuXHRicnVzaGVzOiBCcnVzaFtdO1xyXG5cdHNhbXBsZXM6IFNhbXBsZUluZm9bXTtcclxuXHRwYXR0ZXJuczogUGF0dGVybkluZm9bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTYW1wbGVJbmZvIHtcclxuXHRpZDogc3RyaW5nO1xyXG5cdGJvdW5kczogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgdzogbnVtYmVyOyBoOiBudW1iZXI7IH07XHJcblx0YWxwaGE6IFVpbnQ4QXJyYXk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQnJ1c2hEeW5hbWljcyB7XHJcblx0Y29udHJvbDogJ29mZicgfCAnZmFkZScgfCAncGVuIHByZXNzdXJlJyB8ICdwZW4gdGlsdCcgfCAnc3R5bHVzIHdoZWVsJyB8ICdpbml0aWFsIGRpcmVjdGlvbicgfCAnZGlyZWN0aW9uJyB8ICdpbml0aWFsIHJvdGF0aW9uJyB8ICdyb3RhdGlvbic7XHJcblx0c3RlcHM6IG51bWJlcjsgLy8gZm9yIGZhZGVcclxuXHRqaXR0ZXI6IG51bWJlcjtcclxuXHRtaW5pbXVtOiBudW1iZXI7XHJcbn1cclxuXHJcbmNvbnN0IGR5bmFtaWNzQ29udHJvbCA9IFsnb2ZmJywgJ2ZhZGUnLCAncGVuIHByZXNzdXJlJywgJ3BlbiB0aWx0JywgJ3N0eWx1cyB3aGVlbCcsICdpbml0aWFsIGRpcmVjdGlvbicsICdkaXJlY3Rpb24nLCAnaW5pdGlhbCByb3RhdGlvbicsICdyb3RhdGlvbiddO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCcnVzaFNoYXBlIHtcclxuXHRuYW1lPzogc3RyaW5nO1xyXG5cdHNpemU6IG51bWJlcjtcclxuXHRhbmdsZTogbnVtYmVyO1xyXG5cdHJvdW5kbmVzczogbnVtYmVyO1xyXG5cdGhhcmRuZXNzPzogbnVtYmVyO1xyXG5cdHNwYWNpbmdPbjogYm9vbGVhbjtcclxuXHRzcGFjaW5nOiBudW1iZXI7XHJcblx0ZmxpcFg6IGJvb2xlYW47XHJcblx0ZmxpcFk6IGJvb2xlYW47XHJcblx0c2FtcGxlZERhdGE/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQnJ1c2gge1xyXG5cdG5hbWU6IHN0cmluZztcclxuXHRzaGFwZTogQnJ1c2hTaGFwZTtcclxuXHRzaGFwZUR5bmFtaWNzPzoge1xyXG5cdFx0c2l6ZUR5bmFtaWNzOiBCcnVzaER5bmFtaWNzO1xyXG5cdFx0bWluaW11bURpYW1ldGVyOiBudW1iZXI7XHJcblx0XHR0aWx0U2NhbGU6IG51bWJlcjtcclxuXHRcdGFuZ2xlRHluYW1pY3M6IEJydXNoRHluYW1pY3M7XHJcblx0XHRyb3VuZG5lc3NEeW5hbWljczogQnJ1c2hEeW5hbWljcztcclxuXHRcdG1pbmltdW1Sb3VuZG5lc3M6IG51bWJlcjtcclxuXHRcdGZsaXBYOiBib29sZWFuO1xyXG5cdFx0ZmxpcFk6IGJvb2xlYW47XHJcblx0XHRicnVzaFByb2plY3Rpb246IGJvb2xlYW47XHJcblx0fTtcclxuXHRzY2F0dGVyPzoge1xyXG5cdFx0Ym90aEF4ZXM6IGJvb2xlYW47XHJcblx0XHRzY2F0dGVyRHluYW1pY3M6IEJydXNoRHluYW1pY3M7XHJcblx0XHRjb3VudER5bmFtaWNzOiBCcnVzaER5bmFtaWNzO1xyXG5cdFx0Y291bnQ6IG51bWJlcjtcclxuXHR9O1xyXG5cdHRleHR1cmU/OiB7XHJcblx0XHRpZDogc3RyaW5nO1xyXG5cdFx0bmFtZTogc3RyaW5nO1xyXG5cdFx0aW52ZXJ0OiBib29sZWFuO1xyXG5cdFx0c2NhbGU6IG51bWJlcjtcclxuXHRcdGJyaWdodG5lc3M6IG51bWJlcjtcclxuXHRcdGNvbnRyYXN0OiBudW1iZXI7XHJcblx0XHRibGVuZE1vZGU6IEJsZW5kTW9kZTtcclxuXHRcdGRlcHRoOiBudW1iZXI7XHJcblx0XHRkZXB0aE1pbmltdW06IG51bWJlcjtcclxuXHRcdGRlcHRoRHluYW1pY3M6IEJydXNoRHluYW1pY3M7XHJcblx0fTtcclxuXHRkdWFsQnJ1c2g/OiB7XHJcblx0XHRmbGlwOiBib29sZWFuO1xyXG5cdFx0c2hhcGU6IEJydXNoU2hhcGU7XHJcblx0XHRibGVuZE1vZGU6IEJsZW5kTW9kZTtcclxuXHRcdHVzZVNjYXR0ZXI6IGJvb2xlYW47XHJcblx0XHRzcGFjaW5nOiBudW1iZXI7XHJcblx0XHRjb3VudDogbnVtYmVyO1xyXG5cdFx0Ym90aEF4ZXM6IGJvb2xlYW47XHJcblx0XHRjb3VudER5bmFtaWNzOiBCcnVzaER5bmFtaWNzO1xyXG5cdFx0c2NhdHRlckR5bmFtaWNzOiBCcnVzaER5bmFtaWNzO1xyXG5cdH07XHJcblx0Y29sb3JEeW5hbWljcz86IHtcclxuXHRcdGZvcmVncm91bmRCYWNrZ3JvdW5kOiBCcnVzaER5bmFtaWNzO1xyXG5cdFx0aHVlOiBudW1iZXI7XHJcblx0XHRzYXR1cmF0aW9uOiBudW1iZXI7XHJcblx0XHRicmlnaHRuZXNzOiBudW1iZXI7XHJcblx0XHRwdXJpdHk6IG51bWJlcjtcclxuXHRcdHBlclRpcDogYm9vbGVhbjtcclxuXHR9O1xyXG5cdHRyYW5zZmVyPzoge1xyXG5cdFx0Zmxvd0R5bmFtaWNzOiBCcnVzaER5bmFtaWNzO1xyXG5cdFx0b3BhY2l0eUR5bmFtaWNzOiBCcnVzaER5bmFtaWNzO1xyXG5cdFx0d2V0bmVzc0R5bmFtaWNzOiBCcnVzaER5bmFtaWNzO1xyXG5cdFx0bWl4RHluYW1pY3M6IEJydXNoRHluYW1pY3M7XHJcblx0fTtcclxuXHRicnVzaFBvc2U/OiB7XHJcblx0XHRvdmVycmlkZUFuZ2xlOiBib29sZWFuO1xyXG5cdFx0b3ZlcnJpZGVUaWx0WDogYm9vbGVhbjtcclxuXHRcdG92ZXJyaWRlVGlsdFk6IGJvb2xlYW47XHJcblx0XHRvdmVycmlkZVByZXNzdXJlOiBib29sZWFuO1xyXG5cdFx0cHJlc3N1cmU6IG51bWJlcjtcclxuXHRcdHRpbHRYOiBudW1iZXI7XHJcblx0XHR0aWx0WTogbnVtYmVyO1xyXG5cdFx0YW5nbGU6IG51bWJlcjtcclxuXHR9O1xyXG5cdG5vaXNlOiBib29sZWFuO1xyXG5cdHdldEVkZ2VzOiBib29sZWFuO1xyXG5cdC8vIFRPRE86IGJ1aWxkLXVwXHJcblx0Ly8gVE9ETzogc21vb3RoaW5nXHJcblx0cHJvdGVjdFRleHR1cmU/OiBib29sZWFuO1xyXG5cdHNwYWNpbmc6IG51bWJlcjtcclxuXHRicnVzaEdyb3VwPzogdW5kZWZpbmVkOyAvLyA/XHJcblx0aW50ZXJwcmV0YXRpb24/OiBib29sZWFuOyAvLyA/XHJcblx0dXNlQnJ1c2hTaXplOiBib29sZWFuOyAvLyA/XHJcblx0dG9vbE9wdGlvbnM/OiB7XHJcblx0XHRicnVzaFByZXNldDogYm9vbGVhbjtcclxuXHRcdGZsb3c6IG51bWJlcjtcclxuXHRcdHNtb290aDogbnVtYmVyOyAvLyA/XHJcblx0XHRtb2RlOiBCbGVuZE1vZGU7XHJcblx0XHRvcGFjaXR5OiBudW1iZXI7XHJcblx0XHRzbW9vdGhpbmc6IGJvb2xlYW47XHJcblx0XHRzbW9vdGhpbmdWYWx1ZTogbnVtYmVyO1xyXG5cdFx0c21vb3RoaW5nUmFkaXVzTW9kZTogYm9vbGVhbjtcclxuXHRcdHNtb290aGluZ0NhdGNodXA6IGJvb2xlYW47XHJcblx0XHRzbW9vdGhpbmdDYXRjaHVwQXRFbmQ6IGJvb2xlYW47XHJcblx0XHRzbW9vdGhpbmdab29tQ29tcGVuc2F0aW9uOiBib29sZWFuO1xyXG5cdFx0cHJlc3N1cmVTbW9vdGhpbmc6IGJvb2xlYW47XHJcblx0XHR1c2VQcmVzc3VyZU92ZXJyaWRlc1NpemU6IGJvb2xlYW47XHJcblx0XHR1c2VQcmVzc3VyZU92ZXJyaWRlc09wYWNpdHk6IGJvb2xlYW47XHJcblx0XHR1c2VMZWdhY3k6IGJvb2xlYW47XHJcblx0fTtcclxufVxyXG5cclxuLy8gaW50ZXJuYWxcclxuXHJcbmludGVyZmFjZSBQaHJ5RGVzY3JpcHRvciB7XHJcblx0aGllcmFyY2h5OiAoe30gfCB7XHJcblx0XHQnTm0gICc6IHN0cmluZztcclxuXHRcdHp1aWQ6IHN0cmluZztcclxuXHR9KVtdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRHluYW1pY3NEZXNjcmlwdG9yIHtcclxuXHRiVlR5OiBudW1iZXI7XHJcblx0ZlN0cDogbnVtYmVyO1xyXG5cdGppdHRlcjogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0J01ubSAnOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxufVxyXG5cclxuaW50ZXJmYWNlIEJydXNoU2hhcGVEZXNjcmlwdG9yIHtcclxuXHREbXRyOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRBbmdsOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRSbmRuOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHQnTm0gICc/OiBzdHJpbmc7XHJcblx0U3BjbjogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0SW50cjogYm9vbGVhbjtcclxuXHRIcmRuPzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0ZmxpcFg6IGJvb2xlYW47XHJcblx0ZmxpcFk6IGJvb2xlYW47XHJcblx0c2FtcGxlZERhdGE/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBEZXNjRGVzY3JpcHRvciB7XHJcblx0QnJzaDoge1xyXG5cdFx0J05tICAnOiBzdHJpbmc7XHJcblx0XHRCcnNoOiBCcnVzaFNoYXBlRGVzY3JpcHRvcjtcclxuXHRcdHVzZVRpcER5bmFtaWNzOiBib29sZWFuO1xyXG5cdFx0ZmxpcFg6IGJvb2xlYW47XHJcblx0XHRmbGlwWTogYm9vbGVhbjtcclxuXHRcdGJydXNoUHJvamVjdGlvbjogYm9vbGVhbjtcclxuXHRcdG1pbmltdW1EaWFtZXRlcjogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRtaW5pbXVtUm91bmRuZXNzOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdHRpbHRTY2FsZTogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRzelZyOiBEeW5hbWljc0Rlc2NyaXB0b3I7XHJcblx0XHRhbmdsZUR5bmFtaWNzOiBEeW5hbWljc0Rlc2NyaXB0b3I7XHJcblx0XHRyb3VuZG5lc3NEeW5hbWljczogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0dXNlU2NhdHRlcjogYm9vbGVhbjtcclxuXHRcdFNwY246IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0J0NudCAnOiBudW1iZXI7XHJcblx0XHRib3RoQXhlczogYm9vbGVhbjtcclxuXHRcdGNvdW50RHluYW1pY3M6IER5bmFtaWNzRGVzY3JpcHRvcjtcclxuXHRcdHNjYXR0ZXJEeW5hbWljczogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0ZHVhbEJydXNoOiB7IHVzZUR1YWxCcnVzaDogZmFsc2U7IH0gfCB7XHJcblx0XHRcdHVzZUR1YWxCcnVzaDogdHJ1ZTtcclxuXHRcdFx0RmxpcDogYm9vbGVhbjtcclxuXHRcdFx0QnJzaDogQnJ1c2hTaGFwZURlc2NyaXB0b3I7XHJcblx0XHRcdEJsbk06IHN0cmluZztcclxuXHRcdFx0dXNlU2NhdHRlcjogYm9vbGVhbjtcclxuXHRcdFx0U3BjbjogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRcdCdDbnQgJzogbnVtYmVyO1xyXG5cdFx0XHRib3RoQXhlczogYm9vbGVhbjtcclxuXHRcdFx0Y291bnREeW5hbWljczogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0XHRzY2F0dGVyRHluYW1pY3M6IER5bmFtaWNzRGVzY3JpcHRvcjtcclxuXHRcdH07XHJcblx0XHRicnVzaEdyb3VwOiB7IHVzZUJydXNoR3JvdXA6IGZhbHNlOyB9O1xyXG5cdFx0dXNlVGV4dHVyZTogYm9vbGVhbjtcclxuXHRcdFR4dEM6IGJvb2xlYW47XHJcblx0XHRpbnRlcnByZXRhdGlvbjogYm9vbGVhbjtcclxuXHRcdHRleHR1cmVCbGVuZE1vZGU6IHN0cmluZztcclxuXHRcdHRleHR1cmVEZXB0aDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRtaW5pbXVtRGVwdGg6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0dGV4dHVyZURlcHRoRHluYW1pY3M6IER5bmFtaWNzRGVzY3JpcHRvcjtcclxuXHRcdFR4dHI/OiB7XHJcblx0XHRcdCdObSAgJzogc3RyaW5nO1xyXG5cdFx0XHRJZG50OiBzdHJpbmc7XHJcblx0XHR9O1xyXG5cdFx0dGV4dHVyZVNjYWxlOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdEludlQ6IGJvb2xlYW47XHJcblx0XHRwcm90ZWN0VGV4dHVyZTogYm9vbGVhbjtcclxuXHRcdHRleHR1cmVCcmlnaHRuZXNzOiBudW1iZXI7XHJcblx0XHR0ZXh0dXJlQ29udHJhc3Q6IG51bWJlcjtcclxuXHRcdHVzZVBhaW50RHluYW1pY3M6IGJvb2xlYW47XHJcblx0XHRwclZyPzogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0b3BWcj86IER5bmFtaWNzRGVzY3JpcHRvcjtcclxuXHRcdHd0VnI/OiBEeW5hbWljc0Rlc2NyaXB0b3I7XHJcblx0XHRteFZyPzogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0dXNlQ29sb3JEeW5hbWljczogYm9vbGVhbjtcclxuXHRcdGNsVnI/OiBEeW5hbWljc0Rlc2NyaXB0b3I7XHJcblx0XHQnSCAgICc/OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdFN0cnQ/OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdEJyZ2g/OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdHB1cml0eT86IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0Y29sb3JEeW5hbWljc1BlclRpcD86IHRydWU7XHJcblx0XHRXdGRnOiBib29sZWFuO1xyXG5cdFx0Tm9zZTogYm9vbGVhbjtcclxuXHRcdCdScHQgJzogYm9vbGVhbjtcclxuXHRcdHVzZUJydXNoU2l6ZTogYm9vbGVhbjtcclxuXHRcdHVzZUJydXNoUG9zZTogYm9vbGVhbjtcclxuXHRcdG92ZXJyaWRlUG9zZUFuZ2xlPzogYm9vbGVhbjtcclxuXHRcdG92ZXJyaWRlUG9zZVRpbHRYPzogYm9vbGVhbjtcclxuXHRcdG92ZXJyaWRlUG9zZVRpbHRZPzogYm9vbGVhbjtcclxuXHRcdG92ZXJyaWRlUG9zZVByZXNzdXJlPzogYm9vbGVhbjtcclxuXHRcdGJydXNoUG9zZVByZXNzdXJlPzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRicnVzaFBvc2VUaWx0WD86IG51bWJlcjtcclxuXHRcdGJydXNoUG9zZVRpbHRZPzogbnVtYmVyO1xyXG5cdFx0YnJ1c2hQb3NlQW5nbGU/OiBudW1iZXI7XHJcblx0XHR0b29sT3B0aW9ucz86IHtcclxuXHRcdFx0YnJ1c2hQcmVzZXQ6IGJvb2xlYW47XHJcblx0XHRcdGZsb3c6IG51bWJlcjtcclxuXHRcdFx0U21vbzogbnVtYmVyO1xyXG5cdFx0XHQnTWQgICc6IHN0cmluZztcclxuXHRcdFx0T3BjdDogbnVtYmVyO1xyXG5cdFx0XHRzbW9vdGhpbmc6IGJvb2xlYW47XHJcblx0XHRcdHNtb290aGluZ1ZhbHVlOiBudW1iZXI7XHJcblx0XHRcdHNtb290aGluZ1JhZGl1c01vZGU6IGJvb2xlYW47XHJcblx0XHRcdHNtb290aGluZ0NhdGNodXA6IGJvb2xlYW47XHJcblx0XHRcdHNtb290aGluZ0NhdGNodXBBdEVuZDogYm9vbGVhbjtcclxuXHRcdFx0c21vb3RoaW5nWm9vbUNvbXBlbnNhdGlvbjogYm9vbGVhbjtcclxuXHRcdFx0cHJlc3N1cmVTbW9vdGhpbmc6IGJvb2xlYW47XHJcblx0XHRcdHVzZVByZXNzdXJlT3ZlcnJpZGVzU2l6ZTogYm9vbGVhbjtcclxuXHRcdFx0dXNlUHJlc3N1cmVPdmVycmlkZXNPcGFjaXR5OiBib29sZWFuO1xyXG5cdFx0XHR1c2VMZWdhY3k6IGJvb2xlYW47XHJcblx0XHR9O1xyXG5cdH1bXTtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VEeW5hbWljcyhkZXNjOiBEeW5hbWljc0Rlc2NyaXB0b3IpOiBCcnVzaER5bmFtaWNzIHtcclxuXHRyZXR1cm4ge1xyXG5cdFx0Y29udHJvbDogZHluYW1pY3NDb250cm9sW2Rlc2MuYlZUeV0gYXMgYW55LFxyXG5cdFx0c3RlcHM6IGRlc2MuZlN0cCxcclxuXHRcdGppdHRlcjogcGFyc2VQZXJjZW50KGRlc2Muaml0dGVyKSxcclxuXHRcdG1pbmltdW06IHBhcnNlUGVyY2VudChkZXNjWydNbm0gJ10pLFxyXG5cdH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlQnJ1c2hTaGFwZShkZXNjOiBCcnVzaFNoYXBlRGVzY3JpcHRvcik6IEJydXNoU2hhcGUge1xyXG5cdGNvbnN0IHNoYXBlOiBCcnVzaFNoYXBlID0ge1xyXG5cdFx0c2l6ZTogcGFyc2VVbml0c1RvTnVtYmVyKGRlc2MuRG10ciwgJ1BpeGVscycpLFxyXG5cdFx0YW5nbGU6IHBhcnNlQW5nbGUoZGVzYy5BbmdsKSxcclxuXHRcdHJvdW5kbmVzczogcGFyc2VQZXJjZW50KGRlc2MuUm5kbiksXHJcblx0XHRzcGFjaW5nT246IGRlc2MuSW50cixcclxuXHRcdHNwYWNpbmc6IHBhcnNlUGVyY2VudChkZXNjLlNwY24pLFxyXG5cdFx0ZmxpcFg6IGRlc2MuZmxpcFgsXHJcblx0XHRmbGlwWTogZGVzYy5mbGlwWSxcclxuXHR9O1xyXG5cclxuXHRpZiAoZGVzY1snTm0gICddKSBzaGFwZS5uYW1lID0gZGVzY1snTm0gICddO1xyXG5cdGlmIChkZXNjLkhyZG4pIHNoYXBlLmhhcmRuZXNzID0gcGFyc2VQZXJjZW50KGRlc2MuSHJkbik7XHJcblx0aWYgKGRlc2Muc2FtcGxlZERhdGEpIHNoYXBlLnNhbXBsZWREYXRhID0gZGVzYy5zYW1wbGVkRGF0YTtcclxuXHJcblx0cmV0dXJuIHNoYXBlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVhZEFicihidWZmZXI6IEFycmF5QnVmZmVyVmlldywgb3B0aW9uczogeyBsb2dNaXNzaW5nRmVhdHVyZXM/OiBib29sZWFuOyB9ID0ge30pOiBBYnIge1xyXG5cdGNvbnN0IHJlYWRlciA9IGNyZWF0ZVJlYWRlcihidWZmZXIuYnVmZmVyLCBidWZmZXIuYnl0ZU9mZnNldCwgYnVmZmVyLmJ5dGVMZW5ndGgpO1xyXG5cdGNvbnN0IHZlcnNpb24gPSByZWFkSW50MTYocmVhZGVyKTtcclxuXHRjb25zdCBzYW1wbGVzOiBTYW1wbGVJbmZvW10gPSBbXTtcclxuXHRjb25zdCBicnVzaGVzOiBCcnVzaFtdID0gW107XHJcblx0Y29uc3QgcGF0dGVybnM6IFBhdHRlcm5JbmZvW10gPSBbXTtcclxuXHJcblx0aWYgKHZlcnNpb24gPT09IDEgfHwgdmVyc2lvbiA9PT0gMikge1xyXG5cdFx0dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBBQlIgdmVyc2lvbiAoJHt2ZXJzaW9ufSlgKTsgLy8gVE9ETzogLi4uXHJcblx0fSBlbHNlIGlmICh2ZXJzaW9uID09PSA2IHx8IHZlcnNpb24gPT09IDcgfHwgdmVyc2lvbiA9PT0gOSB8fCB2ZXJzaW9uID09PSAxMCkge1xyXG5cdFx0Y29uc3QgbWlub3JWZXJzaW9uID0gcmVhZEludDE2KHJlYWRlcik7XHJcblx0XHRpZiAobWlub3JWZXJzaW9uICE9PSAxICYmIG1pbm9yVmVyc2lvbiAhPT0gMikgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBBQlIgbWlub3IgdmVyc2lvbicpO1xyXG5cclxuXHRcdHdoaWxlIChyZWFkZXIub2Zmc2V0IDwgcmVhZGVyLnZpZXcuYnl0ZUxlbmd0aCkge1xyXG5cdFx0XHRjaGVja1NpZ25hdHVyZShyZWFkZXIsICc4QklNJyk7XHJcblx0XHRcdGNvbnN0IHR5cGUgPSByZWFkU2lnbmF0dXJlKHJlYWRlcikgYXMgJ3NhbXAnIHwgJ2Rlc2MnIHwgJ3BhdHQnIHwgJ3BocnknO1xyXG5cdFx0XHRsZXQgc2l6ZSA9IHJlYWRVaW50MzIocmVhZGVyKTtcclxuXHRcdFx0Y29uc3QgZW5kID0gcmVhZGVyLm9mZnNldCArIHNpemU7XHJcblxyXG5cdFx0XHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdFx0XHRjYXNlICdzYW1wJzoge1xyXG5cdFx0XHRcdFx0d2hpbGUgKHJlYWRlci5vZmZzZXQgPCBlbmQpIHtcclxuXHRcdFx0XHRcdFx0bGV0IGJydXNoTGVuZ3RoID0gcmVhZFVpbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRcdFx0XHR3aGlsZSAoYnJ1c2hMZW5ndGggJiAwYjExKSBicnVzaExlbmd0aCsrOyAvLyBwYWQgdG8gNCBieXRlIGFsaWdubWVudFxyXG5cdFx0XHRcdFx0XHRjb25zdCBicnVzaEVuZCA9IHJlYWRlci5vZmZzZXQgKyBicnVzaExlbmd0aDtcclxuXHJcblx0XHRcdFx0XHRcdGNvbnN0IGlkID0gcmVhZFBhc2NhbFN0cmluZyhyZWFkZXIsIDEpO1xyXG5cclxuXHRcdFx0XHRcdFx0Ly8gdjEgLSBTa2lwIHRoZSBJbnQxNiBib3VuZHMgcmVjdGFuZ2xlIGFuZCB0aGUgdW5rbm93biBJbnQxNi5cclxuXHRcdFx0XHRcdFx0Ly8gdjIgLSBTa2lwIHRoZSB1bmtub3duIGJ5dGVzLlxyXG5cdFx0XHRcdFx0XHRza2lwQnl0ZXMocmVhZGVyLCBtaW5vclZlcnNpb24gPT09IDEgPyAxMCA6IDI2NCk7XHJcblxyXG5cdFx0XHRcdFx0XHRjb25zdCB5ID0gcmVhZEludDMyKHJlYWRlcik7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHggPSByZWFkSW50MzIocmVhZGVyKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgaCA9IHJlYWRJbnQzMihyZWFkZXIpIC0geTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgdyA9IHJlYWRJbnQzMihyZWFkZXIpIC0geDtcclxuXHRcdFx0XHRcdFx0aWYgKHcgPD0gMCB8fCBoIDw9IDApIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBib3VuZHMnKTtcclxuXHJcblx0XHRcdFx0XHRcdGNvbnN0IGRlcHRoID0gcmVhZEludDE2KHJlYWRlcik7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGNvbXByZXNzaW9uID0gcmVhZFVpbnQ4KHJlYWRlcik7IC8vIDAgLSByYXcsIDEgLSBSTEVcclxuXHRcdFx0XHRcdFx0Y29uc3QgYWxwaGEgPSBuZXcgVWludDhBcnJheSh3ICogaCk7XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoZGVwdGggPT09IDgpIHtcclxuXHRcdFx0XHRcdFx0XHRpZiAoY29tcHJlc3Npb24gPT09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdGFscGhhLnNldChyZWFkQnl0ZXMocmVhZGVyLCBhbHBoYS5ieXRlTGVuZ3RoKSk7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChjb21wcmVzc2lvbiA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0cmVhZERhdGFSTEUocmVhZGVyLCB7IHdpZHRoOiB3LCBoZWlnaHQ6IGgsIGRhdGE6IGFscGhhIH0sIHcsIGgsIDEsIFswXSwgZmFsc2UpO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29tcHJlc3Npb24nKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZGVwdGggPT09IDE2KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGNvbXByZXNzaW9uID09PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFscGhhLmJ5dGVMZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRhbHBoYVtpXSA9IHJlYWRVaW50MTYocmVhZGVyKSA+PiA4OyAvLyBjb252ZXJ0IHRvIDhiaXQgdmFsdWVzXHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChjb21wcmVzc2lvbiA9PT0gMSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQgKDE2Yml0IFJMRSknKTsgLy8gVE9ETzogLi4uXHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb21wcmVzc2lvbicpO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGVwdGgnKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0c2FtcGxlcy5wdXNoKHsgaWQsIGJvdW5kczogeyB4LCB5LCB3LCBoIH0sIGFscGhhIH0pO1xyXG5cdFx0XHRcdFx0XHRyZWFkZXIub2Zmc2V0ID0gYnJ1c2hFbmQ7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y2FzZSAnZGVzYyc6IHtcclxuXHRcdFx0XHRcdGNvbnN0IGRlc2M6IERlc2NEZXNjcmlwdG9yID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXF1aXJlKCd1dGlsJykuaW5zcGVjdChkZXNjLCBmYWxzZSwgOTksIHRydWUpKTtcclxuXHJcblx0XHRcdFx0XHRmb3IgKGNvbnN0IGJydXNoIG9mIGRlc2MuQnJzaCkge1xyXG5cdFx0XHRcdFx0XHRjb25zdCBiOiBCcnVzaCA9IHtcclxuXHRcdFx0XHRcdFx0XHRuYW1lOiBicnVzaFsnTm0gICddLFxyXG5cdFx0XHRcdFx0XHRcdHNoYXBlOiBwYXJzZUJydXNoU2hhcGUoYnJ1c2guQnJzaCksXHJcblx0XHRcdFx0XHRcdFx0c3BhY2luZzogcGFyc2VQZXJjZW50KGJydXNoLlNwY24pLFxyXG5cdFx0XHRcdFx0XHRcdC8vIFRPRE86IGJydXNoR3JvdXAgPz8/XHJcblx0XHRcdFx0XHRcdFx0d2V0RWRnZXM6IGJydXNoLld0ZGcsXHJcblx0XHRcdFx0XHRcdFx0bm9pc2U6IGJydXNoLk5vc2UsXHJcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETzogVHh0QyA/Pz8gc21vb3RoaW5nIC8gYnVpbGQtdXAgP1xyXG5cdFx0XHRcdFx0XHRcdC8vIFRPRE86ICdScHQgJyA/Pz9cclxuXHRcdFx0XHRcdFx0XHR1c2VCcnVzaFNpemU6IGJydXNoLnVzZUJydXNoU2l6ZSwgLy8gPz8/XHJcblx0XHRcdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoYnJ1c2guaW50ZXJwcmV0YXRpb24gIT0gbnVsbCkgYi5pbnRlcnByZXRhdGlvbiA9IGJydXNoLmludGVycHJldGF0aW9uO1xyXG5cdFx0XHRcdFx0XHRpZiAoYnJ1c2gucHJvdGVjdFRleHR1cmUgIT0gbnVsbCkgYi5wcm90ZWN0VGV4dHVyZSA9IGJydXNoLnByb3RlY3RUZXh0dXJlO1xyXG5cclxuXHRcdFx0XHRcdFx0aWYgKGJydXNoLnVzZVRpcER5bmFtaWNzKSB7XHJcblx0XHRcdFx0XHRcdFx0Yi5zaGFwZUR5bmFtaWNzID0ge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGlsdFNjYWxlOiBwYXJzZVBlcmNlbnQoYnJ1c2gudGlsdFNjYWxlKSxcclxuXHRcdFx0XHRcdFx0XHRcdHNpemVEeW5hbWljczogcGFyc2VEeW5hbWljcyhicnVzaC5zelZyKSxcclxuXHRcdFx0XHRcdFx0XHRcdGFuZ2xlRHluYW1pY3M6IHBhcnNlRHluYW1pY3MoYnJ1c2guYW5nbGVEeW5hbWljcyksXHJcblx0XHRcdFx0XHRcdFx0XHRyb3VuZG5lc3NEeW5hbWljczogcGFyc2VEeW5hbWljcyhicnVzaC5yb3VuZG5lc3NEeW5hbWljcyksXHJcblx0XHRcdFx0XHRcdFx0XHRmbGlwWDogYnJ1c2guZmxpcFgsXHJcblx0XHRcdFx0XHRcdFx0XHRmbGlwWTogYnJ1c2guZmxpcFksXHJcblx0XHRcdFx0XHRcdFx0XHRicnVzaFByb2plY3Rpb246IGJydXNoLmJydXNoUHJvamVjdGlvbixcclxuXHRcdFx0XHRcdFx0XHRcdG1pbmltdW1EaWFtZXRlcjogcGFyc2VQZXJjZW50KGJydXNoLm1pbmltdW1EaWFtZXRlciksXHJcblx0XHRcdFx0XHRcdFx0XHRtaW5pbXVtUm91bmRuZXNzOiBwYXJzZVBlcmNlbnQoYnJ1c2gubWluaW11bVJvdW5kbmVzcyksXHJcblx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0aWYgKGJydXNoLnVzZVNjYXR0ZXIpIHtcclxuXHRcdFx0XHRcdFx0XHRiLnNjYXR0ZXIgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRjb3VudDogYnJ1c2hbJ0NudCAnXSxcclxuXHRcdFx0XHRcdFx0XHRcdGJvdGhBeGVzOiBicnVzaC5ib3RoQXhlcyxcclxuXHRcdFx0XHRcdFx0XHRcdGNvdW50RHluYW1pY3M6IHBhcnNlRHluYW1pY3MoYnJ1c2guY291bnREeW5hbWljcyksXHJcblx0XHRcdFx0XHRcdFx0XHRzY2F0dGVyRHluYW1pY3M6IHBhcnNlRHluYW1pY3MoYnJ1c2guc2NhdHRlckR5bmFtaWNzKSxcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoYnJ1c2gudXNlVGV4dHVyZSAmJiBicnVzaC5UeHRyKSB7XHJcblx0XHRcdFx0XHRcdFx0Yi50ZXh0dXJlID0ge1xyXG5cdFx0XHRcdFx0XHRcdFx0aWQ6IGJydXNoLlR4dHIuSWRudCxcclxuXHRcdFx0XHRcdFx0XHRcdG5hbWU6IGJydXNoLlR4dHJbJ05tICAnXSxcclxuXHRcdFx0XHRcdFx0XHRcdGJsZW5kTW9kZTogQmxuTS5kZWNvZGUoYnJ1c2gudGV4dHVyZUJsZW5kTW9kZSksXHJcblx0XHRcdFx0XHRcdFx0XHRkZXB0aDogcGFyc2VQZXJjZW50KGJydXNoLnRleHR1cmVEZXB0aCksXHJcblx0XHRcdFx0XHRcdFx0XHRkZXB0aE1pbmltdW06IHBhcnNlUGVyY2VudChicnVzaC5taW5pbXVtRGVwdGgpLFxyXG5cdFx0XHRcdFx0XHRcdFx0ZGVwdGhEeW5hbWljczogcGFyc2VEeW5hbWljcyhicnVzaC50ZXh0dXJlRGVwdGhEeW5hbWljcyksXHJcblx0XHRcdFx0XHRcdFx0XHRzY2FsZTogcGFyc2VQZXJjZW50KGJydXNoLnRleHR1cmVTY2FsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRpbnZlcnQ6IGJydXNoLkludlQsXHJcblx0XHRcdFx0XHRcdFx0XHRicmlnaHRuZXNzOiBicnVzaC50ZXh0dXJlQnJpZ2h0bmVzcyxcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnRyYXN0OiBicnVzaC50ZXh0dXJlQ29udHJhc3QsXHJcblx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0Y29uc3QgZGIgPSBicnVzaC5kdWFsQnJ1c2g7XHJcblx0XHRcdFx0XHRcdGlmIChkYiAmJiBkYi51c2VEdWFsQnJ1c2gpIHtcclxuXHRcdFx0XHRcdFx0XHRiLmR1YWxCcnVzaCA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdGZsaXA6IGRiLkZsaXAsXHJcblx0XHRcdFx0XHRcdFx0XHRzaGFwZTogcGFyc2VCcnVzaFNoYXBlKGRiLkJyc2gpLFxyXG5cdFx0XHRcdFx0XHRcdFx0YmxlbmRNb2RlOiBCbG5NLmRlY29kZShkYi5CbG5NKSxcclxuXHRcdFx0XHRcdFx0XHRcdHVzZVNjYXR0ZXI6IGRiLnVzZVNjYXR0ZXIsXHJcblx0XHRcdFx0XHRcdFx0XHRzcGFjaW5nOiBwYXJzZVBlcmNlbnQoZGIuU3BjbiksXHJcblx0XHRcdFx0XHRcdFx0XHRjb3VudDogZGJbJ0NudCAnXSxcclxuXHRcdFx0XHRcdFx0XHRcdGJvdGhBeGVzOiBkYi5ib3RoQXhlcyxcclxuXHRcdFx0XHRcdFx0XHRcdGNvdW50RHluYW1pY3M6IHBhcnNlRHluYW1pY3MoZGIuY291bnREeW5hbWljcyksXHJcblx0XHRcdFx0XHRcdFx0XHRzY2F0dGVyRHluYW1pY3M6IHBhcnNlRHluYW1pY3MoZGIuc2NhdHRlckR5bmFtaWNzKSxcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoYnJ1c2gudXNlQ29sb3JEeW5hbWljcykge1xyXG5cdFx0XHRcdFx0XHRcdGIuY29sb3JEeW5hbWljcyA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdGZvcmVncm91bmRCYWNrZ3JvdW5kOiBwYXJzZUR5bmFtaWNzKGJydXNoLmNsVnIhKSxcclxuXHRcdFx0XHRcdFx0XHRcdGh1ZTogcGFyc2VQZXJjZW50KGJydXNoWydIICAgJ10hKSxcclxuXHRcdFx0XHRcdFx0XHRcdHNhdHVyYXRpb246IHBhcnNlUGVyY2VudChicnVzaC5TdHJ0ISksXHJcblx0XHRcdFx0XHRcdFx0XHRicmlnaHRuZXNzOiBwYXJzZVBlcmNlbnQoYnJ1c2guQnJnaCEpLFxyXG5cdFx0XHRcdFx0XHRcdFx0cHVyaXR5OiBwYXJzZVBlcmNlbnQoYnJ1c2gucHVyaXR5ISksXHJcblx0XHRcdFx0XHRcdFx0XHRwZXJUaXA6IGJydXNoLmNvbG9yRHluYW1pY3NQZXJUaXAhLFxyXG5cdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdGlmIChicnVzaC51c2VQYWludER5bmFtaWNzKSB7XHJcblx0XHRcdFx0XHRcdFx0Yi50cmFuc2ZlciA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdGZsb3dEeW5hbWljczogcGFyc2VEeW5hbWljcyhicnVzaC5wclZyISksXHJcblx0XHRcdFx0XHRcdFx0XHRvcGFjaXR5RHluYW1pY3M6IHBhcnNlRHluYW1pY3MoYnJ1c2gub3BWciEpLFxyXG5cdFx0XHRcdFx0XHRcdFx0d2V0bmVzc0R5bmFtaWNzOiBwYXJzZUR5bmFtaWNzKGJydXNoLnd0VnIhKSxcclxuXHRcdFx0XHRcdFx0XHRcdG1peER5bmFtaWNzOiBwYXJzZUR5bmFtaWNzKGJydXNoLm14VnIhKSxcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoYnJ1c2gudXNlQnJ1c2hQb3NlKSB7XHJcblx0XHRcdFx0XHRcdFx0Yi5icnVzaFBvc2UgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRvdmVycmlkZUFuZ2xlOiBicnVzaC5vdmVycmlkZVBvc2VBbmdsZSEsXHJcblx0XHRcdFx0XHRcdFx0XHRvdmVycmlkZVRpbHRYOiBicnVzaC5vdmVycmlkZVBvc2VUaWx0WCEsXHJcblx0XHRcdFx0XHRcdFx0XHRvdmVycmlkZVRpbHRZOiBicnVzaC5vdmVycmlkZVBvc2VUaWx0WSEsXHJcblx0XHRcdFx0XHRcdFx0XHRvdmVycmlkZVByZXNzdXJlOiBicnVzaC5vdmVycmlkZVBvc2VQcmVzc3VyZSEsXHJcblx0XHRcdFx0XHRcdFx0XHRwcmVzc3VyZTogcGFyc2VQZXJjZW50KGJydXNoLmJydXNoUG9zZVByZXNzdXJlISksXHJcblx0XHRcdFx0XHRcdFx0XHR0aWx0WDogYnJ1c2guYnJ1c2hQb3NlVGlsdFghLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGlsdFk6IGJydXNoLmJydXNoUG9zZVRpbHRZISxcclxuXHRcdFx0XHRcdFx0XHRcdGFuZ2xlOiBicnVzaC5icnVzaFBvc2VBbmdsZSEsXHJcblx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0Y29uc3QgdG8gPSBicnVzaC50b29sT3B0aW9ucztcclxuXHRcdFx0XHRcdFx0aWYgKHRvKSB7XHJcblx0XHRcdFx0XHRcdFx0Yi50b29sT3B0aW9ucyA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdGJydXNoUHJlc2V0OiB0by5icnVzaFByZXNldCxcclxuXHRcdFx0XHRcdFx0XHRcdGZsb3c6IHRvLmZsb3csXHJcblx0XHRcdFx0XHRcdFx0XHRzbW9vdGg6IHRvLlNtb28sXHJcblx0XHRcdFx0XHRcdFx0XHRtb2RlOiBCbG5NLmRlY29kZSh0b1snTWQgICddKSxcclxuXHRcdFx0XHRcdFx0XHRcdG9wYWNpdHk6IHRvLk9wY3QsXHJcblx0XHRcdFx0XHRcdFx0XHRzbW9vdGhpbmc6IHRvLnNtb290aGluZyxcclxuXHRcdFx0XHRcdFx0XHRcdHNtb290aGluZ1ZhbHVlOiB0by5zbW9vdGhpbmdWYWx1ZSxcclxuXHRcdFx0XHRcdFx0XHRcdHNtb290aGluZ1JhZGl1c01vZGU6IHRvLnNtb290aGluZ1JhZGl1c01vZGUsXHJcblx0XHRcdFx0XHRcdFx0XHRzbW9vdGhpbmdDYXRjaHVwOiB0by5zbW9vdGhpbmdDYXRjaHVwLFxyXG5cdFx0XHRcdFx0XHRcdFx0c21vb3RoaW5nQ2F0Y2h1cEF0RW5kOiB0by5zbW9vdGhpbmdDYXRjaHVwQXRFbmQsXHJcblx0XHRcdFx0XHRcdFx0XHRzbW9vdGhpbmdab29tQ29tcGVuc2F0aW9uOiB0by5zbW9vdGhpbmdab29tQ29tcGVuc2F0aW9uLFxyXG5cdFx0XHRcdFx0XHRcdFx0cHJlc3N1cmVTbW9vdGhpbmc6IHRvLnByZXNzdXJlU21vb3RoaW5nLFxyXG5cdFx0XHRcdFx0XHRcdFx0dXNlUHJlc3N1cmVPdmVycmlkZXNTaXplOiB0by51c2VQcmVzc3VyZU92ZXJyaWRlc1NpemUsXHJcblx0XHRcdFx0XHRcdFx0XHR1c2VQcmVzc3VyZU92ZXJyaWRlc09wYWNpdHk6IHRvLnVzZVByZXNzdXJlT3ZlcnJpZGVzT3BhY2l0eSxcclxuXHRcdFx0XHRcdFx0XHRcdHVzZUxlZ2FjeTogdG8udXNlTGVnYWN5LFxyXG5cdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdGJydXNoZXMucHVzaChiKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjYXNlICdwYXR0Jzoge1xyXG5cdFx0XHRcdFx0aWYgKHJlYWRlci5vZmZzZXQgPCBlbmQpIHsgLy8gVE9ETzogY2hlY2sgbXVsdGlwbGUgcGF0dGVybnNcclxuXHRcdFx0XHRcdFx0cGF0dGVybnMucHVzaChyZWFkUGF0dGVybihyZWFkZXIpKTtcclxuXHRcdFx0XHRcdFx0cmVhZGVyLm9mZnNldCA9IGVuZDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjYXNlICdwaHJ5Jzoge1xyXG5cdFx0XHRcdFx0Ly8gVE9ETzogd2hhdCBpcyB0aGlzID9cclxuXHRcdFx0XHRcdGNvbnN0IGRlc2M6IFBocnlEZXNjcmlwdG9yID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5sb2dNaXNzaW5nRmVhdHVyZXMpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGRlc2MuaGllcmFyY2h5Py5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygndW5oYW5kbGVkIHBocnkgc2VjdGlvbicsIGRlc2MpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBicnVzaCB0eXBlOiAke3R5cGV9YCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIGFsaWduIHRvIDQgYnl0ZXNcclxuXHRcdFx0d2hpbGUgKHNpemUgJSA0KSB7XHJcblx0XHRcdFx0cmVhZGVyLm9mZnNldCsrO1xyXG5cdFx0XHRcdHNpemUrKztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0gZWxzZSB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIEFCUiB2ZXJzaW9uICgke3ZlcnNpb259KWApO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHsgc2FtcGxlcywgcGF0dGVybnMsIGJydXNoZXMgfTtcclxufVxyXG4iXSwic291cmNlUm9vdCI6IkM6XFxQcm9qZWN0c1xcZ2l0aHViXFxhZy1wc2RcXHNyYyJ9
268
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,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SSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLE1BQU0sRUFBRTs0QkFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQzt5QkFDNUM7cUJBQ0Q7b0JBQ0QsTUFBTTtpQkFDTjtnQkFDRDtvQkFDQyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUF1QixJQUFJLENBQUUsQ0FBQyxDQUFDO2FBQ2hEO1lBRUQsbUJBQW1CO1lBQ25CLE9BQU8sSUFBSSxHQUFHLENBQUMsRUFBRTtnQkFDaEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNoQixJQUFJLEVBQUUsQ0FBQzthQUNQO1NBQ0Q7S0FDRDtTQUFNO1FBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBNEIsT0FBTyxNQUFHLENBQUMsQ0FBQztLQUN4RDtJQUVELE9BQU8sRUFBRSxPQUFPLFNBQUEsRUFBRSxRQUFRLFVBQUEsRUFBRSxPQUFPLFNBQUEsRUFBRSxDQUFDO0FBQ3ZDLENBQUM7QUE1T0QsMEJBNE9DIiwiZmlsZSI6ImFici5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsbk0sIERlc2NyaXB0b3JVbml0c1ZhbHVlLCBwYXJzZUFuZ2xlLCBwYXJzZVBlcmNlbnQsIHBhcnNlVW5pdHNUb051bWJlciwgcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yIH0gZnJvbSAnLi9kZXNjcmlwdG9yJztcclxuaW1wb3J0IHsgQmxlbmRNb2RlLCBQYXR0ZXJuSW5mbyB9IGZyb20gJy4vcHNkJztcclxuaW1wb3J0IHtcclxuXHRjaGVja1NpZ25hdHVyZSwgY3JlYXRlUmVhZGVyLCByZWFkQnl0ZXMsIHJlYWREYXRhUkxFLCByZWFkSW50MTYsIHJlYWRJbnQzMiwgcmVhZFBhc2NhbFN0cmluZywgcmVhZFBhdHRlcm4sXHJcblx0cmVhZFNpZ25hdHVyZSwgcmVhZFVpbnQxNiwgcmVhZFVpbnQzMiwgcmVhZFVpbnQ4LCBza2lwQnl0ZXNcclxufSBmcm9tICcuL3BzZFJlYWRlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFiciB7XHJcblx0YnJ1c2hlczogQnJ1c2hbXTtcclxuXHRzYW1wbGVzOiBTYW1wbGVJbmZvW107XHJcblx0cGF0dGVybnM6IFBhdHRlcm5JbmZvW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2FtcGxlSW5mbyB7XHJcblx0aWQ6IHN0cmluZztcclxuXHRib3VuZHM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHc6IG51bWJlcjsgaDogbnVtYmVyOyB9O1xyXG5cdGFscGhhOiBVaW50OEFycmF5O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJydXNoRHluYW1pY3Mge1xyXG5cdGNvbnRyb2w6ICdvZmYnIHwgJ2ZhZGUnIHwgJ3BlbiBwcmVzc3VyZScgfCAncGVuIHRpbHQnIHwgJ3N0eWx1cyB3aGVlbCcgfCAnaW5pdGlhbCBkaXJlY3Rpb24nIHwgJ2RpcmVjdGlvbicgfCAnaW5pdGlhbCByb3RhdGlvbicgfCAncm90YXRpb24nO1xyXG5cdHN0ZXBzOiBudW1iZXI7IC8vIGZvciBmYWRlXHJcblx0aml0dGVyOiBudW1iZXI7XHJcblx0bWluaW11bTogbnVtYmVyO1xyXG59XHJcblxyXG5jb25zdCBkeW5hbWljc0NvbnRyb2wgPSBbJ29mZicsICdmYWRlJywgJ3BlbiBwcmVzc3VyZScsICdwZW4gdGlsdCcsICdzdHlsdXMgd2hlZWwnLCAnaW5pdGlhbCBkaXJlY3Rpb24nLCAnZGlyZWN0aW9uJywgJ2luaXRpYWwgcm90YXRpb24nLCAncm90YXRpb24nXTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQnJ1c2hTaGFwZSB7XHJcblx0bmFtZT86IHN0cmluZztcclxuXHRzaXplOiBudW1iZXI7XHJcblx0YW5nbGU6IG51bWJlcjtcclxuXHRyb3VuZG5lc3M6IG51bWJlcjtcclxuXHRoYXJkbmVzcz86IG51bWJlcjtcclxuXHRzcGFjaW5nT246IGJvb2xlYW47XHJcblx0c3BhY2luZzogbnVtYmVyO1xyXG5cdGZsaXBYOiBib29sZWFuO1xyXG5cdGZsaXBZOiBib29sZWFuO1xyXG5cdHNhbXBsZWREYXRhPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEJydXNoIHtcclxuXHRuYW1lOiBzdHJpbmc7XHJcblx0c2hhcGU6IEJydXNoU2hhcGU7XHJcblx0c2hhcGVEeW5hbWljcz86IHtcclxuXHRcdHNpemVEeW5hbWljczogQnJ1c2hEeW5hbWljcztcclxuXHRcdG1pbmltdW1EaWFtZXRlcjogbnVtYmVyO1xyXG5cdFx0dGlsdFNjYWxlOiBudW1iZXI7XHJcblx0XHRhbmdsZUR5bmFtaWNzOiBCcnVzaER5bmFtaWNzO1xyXG5cdFx0cm91bmRuZXNzRHluYW1pY3M6IEJydXNoRHluYW1pY3M7XHJcblx0XHRtaW5pbXVtUm91bmRuZXNzOiBudW1iZXI7XHJcblx0XHRmbGlwWDogYm9vbGVhbjtcclxuXHRcdGZsaXBZOiBib29sZWFuO1xyXG5cdFx0YnJ1c2hQcm9qZWN0aW9uOiBib29sZWFuO1xyXG5cdH07XHJcblx0c2NhdHRlcj86IHtcclxuXHRcdGJvdGhBeGVzOiBib29sZWFuO1xyXG5cdFx0c2NhdHRlckR5bmFtaWNzOiBCcnVzaER5bmFtaWNzO1xyXG5cdFx0Y291bnREeW5hbWljczogQnJ1c2hEeW5hbWljcztcclxuXHRcdGNvdW50OiBudW1iZXI7XHJcblx0fTtcclxuXHR0ZXh0dXJlPzoge1xyXG5cdFx0aWQ6IHN0cmluZztcclxuXHRcdG5hbWU6IHN0cmluZztcclxuXHRcdGludmVydDogYm9vbGVhbjtcclxuXHRcdHNjYWxlOiBudW1iZXI7XHJcblx0XHRicmlnaHRuZXNzOiBudW1iZXI7XHJcblx0XHRjb250cmFzdDogbnVtYmVyO1xyXG5cdFx0YmxlbmRNb2RlOiBCbGVuZE1vZGU7XHJcblx0XHRkZXB0aDogbnVtYmVyO1xyXG5cdFx0ZGVwdGhNaW5pbXVtOiBudW1iZXI7XHJcblx0XHRkZXB0aER5bmFtaWNzOiBCcnVzaER5bmFtaWNzO1xyXG5cdH07XHJcblx0ZHVhbEJydXNoPzoge1xyXG5cdFx0ZmxpcDogYm9vbGVhbjtcclxuXHRcdHNoYXBlOiBCcnVzaFNoYXBlO1xyXG5cdFx0YmxlbmRNb2RlOiBCbGVuZE1vZGU7XHJcblx0XHR1c2VTY2F0dGVyOiBib29sZWFuO1xyXG5cdFx0c3BhY2luZzogbnVtYmVyO1xyXG5cdFx0Y291bnQ6IG51bWJlcjtcclxuXHRcdGJvdGhBeGVzOiBib29sZWFuO1xyXG5cdFx0Y291bnREeW5hbWljczogQnJ1c2hEeW5hbWljcztcclxuXHRcdHNjYXR0ZXJEeW5hbWljczogQnJ1c2hEeW5hbWljcztcclxuXHR9O1xyXG5cdGNvbG9yRHluYW1pY3M/OiB7XHJcblx0XHRmb3JlZ3JvdW5kQmFja2dyb3VuZDogQnJ1c2hEeW5hbWljcztcclxuXHRcdGh1ZTogbnVtYmVyO1xyXG5cdFx0c2F0dXJhdGlvbjogbnVtYmVyO1xyXG5cdFx0YnJpZ2h0bmVzczogbnVtYmVyO1xyXG5cdFx0cHVyaXR5OiBudW1iZXI7XHJcblx0XHRwZXJUaXA6IGJvb2xlYW47XHJcblx0fTtcclxuXHR0cmFuc2Zlcj86IHtcclxuXHRcdGZsb3dEeW5hbWljczogQnJ1c2hEeW5hbWljcztcclxuXHRcdG9wYWNpdHlEeW5hbWljczogQnJ1c2hEeW5hbWljcztcclxuXHRcdHdldG5lc3NEeW5hbWljczogQnJ1c2hEeW5hbWljcztcclxuXHRcdG1peER5bmFtaWNzOiBCcnVzaER5bmFtaWNzO1xyXG5cdH07XHJcblx0YnJ1c2hQb3NlPzoge1xyXG5cdFx0b3ZlcnJpZGVBbmdsZTogYm9vbGVhbjtcclxuXHRcdG92ZXJyaWRlVGlsdFg6IGJvb2xlYW47XHJcblx0XHRvdmVycmlkZVRpbHRZOiBib29sZWFuO1xyXG5cdFx0b3ZlcnJpZGVQcmVzc3VyZTogYm9vbGVhbjtcclxuXHRcdHByZXNzdXJlOiBudW1iZXI7XHJcblx0XHR0aWx0WDogbnVtYmVyO1xyXG5cdFx0dGlsdFk6IG51bWJlcjtcclxuXHRcdGFuZ2xlOiBudW1iZXI7XHJcblx0fTtcclxuXHRub2lzZTogYm9vbGVhbjtcclxuXHR3ZXRFZGdlczogYm9vbGVhbjtcclxuXHQvLyBUT0RPOiBidWlsZC11cFxyXG5cdC8vIFRPRE86IHNtb290aGluZ1xyXG5cdHByb3RlY3RUZXh0dXJlPzogYm9vbGVhbjtcclxuXHRzcGFjaW5nOiBudW1iZXI7XHJcblx0YnJ1c2hHcm91cD86IHVuZGVmaW5lZDsgLy8gP1xyXG5cdGludGVycHJldGF0aW9uPzogYm9vbGVhbjsgLy8gP1xyXG5cdHVzZUJydXNoU2l6ZTogYm9vbGVhbjsgLy8gP1xyXG5cdHRvb2xPcHRpb25zPzoge1xyXG5cdFx0YnJ1c2hQcmVzZXQ6IGJvb2xlYW47XHJcblx0XHRmbG93OiBudW1iZXI7XHJcblx0XHRzbW9vdGg6IG51bWJlcjsgLy8gP1xyXG5cdFx0bW9kZTogQmxlbmRNb2RlO1xyXG5cdFx0b3BhY2l0eTogbnVtYmVyO1xyXG5cdFx0c21vb3RoaW5nOiBib29sZWFuO1xyXG5cdFx0c21vb3RoaW5nVmFsdWU6IG51bWJlcjtcclxuXHRcdHNtb290aGluZ1JhZGl1c01vZGU6IGJvb2xlYW47XHJcblx0XHRzbW9vdGhpbmdDYXRjaHVwOiBib29sZWFuO1xyXG5cdFx0c21vb3RoaW5nQ2F0Y2h1cEF0RW5kOiBib29sZWFuO1xyXG5cdFx0c21vb3RoaW5nWm9vbUNvbXBlbnNhdGlvbjogYm9vbGVhbjtcclxuXHRcdHByZXNzdXJlU21vb3RoaW5nOiBib29sZWFuO1xyXG5cdFx0dXNlUHJlc3N1cmVPdmVycmlkZXNTaXplOiBib29sZWFuO1xyXG5cdFx0dXNlUHJlc3N1cmVPdmVycmlkZXNPcGFjaXR5OiBib29sZWFuO1xyXG5cdFx0dXNlTGVnYWN5OiBib29sZWFuO1xyXG5cdFx0Zmxvd0R5bmFtaWNzPzogQnJ1c2hEeW5hbWljcztcclxuXHRcdG9wYWNpdHlEeW5hbWljcz86IEJydXNoRHluYW1pY3M7XHJcblx0XHRzaXplRHluYW1pY3M/OiBCcnVzaER5bmFtaWNzO1xyXG5cdH07XHJcbn1cclxuXHJcbi8vIGludGVybmFsXHJcblxyXG5pbnRlcmZhY2UgUGhyeURlc2NyaXB0b3Ige1xyXG5cdGhpZXJhcmNoeTogKHt9IHwge1xyXG5cdFx0J05tICAnOiBzdHJpbmc7XHJcblx0XHR6dWlkOiBzdHJpbmc7XHJcblx0fSlbXTtcclxufVxyXG5cclxuaW50ZXJmYWNlIER5bmFtaWNzRGVzY3JpcHRvciB7XHJcblx0YlZUeTogbnVtYmVyO1xyXG5cdGZTdHA6IG51bWJlcjtcclxuXHRqaXR0ZXI6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdCdNbm0gJzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcbn1cclxuXHJcbmludGVyZmFjZSBCcnVzaFNoYXBlRGVzY3JpcHRvciB7XHJcblx0RG10cjogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0QW5nbDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0Um5kbjogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0J05tICAnPzogc3RyaW5nO1xyXG5cdFNwY246IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdEludHI6IGJvb2xlYW47XHJcblx0SHJkbj86IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdGZsaXBYOiBib29sZWFuO1xyXG5cdGZsaXBZOiBib29sZWFuO1xyXG5cdHNhbXBsZWREYXRhPzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgRGVzY0Rlc2NyaXB0b3Ige1xyXG5cdEJyc2g6IHtcclxuXHRcdCdObSAgJzogc3RyaW5nO1xyXG5cdFx0QnJzaDogQnJ1c2hTaGFwZURlc2NyaXB0b3I7XHJcblx0XHR1c2VUaXBEeW5hbWljczogYm9vbGVhbjtcclxuXHRcdGZsaXBYOiBib29sZWFuO1xyXG5cdFx0ZmxpcFk6IGJvb2xlYW47XHJcblx0XHRicnVzaFByb2plY3Rpb246IGJvb2xlYW47XHJcblx0XHRtaW5pbXVtRGlhbWV0ZXI6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0bWluaW11bVJvdW5kbmVzczogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHR0aWx0U2NhbGU6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0c3pWcjogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0YW5nbGVEeW5hbWljczogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0cm91bmRuZXNzRHluYW1pY3M6IER5bmFtaWNzRGVzY3JpcHRvcjtcclxuXHRcdHVzZVNjYXR0ZXI6IGJvb2xlYW47XHJcblx0XHRTcGNuOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdCdDbnQgJzogbnVtYmVyO1xyXG5cdFx0Ym90aEF4ZXM6IGJvb2xlYW47XHJcblx0XHRjb3VudER5bmFtaWNzOiBEeW5hbWljc0Rlc2NyaXB0b3I7XHJcblx0XHRzY2F0dGVyRHluYW1pY3M6IER5bmFtaWNzRGVzY3JpcHRvcjtcclxuXHRcdGR1YWxCcnVzaDogeyB1c2VEdWFsQnJ1c2g6IGZhbHNlOyB9IHwge1xyXG5cdFx0XHR1c2VEdWFsQnJ1c2g6IHRydWU7XHJcblx0XHRcdEZsaXA6IGJvb2xlYW47XHJcblx0XHRcdEJyc2g6IEJydXNoU2hhcGVEZXNjcmlwdG9yO1xyXG5cdFx0XHRCbG5NOiBzdHJpbmc7XHJcblx0XHRcdHVzZVNjYXR0ZXI6IGJvb2xlYW47XHJcblx0XHRcdFNwY246IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0XHQnQ250ICc6IG51bWJlcjtcclxuXHRcdFx0Ym90aEF4ZXM6IGJvb2xlYW47XHJcblx0XHRcdGNvdW50RHluYW1pY3M6IER5bmFtaWNzRGVzY3JpcHRvcjtcclxuXHRcdFx0c2NhdHRlckR5bmFtaWNzOiBEeW5hbWljc0Rlc2NyaXB0b3I7XHJcblx0XHR9O1xyXG5cdFx0YnJ1c2hHcm91cDogeyB1c2VCcnVzaEdyb3VwOiBmYWxzZTsgfTtcclxuXHRcdHVzZVRleHR1cmU6IGJvb2xlYW47XHJcblx0XHRUeHRDOiBib29sZWFuO1xyXG5cdFx0aW50ZXJwcmV0YXRpb246IGJvb2xlYW47XHJcblx0XHR0ZXh0dXJlQmxlbmRNb2RlOiBzdHJpbmc7XHJcblx0XHR0ZXh0dXJlRGVwdGg6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0bWluaW11bURlcHRoOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdHRleHR1cmVEZXB0aER5bmFtaWNzOiBEeW5hbWljc0Rlc2NyaXB0b3I7XHJcblx0XHRUeHRyPzoge1xyXG5cdFx0XHQnTm0gICc6IHN0cmluZztcclxuXHRcdFx0SWRudDogc3RyaW5nO1xyXG5cdFx0fTtcclxuXHRcdHRleHR1cmVTY2FsZTogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRJbnZUOiBib29sZWFuO1xyXG5cdFx0cHJvdGVjdFRleHR1cmU6IGJvb2xlYW47XHJcblx0XHR0ZXh0dXJlQnJpZ2h0bmVzczogbnVtYmVyO1xyXG5cdFx0dGV4dHVyZUNvbnRyYXN0OiBudW1iZXI7XHJcblx0XHR1c2VQYWludER5bmFtaWNzOiBib29sZWFuO1xyXG5cdFx0cHJWcj86IER5bmFtaWNzRGVzY3JpcHRvcjtcclxuXHRcdG9wVnI/OiBEeW5hbWljc0Rlc2NyaXB0b3I7XHJcblx0XHR3dFZyPzogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0bXhWcj86IER5bmFtaWNzRGVzY3JpcHRvcjtcclxuXHRcdHVzZUNvbG9yRHluYW1pY3M6IGJvb2xlYW47XHJcblx0XHRjbFZyPzogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0J0ggICAnPzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRTdHJ0PzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRCcmdoPzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRwdXJpdHk/OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdGNvbG9yRHluYW1pY3NQZXJUaXA/OiB0cnVlO1xyXG5cdFx0V3RkZzogYm9vbGVhbjtcclxuXHRcdE5vc2U6IGJvb2xlYW47XHJcblx0XHQnUnB0ICc6IGJvb2xlYW47XHJcblx0XHR1c2VCcnVzaFNpemU6IGJvb2xlYW47XHJcblx0XHR1c2VCcnVzaFBvc2U6IGJvb2xlYW47XHJcblx0XHRvdmVycmlkZVBvc2VBbmdsZT86IGJvb2xlYW47XHJcblx0XHRvdmVycmlkZVBvc2VUaWx0WD86IGJvb2xlYW47XHJcblx0XHRvdmVycmlkZVBvc2VUaWx0WT86IGJvb2xlYW47XHJcblx0XHRvdmVycmlkZVBvc2VQcmVzc3VyZT86IGJvb2xlYW47XHJcblx0XHRicnVzaFBvc2VQcmVzc3VyZT86IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0YnJ1c2hQb3NlVGlsdFg/OiBudW1iZXI7XHJcblx0XHRicnVzaFBvc2VUaWx0WT86IG51bWJlcjtcclxuXHRcdGJydXNoUG9zZUFuZ2xlPzogbnVtYmVyO1xyXG5cdFx0dG9vbE9wdGlvbnM/OiB7XHJcblx0XHRcdGJydXNoUHJlc2V0OiBib29sZWFuO1xyXG5cdFx0XHRmbG93PzogbnVtYmVyO1xyXG5cdFx0XHRTbW9vPzogbnVtYmVyO1xyXG5cdFx0XHQnTWQgICc6IHN0cmluZztcclxuXHRcdFx0T3BjdD86IG51bWJlcjtcclxuXHRcdFx0c21vb3RoaW5nPzogYm9vbGVhbjtcclxuXHRcdFx0c21vb3RoaW5nVmFsdWU/OiBudW1iZXI7XHJcblx0XHRcdHNtb290aGluZ1JhZGl1c01vZGU/OiBib29sZWFuO1xyXG5cdFx0XHRzbW9vdGhpbmdDYXRjaHVwPzogYm9vbGVhbjtcclxuXHRcdFx0c21vb3RoaW5nQ2F0Y2h1cEF0RW5kPzogYm9vbGVhbjtcclxuXHRcdFx0c21vb3RoaW5nWm9vbUNvbXBlbnNhdGlvbj86IGJvb2xlYW47XHJcblx0XHRcdHByZXNzdXJlU21vb3RoaW5nPzogYm9vbGVhbjtcclxuXHRcdFx0dXNlUHJlc3N1cmVPdmVycmlkZXNTaXplPzogYm9vbGVhbjtcclxuXHRcdFx0dXNlUHJlc3N1cmVPdmVycmlkZXNPcGFjaXR5PzogYm9vbGVhbjtcclxuXHRcdFx0dXNlTGVnYWN5OiBib29sZWFuO1xyXG5cdFx0XHQnUHJzICc/OiBudW1iZXI7IC8vIFRPRE86ID8/P1xyXG5cdFx0XHRNZ2NFPzogYm9vbGVhbjsgLy8gVE9ETzogPz8/XHJcblx0XHRcdEVyc0I/OiBudW1iZXI7IC8vIFRPRE86ID8/P1xyXG5cdFx0XHRwclZyPzogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0XHRvcFZyPzogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0XHRzelZyPzogRHluYW1pY3NEZXNjcmlwdG9yO1xyXG5cdFx0fTtcclxuXHR9W107XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlRHluYW1pY3MoZGVzYzogRHluYW1pY3NEZXNjcmlwdG9yKTogQnJ1c2hEeW5hbWljcyB7XHJcblx0cmV0dXJuIHtcclxuXHRcdGNvbnRyb2w6IGR5bmFtaWNzQ29udHJvbFtkZXNjLmJWVHldIGFzIGFueSxcclxuXHRcdHN0ZXBzOiBkZXNjLmZTdHAsXHJcblx0XHRqaXR0ZXI6IHBhcnNlUGVyY2VudChkZXNjLmppdHRlciksXHJcblx0XHRtaW5pbXVtOiBwYXJzZVBlcmNlbnQoZGVzY1snTW5tICddKSxcclxuXHR9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZUJydXNoU2hhcGUoZGVzYzogQnJ1c2hTaGFwZURlc2NyaXB0b3IpOiBCcnVzaFNoYXBlIHtcclxuXHRjb25zdCBzaGFwZTogQnJ1c2hTaGFwZSA9IHtcclxuXHRcdHNpemU6IHBhcnNlVW5pdHNUb051bWJlcihkZXNjLkRtdHIsICdQaXhlbHMnKSxcclxuXHRcdGFuZ2xlOiBwYXJzZUFuZ2xlKGRlc2MuQW5nbCksXHJcblx0XHRyb3VuZG5lc3M6IHBhcnNlUGVyY2VudChkZXNjLlJuZG4pLFxyXG5cdFx0c3BhY2luZ09uOiBkZXNjLkludHIsXHJcblx0XHRzcGFjaW5nOiBwYXJzZVBlcmNlbnQoZGVzYy5TcGNuKSxcclxuXHRcdGZsaXBYOiBkZXNjLmZsaXBYLFxyXG5cdFx0ZmxpcFk6IGRlc2MuZmxpcFksXHJcblx0fTtcclxuXHJcblx0aWYgKGRlc2NbJ05tICAnXSkgc2hhcGUubmFtZSA9IGRlc2NbJ05tICAnXTtcclxuXHRpZiAoZGVzYy5IcmRuKSBzaGFwZS5oYXJkbmVzcyA9IHBhcnNlUGVyY2VudChkZXNjLkhyZG4pO1xyXG5cdGlmIChkZXNjLnNhbXBsZWREYXRhKSBzaGFwZS5zYW1wbGVkRGF0YSA9IGRlc2Muc2FtcGxlZERhdGE7XHJcblxyXG5cdHJldHVybiBzaGFwZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRBYnIoYnVmZmVyOiBBcnJheUJ1ZmZlclZpZXcsIG9wdGlvbnM6IHsgbG9nTWlzc2luZ0ZlYXR1cmVzPzogYm9vbGVhbjsgfSA9IHt9KTogQWJyIHtcclxuXHRjb25zdCByZWFkZXIgPSBjcmVhdGVSZWFkZXIoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKTtcclxuXHRjb25zdCB2ZXJzaW9uID0gcmVhZEludDE2KHJlYWRlcik7XHJcblx0Y29uc3Qgc2FtcGxlczogU2FtcGxlSW5mb1tdID0gW107XHJcblx0Y29uc3QgYnJ1c2hlczogQnJ1c2hbXSA9IFtdO1xyXG5cdGNvbnN0IHBhdHRlcm5zOiBQYXR0ZXJuSW5mb1tdID0gW107XHJcblxyXG5cdGlmICh2ZXJzaW9uID09PSAxIHx8IHZlcnNpb24gPT09IDIpIHtcclxuXHRcdHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgQUJSIHZlcnNpb24gKCR7dmVyc2lvbn0pYCk7IC8vIFRPRE86IC4uLlxyXG5cdH0gZWxzZSBpZiAodmVyc2lvbiA9PT0gNiB8fCB2ZXJzaW9uID09PSA3IHx8IHZlcnNpb24gPT09IDkgfHwgdmVyc2lvbiA9PT0gMTApIHtcclxuXHRcdGNvbnN0IG1pbm9yVmVyc2lvbiA9IHJlYWRJbnQxNihyZWFkZXIpO1xyXG5cdFx0aWYgKG1pbm9yVmVyc2lvbiAhPT0gMSAmJiBtaW5vclZlcnNpb24gIT09IDIpIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgQUJSIG1pbm9yIHZlcnNpb24nKTtcclxuXHJcblx0XHR3aGlsZSAocmVhZGVyLm9mZnNldCA8IHJlYWRlci52aWV3LmJ5dGVMZW5ndGgpIHtcclxuXHRcdFx0Y2hlY2tTaWduYXR1cmUocmVhZGVyLCAnOEJJTScpO1xyXG5cdFx0XHRjb25zdCB0eXBlID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpIGFzICdzYW1wJyB8ICdkZXNjJyB8ICdwYXR0JyB8ICdwaHJ5JztcclxuXHRcdFx0bGV0IHNpemUgPSByZWFkVWludDMyKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IGVuZCA9IHJlYWRlci5vZmZzZXQgKyBzaXplO1xyXG5cclxuXHRcdFx0c3dpdGNoICh0eXBlKSB7XHJcblx0XHRcdFx0Y2FzZSAnc2FtcCc6IHtcclxuXHRcdFx0XHRcdHdoaWxlIChyZWFkZXIub2Zmc2V0IDwgZW5kKSB7XHJcblx0XHRcdFx0XHRcdGxldCBicnVzaExlbmd0aCA9IHJlYWRVaW50MzIocmVhZGVyKTtcclxuXHRcdFx0XHRcdFx0d2hpbGUgKGJydXNoTGVuZ3RoICYgMGIxMSkgYnJ1c2hMZW5ndGgrKzsgLy8gcGFkIHRvIDQgYnl0ZSBhbGlnbm1lbnRcclxuXHRcdFx0XHRcdFx0Y29uc3QgYnJ1c2hFbmQgPSByZWFkZXIub2Zmc2V0ICsgYnJ1c2hMZW5ndGg7XHJcblxyXG5cdFx0XHRcdFx0XHRjb25zdCBpZCA9IHJlYWRQYXNjYWxTdHJpbmcocmVhZGVyLCAxKTtcclxuXHJcblx0XHRcdFx0XHRcdC8vIHYxIC0gU2tpcCB0aGUgSW50MTYgYm91bmRzIHJlY3RhbmdsZSBhbmQgdGhlIHVua25vd24gSW50MTYuXHJcblx0XHRcdFx0XHRcdC8vIHYyIC0gU2tpcCB0aGUgdW5rbm93biBieXRlcy5cclxuXHRcdFx0XHRcdFx0c2tpcEJ5dGVzKHJlYWRlciwgbWlub3JWZXJzaW9uID09PSAxID8gMTAgOiAyNjQpO1xyXG5cclxuXHRcdFx0XHRcdFx0Y29uc3QgeSA9IHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCB4ID0gcmVhZEludDMyKHJlYWRlcik7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGggPSByZWFkSW50MzIocmVhZGVyKSAtIHk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHcgPSByZWFkSW50MzIocmVhZGVyKSAtIHg7XHJcblx0XHRcdFx0XHRcdGlmICh3IDw9IDAgfHwgaCA8PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYm91bmRzJyk7XHJcblxyXG5cdFx0XHRcdFx0XHRjb25zdCBkZXB0aCA9IHJlYWRJbnQxNihyZWFkZXIpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCBjb21wcmVzc2lvbiA9IHJlYWRVaW50OChyZWFkZXIpOyAvLyAwIC0gcmF3LCAxIC0gUkxFXHJcblx0XHRcdFx0XHRcdGNvbnN0IGFscGhhID0gbmV3IFVpbnQ4QXJyYXkodyAqIGgpO1xyXG5cclxuXHRcdFx0XHRcdFx0aWYgKGRlcHRoID09PSA4KSB7XHJcblx0XHRcdFx0XHRcdFx0aWYgKGNvbXByZXNzaW9uID09PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRhbHBoYS5zZXQocmVhZEJ5dGVzKHJlYWRlciwgYWxwaGEuYnl0ZUxlbmd0aCkpO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoY29tcHJlc3Npb24gPT09IDEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHJlYWREYXRhUkxFKHJlYWRlciwgeyB3aWR0aDogdywgaGVpZ2h0OiBoLCBkYXRhOiBhbHBoYSB9LCB3LCBoLCAxLCBbMF0sIGZhbHNlKTtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbXByZXNzaW9uJyk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGRlcHRoID09PSAxNikge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChjb21wcmVzc2lvbiA9PT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhbHBoYS5ieXRlTGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0YWxwaGFbaV0gPSByZWFkVWludDE2KHJlYWRlcikgPj4gODsgLy8gY29udmVydCB0byA4Yml0IHZhbHVlc1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoY29tcHJlc3Npb24gPT09IDEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkICgxNmJpdCBSTEUpJyk7IC8vIFRPRE86IC4uLlxyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29tcHJlc3Npb24nKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRlcHRoJyk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdHNhbXBsZXMucHVzaCh7IGlkLCBib3VuZHM6IHsgeCwgeSwgdywgaCB9LCBhbHBoYSB9KTtcclxuXHRcdFx0XHRcdFx0cmVhZGVyLm9mZnNldCA9IGJydXNoRW5kO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNhc2UgJ2Rlc2MnOiB7XHJcblx0XHRcdFx0XHRjb25zdCBkZXNjOiBEZXNjRGVzY3JpcHRvciA9IHJlYWRWZXJzaW9uQW5kRGVzY3JpcHRvcihyZWFkZXIpO1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVxdWlyZSgndXRpbCcpLmluc3BlY3QoZGVzYywgZmFsc2UsIDk5LCB0cnVlKSk7XHJcblxyXG5cdFx0XHRcdFx0Zm9yIChjb25zdCBicnVzaCBvZiBkZXNjLkJyc2gpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgYjogQnJ1c2ggPSB7XHJcblx0XHRcdFx0XHRcdFx0bmFtZTogYnJ1c2hbJ05tICAnXSxcclxuXHRcdFx0XHRcdFx0XHRzaGFwZTogcGFyc2VCcnVzaFNoYXBlKGJydXNoLkJyc2gpLFxyXG5cdFx0XHRcdFx0XHRcdHNwYWNpbmc6IHBhcnNlUGVyY2VudChicnVzaC5TcGNuKSxcclxuXHRcdFx0XHRcdFx0XHQvLyBUT0RPOiBicnVzaEdyb3VwID8/P1xyXG5cdFx0XHRcdFx0XHRcdHdldEVkZ2VzOiBicnVzaC5XdGRnLFxyXG5cdFx0XHRcdFx0XHRcdG5vaXNlOiBicnVzaC5Ob3NlLFxyXG5cdFx0XHRcdFx0XHRcdC8vIFRPRE86IFR4dEMgPz8/IHNtb290aGluZyAvIGJ1aWxkLXVwID9cclxuXHRcdFx0XHRcdFx0XHQvLyBUT0RPOiAnUnB0ICcgPz8/XHJcblx0XHRcdFx0XHRcdFx0dXNlQnJ1c2hTaXplOiBicnVzaC51c2VCcnVzaFNpemUsIC8vID8/P1xyXG5cdFx0XHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHRcdFx0aWYgKGJydXNoLmludGVycHJldGF0aW9uICE9IG51bGwpIGIuaW50ZXJwcmV0YXRpb24gPSBicnVzaC5pbnRlcnByZXRhdGlvbjtcclxuXHRcdFx0XHRcdFx0aWYgKGJydXNoLnByb3RlY3RUZXh0dXJlICE9IG51bGwpIGIucHJvdGVjdFRleHR1cmUgPSBicnVzaC5wcm90ZWN0VGV4dHVyZTtcclxuXHJcblx0XHRcdFx0XHRcdGlmIChicnVzaC51c2VUaXBEeW5hbWljcykge1xyXG5cdFx0XHRcdFx0XHRcdGIuc2hhcGVEeW5hbWljcyA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpbHRTY2FsZTogcGFyc2VQZXJjZW50KGJydXNoLnRpbHRTY2FsZSksXHJcblx0XHRcdFx0XHRcdFx0XHRzaXplRHluYW1pY3M6IHBhcnNlRHluYW1pY3MoYnJ1c2guc3pWciksXHJcblx0XHRcdFx0XHRcdFx0XHRhbmdsZUR5bmFtaWNzOiBwYXJzZUR5bmFtaWNzKGJydXNoLmFuZ2xlRHluYW1pY3MpLFxyXG5cdFx0XHRcdFx0XHRcdFx0cm91bmRuZXNzRHluYW1pY3M6IHBhcnNlRHluYW1pY3MoYnJ1c2gucm91bmRuZXNzRHluYW1pY3MpLFxyXG5cdFx0XHRcdFx0XHRcdFx0ZmxpcFg6IGJydXNoLmZsaXBYLFxyXG5cdFx0XHRcdFx0XHRcdFx0ZmxpcFk6IGJydXNoLmZsaXBZLFxyXG5cdFx0XHRcdFx0XHRcdFx0YnJ1c2hQcm9qZWN0aW9uOiBicnVzaC5icnVzaFByb2plY3Rpb24sXHJcblx0XHRcdFx0XHRcdFx0XHRtaW5pbXVtRGlhbWV0ZXI6IHBhcnNlUGVyY2VudChicnVzaC5taW5pbXVtRGlhbWV0ZXIpLFxyXG5cdFx0XHRcdFx0XHRcdFx0bWluaW11bVJvdW5kbmVzczogcGFyc2VQZXJjZW50KGJydXNoLm1pbmltdW1Sb3VuZG5lc3MpLFxyXG5cdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdGlmIChicnVzaC51c2VTY2F0dGVyKSB7XHJcblx0XHRcdFx0XHRcdFx0Yi5zY2F0dGVyID0ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y291bnQ6IGJydXNoWydDbnQgJ10sXHJcblx0XHRcdFx0XHRcdFx0XHRib3RoQXhlczogYnJ1c2guYm90aEF4ZXMsXHJcblx0XHRcdFx0XHRcdFx0XHRjb3VudER5bmFtaWNzOiBwYXJzZUR5bmFtaWNzKGJydXNoLmNvdW50RHluYW1pY3MpLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2NhdHRlckR5bmFtaWNzOiBwYXJzZUR5bmFtaWNzKGJydXNoLnNjYXR0ZXJEeW5hbWljcyksXHJcblx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0aWYgKGJydXNoLnVzZVRleHR1cmUgJiYgYnJ1c2guVHh0cikge1xyXG5cdFx0XHRcdFx0XHRcdGIudGV4dHVyZSA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdGlkOiBicnVzaC5UeHRyLklkbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiBicnVzaC5UeHRyWydObSAgJ10sXHJcblx0XHRcdFx0XHRcdFx0XHRibGVuZE1vZGU6IEJsbk0uZGVjb2RlKGJydXNoLnRleHR1cmVCbGVuZE1vZGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0ZGVwdGg6IHBhcnNlUGVyY2VudChicnVzaC50ZXh0dXJlRGVwdGgpLFxyXG5cdFx0XHRcdFx0XHRcdFx0ZGVwdGhNaW5pbXVtOiBwYXJzZVBlcmNlbnQoYnJ1c2gubWluaW11bURlcHRoKSxcclxuXHRcdFx0XHRcdFx0XHRcdGRlcHRoRHluYW1pY3M6IHBhcnNlRHluYW1pY3MoYnJ1c2gudGV4dHVyZURlcHRoRHluYW1pY3MpLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2NhbGU6IHBhcnNlUGVyY2VudChicnVzaC50ZXh0dXJlU2NhbGUpLFxyXG5cdFx0XHRcdFx0XHRcdFx0aW52ZXJ0OiBicnVzaC5JbnZULFxyXG5cdFx0XHRcdFx0XHRcdFx0YnJpZ2h0bmVzczogYnJ1c2gudGV4dHVyZUJyaWdodG5lc3MsXHJcblx0XHRcdFx0XHRcdFx0XHRjb250cmFzdDogYnJ1c2gudGV4dHVyZUNvbnRyYXN0LFxyXG5cdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdGNvbnN0IGRiID0gYnJ1c2guZHVhbEJydXNoO1xyXG5cdFx0XHRcdFx0XHRpZiAoZGIgJiYgZGIudXNlRHVhbEJydXNoKSB7XHJcblx0XHRcdFx0XHRcdFx0Yi5kdWFsQnJ1c2ggPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmbGlwOiBkYi5GbGlwLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2hhcGU6IHBhcnNlQnJ1c2hTaGFwZShkYi5CcnNoKSxcclxuXHRcdFx0XHRcdFx0XHRcdGJsZW5kTW9kZTogQmxuTS5kZWNvZGUoZGIuQmxuTSksXHJcblx0XHRcdFx0XHRcdFx0XHR1c2VTY2F0dGVyOiBkYi51c2VTY2F0dGVyLFxyXG5cdFx0XHRcdFx0XHRcdFx0c3BhY2luZzogcGFyc2VQZXJjZW50KGRiLlNwY24pLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y291bnQ6IGRiWydDbnQgJ10sXHJcblx0XHRcdFx0XHRcdFx0XHRib3RoQXhlczogZGIuYm90aEF4ZXMsXHJcblx0XHRcdFx0XHRcdFx0XHRjb3VudER5bmFtaWNzOiBwYXJzZUR5bmFtaWNzKGRiLmNvdW50RHluYW1pY3MpLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2NhdHRlckR5bmFtaWNzOiBwYXJzZUR5bmFtaWNzKGRiLnNjYXR0ZXJEeW5hbWljcyksXHJcblx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0aWYgKGJydXNoLnVzZUNvbG9yRHluYW1pY3MpIHtcclxuXHRcdFx0XHRcdFx0XHRiLmNvbG9yRHluYW1pY3MgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3JlZ3JvdW5kQmFja2dyb3VuZDogcGFyc2VEeW5hbWljcyhicnVzaC5jbFZyISksXHJcblx0XHRcdFx0XHRcdFx0XHRodWU6IHBhcnNlUGVyY2VudChicnVzaFsnSCAgICddISksXHJcblx0XHRcdFx0XHRcdFx0XHRzYXR1cmF0aW9uOiBwYXJzZVBlcmNlbnQoYnJ1c2guU3RydCEpLFxyXG5cdFx0XHRcdFx0XHRcdFx0YnJpZ2h0bmVzczogcGFyc2VQZXJjZW50KGJydXNoLkJyZ2ghKSxcclxuXHRcdFx0XHRcdFx0XHRcdHB1cml0eTogcGFyc2VQZXJjZW50KGJydXNoLnB1cml0eSEpLFxyXG5cdFx0XHRcdFx0XHRcdFx0cGVyVGlwOiBicnVzaC5jb2xvckR5bmFtaWNzUGVyVGlwISxcclxuXHRcdFx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRpZiAoYnJ1c2gudXNlUGFpbnREeW5hbWljcykge1xyXG5cdFx0XHRcdFx0XHRcdGIudHJhbnNmZXIgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmbG93RHluYW1pY3M6IHBhcnNlRHluYW1pY3MoYnJ1c2gucHJWciEpLFxyXG5cdFx0XHRcdFx0XHRcdFx0b3BhY2l0eUR5bmFtaWNzOiBwYXJzZUR5bmFtaWNzKGJydXNoLm9wVnIhKSxcclxuXHRcdFx0XHRcdFx0XHRcdHdldG5lc3NEeW5hbWljczogcGFyc2VEeW5hbWljcyhicnVzaC53dFZyISksXHJcblx0XHRcdFx0XHRcdFx0XHRtaXhEeW5hbWljczogcGFyc2VEeW5hbWljcyhicnVzaC5teFZyISksXHJcblx0XHRcdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0aWYgKGJydXNoLnVzZUJydXNoUG9zZSkge1xyXG5cdFx0XHRcdFx0XHRcdGIuYnJ1c2hQb3NlID0ge1xyXG5cdFx0XHRcdFx0XHRcdFx0b3ZlcnJpZGVBbmdsZTogYnJ1c2gub3ZlcnJpZGVQb3NlQW5nbGUhLFxyXG5cdFx0XHRcdFx0XHRcdFx0b3ZlcnJpZGVUaWx0WDogYnJ1c2gub3ZlcnJpZGVQb3NlVGlsdFghLFxyXG5cdFx0XHRcdFx0XHRcdFx0b3ZlcnJpZGVUaWx0WTogYnJ1c2gub3ZlcnJpZGVQb3NlVGlsdFkhLFxyXG5cdFx0XHRcdFx0XHRcdFx0b3ZlcnJpZGVQcmVzc3VyZTogYnJ1c2gub3ZlcnJpZGVQb3NlUHJlc3N1cmUhLFxyXG5cdFx0XHRcdFx0XHRcdFx0cHJlc3N1cmU6IHBhcnNlUGVyY2VudChicnVzaC5icnVzaFBvc2VQcmVzc3VyZSEpLFxyXG5cdFx0XHRcdFx0XHRcdFx0dGlsdFg6IGJydXNoLmJydXNoUG9zZVRpbHRYISxcclxuXHRcdFx0XHRcdFx0XHRcdHRpbHRZOiBicnVzaC5icnVzaFBvc2VUaWx0WSEsXHJcblx0XHRcdFx0XHRcdFx0XHRhbmdsZTogYnJ1c2guYnJ1c2hQb3NlQW5nbGUhLFxyXG5cdFx0XHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdGNvbnN0IHRvID0gYnJ1c2gudG9vbE9wdGlvbnM7XHJcblx0XHRcdFx0XHRcdGlmICh0bykge1xyXG5cdFx0XHRcdFx0XHRcdGIudG9vbE9wdGlvbnMgPSB7XHJcblx0XHRcdFx0XHRcdFx0XHRicnVzaFByZXNldDogdG8uYnJ1c2hQcmVzZXQsXHJcblx0XHRcdFx0XHRcdFx0XHRmbG93OiB0by5mbG93IHx8IDAsXHJcblx0XHRcdFx0XHRcdFx0XHRzbW9vdGg6IHRvLlNtb28gfHwgMCxcclxuXHRcdFx0XHRcdFx0XHRcdG1vZGU6IEJsbk0uZGVjb2RlKHRvWydNZCAgJ10gfHwgJ0Jsbk0uTnJtbCcpLCAvLyBzb21ldGltZXMgbW9kZSBpcyBtaXNzaW5nXHJcblx0XHRcdFx0XHRcdFx0XHRvcGFjaXR5OiB0by5PcGN0ID8/IDEsXHJcblx0XHRcdFx0XHRcdFx0XHRzbW9vdGhpbmc6ICEhdG8uc21vb3RoaW5nLFxyXG5cdFx0XHRcdFx0XHRcdFx0c21vb3RoaW5nVmFsdWU6IHRvLnNtb290aGluZ1ZhbHVlIHx8IDAsXHJcblx0XHRcdFx0XHRcdFx0XHRzbW9vdGhpbmdSYWRpdXNNb2RlOiAhIXRvLnNtb290aGluZ1JhZGl1c01vZGUsXHJcblx0XHRcdFx0XHRcdFx0XHRzbW9vdGhpbmdDYXRjaHVwOiAhIXRvLnNtb290aGluZ0NhdGNodXAsXHJcblx0XHRcdFx0XHRcdFx0XHRzbW9vdGhpbmdDYXRjaHVwQXRFbmQ6ICEhdG8uc21vb3RoaW5nQ2F0Y2h1cEF0RW5kLFxyXG5cdFx0XHRcdFx0XHRcdFx0c21vb3RoaW5nWm9vbUNvbXBlbnNhdGlvbjogISF0by5zbW9vdGhpbmdab29tQ29tcGVuc2F0aW9uLFxyXG5cdFx0XHRcdFx0XHRcdFx0cHJlc3N1cmVTbW9vdGhpbmc6ICEhdG8ucHJlc3N1cmVTbW9vdGhpbmcsXHJcblx0XHRcdFx0XHRcdFx0XHR1c2VQcmVzc3VyZU92ZXJyaWRlc1NpemU6ICEhdG8udXNlUHJlc3N1cmVPdmVycmlkZXNTaXplLFxyXG5cdFx0XHRcdFx0XHRcdFx0dXNlUHJlc3N1cmVPdmVycmlkZXNPcGFjaXR5OiAhIXRvLnVzZVByZXNzdXJlT3ZlcnJpZGVzT3BhY2l0eSxcclxuXHRcdFx0XHRcdFx0XHRcdHVzZUxlZ2FjeTogISF0by51c2VMZWdhY3ksXHJcblx0XHRcdFx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0XHRcdFx0aWYgKHRvLnByVnIpIGIudG9vbE9wdGlvbnMuZmxvd0R5bmFtaWNzID0gcGFyc2VEeW5hbWljcyh0by5wclZyKTtcclxuXHRcdFx0XHRcdFx0XHRpZiAodG8ub3BWcikgYi50b29sT3B0aW9ucy5vcGFjaXR5RHluYW1pY3MgPSBwYXJzZUR5bmFtaWNzKHRvLm9wVnIpO1xyXG5cdFx0XHRcdFx0XHRcdGlmICh0by5zelZyKSBiLnRvb2xPcHRpb25zLnNpemVEeW5hbWljcyA9IHBhcnNlRHluYW1pY3ModG8uc3pWcik7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdGJydXNoZXMucHVzaChiKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjYXNlICdwYXR0Jzoge1xyXG5cdFx0XHRcdFx0aWYgKHJlYWRlci5vZmZzZXQgPCBlbmQpIHsgLy8gVE9ETzogY2hlY2sgbXVsdGlwbGUgcGF0dGVybnNcclxuXHRcdFx0XHRcdFx0cGF0dGVybnMucHVzaChyZWFkUGF0dGVybihyZWFkZXIpKTtcclxuXHRcdFx0XHRcdFx0cmVhZGVyLm9mZnNldCA9IGVuZDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjYXNlICdwaHJ5Jzoge1xyXG5cdFx0XHRcdFx0Ly8gVE9ETzogd2hhdCBpcyB0aGlzID9cclxuXHRcdFx0XHRcdGNvbnN0IGRlc2M6IFBocnlEZXNjcmlwdG9yID0gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcik7XHJcblx0XHRcdFx0XHRpZiAob3B0aW9ucy5sb2dNaXNzaW5nRmVhdHVyZXMpIHtcclxuXHRcdFx0XHRcdFx0aWYgKGRlc2MuaGllcmFyY2h5Py5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygndW5oYW5kbGVkIHBocnkgc2VjdGlvbicsIGRlc2MpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBicnVzaCB0eXBlOiAke3R5cGV9YCk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIGFsaWduIHRvIDQgYnl0ZXNcclxuXHRcdFx0d2hpbGUgKHNpemUgJSA0KSB7XHJcblx0XHRcdFx0cmVhZGVyLm9mZnNldCsrO1xyXG5cdFx0XHRcdHNpemUrKztcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0gZWxzZSB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIEFCUiB2ZXJzaW9uICgke3ZlcnNpb259KWApO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHsgc2FtcGxlcywgcGF0dGVybnMsIGJydXNoZXMgfTtcclxufVxyXG4iXSwic291cmNlUm9vdCI6IkM6XFxQcm9qZWN0c1xcZ2l0aHViXFxhZy1wc2RcXHNyYyJ9