ngx-scandoc 1.3.8 → 1.3.9

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.
@@ -120,7 +120,7 @@ export class WebcamComponent extends BaseComponent {
120
120
  };
121
121
  this.video.onplay = () => {
122
122
  this.videoReady.next(true);
123
- console.log(this.video.videoWidth, this.video.videoHeight);
123
+ // console.log(this.video.videoWidth, this.video.videoHeight);
124
124
  this.drawRectangle();
125
125
  };
126
126
  }
@@ -141,7 +141,7 @@ export class WebcamComponent extends BaseComponent {
141
141
  smallSize.h = canvasSmalSize;
142
142
  smallSize.h = canvasSmalSize * aspect;
143
143
  }
144
- console.log('SZ', smallSize);
144
+ //console.log('SZ', smallSize);
145
145
  _canvas.width = videoWidth;
146
146
  _canvas.height = videoHeight;
147
147
  const ctx = _canvas.getContext('2d', {
@@ -210,7 +210,7 @@ export class WebcamComponent extends BaseComponent {
210
210
  this.takeSelfie();
211
211
  return;
212
212
  }
213
- console.warn('SNAP', time);
213
+ // console.warn('SNAP', time);
214
214
  if (!this.showVideo) {
215
215
  return;
216
216
  }
@@ -246,23 +246,22 @@ export class WebcamComponent extends BaseComponent {
246
246
  ctx.clearRect(0, 0, videoWidth, videoHeight);
247
247
  ctxO.clearRect(0, 0, size.w, size.h);
248
248
  ctx.drawImage(this.video, 0, 0);
249
- console.time('drawVideo');
249
+ //console.time('drawVideo');
250
250
  ctxO.drawImage(_canvas, 0, 0, size.w, size.h);
251
- console.timeEnd('drawVideo');
252
- console.time('DRAW');
251
+ //console.timeEnd('drawVideo');
252
+ //console.time('DRAW');
253
253
  const imData = ctx.getImageData(0, 0, videoWidth, videoHeight);
254
- console.timeEnd('DRAW');
255
- console.time('CTX');
254
+ //console.timeEnd('DRAW');
255
+ //console.time('CTX');
256
256
  const resize = canvas.toDataURL(mimeType, 1);
257
- console.timeEnd('CTX');
257
+ //console.timeEnd('CTX');
258
258
  const currentTime = new Date().getTime();
259
259
  const diff = currentTime - time;
260
260
  // total time for pack one image
261
261
  const drawTime = Date.now() - drawStart;
262
- console.warn('DRAW TIME', drawTime);
262
+ //console.warn('DRAW TIME', drawTime);
263
263
  const delayMax = drawTime < 60 ? 100 : 200;
264
264
  const delay = diff > delayMax ? 0 : delayMax - diff;
265
- console.warn(this.chunks);
266
265
  const timeout = setTimeout(() => {
267
266
  this.imageCapture.emit(new WebcamImage('', mimeType, imData, resize));
268
267
  clearTimeout(timeout);
@@ -291,10 +290,8 @@ export class WebcamComponent extends BaseComponent {
291
290
  padding = 40;
292
291
  }
293
292
  const ctx = _canvas.getContext('2d');
294
- console.log(ctx);
295
293
  ctx.clearRect(0, 0, _canvas.width, _canvas.height);
296
294
  const { width, height } = _canvas;
297
- console.log(width, height);
298
295
  const { videoWidth, videoHeight } = this.video;
299
296
  const docSize = this.type === 'selfie' ? 1 : 86 / 55;
300
297
  const aspect = videoWidth / videoHeight;
@@ -327,18 +324,19 @@ export class WebcamComponent extends BaseComponent {
327
324
  }
328
325
  h = Math.floor(h);
329
326
  w = Math.floor(w);
330
- console.log(_width, _height);
331
327
  const left = Math.floor((width - w) / 2);
332
328
  const top = Math.floor((height - h) / 2);
333
- ctx.strokeStyle = 'red';
329
+ ctx.strokeStyle = 'white';
334
330
  // ctx.strokeRect(left, top, _width, _height);
335
- ctx.shadowColor = 'red';
331
+ ctx.fillStyle = 'rgba(255, 255, 255, 0.1)';
332
+ // ctx.shadowColor = 'white';
336
333
  ctx.shadowBlur = 15;
337
334
  ctx.beginPath();
338
335
  // Draw using 5px for border radius on all sides
339
336
  // stroke it but no fill
340
337
  ctx.roundRect(left, top, w, h, 5);
341
338
  ctx.stroke();
339
+ ctx.fill();
342
340
  this.cameraProvider.rectPosition = {
343
341
  l: left,
344
342
  t: top,
@@ -394,4 +392,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
394
392
  }], initError: [{
395
393
  type: Output
396
394
  }] } });
397
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9jb3JlL2NvbXBvbmVudHMvd2ViY2FtL3dlYmNhbS93ZWJjYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vd2ViY2FtL3dlYmNhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUF5QyxNQUFNLE1BQU0sQ0FBQztBQVluRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVVyRCxNQUFNLE9BQU8sZUFDWCxTQUFRLGFBQWE7SUF1RHJCLFlBQ1Msa0JBQXNDLEVBQ3RDLFFBQWtCLEVBQ2pCLEVBQXFCLEVBQ3JCLElBQVksRUFFWixjQUF3QztRQUVoRCxLQUFLLEVBQUUsQ0FBQztRQVBELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNqQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBRVosbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBekRsRCxlQUFVLEdBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGVBQVUsR0FBUTtZQUNoQixHQUFH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QVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFUyxRQUFRO3NCQUFyRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRW5CLGNBQWM7c0JBQTlCLE1BQU07Z0JBRVUsVUFBVTtzQkFBMUIsTUFBTTtnQkFFVSxZQUFZO3NCQUE1QixNQUFNO2dCQUdVLFNBQVM7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2ViY2FtSW5pdEVycm9yIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1pbml0LWVycm9yJztcbmltcG9ydCB7IFdlYmNhbUltYWdlIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1pbWFnZSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXZWJjYW1VdGlsIH0gZnJvbSAnLi4vdXRpbC93ZWJjYW0udXRpbCc7XG5pbXBvcnQgeyBXZWJjYW1NaXJyb3JQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1taXJyb3ItcHJvcGVydGllcyc7XG5pbXBvcnQge1xuICBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gIEJyZWFrcG9pbnRzLFxuICBCcmVha3BvaW50U3RhdGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgd29ya2VydGV4dCB9IGZyb20gJy4uLy4uLy4uL2FwcC53b3JrZXInO1xuaW1wb3J0IHsgTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vcHJvdmlkZXJzL2NhbWVyYS5wcm92aWRlcic7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS5jb21wb25lbnQnO1xuXG5kZWNsYXJlIHZhciBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1zY2FuZG9jLXdlYmNhbScsXG4gIHRlbXBsYXRlVXJsOiAnLi93ZWJjYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93ZWJjYW0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFdlYmNhbUNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSB0cmlnZ2VyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBjYW52YXNTaXplOiBhbnkgPSB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcbiAgc2hvd1ZpZGVvID0gZmFsc2U7XG5cbiAgY2FudmFzRGF0YTogYW55ID0ge1xuICAgIGN0eDogbnVsbCxcbiAgICBjdHhPOiBudWxsLFxuICB9O1xuXG4gIG1lZGlhU3RyZWFtITogTWVkaWFTdHJlYW07XG4gIEBJbnB1dCgpIGltYWdlSGFuZGxlciE6IFN1YmplY3Q8YW55PjtcblxuICBASW5wdXQoKSBwdWJsaWMgdHlwZT86ICdkb2N1bWVudCcgfCAnc2VsZmllJyB8ICdtYW51YWwnO1xuXG4gIEBJbnB1dCgpIHRyaWdnZXIhOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIC8vIHB1YmxpYyBzZXQgdHJpZ2dlcih0cmlnZ2VyOiBPYnNlcnZhYmxlPG51bWJlcj4pIHtcbiAgLy8gICBpZiAodGhpcy50cmlnZ2VyU3Vic2NyaXB0aW9uKSB7XG4gIC8vICAgICB0aGlzLnRyaWdnZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgLy8gICB9XG5cbiAgLy8gICAvLyBTdWJzY3JpYmUgdG8gZXZlbnRzIGZyb20gdGhpcyBPYnNlcnZhYmxlIHRvIHRha2Ugc25hcHNob3RzXG4gIC8vICAgdGhpcy50cmlnZ2VyU3Vic2NyaXB0aW9uID0gdHJpZ2dlci5zdWJzY3JpYmUoKHRpbWUpID0+IHtcbiAgLy8gICAgIHRoaXMudGFrZVNuYXBzaG90KHRpbWUpO1xuICAvLyAgIH0pO1xuICAvLyB9XG4gIHJlc2l6ZVRpbWVvdXQ6IGFueTtcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKCkge1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIucmVjdFBvc2l0aW9uLnQgPSAwO1xuICAgIC8vIHRoaXMudmlkZW9SZWFkeS5uZXh0KGZhbHNlKTtcbiAgICBpZiAodGhpcy5yZXNpemVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICB9XG4gICAgdGhpcy5yZXNpemVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRyYXdSZWN0YW5nbGUoKTtcbiAgICB9LCA1MCk7XG4gIH1cblxuICBwcml2YXRlIGNodW5rczphbnkgPSBbXTtcbiAgQFZpZXdDaGlsZCgnY2FudmFzJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBjYW52YXM6IGFueTtcblxuICBAVmlld0NoaWxkKCd2aWRlbycsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgdmlkZW9SZWY6IGFueTtcblxuICBAT3V0cHV0KCkgcHVibGljIGNhbWVyYVN3aXRjaGVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdmlkZW9SZWFkeTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaW1hZ2VDYXB0dXJlOiBFdmVudEVtaXR0ZXI8V2ViY2FtSW1hZ2U+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFdlYmNhbUltYWdlPigpO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgaW5pdEVycm9yOiBFdmVudEVtaXR0ZXI8V2ViY2FtSW5pdEVycm9yPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxXZWJjYW1Jbml0RXJyb3I+KCk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICBwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuXG4gICAgcHJpdmF0ZSBjYW1lcmFQcm92aWRlcjogTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUud2FybignW3ZpZGVvXSBzdGFydCcpO1xuICAgIC8vIGluaXRpYWwgbG9hZFxuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIuZ2V0RGV2aWNlcygpKS5zdWJzY3JpYmUoKHJlc3ApID0+IHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH0pO1xuXG4gICAgLy8gY2FtZXJhIHN3aXRjaFxuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIud2ViY2FtT2JzZXJ2YWJsZSkuc3Vic2NyaWJlKChkZXZpY2UpID0+IHtcbiAgICAgIGNvbnN0IHZpZGVvVHJhY2tDb25zdHJhaW50czogYW55ID0gdGhpcy5zZXRDb25zdHJhaW50cygpO1xuICAgICAgdGhpcy5zdG9wQWxsVHJhY2tzKCk7XG4gICAgICB0aGlzLnNob3dWaWRlbyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB2aWRlb1RyYWNrQ29uc3RyYWludHMuZGV2aWNlSWQgPSBkZXZpY2U7XG4gICAgICB0aGlzLnNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50cyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9fc3Vicyh0aGlzLnRyaWdnZXIpLnN1YnNjcmliZSgodGltZSkgPT4gdGhpcy50YWtlU25hcHNob3QodGltZSkpO1xuICB9XG5cbiAgcHVibGljIGdldCB2aWRlbygpIHtcbiAgICByZXR1cm4gdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50O1xuICB9XG4gIGdldCBpc01vYmlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5BTkRST0lEIHx8IHRoaXMucGxhdGZvcm0uSU9TO1xuICB9XG4gIHByaXZhdGUgc2V0Q29uc3RyYWludHMoKSB7XG4gICAgY29uc3Qgb3V0OiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzID0ge307XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgb3V0LnZpZGVvID0geyBoZWlnaHQ6IHsgaWRlYWw6IDE2MDAgfSwgd2lkdGg6IHsgaWRlYWw6IDE2MDAgfSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dC52aWRlbyA9IHsgaGVpZ2h0OiB7IGlkZWFsOiAxMDgwIH0sIHdpZHRoOiB7IGlkZWFsOiAxOTIwIH0gfTtcbiAgICAgICAgfVxuICAgICAgICBvdXQudmlkZW8uZmFjaW5nTW9kZSA9ICdlbnZpcm9ubWVudCc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzZWxmaWUnOlxuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIG91dC52aWRlbyA9IHsgaGVpZ2h0OiB7IGlkZWFsOiAxNjAwIH0sIHdpZHRoOiB7IGlkZWFsOiAxNjAwIH0gfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQudmlkZW8gPSB7IGhlaWdodDogeyBpZGVhbDogMTA4MCB9LCB3aWR0aDogeyBpZGVhbDogMTkyMCB9IH07XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnZpZGVvLmZhY2luZ01vZGUgPSAndXNlcic7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQudmlkZW87XG4gIH1cblxuICBwcml2YXRlIGdldCBhY3RpdmVUcmFja1NldHRpbmdzKCkge1xuICAgIHJldHVybiB0aGlzLm1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKTtcbiAgfVxuICBwcml2YXRlIGdldCBhY3RpdmVUcmFja0NhcGFiaWxpdGllcygpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMubWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRDYXBhYmlsaXRpZXMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIGNvbnN0IHZpZGVvVHJhY2tDb25zdHJhaW50cyA9IHRoaXMuc2V0Q29uc3RyYWludHMoKTtcblxuICAgIHRoaXMuc2V0dXAodmlkZW9UcmFja0NvbnN0cmFpbnRzKTtcbiAgfVxuICBwcml2YXRlIHNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50czogYW55KSB7XG4gICAgdGhpcy5fX3N1YnMoXG4gICAgICBmcm9tKFxuICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSg8TWVkaWFTdHJlYW1Db25zdHJhaW50cz57XG4gICAgICAgICAgdmlkZW86IHZpZGVvVHJhY2tDb25zdHJhaW50cyxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApLnN1YnNjcmliZSgoc3RyZWFtOiBNZWRpYVN0cmVhbSkgPT4ge1xuICAgICAgdGhpcy5tZWRpYVN0cmVhbSA9IHN0cmVhbTtcbiAgICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuZGV2aWNlSWQgPSB0aGlzLmFjdGl2ZVRyYWNrU2V0dGluZ3MuZGV2aWNlSWQ7XG4gICAgICB0aGlzLnN0YXJ0VmlkZW8oKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRWaWRlbygpIHtcbiAgICBjb25zb2xlLmxvZygnU1RBUlQgVklERU8nKTtcbiAgICB0aGlzLnZpZGVvLnNyY09iamVjdCA9IHRoaXMubWVkaWFTdHJlYW07XG5cbiAgICB0aGlzLnZpZGVvLm9ubG9hZGVkbWV0YWRhdGEgPSAoZGF0YTogYW55KSA9PiB7XG4gICAgICAvLyAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICB0aGlzLnZpZGVvLnBsYXkoKTtcbiAgICAgIHRoaXMuc2hvd1ZpZGVvID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgY29uc29sZS5sb2coJ1ZJREVPIFBMQVknKTtcbiAgICB9O1xuICAgIHRoaXMudmlkZW8ub25wbGF5ID0gKCkgPT4ge1xuICAgICAgdGhpcy52aWRlb1JlYWR5Lm5leHQodHJ1ZSk7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnZpZGVvLnZpZGVvV2lkdGgsIHRoaXMudmlkZW8udmlkZW9IZWlnaHQpO1xuICAgICAgdGhpcy5kcmF3UmVjdGFuZ2xlKCk7XG4gICAgfTtcbiAgfVxuICBzZXRDYW52YXMoKSB7XG4gICAgbGV0IF9jYW52YXM6IEhUTUxDYW52YXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vdGhpcy5jYW52YXNTbmFwc2hvdC5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3QgeyB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCB9ID0gdGhpcy52aWRlbztcblxuICAgIGNvbnN0IGFzcGVjdCA9IHZpZGVvV2lkdGggLyB2aWRlb0hlaWdodDtcblxuICAgIGNvbnN0IGNhbnZhc1NtYWxTaXplID0gMzg0O1xuICAgIGNvbnN0IHNtYWxsU2l6ZSA9IHtcbiAgICAgIHc6IDAsXG4gICAgICBoOiAwLFxuICAgIH07XG5cbiAgICBpZiAodmlkZW9XaWR0aCA+PSB2aWRlb0hlaWdodCkge1xuICAgICAgc21hbGxTaXplLncgPSBjYW52YXNTbWFsU2l6ZTtcbiAgICAgIHNtYWxsU2l6ZS5oID0gY2FudmFzU21hbFNpemUgLyBhc3BlY3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNtYWxsU2l6ZS5oID0gY2FudmFzU21hbFNpemU7XG4gICAgICBzbWFsbFNpemUuaCA9IGNhbnZhc1NtYWxTaXplICogYXNwZWN0O1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdTWicsIHNtYWxsU2l6ZSk7XG5cbiAgICBfY2FudmFzLndpZHRoID0gdmlkZW9XaWR0aDtcbiAgICBfY2FudmFzLmhlaWdodCA9IHZpZGVvSGVpZ2h0O1xuICAgIGNvbnN0IGN0eDogYW55ID0gX2NhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtcbiAgICAgIGFscGhhOiBmYWxzZSxcbiAgICAgIHBvd2VyUHJlZmVyZW5jZTogJ2hpZ2gtcGVyZm9ybWFuY2UnLFxuICAgICAgYW50aWFsaWFzOiBmYWxzZSxcbiAgICAgIGRlcHRoOiBmYWxzZSxcbiAgICAgIGRlc3luY2hyb25pemVkOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vIG5lZWRzIGFuIGluaXRpYWwgc2l6ZVxuICAgIGNhbnZhcy5oZWlnaHQgPSBzbWFsbFNpemUuaDtcbiAgICBjYW52YXMud2lkdGggPSBzbWFsbFNpemUudztcblxuICAgIGNvbnN0IGN0eE86IGFueSA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcsIHtcbiAgICAgIGFscGhhOiBmYWxzZSxcbiAgICAgIHBvd2VyUHJlZmVyZW5jZTogJ2hpZ2gtcGVyZm9ybWFuY2UnLFxuICAgICAgYW50aWFsaWFzOiBmYWxzZSxcbiAgICAgIGRlcHRoOiBmYWxzZSxcbiAgICAgIGRlc3luY2hyb25pemVkOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYW52YXNEYXRhLmN0eCA9IGN0eDtcbiAgICB0aGlzLmNhbnZhc0RhdGEuY3R4TyA9IGN0eE87XG4gICAgdGhpcy5jYW52YXNEYXRhLmNhbnZhcyA9IGNhbnZhcztcbiAgICB0aGlzLmNhbnZhc0RhdGEuX2NhbnZhcyA9IF9jYW52YXM7XG4gICAgdGhpcy5jYW52YXNEYXRhLnNpemUgPSBzbWFsbFNpemU7XG5cbiAgICAvLyBjb25zdCBzdHJlYW0gPSB0aGlzLnZpZGVvLmNhcHR1cmVTdHJlYW0oNSk7XG5cblxuXG4gICAgLy8gY29uc3QgbWVkaWFSZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyKHN0cmVhbSk7XG5cblxuICAgIC8vIG1lZGlhUmVjb3JkZXIuc3RhcnQoKTtcblxuICAgIC8vIG1lZGlhUmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gKGU6YW55KSA9PiB7XG4gICAgLy8gICBjb25zb2xlLmxvZyhlKVxuICAgIC8vICAgdGhpcy5jaHVua3MucHVzaChlLmRhdGEpO1xuXG4gICAgLy8gICB2YXIgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZS5kYXRhKTtcbiAgICAvLyAgIHZhciBhbmNob3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgLy8gICBhbmNob3IuZG93bmxvYWQgPSAnbXlmaWxlLndlYm0nO1xuICAgIC8vICAgYW5jaG9yLmhyZWYgPSB1cmw7XG4gICAgLy8gICBhbmNob3IuY2xpY2soKTtcbiAgICAvLyB9O1xuICB9XG5cbiAgcHJpdmF0ZSB0YWtlU2VsZmllKCkge1xuICAgIGNvbnN0IG1pbWVUeXBlOiBzdHJpbmcgPSAnaW1hZ2UvanBlZyc7XG4gICAgY29uc3QgeyB2aWRlb1dpZHRoLCBvZmZzZXRXaWR0aCwgdmlkZW9IZWlnaHQgfSA9IHRoaXMudmlkZW87XG5cbiAgICBsZXQgX2NhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy90aGlzLmNhbnZhc1NuYXBzaG90Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCB7IHcsIGggfSA9IHRoaXMuY2FtZXJhUHJvdmlkZXIucmVjdFBvc2l0aW9uO1xuXG4gICAgY29uc3QgYXNwZWN0ID0gdmlkZW9XaWR0aCAvIG9mZnNldFdpZHRoO1xuXG4gICAgLy8gY29uc29sZS5sb2codmlkZW9XaWR0aCwgb2Zmc2V0V2lkdGgsIGwsIHQsIHcsIGgpO1xuXG4gICAgX2NhbnZhcy53aWR0aCA9IHcgKiBhc3BlY3Q7XG4gICAgX2NhbnZhcy5oZWlnaHQgPSBoICogYXNwZWN0O1xuXG4gICAgY29uc3QgZHggPSB2aWRlb1dpZHRoIC0gdyAqIGFzcGVjdDtcbiAgICBjb25zdCBkeSA9IHZpZGVvSGVpZ2h0IC0gaCAqIGFzcGVjdDtcbiAgICBjb25zdCB4ID0gZHggLyAyO1xuICAgIGNvbnN0IHkgPSBkeSAvIDI7XG5cbiAgICBjb25zdCBjdHg6IGFueSA9IF9jYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICBhbHBoYTogZmFsc2UsXG4gICAgICBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICBkZXB0aDogZmFsc2UsXG4gICAgICBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGlmIChjdHgpIHtcbiAgICAgIGN0eC5kcmF3SW1hZ2UoXG4gICAgICAgIHRoaXMudmlkZW8sXG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHcgKiBhc3BlY3QsXG4gICAgICAgIGggKiBhc3BlY3QsXG4gICAgICAgIDAsXG4gICAgICAgIDAsXG4gICAgICAgIHcgKiBhc3BlY3QsXG4gICAgICAgIGggKiBhc3BlY3RcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGltZ0FzVXJsOiBhbnkgPSBfY2FudmFzLnRvRGF0YVVSTChtaW1lVHlwZSwgMSk7XG5cbiAgICAgIHRoaXMuaW1hZ2VDYXB0dXJlLmVtaXQoXG4gICAgICAgIG5ldyBXZWJjYW1JbWFnZShpbWdBc1VybCwgbWltZVR5cGUsIG5ldyBJbWFnZURhdGEoMSwgMSksIG51bGwpXG4gICAgICApO1xuICAgIH1cbiAgfVxuICB0YWtlU25hcHNob3QodGltZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMudHlwZSAhPT0gJ2RvY3VtZW50Jykge1xuICAgICAgdGhpcy50YWtlU2VsZmllKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnNvbGUud2FybignU05BUCcsIHRpbWUpO1xuICAgIGlmICghdGhpcy5zaG93VmlkZW8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbnZhc1NtYWxTaXplID0gMzg0O1xuXG4gICAgICBjb25zdCBtaW1lVHlwZTogc3RyaW5nID0gJ2ltYWdlL2pwZWcnO1xuXG4gICAgICAvLyBsZXQgX2NhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy90aGlzLmNhbnZhc1NuYXBzaG90Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIGNvbnN0IHsgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQgfSA9IHRoaXMudmlkZW87XG5cbiAgICAgIC8vIF9jYW52YXMud2lkdGggPSB2aWRlb1dpZHRoO1xuICAgICAgLy8gX2NhbnZhcy5oZWlnaHQgPSB2aWRlb0hlaWdodDtcbiAgICAgIC8vIGNvbnNvbGUubG9nKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcblxuICAgICAgLy8gY29uc3QgY3R4OiBhbnkgPSBfY2FudmFzLmdldENvbnRleHQoJzJkJywge1xuICAgICAgLy8gICBhbHBoYTogZmFsc2UsXG4gICAgICAvLyAgIHBvd2VyUHJlZmVyZW5jZTogJ2hpZ2gtcGVyZm9ybWFuY2UnLFxuICAgICAgLy8gICBhbnRpYWxpYXM6IGZhbHNlLFxuICAgICAgLy8gICBkZXB0aDogZmFsc2UsXG4gICAgICAvLyAgIGRlc3luY2hyb25pemVkOiB0cnVlLFxuICAgICAgLy8gfSk7XG5cbiAgICAgIC8vIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvLyBuZWVkcyBhbiBpbml0aWFsIHNpemVcbiAgICAgIC8vIGNhbnZhcy5oZWlnaHQgPSBjYW52YXNTbWFsU2l6ZTtcbiAgICAgIC8vIGNhbnZhcy53aWR0aCA9IGNhbnZhc1NtYWxTaXplO1xuXG4gICAgICAvLyBjb25zdCBjdHhPOiBhbnkgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICAvLyAgIGFscGhhOiBmYWxzZSxcbiAgICAgIC8vICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXG4gICAgICAvLyAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICAvLyAgIGRlcHRoOiBmYWxzZSxcbiAgICAgIC8vICAgZGVzeW5jaHJvbml6ZWQ6IHRydWUsXG4gICAgICAvLyB9KTtcblxuICAgICAgY29uc3QgeyBjdHgsIGN0eE8sIGNhbnZhcywgX2NhbnZhcywgc2l6ZSB9ID0gdGhpcy5jYW52YXNEYXRhO1xuXG4gICAgICBpZiAoY3R4ICYmIGN0eE8pIHtcbiAgICAgICAgY3R4LmltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBkcmF3U3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcbiAgICAgICAgY3R4Ty5jbGVhclJlY3QoMCwgMCwgc2l6ZS53LCBzaXplLmgpO1xuXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UodGhpcy52aWRlbywgMCwgMCk7XG4gICAgICAgIGNvbnNvbGUudGltZSgnZHJhd1ZpZGVvJyk7XG4gICAgICAgIGN0eE8uZHJhd0ltYWdlKF9jYW52YXMsIDAsIDAsIHNpemUudywgc2l6ZS5oKTtcbiAgICAgICAgY29uc29sZS50aW1lRW5kKCdkcmF3VmlkZW8nKTtcbiAgICAgICAgY29uc29sZS50aW1lKCdEUkFXJyk7XG5cbiAgICAgICAgY29uc3QgaW1EYXRhOiBhbnkgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcblxuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ0RSQVcnKTtcblxuICAgICAgICBjb25zb2xlLnRpbWUoJ0NUWCcpO1xuXG4gICAgICAgIGNvbnN0IHJlc2l6ZSA9IGNhbnZhcy50b0RhdGFVUkwobWltZVR5cGUsIDEpO1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ0NUWCcpO1xuICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBkaWZmID0gY3VycmVudFRpbWUgLSB0aW1lO1xuXG4gICAgICAgIC8vIHRvdGFsIHRpbWUgZm9yIHBhY2sgb25lIGltYWdlXG4gICAgICAgIGNvbnN0IGRyYXdUaW1lID0gRGF0ZS5ub3coKSAtIGRyYXdTdGFydDtcblxuICAgICAgICBjb25zb2xlLndhcm4oJ0RSQVcgVElNRScsIGRyYXdUaW1lKTtcbiAgICAgICAgY29uc3QgZGVsYXlNYXggPSBkcmF3VGltZSA8IDYwID8gMTAwIDogMjAwO1xuXG4gICAgICAgIGNvbnN0IGRlbGF5ID0gZGlmZiA+IGRlbGF5TWF4ID8gMCA6IGRlbGF5TWF4IC0gZGlmZjtcblxuICAgICAgICBjb25zb2xlLndhcm4odGhpcy5jaHVua3MpXG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmltYWdlQ2FwdHVyZS5lbWl0KG5ldyBXZWJjYW1JbWFnZSgnJywgbWltZVR5cGUsIGltRGF0YSwgcmVzaXplKSk7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICB9LCBkZWxheSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BBbGxUcmFja3MoKSB7XG4gICAgdGhpcy5zaG93VmlkZW8gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5tZWRpYVN0cmVhbSAmJiB0aGlzLm1lZGlhU3RyZWFtLmdldFRyYWNrcykge1xuICAgICAgLy8gZ2V0VHJhY2tzKCkgcmV0dXJucyBhbGwgbWVkaWEgdHJhY2tzICh2aWRlbythdWRpbylcblxuICAgICAgdGhpcy5tZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjazogTWVkaWFTdHJlYW1UcmFjaykgPT4ge1xuICAgICAgICB0cmFjay5zdG9wKCk7XG4gICAgICAgIHRoaXMudmlkZW8uc3JjT2JqZWN0LnJlbW92ZVRyYWNrKHRyYWNrKTtcbiAgICAgICAgdGhpcy5tZWRpYVN0cmVhbS5yZW1vdmVUcmFjayh0cmFjayk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudmlkZW8uc3JjT2JqZWN0ID0gbnVsbDtcblxuICAgICAgdGhpcy52aWRlby5sb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkcmF3UmVjdGFuZ2xlKCkge1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgY29uc3QgX2NhbnZhcyA9IHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBsZXQgcGFkZGluZyA9IDEwO1xuICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlICYmIF9jYW52YXMud2lkdGggIT09IF9jYW52YXMuaGVpZ2h0KSB7XG4gICAgICAgIHBhZGRpbmcgPSA0MDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN0eCA9IF9jYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgIGNvbnNvbGUubG9nKGN0eCk7XG4gICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIF9jYW52YXMud2lkdGgsIF9jYW52YXMuaGVpZ2h0KTtcblxuICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBfY2FudmFzO1xuXG4gICAgICBjb25zb2xlLmxvZyh3aWR0aCwgaGVpZ2h0KTtcblxuICAgICAgY29uc3QgeyB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCB9ID0gdGhpcy52aWRlbztcblxuICAgICAgY29uc3QgZG9jU2l6ZSA9IHRoaXMudHlwZSA9PT0gJ3NlbGZpZScgPyAxIDogODYgLyA1NTtcblxuICAgICAgY29uc3QgYXNwZWN0ID0gdmlkZW9XaWR0aCAvIHZpZGVvSGVpZ2h0O1xuICAgICAgbGV0IF9oZWlnaHQ7XG4gICAgICBsZXQgX3dpZHRoO1xuXG4gICAgICBpZiAodmlkZW9XaWR0aCA+PSB2aWRlb0hlaWdodCkge1xuICAgICAgICBfd2lkdGggPSB3aWR0aDtcblxuICAgICAgICBfaGVpZ2h0ID0gX3dpZHRoIC8gYXNwZWN0O1xuXG4gICAgICAgIGlmIChfaGVpZ2h0ID4gaGVpZ2h0KSB7XG4gICAgICAgICAgX2hlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICBfd2lkdGggPSBhc3BlY3QgKiBfaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICBfd2lkdGggPSBhc3BlY3QgKiBfaGVpZ2h0O1xuICAgICAgICBpZiAoX3dpZHRoID4gd2lkdGgpIHtcbiAgICAgICAgICBfd2lkdGggPSB3aWR0aDtcbiAgICAgICAgICBfaGVpZ2h0ID0gX3dpZHRoIC8gYXNwZWN0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgdywgaDtcblxuICAgICAgaWYgKF93aWR0aCA8PSBfaGVpZ2h0KSB7XG4gICAgICAgIHcgPSBfd2lkdGggLSAyICogcGFkZGluZztcbiAgICAgICAgaCA9IHcgLyBkb2NTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaCA9IF9oZWlnaHQgLSAyICogcGFkZGluZztcbiAgICAgICAgdyA9IGRvY1NpemUgKiBoO1xuICAgICAgfVxuXG4gICAgICBoID0gTWF0aC5mbG9vcihoKTtcbiAgICAgIHcgPSBNYXRoLmZsb29yKHcpO1xuXG4gICAgICBjb25zb2xlLmxvZyhfd2lkdGgsIF9oZWlnaHQpO1xuXG4gICAgICBjb25zdCBsZWZ0ID0gTWF0aC5mbG9vcigod2lkdGggLSB3KSAvIDIpO1xuICAgICAgY29uc3QgdG9wID0gTWF0aC5mbG9vcigoaGVpZ2h0IC0gaCkgLyAyKTtcblxuICAgICAgY3R4LnN0cm9rZVN0eWxlID0gJ3JlZCc7XG5cbiAgICAgIC8vIGN0eC5zdHJva2VSZWN0KGxlZnQsIHRvcCwgX3dpZHRoLCBfaGVpZ2h0KTtcblxuICAgICAgY3R4LnNoYWRvd0NvbG9yID0gJ3JlZCc7XG4gICAgICBjdHguc2hhZG93Qmx1ciA9IDE1O1xuICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuXG4gICAgICAvLyBEcmF3IHVzaW5nIDVweCBmb3IgYm9yZGVyIHJhZGl1cyBvbiBhbGwgc2lkZXNcbiAgICAgIC8vIHN0cm9rZSBpdCBidXQgbm8gZmlsbFxuICAgICAgY3R4LnJvdW5kUmVjdChsZWZ0LCB0b3AsIHcsIGgsIDUpO1xuICAgICAgY3R4LnN0cm9rZSgpO1xuXG4gICAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLnJlY3RQb3NpdGlvbiA9IHtcbiAgICAgICAgbDogbGVmdCxcbiAgICAgICAgdDogdG9wLFxuICAgICAgICB3LFxuICAgICAgICBoLFxuICAgICAgICBfdzogX3dpZHRoLFxuICAgICAgICBfaDogX2hlaWdodCxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2V0Q2FudmFzKCk7XG4gICAgICAvLyBjdHguc3Ryb2tlKCk7XG4gICAgfSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52aWRlby5wYXVzZSgpO1xuXG4gICAgLy8gdGhpcy52aWRlby5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjazogYW55KSA9PiB7XG4gICAgLy8gICB0cmFjay5zdG9wKCk7XG4gICAgLy8gICB0aGlzLnZpZGVvLnNyY09iamVjdC5yZW1vdmVUcmFjayh0cmFjayk7XG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLnN0b3BBbGxUcmFja3MoKTtcblxuICAgIGlmICh0aGlzLnRyaWdnZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudHJpZ2dlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLl9fZGVzdHJveSgpO1xuXG4gICAgY29uc29sZS53YXJuKCdbVklERU9dIGRlc3Ryb3llZCcpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid2ViY2FtLXdyYXBwZXJcIj5cbiAgPHZpZGVvICN2aWRlbyBhdXRvcGxheSBtdXRlZCBzdHlsZT1cImRpc3BsYXk6IGJsb2NrXCIgcGxheXNpbmxpbmU+PC92aWRlbz5cblxuICA8ZGl2IGNsYXNzPVwicmVjdGFuZ2xlXCI+XG4gICAgPGNhbnZhc1xuICAgICAgI2NhbnZhc1xuICAgICAgW25nU3R5bGVdPVwieyB2aXNpYmlsaXR5OiBzaG93VmlkZW8gPyAndmlzaWJsZScgOiAnaGlkZGVuJyB9XCJcbiAgICAgIFt3aWR0aF09XCJ2aWRlby5vZmZzZXRXaWR0aFwiXG4gICAgICBbaGVpZ2h0XT1cInZpZGVvLm9mZnNldEhlaWdodFwiXG4gICAgPjwvY2FudmFzPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
395
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9jb3JlL2NvbXBvbmVudHMvd2ViY2FtL3dlYmNhbS93ZWJjYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL2NvcmUvY29tcG9uZW50cy93ZWJjYW0vd2ViY2FtL3dlYmNhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUF5QyxNQUFNLE1BQU0sQ0FBQztBQVluRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVVyRCxNQUFNLE9BQU8sZUFDWCxTQUFRLGFBQWE7SUF1RHJCLFlBQ1Msa0JBQXNDLEVBQ3RDLFFBQWtCLEVBQ2pCLEVBQXFCLEVBQ3JCLElBQVksRUFFWixjQUF3QztRQUVoRCxLQUFLLEVBQUUsQ0FBQztRQVBELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNqQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBRVosbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBekRsRCxlQUFVLEdBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLGVBQVUsR0FBUTtZQUNoQixHQUFH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QUMsbUJBQW1CLEVBQUU7WUFDNUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWpCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNwQyxDQUFDOzs0R0F4ZVUsZUFBZTtnR0FBZixlQUFlLDRpQkNyQzVCLCtWQVlBOzJGRHlCYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNOzROQWdCdEMsWUFBWTtzQkFBcEIsS0FBSztnQkFFVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFhTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWFNLE1BQU07c0JBQXBELFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFUyxRQUFRO3NCQUFyRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRW5CLGNBQWM7c0JBQTlCLE1BQU07Z0JBRVUsVUFBVTtzQkFBMUIsTUFBTTtnQkFFVSxZQUFZO3NCQUE1QixNQUFNO2dCQUdVLFNBQVM7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2ViY2FtSW5pdEVycm9yIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1pbml0LWVycm9yJztcbmltcG9ydCB7IFdlYmNhbUltYWdlIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1pbWFnZSc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBXZWJjYW1VdGlsIH0gZnJvbSAnLi4vdXRpbC93ZWJjYW0udXRpbCc7XG5pbXBvcnQgeyBXZWJjYW1NaXJyb3JQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vZG9tYWluL3dlYmNhbS1taXJyb3ItcHJvcGVydGllcyc7XG5pbXBvcnQge1xuICBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gIEJyZWFrcG9pbnRzLFxuICBCcmVha3BvaW50U3RhdGUsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgd29ya2VydGV4dCB9IGZyb20gJy4uLy4uLy4uL2FwcC53b3JrZXInO1xuaW1wb3J0IHsgTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vcHJvdmlkZXJzL2NhbWVyYS5wcm92aWRlcic7XG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS5jb21wb25lbnQnO1xuXG5kZWNsYXJlIHZhciBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25neC1zY2FuZG9jLXdlYmNhbScsXG4gIHRlbXBsYXRlVXJsOiAnLi93ZWJjYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93ZWJjYW0uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFdlYmNhbUNvbXBvbmVudFxuICBleHRlbmRzIEJhc2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgcHJpdmF0ZSB0cmlnZ2VyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBjYW52YXNTaXplOiBhbnkgPSB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcbiAgc2hvd1ZpZGVvID0gZmFsc2U7XG5cbiAgY2FudmFzRGF0YTogYW55ID0ge1xuICAgIGN0eDogbnVsbCxcbiAgICBjdHhPOiBudWxsLFxuICB9O1xuXG4gIG1lZGlhU3RyZWFtITogTWVkaWFTdHJlYW07XG4gIEBJbnB1dCgpIGltYWdlSGFuZGxlciE6IFN1YmplY3Q8YW55PjtcblxuICBASW5wdXQoKSBwdWJsaWMgdHlwZT86ICdkb2N1bWVudCcgfCAnc2VsZmllJyB8ICdtYW51YWwnO1xuXG4gIEBJbnB1dCgpIHRyaWdnZXIhOiBPYnNlcnZhYmxlPG51bWJlcj47XG4gIC8vIHB1YmxpYyBzZXQgdHJpZ2dlcih0cmlnZ2VyOiBPYnNlcnZhYmxlPG51bWJlcj4pIHtcbiAgLy8gICBpZiAodGhpcy50cmlnZ2VyU3Vic2NyaXB0aW9uKSB7XG4gIC8vICAgICB0aGlzLnRyaWdnZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgLy8gICB9XG5cbiAgLy8gICAvLyBTdWJzY3JpYmUgdG8gZXZlbnRzIGZyb20gdGhpcyBPYnNlcnZhYmxlIHRvIHRha2Ugc25hcHNob3RzXG4gIC8vICAgdGhpcy50cmlnZ2VyU3Vic2NyaXB0aW9uID0gdHJpZ2dlci5zdWJzY3JpYmUoKHRpbWUpID0+IHtcbiAgLy8gICAgIHRoaXMudGFrZVNuYXBzaG90KHRpbWUpO1xuICAvLyAgIH0pO1xuICAvLyB9XG4gIHJlc2l6ZVRpbWVvdXQ6IGFueTtcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKCkge1xuICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIucmVjdFBvc2l0aW9uLnQgPSAwO1xuICAgIC8vIHRoaXMudmlkZW9SZWFkeS5uZXh0KGZhbHNlKTtcbiAgICBpZiAodGhpcy5yZXNpemVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZXNpemVUaW1lb3V0KTtcbiAgICB9XG4gICAgdGhpcy5yZXNpemVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmRyYXdSZWN0YW5nbGUoKTtcbiAgICB9LCA1MCk7XG4gIH1cblxuICBwcml2YXRlIGNodW5rczphbnkgPSBbXTtcbiAgQFZpZXdDaGlsZCgnY2FudmFzJywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBjYW52YXM6IGFueTtcblxuICBAVmlld0NoaWxkKCd2aWRlbycsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgdmlkZW9SZWY6IGFueTtcblxuICBAT3V0cHV0KCkgcHVibGljIGNhbWVyYVN3aXRjaGVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgdmlkZW9SZWFkeTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgaW1hZ2VDYXB0dXJlOiBFdmVudEVtaXR0ZXI8V2ViY2FtSW1hZ2U+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFdlYmNhbUltYWdlPigpO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgaW5pdEVycm9yOiBFdmVudEVtaXR0ZXI8V2ViY2FtSW5pdEVycm9yPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxXZWJjYW1Jbml0RXJyb3I+KCk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBicmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgICBwdWJsaWMgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuXG4gICAgcHJpdmF0ZSBjYW1lcmFQcm92aWRlcjogTmd4U2NhbmRvY0NhbWVyYVByb3ZpZGVyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGNvbnNvbGUud2FybignW3ZpZGVvXSBzdGFydCcpO1xuICAgIC8vIGluaXRpYWwgbG9hZFxuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIuZ2V0RGV2aWNlcygpKS5zdWJzY3JpYmUoKHJlc3ApID0+IHtcbiAgICAgIHRoaXMuaW5pdCgpO1xuICAgIH0pO1xuXG4gICAgLy8gY2FtZXJhIHN3aXRjaFxuICAgIHRoaXMuX19zdWJzKHRoaXMuY2FtZXJhUHJvdmlkZXIud2ViY2FtT2JzZXJ2YWJsZSkuc3Vic2NyaWJlKChkZXZpY2UpID0+IHtcbiAgICAgIGNvbnN0IHZpZGVvVHJhY2tDb25zdHJhaW50czogYW55ID0gdGhpcy5zZXRDb25zdHJhaW50cygpO1xuICAgICAgdGhpcy5zdG9wQWxsVHJhY2tzKCk7XG4gICAgICB0aGlzLnNob3dWaWRlbyA9IGZhbHNlO1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB2aWRlb1RyYWNrQ29uc3RyYWludHMuZGV2aWNlSWQgPSBkZXZpY2U7XG4gICAgICB0aGlzLnNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50cyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9fc3Vicyh0aGlzLnRyaWdnZXIpLnN1YnNjcmliZSgodGltZSkgPT4gdGhpcy50YWtlU25hcHNob3QodGltZSkpO1xuICB9XG5cbiAgcHVibGljIGdldCB2aWRlbygpIHtcbiAgICByZXR1cm4gdGhpcy52aWRlb1JlZi5uYXRpdmVFbGVtZW50O1xuICB9XG4gIGdldCBpc01vYmlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybS5BTkRST0lEIHx8IHRoaXMucGxhdGZvcm0uSU9TO1xuICB9XG4gIHByaXZhdGUgc2V0Q29uc3RyYWludHMoKSB7XG4gICAgY29uc3Qgb3V0OiBNZWRpYVN0cmVhbUNvbnN0cmFpbnRzID0ge307XG4gICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgb3V0LnZpZGVvID0geyBoZWlnaHQ6IHsgaWRlYWw6IDE2MDAgfSwgd2lkdGg6IHsgaWRlYWw6IDE2MDAgfSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dC52aWRlbyA9IHsgaGVpZ2h0OiB7IGlkZWFsOiAxMDgwIH0sIHdpZHRoOiB7IGlkZWFsOiAxOTIwIH0gfTtcbiAgICAgICAgfVxuICAgICAgICBvdXQudmlkZW8uZmFjaW5nTW9kZSA9ICdlbnZpcm9ubWVudCc7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzZWxmaWUnOlxuICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgIG91dC52aWRlbyA9IHsgaGVpZ2h0OiB7IGlkZWFsOiAxNjAwIH0sIHdpZHRoOiB7IGlkZWFsOiAxNjAwIH0gfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQudmlkZW8gPSB7IGhlaWdodDogeyBpZGVhbDogMTA4MCB9LCB3aWR0aDogeyBpZGVhbDogMTkyMCB9IH07XG4gICAgICAgIH1cbiAgICAgICAgb3V0LnZpZGVvLmZhY2luZ01vZGUgPSAndXNlcic7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQudmlkZW87XG4gIH1cblxuICBwcml2YXRlIGdldCBhY3RpdmVUcmFja1NldHRpbmdzKCkge1xuICAgIHJldHVybiB0aGlzLm1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0uZ2V0U2V0dGluZ3MoKTtcbiAgfVxuICBwcml2YXRlIGdldCBhY3RpdmVUcmFja0NhcGFiaWxpdGllcygpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMubWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5nZXRDYXBhYmlsaXRpZXMoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0KCkge1xuICAgIGNvbnN0IHZpZGVvVHJhY2tDb25zdHJhaW50cyA9IHRoaXMuc2V0Q29uc3RyYWludHMoKTtcblxuICAgIHRoaXMuc2V0dXAodmlkZW9UcmFja0NvbnN0cmFpbnRzKTtcbiAgfVxuICBwcml2YXRlIHNldHVwKHZpZGVvVHJhY2tDb25zdHJhaW50czogYW55KSB7XG4gICAgdGhpcy5fX3N1YnMoXG4gICAgICBmcm9tKFxuICAgICAgICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSg8TWVkaWFTdHJlYW1Db25zdHJhaW50cz57XG4gICAgICAgICAgdmlkZW86IHZpZGVvVHJhY2tDb25zdHJhaW50cyxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApLnN1YnNjcmliZSgoc3RyZWFtOiBNZWRpYVN0cmVhbSkgPT4ge1xuICAgICAgdGhpcy5tZWRpYVN0cmVhbSA9IHN0cmVhbTtcbiAgICAgIHRoaXMuY2FtZXJhUHJvdmlkZXIuZGV2aWNlSWQgPSB0aGlzLmFjdGl2ZVRyYWNrU2V0dGluZ3MuZGV2aWNlSWQ7XG4gICAgICB0aGlzLnN0YXJ0VmlkZW8oKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRWaWRlbygpIHtcbiAgICBjb25zb2xlLmxvZygnU1RBUlQgVklERU8nKTtcbiAgICB0aGlzLnZpZGVvLnNyY09iamVjdCA9IHRoaXMubWVkaWFTdHJlYW07XG5cbiAgICB0aGlzLnZpZGVvLm9ubG9hZGVkbWV0YWRhdGEgPSAoZGF0YTogYW55KSA9PiB7XG4gICAgICAvLyAgY29uc29sZS5sb2coZGF0YSk7XG4gICAgICB0aGlzLnZpZGVvLnBsYXkoKTtcbiAgICAgIHRoaXMuc2hvd1ZpZGVvID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgY29uc29sZS5sb2coJ1ZJREVPIFBMQVknKTtcbiAgICB9O1xuICAgIHRoaXMudmlkZW8ub25wbGF5ID0gKCkgPT4ge1xuICAgICAgdGhpcy52aWRlb1JlYWR5Lm5leHQodHJ1ZSk7XG4gICAgIC8vIGNvbnNvbGUubG9nKHRoaXMudmlkZW8udmlkZW9XaWR0aCwgdGhpcy52aWRlby52aWRlb0hlaWdodCk7XG4gICAgICB0aGlzLmRyYXdSZWN0YW5nbGUoKTtcbiAgICB9O1xuICB9XG4gIHNldENhbnZhcygpIHtcbiAgICBsZXQgX2NhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy90aGlzLmNhbnZhc1NuYXBzaG90Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCB7IHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0IH0gPSB0aGlzLnZpZGVvO1xuXG4gICAgY29uc3QgYXNwZWN0ID0gdmlkZW9XaWR0aCAvIHZpZGVvSGVpZ2h0O1xuXG4gICAgY29uc3QgY2FudmFzU21hbFNpemUgPSAzODQ7XG4gICAgY29uc3Qgc21hbGxTaXplID0ge1xuICAgICAgdzogMCxcbiAgICAgIGg6IDAsXG4gICAgfTtcblxuICAgIGlmICh2aWRlb1dpZHRoID49IHZpZGVvSGVpZ2h0KSB7XG4gICAgICBzbWFsbFNpemUudyA9IGNhbnZhc1NtYWxTaXplO1xuICAgICAgc21hbGxTaXplLmggPSBjYW52YXNTbWFsU2l6ZSAvIGFzcGVjdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc21hbGxTaXplLmggPSBjYW52YXNTbWFsU2l6ZTtcbiAgICAgIHNtYWxsU2l6ZS5oID0gY2FudmFzU21hbFNpemUgKiBhc3BlY3Q7XG4gICAgfVxuXG4gICAgLy9jb25zb2xlLmxvZygnU1onLCBzbWFsbFNpemUpO1xuXG4gICAgX2NhbnZhcy53aWR0aCA9IHZpZGVvV2lkdGg7XG4gICAgX2NhbnZhcy5oZWlnaHQgPSB2aWRlb0hlaWdodDtcbiAgICBjb25zdCBjdHg6IGFueSA9IF9jYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICBhbHBoYTogZmFsc2UsXG4gICAgICBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICBkZXB0aDogZmFsc2UsXG4gICAgICBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvLyBuZWVkcyBhbiBpbml0aWFsIHNpemVcbiAgICBjYW52YXMuaGVpZ2h0ID0gc21hbGxTaXplLmg7XG4gICAgY2FudmFzLndpZHRoID0gc21hbGxTaXplLnc7XG5cbiAgICBjb25zdCBjdHhPOiBhbnkgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICBhbHBoYTogZmFsc2UsXG4gICAgICBwb3dlclByZWZlcmVuY2U6ICdoaWdoLXBlcmZvcm1hbmNlJyxcbiAgICAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICBkZXB0aDogZmFsc2UsXG4gICAgICBkZXN5bmNocm9uaXplZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIHRoaXMuY2FudmFzRGF0YS5jdHggPSBjdHg7XG4gICAgdGhpcy5jYW52YXNEYXRhLmN0eE8gPSBjdHhPO1xuICAgIHRoaXMuY2FudmFzRGF0YS5jYW52YXMgPSBjYW52YXM7XG4gICAgdGhpcy5jYW52YXNEYXRhLl9jYW52YXMgPSBfY2FudmFzO1xuICAgIHRoaXMuY2FudmFzRGF0YS5zaXplID0gc21hbGxTaXplO1xuXG4gICAgLy8gY29uc3Qgc3RyZWFtID0gdGhpcy52aWRlby5jYXB0dXJlU3RyZWFtKDUpO1xuXG5cblxuICAgIC8vIGNvbnN0IG1lZGlhUmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0pO1xuXG5cbiAgICAvLyBtZWRpYVJlY29yZGVyLnN0YXJ0KCk7XG5cbiAgICAvLyBtZWRpYVJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IChlOmFueSkgPT4ge1xuICAgIC8vICAgY29uc29sZS5sb2coZSlcbiAgICAvLyAgIHRoaXMuY2h1bmtzLnB1c2goZS5kYXRhKTtcblxuICAgIC8vICAgdmFyIHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGUuZGF0YSk7XG4gICAgLy8gICB2YXIgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIC8vICAgYW5jaG9yLmRvd25sb2FkID0gJ215ZmlsZS53ZWJtJztcbiAgICAvLyAgIGFuY2hvci5ocmVmID0gdXJsO1xuICAgIC8vICAgYW5jaG9yLmNsaWNrKCk7XG4gICAgLy8gfTtcbiAgfVxuXG4gIHByaXZhdGUgdGFrZVNlbGZpZSgpIHtcbiAgICBjb25zdCBtaW1lVHlwZTogc3RyaW5nID0gJ2ltYWdlL2pwZWcnO1xuICAgIGNvbnN0IHsgdmlkZW9XaWR0aCwgb2Zmc2V0V2lkdGgsIHZpZGVvSGVpZ2h0IH0gPSB0aGlzLnZpZGVvO1xuXG4gICAgbGV0IF9jYW52YXM6IEhUTUxDYW52YXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IC8vdGhpcy5jYW52YXNTbmFwc2hvdC5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3QgeyB3LCBoIH0gPSB0aGlzLmNhbWVyYVByb3ZpZGVyLnJlY3RQb3NpdGlvbjtcblxuICAgIGNvbnN0IGFzcGVjdCA9IHZpZGVvV2lkdGggLyBvZmZzZXRXaWR0aDtcblxuICAgIC8vIGNvbnNvbGUubG9nKHZpZGVvV2lkdGgsIG9mZnNldFdpZHRoLCBsLCB0LCB3LCBoKTtcblxuICAgIF9jYW52YXMud2lkdGggPSB3ICogYXNwZWN0O1xuICAgIF9jYW52YXMuaGVpZ2h0ID0gaCAqIGFzcGVjdDtcblxuICAgIGNvbnN0IGR4ID0gdmlkZW9XaWR0aCAtIHcgKiBhc3BlY3Q7XG4gICAgY29uc3QgZHkgPSB2aWRlb0hlaWdodCAtIGggKiBhc3BlY3Q7XG4gICAgY29uc3QgeCA9IGR4IC8gMjtcbiAgICBjb25zdCB5ID0gZHkgLyAyO1xuXG4gICAgY29uc3QgY3R4OiBhbnkgPSBfY2FudmFzLmdldENvbnRleHQoJzJkJywge1xuICAgICAgYWxwaGE6IGZhbHNlLFxuICAgICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXG4gICAgICBhbnRpYWxpYXM6IGZhbHNlLFxuICAgICAgZGVwdGg6IGZhbHNlLFxuICAgICAgZGVzeW5jaHJvbml6ZWQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICBpZiAoY3R4KSB7XG4gICAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgICB0aGlzLnZpZGVvLFxuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICB3ICogYXNwZWN0LFxuICAgICAgICBoICogYXNwZWN0LFxuICAgICAgICAwLFxuICAgICAgICAwLFxuICAgICAgICB3ICogYXNwZWN0LFxuICAgICAgICBoICogYXNwZWN0XG4gICAgICApO1xuXG4gICAgICBjb25zdCBpbWdBc1VybDogYW55ID0gX2NhbnZhcy50b0RhdGFVUkwobWltZVR5cGUsIDEpO1xuXG4gICAgICB0aGlzLmltYWdlQ2FwdHVyZS5lbWl0KFxuICAgICAgICBuZXcgV2ViY2FtSW1hZ2UoaW1nQXNVcmwsIG1pbWVUeXBlLCBuZXcgSW1hZ2VEYXRhKDEsIDEpLCBudWxsKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgdGFrZVNuYXBzaG90KHRpbWU6IG51bWJlcikge1xuICAgIGlmICh0aGlzLnR5cGUgIT09ICdkb2N1bWVudCcpIHtcbiAgICAgIHRoaXMudGFrZVNlbGZpZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgIC8vIGNvbnNvbGUud2FybignU05BUCcsIHRpbWUpO1xuICAgIGlmICghdGhpcy5zaG93VmlkZW8pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGNvbnN0IGNhbnZhc1NtYWxTaXplID0gMzg0O1xuXG4gICAgICBjb25zdCBtaW1lVHlwZTogc3RyaW5nID0gJ2ltYWdlL2pwZWcnO1xuXG4gICAgICAvLyBsZXQgX2NhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTsgLy90aGlzLmNhbnZhc1NuYXBzaG90Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIGNvbnN0IHsgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQgfSA9IHRoaXMudmlkZW87XG5cbiAgICAgIC8vIF9jYW52YXMud2lkdGggPSB2aWRlb1dpZHRoO1xuICAgICAgLy8gX2NhbnZhcy5oZWlnaHQgPSB2aWRlb0hlaWdodDtcbiAgICAgIC8vIGNvbnNvbGUubG9nKHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcblxuICAgICAgLy8gY29uc3QgY3R4OiBhbnkgPSBfY2FudmFzLmdldENvbnRleHQoJzJkJywge1xuICAgICAgLy8gICBhbHBoYTogZmFsc2UsXG4gICAgICAvLyAgIHBvd2VyUHJlZmVyZW5jZTogJ2hpZ2gtcGVyZm9ybWFuY2UnLFxuICAgICAgLy8gICBhbnRpYWxpYXM6IGZhbHNlLFxuICAgICAgLy8gICBkZXB0aDogZmFsc2UsXG4gICAgICAvLyAgIGRlc3luY2hyb25pemVkOiB0cnVlLFxuICAgICAgLy8gfSk7XG5cbiAgICAgIC8vIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyAvLyBuZWVkcyBhbiBpbml0aWFsIHNpemVcbiAgICAgIC8vIGNhbnZhcy5oZWlnaHQgPSBjYW52YXNTbWFsU2l6ZTtcbiAgICAgIC8vIGNhbnZhcy53aWR0aCA9IGNhbnZhc1NtYWxTaXplO1xuXG4gICAgICAvLyBjb25zdCBjdHhPOiBhbnkgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnLCB7XG4gICAgICAvLyAgIGFscGhhOiBmYWxzZSxcbiAgICAgIC8vICAgcG93ZXJQcmVmZXJlbmNlOiAnaGlnaC1wZXJmb3JtYW5jZScsXG4gICAgICAvLyAgIGFudGlhbGlhczogZmFsc2UsXG4gICAgICAvLyAgIGRlcHRoOiBmYWxzZSxcbiAgICAgIC8vICAgZGVzeW5jaHJvbml6ZWQ6IHRydWUsXG4gICAgICAvLyB9KTtcblxuICAgICAgY29uc3QgeyBjdHgsIGN0eE8sIGNhbnZhcywgX2NhbnZhcywgc2l6ZSB9ID0gdGhpcy5jYW52YXNEYXRhO1xuXG4gICAgICBpZiAoY3R4ICYmIGN0eE8pIHtcbiAgICAgICAgY3R4LmltYWdlU21vb3RoaW5nRW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBkcmF3U3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcbiAgICAgICAgY3R4Ty5jbGVhclJlY3QoMCwgMCwgc2l6ZS53LCBzaXplLmgpO1xuXG4gICAgICAgIGN0eC5kcmF3SW1hZ2UodGhpcy52aWRlbywgMCwgMCk7XG4gICAgICAgIC8vY29uc29sZS50aW1lKCdkcmF3VmlkZW8nKTtcbiAgICAgICAgY3R4Ty5kcmF3SW1hZ2UoX2NhbnZhcywgMCwgMCwgc2l6ZS53LCBzaXplLmgpO1xuICAgICAgICAvL2NvbnNvbGUudGltZUVuZCgnZHJhd1ZpZGVvJyk7XG4gICAgICAgIC8vY29uc29sZS50aW1lKCdEUkFXJyk7XG5cbiAgICAgICAgY29uc3QgaW1EYXRhOiBhbnkgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcblxuICAgICAgICAvL2NvbnNvbGUudGltZUVuZCgnRFJBVycpO1xuXG4gICAgICAgIC8vY29uc29sZS50aW1lKCdDVFgnKTtcblxuICAgICAgICBjb25zdCByZXNpemUgPSBjYW52YXMudG9EYXRhVVJMKG1pbWVUeXBlLCAxKTtcbiAgICAgICAgLy9jb25zb2xlLnRpbWVFbmQoJ0NUWCcpO1xuICAgICAgICBjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICBjb25zdCBkaWZmID0gY3VycmVudFRpbWUgLSB0aW1lO1xuXG4gICAgICAgIC8vIHRvdGFsIHRpbWUgZm9yIHBhY2sgb25lIGltYWdlXG4gICAgICAgIGNvbnN0IGRyYXdUaW1lID0gRGF0ZS5ub3coKSAtIGRyYXdTdGFydDtcblxuICAgICAgICAvL2NvbnNvbGUud2FybignRFJBVyBUSU1FJywgZHJhd1RpbWUpO1xuICAgICAgICBjb25zdCBkZWxheU1heCA9IGRyYXdUaW1lIDwgNjAgPyAxMDAgOiAyMDA7XG5cbiAgICAgICAgY29uc3QgZGVsYXkgPSBkaWZmID4gZGVsYXlNYXggPyAwIDogZGVsYXlNYXggLSBkaWZmO1xuXG5cbiAgICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW1hZ2VDYXB0dXJlLmVtaXQobmV3IFdlYmNhbUltYWdlKCcnLCBtaW1lVHlwZSwgaW1EYXRhLCByZXNpemUpKTtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgIH0sIGRlbGF5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcEFsbFRyYWNrcygpIHtcbiAgICB0aGlzLnNob3dWaWRlbyA9IGZhbHNlO1xuICAgIGlmICh0aGlzLm1lZGlhU3RyZWFtICYmIHRoaXMubWVkaWFTdHJlYW0uZ2V0VHJhY2tzKSB7XG4gICAgICAvLyBnZXRUcmFja3MoKSByZXR1cm5zIGFsbCBtZWRpYSB0cmFja3MgKHZpZGVvK2F1ZGlvKVxuXG4gICAgICB0aGlzLm1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2goKHRyYWNrOiBNZWRpYVN0cmVhbVRyYWNrKSA9PiB7XG4gICAgICAgIHRyYWNrLnN0b3AoKTtcbiAgICAgICAgdGhpcy52aWRlby5zcmNPYmplY3QucmVtb3ZlVHJhY2sodHJhY2spO1xuICAgICAgICB0aGlzLm1lZGlhU3RyZWFtLnJlbW92ZVRyYWNrKHRyYWNrKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy52aWRlby5zcmNPYmplY3QgPSBudWxsO1xuXG4gICAgICB0aGlzLnZpZGVvLmxvYWQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRyYXdSZWN0YW5nbGUoKSB7XG4gICAgdGhpcy56b25lLnJ1bigoKSA9PiB7XG4gICAgICBjb25zdCBfY2FudmFzID0gdGhpcy5jYW52YXMubmF0aXZlRWxlbWVudDtcbiAgICAgIGxldCBwYWRkaW5nID0gMTA7XG4gICAgICBpZiAoIXRoaXMuaXNNb2JpbGUgJiYgX2NhbnZhcy53aWR0aCAhPT0gX2NhbnZhcy5oZWlnaHQpIHtcbiAgICAgICAgcGFkZGluZyA9IDQwO1xuICAgICAgfVxuICAgICAgY29uc3QgY3R4ID0gX2NhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuXG4gICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIF9jYW52YXMud2lkdGgsIF9jYW52YXMuaGVpZ2h0KTtcblxuICAgICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBfY2FudmFzO1xuXG5cblxuICAgICAgY29uc3QgeyB2aWRlb1dpZHRoLCB2aWRlb0hlaWdodCB9ID0gdGhpcy52aWRlbztcblxuICAgICAgY29uc3QgZG9jU2l6ZSA9IHRoaXMudHlwZSA9PT0gJ3NlbGZpZScgPyAxIDogODYgLyA1NTtcblxuICAgICAgY29uc3QgYXNwZWN0ID0gdmlkZW9XaWR0aCAvIHZpZGVvSGVpZ2h0O1xuICAgICAgbGV0IF9oZWlnaHQ7XG4gICAgICBsZXQgX3dpZHRoO1xuXG4gICAgICBpZiAodmlkZW9XaWR0aCA+PSB2aWRlb0hlaWdodCkge1xuICAgICAgICBfd2lkdGggPSB3aWR0aDtcblxuICAgICAgICBfaGVpZ2h0ID0gX3dpZHRoIC8gYXNwZWN0O1xuXG4gICAgICAgIGlmIChfaGVpZ2h0ID4gaGVpZ2h0KSB7XG4gICAgICAgICAgX2hlaWdodCA9IGhlaWdodDtcbiAgICAgICAgICBfd2lkdGggPSBhc3BlY3QgKiBfaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfaGVpZ2h0ID0gaGVpZ2h0O1xuICAgICAgICBfd2lkdGggPSBhc3BlY3QgKiBfaGVpZ2h0O1xuICAgICAgICBpZiAoX3dpZHRoID4gd2lkdGgpIHtcbiAgICAgICAgICBfd2lkdGggPSB3aWR0aDtcbiAgICAgICAgICBfaGVpZ2h0ID0gX3dpZHRoIC8gYXNwZWN0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgdywgaDtcblxuICAgICAgaWYgKF93aWR0aCA8PSBfaGVpZ2h0KSB7XG4gICAgICAgIHcgPSBfd2lkdGggLSAyICogcGFkZGluZztcbiAgICAgICAgaCA9IHcgLyBkb2NTaXplO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaCA9IF9oZWlnaHQgLSAyICogcGFkZGluZztcbiAgICAgICAgdyA9IGRvY1NpemUgKiBoO1xuICAgICAgfVxuXG4gICAgICBoID0gTWF0aC5mbG9vcihoKTtcbiAgICAgIHcgPSBNYXRoLmZsb29yKHcpO1xuXG5cblxuICAgICAgY29uc3QgbGVmdCA9IE1hdGguZmxvb3IoKHdpZHRoIC0gdykgLyAyKTtcbiAgICAgIGNvbnN0IHRvcCA9IE1hdGguZmxvb3IoKGhlaWdodCAtIGgpIC8gMik7XG5cbiAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICd3aGl0ZSc7XG5cbiAgICAgIC8vIGN0eC5zdHJva2VSZWN0KGxlZnQsIHRvcCwgX3dpZHRoLCBfaGVpZ2h0KTtcbiAgICAgIGN0eC5maWxsU3R5bGUgPSAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpJztcbiAgICAgLy8gY3R4LnNoYWRvd0NvbG9yID0gJ3doaXRlJztcbiAgICAgIGN0eC5zaGFkb3dCbHVyID0gMTU7XG4gICAgICBjdHguYmVnaW5QYXRoKCk7XG5cbiAgICAgIC8vIERyYXcgdXNpbmcgNXB4IGZvciBib3JkZXIgcmFkaXVzIG9uIGFsbCBzaWRlc1xuICAgICAgLy8gc3Ryb2tlIGl0IGJ1dCBubyBmaWxsXG4gICAgICBjdHgucm91bmRSZWN0KGxlZnQsIHRvcCwgdywgaCwgNSk7XG4gICAgICBjdHguc3Ryb2tlKCk7XG4gICAgICBjdHguZmlsbCgpO1xuXG5cblxuXG4gICAgICB0aGlzLmNhbWVyYVByb3ZpZGVyLnJlY3RQb3NpdGlvbiA9IHtcbiAgICAgICAgbDogbGVmdCxcbiAgICAgICAgdDogdG9wLFxuICAgICAgICB3LFxuICAgICAgICBoLFxuICAgICAgICBfdzogX3dpZHRoLFxuICAgICAgICBfaDogX2hlaWdodCxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuc2V0Q2FudmFzKCk7XG4gICAgICAvLyBjdHguc3Ryb2tlKCk7XG4gICAgfSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52aWRlby5wYXVzZSgpO1xuXG4gICAgLy8gdGhpcy52aWRlby5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjazogYW55KSA9PiB7XG4gICAgLy8gICB0cmFjay5zdG9wKCk7XG4gICAgLy8gICB0aGlzLnZpZGVvLnNyY09iamVjdC5yZW1vdmVUcmFjayh0cmFjayk7XG4gICAgLy8gfSk7XG5cbiAgICB0aGlzLnN0b3BBbGxUcmFja3MoKTtcblxuICAgIGlmICh0aGlzLnRyaWdnZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudHJpZ2dlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLl9fZGVzdHJveSgpO1xuXG4gICAgY29uc29sZS53YXJuKCdbVklERU9dIGRlc3Ryb3llZCcpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid2ViY2FtLXdyYXBwZXJcIj5cbiAgPHZpZGVvICN2aWRlbyBhdXRvcGxheSBtdXRlZCBzdHlsZT1cImRpc3BsYXk6IGJsb2NrXCIgcGxheXNpbmxpbmU+PC92aWRlbz5cblxuICA8ZGl2IGNsYXNzPVwicmVjdGFuZ2xlXCI+XG4gICAgPGNhbnZhc1xuICAgICAgI2NhbnZhc1xuICAgICAgW25nU3R5bGVdPVwieyB2aXNpYmlsaXR5OiBzaG93VmlkZW8gPyAndmlzaWJsZScgOiAnaGlkZGVuJyB9XCJcbiAgICAgIFt3aWR0aF09XCJ2aWRlby5vZmZzZXRXaWR0aFwiXG4gICAgICBbaGVpZ2h0XT1cInZpZGVvLm9mZnNldEhlaWdodFwiXG4gICAgPjwvY2FudmFzPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -22,7 +22,6 @@ export class AuthProvider {
22
22
  }
23
23
  setConfig() { }
24
24
  get tokenExpired() {
25
- console.log(this.tokenTimestamps, this.token);
26
25
  if (this.token == '' || this.tokenTimestamps.Time === 0) {
27
26
  console.log('EXPIRED');
28
27
  return true;
@@ -30,14 +29,12 @@ export class AuthProvider {
30
29
  const { Time } = this.tokenTimestamps;
31
30
  const tokenDate = moment(Time);
32
31
  const isValid = moment(tokenDate).isBefore(moment().add(5, 'minutes'));
33
- console.log('VALID', isValid);
34
32
  return !isValid;
35
33
  }
36
34
  resetToken() {
37
35
  // this.token = '';
38
36
  }
39
37
  get accesToken() {
40
- console.log('AT');
41
38
  return this.tokenExpired ? this.fetchToken() : of(this.token);
42
39
  }
43
40
  fetchToken() {
@@ -73,12 +70,10 @@ export class AuthProvider {
73
70
  }
74
71
  updateToken() {
75
72
  const decoded = jwt_decode(this.token);
76
- console.log(decoded);
77
73
  const { Time, Client, SubClient } = decoded;
78
74
  this.tokenTimestamps = { Time, Client, SubClient };
79
75
  }
80
76
  getToken() {
81
- console.log('GET');
82
77
  const { path, login, version, clientId, tokenName } = this.config;
83
78
  if (version == 'v1') {
84
79
  return this.http
@@ -99,9 +94,7 @@ export class AuthProvider {
99
94
  sub_client: this.sub_client,
100
95
  })
101
96
  .pipe(tap((token) => {
102
- console.log(this.token);
103
97
  this.token = token.access_token;
104
- console.log('TOKEN', this.token);
105
98
  this.refresh_token = token.refresh_token;
106
99
  this.updateToken();
107
100
  }), map((data) => data.access_token));
@@ -118,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
118
111
  type: Inject,
119
112
  args: ['configAuth']
120
113
  }] }]; } });
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9wcm92aWRlcnMvYXV0aC5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFhLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7O0FBUTVCLE1BQU0sT0FBTyxZQUFZO0lBRXZCLFlBQ1UsSUFBZ0IsRUFDSyxNQUFrQjtRQUR2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0ssV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQVFqRCxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRW5CLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBRTNCLG9CQUFlLEdBQVE7WUFDckIsSUFBSSxFQUFFLENBQUM7WUFDUCxNQUFNLEVBQUUsQ0FBQztZQUNULFNBQVMsRUFBRSxDQUFDO1NBQ2IsQ0FBQztJQWZDLENBQUM7SUFFSixZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBQ0QsU0FBUyxLQUFJLENBQUM7SUFZZCxJQUFZLFlBQVk7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMs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LFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUN0QyxDQUFDO0lBQ04sQ0FBQzs7eUdBM0hVLFlBQVksNENBSWIsWUFBWTs2R0FKWCxZQUFZLGNBRlgsTUFBTTsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBS0ksTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgand0X2RlY29kZSBmcm9tICdqd3QtZGVjb2RlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzL2NvbmZpZyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFByb3ZpZGVyIHtcbiAgc3ViQ2xpZW50ITogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdCgnY29uZmlnQXV0aCcpIHB1YmxpYyBjb25maWc6IEF1dGhDb25maWdcbiAgKSB7fVxuXG4gIHNldFN1YkNsaWVudChuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN1YkNsaWVudCA9IG5hbWU7XG4gIH1cbiAgc2V0Q29uZmlnKCkge31cblxuICB0b2tlbjogc3RyaW5nID0gJyc7XG5cbiAgcmVmcmVzaF90b2tlbjogc3RyaW5nID0gJyc7XG5cbiAgdG9rZW5UaW1lc3RhbXBzOiBhbnkgPSB7XG4gICAgVGltZTogMCxcbiAgICBDbGllbnQ6IDAsXG4gICAgU3ViQ2xpZW50OiAwLFxuICB9O1xuXG4gIHByaXZhdGUgZ2V0IHRva2VuRXhwaXJlZCgpOiBib29sZWFuIHtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnRva2VuVGltZXN0YW1wcywgdGhpcy50b2tlbik7XG4gICAgaWYgKHRoaXMudG9rZW4gPT0gJycgfHwgdGhpcy50b2tlblRpbWVzdGFtcHMuVGltZSA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coJ0VYUElSRUQnKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHsgVGltZSB9ID0gdGhpcy50b2tlblRpbWVzdGFtcHM7XG4gICAgY29uc3QgdG9rZW5EYXRlID0gbW9tZW50KFRpbWUpO1xuICAgIGNvbnN0IGlzVmFsaWQgPSBtb21lbnQodG9rZW5EYXRlKS5pc0JlZm9yZShtb21lbnQoKS5hZGQoNSwgJ21pbnV0ZXMnKSk7XG4gICAgY29uc29sZS5sb2coJ1ZBTElEJywgaXNWYWxpZCk7XG4gICAgcmV0dXJuICFpc1ZhbGlkO1xuICB9XG5cbiAgcmVzZXRUb2tlbigpIHtcbiAgICAvLyB0aGlzLnRva2VuID0gJyc7XG4gIH1cbiAgZ2V0IGFjY2VzVG9rZW4oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zb2xlLmxvZygnQVQnKTtcbiAgICByZXR1cm4gdGhpcy50b2tlbkV4cGlyZWQgPyB0aGlzLmZldGNoVG9rZW4oKSA6IG9mKHRoaXMudG9rZW4pO1xuICB9XG5cbiAgZmV0Y2hUb2tlbigpIHtcbiAgICBpZiAodGhpcy50b2tlbiAmJiB0aGlzLnJlZnJlc2hfdG9rZW4pIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRUb2tlbigpO1xuICB9XG5cbiAgcmVmcmVzaFRva2VuKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgeyBwYXRoLCByZWZyZXNoIH0gPSB0aGlzLmNvbmZpZztcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdChgJHtwYXRofSR7cmVmcmVzaH1gLCB7XG4gICAgICAgIHJlZnJlc2hfdG9rZW46IHRoaXMucmVmcmVzaF90b2tlbixcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh0b2tlbjogYW55KSA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy50b2tlbik7XG4gICAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuLmFjY2Vzc190b2tlbjtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVRva2VuKCk7XG4gICAgICAgICAgLy8gdGhpcy50b2tlbiA9IHRva2VuLmFjY2Vzc190b2tlbjtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVE9LRU4nLCB0aGlzLnRva2VuKTtcbiAgICAgICAgICAvLyB0aGlzLnJlZnJlc2hfdG9rZW4gPSB0b2tlbi5yZWZyZXNoX3Rva2VuO1xuICAgICAgICAgIC8vIGNvbnN0IGRlY29kZWQ6IGFueSA9IGp3dF9kZWNvZGUodGhpcy50b2tlbik7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coZGVjb2RlZCk7XG4gICAgICAgICAgLy8gY29uc3QgeyBUaW1lLCBDbGllbnQsIFN1YkNsaWVudCB9ID0gZGVjb2RlZDtcbiAgICAgICAgICAvLyB0aGlzLnRva2VuVGltZXN0YW1wcyA9IHsgVGltZSwgQ2xpZW50LCBTdWJDbGllbnQgfTtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcCgoZGF0YTogYW55KSA9PiBkYXRhLmFjY2Vzc190b2tlbilcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldCB1c2VyX2tleSgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuY2xpZW50SWQ7XG4gIH1cbiAgcHJpdmF0ZSBnZXQgc3ViX2NsaWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcudG9rZW5OYW1lID8gdGhpcy5jb25maWcudG9rZW5OYW1lIDogdGhpcy5zdWJDbGllbnQ7XG4gIH1cbiAgcHJpdmF0ZSB1cGRhdGVUb2tlbigpIHtcbiAgICBjb25zdCBkZWNvZGVkOiBhbnkgPSBqd3RfZGVjb2RlKHRoaXMudG9rZW4pO1xuICAgIGNvbnNvbGUubG9nKGRlY29kZWQpO1xuICAgIGNvbnN0IHsgVGltZSwgQ2xpZW50LCBTdWJDbGllbnQgfSA9IGRlY29kZWQ7XG4gICAgdGhpcy50b2tlblRpbWVzdGFtcHMgPSB7IFRpbWUsIENsaWVudCwgU3ViQ2xpZW50IH07XG4gIH1cbiAgcHJpdmF0ZSBnZXRUb2tlbigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnNvbGUubG9nKCdHRVQnKTtcblxuICAgIGNvbnN0IHsgcGF0aCwgbG9naW4sIHZlcnNpb24sIGNsaWVudElkLCB0b2tlbk5hbWUgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKHZlcnNpb24gPT0gJ3YxJykge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAucG9zdChgJHtwYXRofWAsIHtcbiAgICAgICAgICBjbGllbnRJZDogY2xpZW50SWQsXG4gICAgICAgICAgdG9rZW46IHRva2VuTmFtZSxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChkYXRhOiBhbnkpID0+IGRhdGEuYWNjZXNzVG9rZW4pLFxuICAgICAgICAgIHRhcCgodG9rZW46IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgICAgICAgY29uc3QgZGVjb2RlZDogYW55ID0gand0X2RlY29kZSh0aGlzLnRva2VuKTtcbiAgICAgICAgICAgIGNvbnN0IHsgaWF0LCBleHAgfSA9IGRlY29kZWQ7XG4gICAgICAgICAgICB0aGlzLnRva2VuVGltZXN0YW1wcyA9IHsgaWF0LCBleHAsIFRpbWU6IDAgfTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGAke3BhdGh9JHtsb2dpbn1gLCB7XG4gICAgICAgIHVzZXJfa2V5OiB0aGlzLnVzZXJfa2V5LFxuICAgICAgICBzdWJfY2xpZW50OiB0aGlzLnN1Yl9jbGllbnQsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgodG9rZW46IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMudG9rZW4pO1xuICAgICAgICAgIHRoaXMudG9rZW4gPSB0b2tlbi5hY2Nlc3NfdG9rZW47XG4gICAgICAgICAgY29uc29sZS5sb2coJ1RPS0VOJywgdGhpcy50b2tlbik7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoX3Rva2VuID0gdG9rZW4ucmVmcmVzaF90b2tlbjtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVRva2VuKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5hY2Nlc3NfdG9rZW4pXG4gICAgICApO1xuICB9XG59XG4iXX0=
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9wcm92aWRlcnMvYXV0aC5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFhLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7O0FBUTVCLE1BQU0sT0FBTyxZQUFZO0lBRXZCLFlBQ1UsSUFBZ0IsRUFDSyxNQUFrQjtRQUR2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0ssV0FBTSxHQUFOLE1BQU0sQ0FBWTtRQVFqRCxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRW5CLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBRTNCLG9CQUFlLEdBQVE7WUFDckIsSUFBSSxFQUFFLENBQUM7WUFDUCxNQUFNLEVBQUUsQ0FBQztZQUNULFNBQVMsRUFBRSxDQUFDO1NBQ2IsQ0FBQztJQWZDLENBQUM7SUFFSixZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBQ0QsU0FBUyxLQUFJLENBQUM7SUFZZCxJQUFZLFlBQVk7UUFFdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLElBQUks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LElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNuQixNQUFNLE9BQU8sR0FBUSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQy9DLENBQUMsQ0FBQyxDQUNILENBQUM7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7WUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM1QixDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO1lBRWpCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUVoQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7WUFDekMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUN0QyxDQUFDO0lBQ04sQ0FBQzs7eUdBM0hVLFlBQVksNENBSWIsWUFBWTs2R0FKWCxZQUFZLGNBRlgsTUFBTTsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBS0ksTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgand0X2RlY29kZSBmcm9tICdqd3QtZGVjb2RlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBdXRoQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9pbnRlcmZhY2VzL2NvbmZpZyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFByb3ZpZGVyIHtcbiAgc3ViQ2xpZW50ITogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdCgnY29uZmlnQXV0aCcpIHB1YmxpYyBjb25maWc6IEF1dGhDb25maWdcbiAgKSB7fVxuXG4gIHNldFN1YkNsaWVudChuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN1YkNsaWVudCA9IG5hbWU7XG4gIH1cbiAgc2V0Q29uZmlnKCkge31cblxuICB0b2tlbjogc3RyaW5nID0gJyc7XG5cbiAgcmVmcmVzaF90b2tlbjogc3RyaW5nID0gJyc7XG5cbiAgdG9rZW5UaW1lc3RhbXBzOiBhbnkgPSB7XG4gICAgVGltZTogMCxcbiAgICBDbGllbnQ6IDAsXG4gICAgU3ViQ2xpZW50OiAwLFxuICB9O1xuXG4gIHByaXZhdGUgZ2V0IHRva2VuRXhwaXJlZCgpOiBib29sZWFuIHtcblxuICAgIGlmICh0aGlzLnRva2VuID09ICcnIHx8IHRoaXMudG9rZW5UaW1lc3RhbXBzLlRpbWUgPT09IDApIHtcbiAgICAgIGNvbnNvbGUubG9nKCdFWFBJUkVEJyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBjb25zdCB7IFRpbWUgfSA9IHRoaXMudG9rZW5UaW1lc3RhbXBzO1xuICAgIGNvbnN0IHRva2VuRGF0ZSA9IG1vbWVudChUaW1lKTtcbiAgICBjb25zdCBpc1ZhbGlkID0gbW9tZW50KHRva2VuRGF0ZSkuaXNCZWZvcmUobW9tZW50KCkuYWRkKDUsICdtaW51dGVzJykpO1xuXG4gICAgcmV0dXJuICFpc1ZhbGlkO1xuICB9XG5cbiAgcmVzZXRUb2tlbigpIHtcbiAgICAvLyB0aGlzLnRva2VuID0gJyc7XG4gIH1cbiAgZ2V0IGFjY2VzVG9rZW4oKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIHJldHVybiB0aGlzLnRva2VuRXhwaXJlZCA/IHRoaXMuZmV0Y2hUb2tlbigpIDogb2YodGhpcy50b2tlbik7XG4gIH1cblxuICBmZXRjaFRva2VuKCkge1xuICAgIGlmICh0aGlzLnRva2VuICYmIHRoaXMucmVmcmVzaF90b2tlbikge1xuICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldFRva2VuKCk7XG4gIH1cblxuICByZWZyZXNoVG9rZW4oKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB7IHBhdGgsIHJlZnJlc2ggfSA9IHRoaXMuY29uZmlnO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KGAke3BhdGh9JHtyZWZyZXNofWAsIHtcbiAgICAgICAgcmVmcmVzaF90b2tlbjogdGhpcy5yZWZyZXNoX3Rva2VuLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHRva2VuOiBhbnkpID0+IHtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLnRva2VuKTtcbiAgICAgICAgICB0aGlzLnRva2VuID0gdG9rZW4uYWNjZXNzX3Rva2VuO1xuICAgICAgICAgIHRoaXMudXBkYXRlVG9rZW4oKTtcbiAgICAgICAgICAvLyB0aGlzLnRva2VuID0gdG9rZW4uYWNjZXNzX3Rva2VuO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdUT0tFTicsIHRoaXMudG9rZW4pO1xuICAgICAgICAgIC8vIHRoaXMucmVmcmVzaF90b2tlbiA9IHRva2VuLnJlZnJlc2hfdG9rZW47XG4gICAgICAgICAgLy8gY29uc3QgZGVjb2RlZDogYW55ID0gand0X2RlY29kZSh0aGlzLnRva2VuKTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhkZWNvZGVkKTtcbiAgICAgICAgICAvLyBjb25zdCB7IFRpbWUsIENsaWVudCwgU3ViQ2xpZW50IH0gPSBkZWNvZGVkO1xuICAgICAgICAgIC8vIHRoaXMudG9rZW5UaW1lc3RhbXBzID0geyBUaW1lLCBDbGllbnQsIFN1YkNsaWVudCB9O1xuICAgICAgICB9KSxcbiAgICAgICAgbWFwKChkYXRhOiBhbnkpID0+IGRhdGEuYWNjZXNzX3Rva2VuKVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHVzZXJfa2V5KCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5jbGllbnRJZDtcbiAgfVxuICBwcml2YXRlIGdldCBzdWJfY2xpZW50KCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy50b2tlbk5hbWUgPyB0aGlzLmNvbmZpZy50b2tlbk5hbWUgOiB0aGlzLnN1YkNsaWVudDtcbiAgfVxuICBwcml2YXRlIHVwZGF0ZVRva2VuKCkge1xuICAgIGNvbnN0IGRlY29kZWQ6IGFueSA9IGp3dF9kZWNvZGUodGhpcy50b2tlbik7XG5cbiAgICBjb25zdCB7IFRpbWUsIENsaWVudCwgU3ViQ2xpZW50IH0gPSBkZWNvZGVkO1xuICAgIHRoaXMudG9rZW5UaW1lc3RhbXBzID0geyBUaW1lLCBDbGllbnQsIFN1YkNsaWVudCB9O1xuICB9XG4gIHByaXZhdGUgZ2V0VG9rZW4oKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuXG4gICAgY29uc3QgeyBwYXRoLCBsb2dpbiwgdmVyc2lvbiwgY2xpZW50SWQsIHRva2VuTmFtZSB9ID0gdGhpcy5jb25maWc7XG5cbiAgICBpZiAodmVyc2lvbiA9PSAndjEnKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgIC5wb3N0KGAke3BhdGh9YCwge1xuICAgICAgICAgIGNsaWVudElkOiBjbGllbnRJZCxcbiAgICAgICAgICB0b2tlbjogdG9rZW5OYW1lLFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5hY2Nlc3NUb2tlbiksXG4gICAgICAgICAgdGFwKCh0b2tlbjogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRva2VuID0gdG9rZW47XG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkOiBhbnkgPSBqd3RfZGVjb2RlKHRoaXMudG9rZW4pO1xuICAgICAgICAgICAgY29uc3QgeyBpYXQsIGV4cCB9ID0gZGVjb2RlZDtcbiAgICAgICAgICAgIHRoaXMudG9rZW5UaW1lc3RhbXBzID0geyBpYXQsIGV4cCwgVGltZTogMCB9O1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QoYCR7cGF0aH0ke2xvZ2lufWAsIHtcbiAgICAgICAgdXNlcl9rZXk6IHRoaXMudXNlcl9rZXksXG4gICAgICAgIHN1Yl9jbGllbnQ6IHRoaXMuc3ViX2NsaWVudCxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh0b2tlbjogYW55KSA9PiB7XG5cbiAgICAgICAgICB0aGlzLnRva2VuID0gdG9rZW4uYWNjZXNzX3Rva2VuO1xuXG4gICAgICAgICAgdGhpcy5yZWZyZXNoX3Rva2VuID0gdG9rZW4ucmVmcmVzaF90b2tlbjtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVRva2VuKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAoKGRhdGE6IGFueSkgPT4gZGF0YS5hY2Nlc3NfdG9rZW4pXG4gICAgICApO1xuICB9XG59XG4iXX0=