stream-chat-angular 5.1.10 → 5.1.11

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.
@@ -1 +1 @@
1
- export declare const version = "5.1.10";
1
+ export declare const version = "5.1.11";
@@ -1,2 +1,2 @@
1
- export const version = '5.1.10';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjEuMTAnO1xuIl19
1
+ export const version = '5.1.11';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICc1LjEuMTEnO1xuIl19
@@ -459,6 +459,12 @@ export class MessageComponent {
459
459
  }
460
460
  else {
461
461
  this.shouldPreventMessageMenuClose = !options.fromTouch;
462
+ // Fix for iOS Safari: iOS Safari won't close the input if we open message menu
463
+ // The virtual keyboard can hide parts of the message menu, so we close the input here
464
+ if (document.activeElement &&
465
+ typeof document.activeElement.blur !==
466
+ 'undefined')
467
+ document.activeElement.blur();
462
468
  this.messageMenuTrigger?.show();
463
469
  }
464
470
  if (this.isViewInited) {
@@ -512,4 +518,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
512
518
  type: ViewChild,
513
519
  args: ['messageBubble']
514
520
  }] } });
515
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBTUwsdUJBQXVCLEVBRXZCLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQWlCdkIsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBNEIsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZTFDOztHQUVHO0FBT0gsTUFBTSxPQUFPLGdCQUFnQjtJQXVFM0IsWUFDVSxpQkFBb0MsRUFDcEMsY0FBOEIsRUFDL0Isc0JBQThDLEVBQzdDLEtBQXdCLEVBQ3hCLFVBQTZCLEVBQzdCLGNBQThCLEVBQy9CLHFCQUE0QyxFQUMzQyxNQUFjO1FBUGQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM3QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUMzQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBeEV4Qjs7V0FFRztRQUNNLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztRQUs5Qzs7V0FFRztRQUNNLFNBQUksR0FB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QkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBRUksa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDSCxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEFmdGVyVmlld0luaXQsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF0dGFjaG1lbnQsIFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBBdHRhY2htZW50TGlzdENvbnRleHQsXG4gIE1lbnRpb25UZW1wbGF0ZUNvbnRleHQsXG4gIE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dCxcbiAgTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQsXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIFN0cmVhbU1lc3NhZ2UsXG4gIERlbGl2ZXJlZFN0YXR1c0NvbnRleHQsXG4gIFNlbmRpbmdTdGF0dXNDb250ZXh0LFxuICBSZWFkU3RhdHVzQ29udGV4dCxcbiAgU3lzdGVtTWVzc2FnZUNvbnRleHQsXG4gIEN1c3RvbU1ldGFkYXRhQ29udGV4dCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IGVtb2ppUmVnZXggZnJvbSAnZW1vamktcmVnZXgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IGxpc3RVc2VycyB9IGZyb20gJy4uL2xpc3QtdXNlcnMnO1xuaW1wb3J0IHsgRGF0ZVBhcnNlclNlcnZpY2UgfSBmcm9tICcuLi9kYXRlLXBhcnNlci5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VBY3Rpb25zU2VydmljZSB9IGZyb20gJy4uL21lc3NhZ2UtYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE5neEZsb2F0VWlDb250ZW50Q29tcG9uZW50LFxuICBOZ3hGbG9hdFVpTG9vc2VEaXJlY3RpdmUsXG59IGZyb20gJ25neC1mbG9hdC11aSc7XG5cbnR5cGUgTWVzc2FnZVBhcnQgPSB7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgdHlwZTogJ3RleHQnIHwgJ21lbnRpb24nO1xuICB1c2VyPzogVXNlclJlc3BvbnNlO1xufTtcblxuLyoqXG4gKiBUaGUgYE1lc3NhZ2VgIGNvbXBvbmVudCBkaXNwbGF5cyBhIG1lc3NhZ2Ugd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgc2VuZGVyIGFuZCBkYXRlLCBhbmQgZW5hYmxlcyBbaW50ZXJhY3Rpb24gd2l0aCB0aGUgbWVzc2FnZSAoaS5lLiBlZGl0IG9yIHJlYWN0KV0oLi4vY29uY2VwdHMvbWVzc2FnZS1pbnRlcmFjdGlvbnMubWR4KS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxue1xuICAvKipcbiAgICogVGhlIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkXG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgW2NoYW5uZWwgY2FwYWJpbGl0aWVzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9jaGFubmVsX2NhcGFiaWxpdGllcy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkgdGhhdCBhcmUgZW5hYmxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlciwgdGhlIGxpc3Qgb2YgW3N1cHBvcnRlZCBpbnRlcmFjdGlvbnNdKC4uL2NvbmNlcHRzL21lc3NhZ2UtaW50ZXJhY3Rpb25zLm1keCkgY2FuIGJlIGZvdW5kIGluIG91ciBtZXNzYWdlIGludGVyYWN0aW9uIGd1aWRlLiBVbmF0aG9yaXplZCBhY3Rpb25zIHdvbid0IGJlIGRpc3BsYXllZCBvbiB0aGUgVUkuIFRoZSBbYE1lc3NhZ2VMaXN0YF0oLi9NZXNzYWdlTGlzdENvbXBvbmVudC5tZHgpIGNvbXBvbmVudCBhdXRvbWF0aWNhbGx5IHNldHMgdGhpcyBiYXNlZCBvbiBbY2hhbm5lbCBjYXBhYmlsaXRpZXNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIG1lc3NhZ2Ugc3RhdHVzIChzZW5kaW5nLCBzZW50LCB3aG8gcmVhZCB0aGUgbWVzc2FnZSkgaXMgZGlzcGxheWVkLlxuICAgKi9cbiAgQElucHV0KCkgaXNMYXN0U2VudE1lc3NhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBtZXNzYWdlIGlzIGJlaW5nIGRpc3BhbHllZCBpbiBhIGNoYW5uZWwgb3IgaW4gYSBbdGhyZWFkXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC90aHJlYWRzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6ICd0aHJlYWQnIHwgJ21haW4nID0gJ21haW4nO1xuICAvKipcbiAgICogSGlnaGxpZ2h0aW5nIGlzIHVzZWQgdG8gYWRkIHZpc3VhbCBlbXBoYXNpemUgdG8gYSBtZXNzYWdlIHdoZW4ganVtcGluZyB0byB0aGUgbWVzc2FnZVxuICAgKi9cbiAgQElucHV0KCkgaXNIaWdobGlnaHRlZCA9IGZhbHNlO1xuICAvKipcbiAgICogQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gdGhlIG1lc3NhZ2UgbGlzdCBpcyBzY3JvbGxlZCwgaXQncyB1c2VkIHRvIHByZXZlbnQgb3BlbmluZyB0aGUgbWVzc2FnZSBtZW51IHdoaWxlIHNjcm9sbCBpcyBpbiBwcm9ncmVzc1xuICAgKi9cbiAgQElucHV0KCkgc2Nyb2xsJD86IE9ic2VydmFibGU8dm9pZD47XG4gIGNhblJlY2VpdmVSZWFkRXZlbnRzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBjYW5SZWFjdFRvTWVzc2FnZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0ZWRGbGFnT3BlbmVkID0gZmFsc2U7XG4gIG1lc3NhZ2VUZXh0UGFydHM6IE1lc3NhZ2VQYXJ0W10gfCB1bmRlZmluZWQgPSBbXTtcbiAgbWVzc2FnZVRleHQ/OiBzdHJpbmc7XG4gIHNob3VsZERpc3BsYXlUcmFuc2xhdGlvbk5vdGljZSA9IGZhbHNlO1xuICBkaXNwbGF5ZWRNZXNzYWdlVGV4dENvbnRlbnQ6ICdvcmlnaW5hbCcgfCAndHJhbnNsYXRpb24nID0gJ29yaWdpbmFsJztcbiAgaW1hZ2VBdHRhY2htZW50TW9kYWxTdGF0ZTogJ29wZW5lZCcgfCAnY2xvc2VkJyA9ICdjbG9zZWQnO1xuICBzaG91bGREaXNwbGF5VGhyZWFkTGluayA9IGZhbHNlO1xuICBpc1NlbnRCeUN1cnJlbnRVc2VyID0gZmFsc2U7XG4gIHJlYWRCeVRleHQgPSAnJztcbiAgZGlzcGxheUFzOiAndGV4dCcgfCAnaHRtbCc7XG4gIGxhc3RSZWFkVXNlcjogVXNlclJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBpc09ubHlSZWFkQnlNZSA9IGZhbHNlO1xuICBpc1JlYWRCeU11bHRpcGxlVXNlcnMgPSBmYWxzZTtcbiAgaXNNZXNzYWdlRGVsaXZlcmVkQW5kUmVhZCA9IGZhbHNlO1xuICBwYXJzZWREYXRlID0gJyc7XG4gIHBhc2VkRWRpdGVkRGF0ZSA9ICcnO1xuICBhcmVPcHRpb25zVmlzaWJsZSA9IGZhbHNlO1xuICBoYXNBdHRhY2htZW50ID0gZmFsc2U7XG4gIGhhc1JlYWN0aW9ucyA9IGZhbHNlO1xuICByZXBseUNvdW50UGFyYW06IHsgcmVwbHlDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkIH0gPSB7XG4gICAgcmVwbHlDb3VudDogdW5kZWZpbmVkLFxuICB9O1xuICBhcmVNZXNzYWdlT3B0aW9uc09wZW4gPSBmYWxzZTtcbiAgY2FuRGlzcGxheVJlYWRTdGF0dXMgPSBmYWxzZTtcbiAgaGFzVG91Y2hTdXBwb3J0ID0gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDA7XG4gIHByaXZhdGUgcXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzOiBBdHRhY2htZW50W10gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBpc1ZpZXdJbml0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSB1c2VySWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXJsUmVnZXhwID1cbiAgICAvKD86KD86aHR0cHM/fGZ0cHxmaWxlKTpcXC9cXC98d3d3XFwufGZ0cFxcLikoPzpcXChbLUEtWjAtOSsmQCMvJT1+X3wkPyE6LC5dKlxcKXxbLUEtWjAtOSsmQCMvJT1+X3wkPyE6LC5dKSooPzpcXChbLUEtWjAtOSsmQCMvJT1+X3wkPyE6LC5dKlxcKXxbQS1aMC05KyZAIy8lPX5ffCRdKS9naW07XG4gIHByaXZhdGUgZW1vamlSZWdleHAgPSBuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgJ2cnKTtcbiAgQFZpZXdDaGlsZCgnbWVzc2FnZU1lbnVUcmlnZ2VyJylcbiAgbWVzc2FnZU1lbnVUcmlnZ2VyITogTmd4RmxvYXRVaUxvb3NlRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkKCdtZXNzYWdlTWVudUZsb2F0JylcbiAgbWVzc2FnZU1lbnVGbG9hdCE6IE5neEZsb2F0VWlDb250ZW50Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdtZXNzYWdlVGV4dEVsZW1lbnQnKSBtZXNzYWdlVGV4dEVsZW1lbnQ/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnbWVzc2FnZUJ1YmJsZScpIG1lc3NhZ2VCdWJibGU/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgcHJpdmF0ZSBzaG93TWVzc2FnZU1lbnVUaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgc2hvdWxkUHJldmVudE1lc3NhZ2VNZW51Q2xvc2UgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGF0ZVBhcnNlcjogRGF0ZVBhcnNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHVibGljIG1lc3NhZ2VBY3Rpb25zU2VydmljZTogTWVzc2FnZUFjdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgdGhpcy5kaXNwbGF5QXMgPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmRpc3BsYXlBcztcbiAgfVxuXG4gIGdldCB2aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQ7XG4gIH1cblxuICBzZXQgdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQoY291bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX3Zpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID0gY291bnQ7XG4gICAgaWYgKHRoaXMuYXJlT3B0aW9uc1Zpc2libGUgJiYgdGhpcy5fdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPT09IDApIHtcbiAgICAgIHRoaXMuYXJlT3B0aW9uc1Zpc2libGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UudXNlciQuc3Vic2NyaWJlKCh1KSA9PiB7XG4gICAgICAgIGlmICh1Py5pZCAhPT0gdGhpcy51c2VySWQpIHtcbiAgICAgICAgICB0aGlzLnVzZXJJZCA9IHU/LmlkO1xuICAgICAgICAgIHRoaXMuc2V0SXNTZW50QnlDdXJyZW50VXNlcigpO1xuICAgICAgICAgIHRoaXMuc2V0TGFzdFJlYWRVc2VyKCk7XG4gICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbnMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UpIHtcbiAgICAgICAgICBjb25zdCBudW1iZXJPZkVuYWJsZWRBY3Rpb25zID1cbiAgICAgICAgICAgIHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmdldEF1dGhvcml6ZWRNZXNzYWdlQWN0aW9uc0NvdW50KFxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGlmIChudW1iZXJPZkVuYWJsZWRBY3Rpb25zICE9PSB0aGlzLnZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID0gbnVtYmVyT2ZFbmFibGVkQWN0aW9ucztcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlKSB7XG4gICAgICB0aGlzLnNob3VsZERpc3BsYXlUcmFuc2xhdGlvbk5vdGljZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kaXNwbGF5ZWRNZXNzYWdlVGV4dENvbnRlbnQgPSAnb3JpZ2luYWwnO1xuICAgICAgdGhpcy5jcmVhdGVNZXNzYWdlUGFydHMoKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsQXR0YWNobWVudHMgPSB0aGlzLm1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy5hdHRhY2htZW50cztcbiAgICAgIHRoaXMucXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzID1cbiAgICAgICAgb3JpZ2luYWxBdHRhY2htZW50cyAmJiBvcmlnaW5hbEF0dGFjaG1lbnRzLmxlbmd0aFxuICAgICAgICAgID8gW29yaWdpbmFsQXR0YWNobWVudHNbMF1dXG4gICAgICAgICAgOiBbXTtcbiAgICAgIHRoaXMuc2V0SXNTZW50QnlDdXJyZW50VXNlcigpO1xuICAgICAgdGhpcy5zZXRMYXN0UmVhZFVzZXIoKTtcbiAgICAgIHRoaXMucmVhZEJ5VGV4dCA9IHRoaXMubWVzc2FnZT8ucmVhZEJ5XG4gICAgICAgID8gbGlzdFVzZXJzKHRoaXMubWVzc2FnZS5yZWFkQnkpXG4gICAgICAgIDogJyc7XG4gICAgICB0aGlzLmlzT25seVJlYWRCeU1lID0gISEoXG4gICAgICAgIHRoaXMubWVzc2FnZSAmJlxuICAgICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5ICYmXG4gICAgICAgIHRoaXMubWVzc2FnZS5yZWFkQnkubGVuZ3RoID09PSAwXG4gICAgICApO1xuICAgICAgdGhpcy5pc1JlYWRCeU11bHRpcGxlVXNlcnMgPSAhIShcbiAgICAgICAgdGhpcy5tZXNzYWdlICYmXG4gICAgICAgIHRoaXMubWVzc2FnZS5yZWFkQnkgJiZcbiAgICAgICAgdGhpcy5tZXNzYWdlLnJlYWRCeS5sZW5ndGggPiAxXG4gICAgICApO1xuICAgICAgdGhpcy5pc01lc3NhZ2VEZWxpdmVyZWRBbmRSZWFkID0gISEoXG4gICAgICAgIHRoaXMubWVzc2FnZSAmJlxuICAgICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5ICYmXG4gICAgICAgIHRoaXMubWVzc2FnZS5zdGF0dXMgPT09ICdyZWNlaXZlZCcgJiZcbiAgICAgICAgdGhpcy5tZXNzYWdlLnJlYWRCeS5sZW5ndGggPiAwXG4gICAgICApO1xuICAgICAgdGhpcy5wYXJzZWREYXRlID1cbiAgICAgICAgKHRoaXMubWVzc2FnZSAmJlxuICAgICAgICAgIHRoaXMubWVzc2FnZS5jcmVhdGVkX2F0ICYmXG4gICAgICAgICAgdGhpcy5kYXRlUGFyc2VyLnBhcnNlRGF0ZVRpbWUodGhpcy5tZXNzYWdlLmNyZWF0ZWRfYXQpKSB8fFxuICAgICAgICAnJztcbiAgICAgIHRoaXMucGFzZWRFZGl0ZWREYXRlID1cbiAgICAgICAgKHRoaXMubWVzc2FnZSAmJlxuICAgICAgICAgIHRoaXMubWVzc2FnZS5tZXNzYWdlX3RleHRfdXBkYXRlZF9hdCAmJlxuICAgICAgICAgIHRoaXMuZGF0ZVBhcnNlci5wYXJzZURhdGVUaW1lKFxuICAgICAgICAgICAgbmV3IERhdGUodGhpcy5tZXNzYWdlLm1lc3NhZ2VfdGV4dF91cGRhdGVkX2F0KVxuICAgICAgICAgICkpIHx8XG4gICAgICAgICcnO1xuICAgICAgdGhpcy5oYXNBdHRhY2htZW50ID1cbiAgICAgICAgISF0aGlzLm1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmICEhdGhpcy5tZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aDtcbiAgICAgIHRoaXMuaGFzUmVhY3Rpb25zID1cbiAgICAgICAgISF0aGlzLm1lc3NhZ2U/LnJlYWN0aW9uX2NvdW50cyAmJlxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLm1lc3NhZ2UucmVhY3Rpb25fY291bnRzKS5sZW5ndGggPiAwO1xuICAgICAgdGhpcy5yZXBseUNvdW50UGFyYW0gPSB7IHJlcGx5Q291bnQ6IHRoaXMubWVzc2FnZT8ucmVwbHlfY291bnQgfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zKSB7XG4gICAgICB0aGlzLmNhblJlYWN0VG9NZXNzYWdlID1cbiAgICAgICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMuaW5kZXhPZignc2VuZC1yZWFjdGlvbicpICE9PSAtMTtcbiAgICAgIHRoaXMuY2FuUmVjZWl2ZVJlYWRFdmVudHMgPVxuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKCdyZWFkLWV2ZW50cycpICE9PSAtMTtcbiAgICAgIHRoaXMuY2FuRGlzcGxheVJlYWRTdGF0dXMgPVxuICAgICAgICB0aGlzLmNhblJlY2VpdmVSZWFkRXZlbnRzICE9PSBmYWxzZSAmJlxuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKCdyZWFkLWV2ZW50cycpICE9PSAtMTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSB8fCBjaGFuZ2VzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyB8fCBjaGFuZ2VzLm1vZGUpIHtcbiAgICAgIHRoaXMuc2hvdWxkRGlzcGxheVRocmVhZExpbmsgPVxuICAgICAgICAhIXRoaXMubWVzc2FnZT8ucmVwbHlfY291bnQgJiYgdGhpcy5tb2RlICE9PSAndGhyZWFkJztcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSB8fCBjaGFuZ2VzLm1vZGUgfHwgY2hhbmdlcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMpIHtcbiAgICAgIHRoaXMuYXJlT3B0aW9uc1Zpc2libGUgPSB0aGlzLm1lc3NhZ2VcbiAgICAgICAgPyAhKFxuICAgICAgICAgICAgIXRoaXMubWVzc2FnZS50eXBlIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ2Vycm9yJyB8fFxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLnR5cGUgPT09ICdzeXN0ZW0nIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ2RlbGV0ZWQnIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ2VwaGVtZXJhbCcgfHxcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS5zdGF0dXMgPT09ICdmYWlsZWQnIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2Uuc3RhdHVzID09PSAnc2VuZGluZycgfHxcbiAgICAgICAgICAgICh0aGlzLm1vZGUgPT09ICd0aHJlYWQnICYmICF0aGlzLm1lc3NhZ2UucGFyZW50X2lkKSB8fFxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLmRlbGV0ZWRfYXQgfHxcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgIClcbiAgICAgICAgOiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSB8fCBjaGFuZ2VzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucykge1xuICAgICAgaWYgKHRoaXMubWVzc2FnZSkge1xuICAgICAgICB0aGlzLnZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID1cbiAgICAgICAgICB0aGlzLm1lc3NhZ2VBY3Rpb25zU2VydmljZS5nZXRBdXRob3JpemVkTWVzc2FnZUFjdGlvbnNDb3VudChcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSxcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gICAgaWYgKHRoaXMuaGFzVG91Y2hTdXBwb3J0ICYmIHRoaXMubWVzc2FnZUJ1YmJsZT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyTWVudVRyaWdnZXJFdmVudEhhbmRsZXJzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIG1vdXNlUHVzaGVkRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLmhhc1RvdWNoU3VwcG9ydCB8fFxuICAgICAgZXZlbnQuYnV0dG9uICE9PSAwIHx8XG4gICAgICAhdGhpcy5hcmVPcHRpb25zVmlzaWJsZVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXJ0TWVzc2FnZU1lbnVTaG93VGltZXIoeyBmcm9tVG91Y2g6IGZhbHNlIH0pO1xuICB9XG5cbiAgbW91c2VSZWxlYXNlZCgpIHtcbiAgICB0aGlzLnN0b3BNZXNzYWdlTWVudVNob3dUaW1lcigpO1xuICB9XG5cbiAgdG91Y2hTdGFydGVkKCkge1xuICAgIGlmICghdGhpcy5hcmVPcHRpb25zVmlzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXJ0TWVzc2FnZU1lbnVTaG93VGltZXIoeyBmcm9tVG91Y2g6IHRydWUgfSk7XG4gIH1cblxuICB0b3VjaEVuZGVkKCkge1xuICAgIHRoaXMuc3RvcE1lc3NhZ2VNZW51U2hvd1RpbWVyKCk7XG4gIH1cblxuICBtZXNzYWdlQnViYmxlQ2xpY2tlZChldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaGFzVG91Y2hTdXBwb3J0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3VsZFByZXZlbnRNZXNzYWdlTWVudUNsb3NlKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMuc2hvdWxkUHJldmVudE1lc3NhZ2VNZW51Q2xvc2UgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXJlTWVzc2FnZU9wdGlvbnNPcGVuKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VNZW51VHJpZ2dlcj8uaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIG1lc3NhZ2VPcHRpb25zQnV0dG9uQ2xpY2tlZCgpIHtcbiAgICBpZiAoIXRoaXMubWVzc2FnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VBY3Rpb25zU2VydmljZS5jdXN0b21BY3Rpb25DbGlja0hhbmRsZXIoe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICAgIGVuYWJsZWRBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgICAgY3VzdG9tQWN0aW9uczogdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9ucyQuZ2V0VmFsdWUoKSxcbiAgICAgICAgaXNNaW5lOiB0aGlzLmlzU2VudEJ5Q3VycmVudFVzZXIsXG4gICAgICAgIG1lc3NhZ2VUZXh0SHRtbEVsZW1lbnQ6IHRoaXMubWVzc2FnZVRleHRFbGVtZW50Py5uYXRpdmVFbGVtZW50LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXJlTWVzc2FnZU9wdGlvbnNPcGVuID0gIXRoaXMuYXJlTWVzc2FnZU9wdGlvbnNPcGVuO1xuICAgIH1cbiAgfVxuXG4gIG1lc3NhZ2VBY3Rpb25zQm94Q2xpY2tlZChmbG9hdGluZ0NvbnRlbnQ6IE5neEZsb2F0VWlDb250ZW50Q29tcG9uZW50KSB7XG4gICAgZmxvYXRpbmdDb250ZW50LmhpZGUoKTtcbiAgfVxuXG4gIGdldEF0dGFjaG1lbnRMaXN0Q29udGV4dCgpOiBBdHRhY2htZW50TGlzdENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8uaWQgfHwgJycsXG4gICAgICBhdHRhY2htZW50czogdGhpcy5tZXNzYWdlPy5hdHRhY2htZW50cyB8fCBbXSxcbiAgICAgIHBhcmVudE1lc3NhZ2VJZDogdGhpcy5tZXNzYWdlPy5wYXJlbnRfaWQsXG4gICAgICBpbWFnZU1vZGFsU3RhdGVDaGFuZ2VIYW5kbGVyOiAoc3RhdGUpID0+XG4gICAgICAgICh0aGlzLmltYWdlQXR0YWNobWVudE1vZGFsU3RhdGUgPSBzdGF0ZSksXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VDb250ZXh0KCk6IFN5c3RlbU1lc3NhZ2VDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgIGlzSGlnaGxpZ2h0ZWQ6IHRoaXMuaXNIaWdobGlnaHRlZCxcbiAgICAgIGlzTGFzdFNlbnRNZXNzYWdlOiB0aGlzLmlzTGFzdFNlbnRNZXNzYWdlLFxuICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgY3VzdG9tQWN0aW9uczogdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9ucyQuZ2V0VmFsdWUoKSxcbiAgICAgIHBhcnNlZERhdGU6IHRoaXMucGFyc2VkRGF0ZSxcbiAgICAgIHNjcm9sbCQ6IHRoaXMuc2Nyb2xsJCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0UXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRMaXN0Q29udGV4dCgpOiBBdHRhY2htZW50TGlzdENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmlkIHx8ICcnLFxuICAgICAgYXR0YWNobWVudHM6IHRoaXMucXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzISxcbiAgICAgIHBhcmVudE1lc3NhZ2VJZDogdGhpcz8ubWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnBhcmVudF9pZCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TWVzc2FnZVJlYWN0aW9uc0NvbnRleHQoKTogTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHRoaXMubWVzc2FnZT8ucmVhY3Rpb25fY291bnRzIHx8IHt9LFxuICAgICAgbGF0ZXN0UmVhY3Rpb25zOiB0aGlzLm1lc3NhZ2U/LmxhdGVzdF9yZWFjdGlvbnMgfHwgW10sXG4gICAgICBtZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8uaWQsXG4gICAgICBvd25SZWFjdGlvbnM6IHRoaXMubWVzc2FnZT8ub3duX3JlYWN0aW9ucyB8fCBbXSxcbiAgICB9O1xuICB9XG5cbiAgbWVzc2FnZUNsaWNrZWQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5tZXNzYWdlPy5zdGF0dXMgPT09ICdmYWlsZWQnICYmXG4gICAgICB0aGlzLm1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSAhPT0gNDAzXG4gICAgKSB7XG4gICAgICB0aGlzLnJlc2VuZE1lc3NhZ2UoKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5tZXNzYWdlPy50eXBlID09PSAnZXJyb3InICYmXG4gICAgICB0aGlzLm1lc3NhZ2U/Lm1vZGVyYXRpb25fZGV0YWlsc1xuICAgICkge1xuICAgICAgdGhpcy5vcGVuTWVzc2FnZUJvdW5jZVByb21wdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRWRpdGVkRmxhZ09wZW5lZCA9ICF0aGlzLmlzRWRpdGVkRmxhZ09wZW5lZDtcbiAgICB9XG4gIH1cblxuICByZXNlbmRNZXNzYWdlKCkge1xuICAgIHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5yZXNlbmRNZXNzYWdlKHRoaXMubWVzc2FnZSEpO1xuICB9XG5cbiAgc2V0QXNBY3RpdmVQYXJlbnRNZXNzYWdlKCkge1xuICAgIHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5zZXRBc0FjdGl2ZVBhcmVudE1lc3NhZ2UodGhpcy5tZXNzYWdlKTtcbiAgfVxuXG4gIGdldE1lbnRpb25Db250ZXh0KG1lc3NhZ2VQYXJ0OiBNZXNzYWdlUGFydCk6IE1lbnRpb25UZW1wbGF0ZUNvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBtZXNzYWdlUGFydC5jb250ZW50LFxuICAgICAgdXNlcjogbWVzc2FnZVBhcnQudXNlciEsXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dCgpOiBNZXNzYWdlQWN0aW9uc0JveENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBpc01pbmU6IHRoaXMuaXNTZW50QnlDdXJyZW50VXNlcixcbiAgICAgIGVuYWJsZWRBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIG1lc3NhZ2VUZXh0SHRtbEVsZW1lbnQ6IHRoaXMubWVzc2FnZVRleHRFbGVtZW50Py5uYXRpdmVFbGVtZW50LFxuICAgIH07XG4gIH1cblxuICBnZXREZWxpdmVyZWRTdGF0dXNDb250ZXh0KCk6IERlbGl2ZXJlZFN0YXR1c0NvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UhLFxuICAgIH07XG4gIH1cblxuICBnZXRTZW5kaW5nU3RhdHVzQ29udGV4dCgpOiBTZW5kaW5nU3RhdHVzQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSEsXG4gICAgfTtcbiAgfVxuXG4gIGdldFJlYWRTdGF0dXNDb250ZXh0KCk6IFJlYWRTdGF0dXNDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlISxcbiAgICAgIHJlYWRCeVRleHQ6IHRoaXMucmVhZEJ5VGV4dCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TWVzc2FnZU1ldGFkYXRhQ29udGV4dCgpOiBDdXN0b21NZXRhZGF0YUNvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UhLFxuICAgIH07XG4gIH1cblxuICBqdW1wVG9NZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nLCBwYXJlbnRNZXNzYWdlSWQ/OiBzdHJpbmcpIHtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UuanVtcFRvTWVzc2FnZShtZXNzYWdlSWQsIHBhcmVudE1lc3NhZ2VJZCk7XG4gIH1cblxuICBkaXNwbGF5VHJhbnNsYXRlZE1lc3NhZ2UoKSB7XG4gICAgdGhpcy5jcmVhdGVNZXNzYWdlUGFydHModHJ1ZSk7XG4gIH1cblxuICBkaXNwbGF5T3JpZ2luYWxNZXNzYWdlKCkge1xuICAgIHRoaXMuY3JlYXRlTWVzc2FnZVBhcnRzKGZhbHNlKTtcbiAgfVxuXG4gIG9wZW5NZXNzYWdlQm91bmNlUHJvbXB0KCkge1xuICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYm91bmNlZE1lc3NhZ2UkLm5leHQodGhpcy5tZXNzYWdlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTWVzc2FnZVBhcnRzKHNob3VsZFRyYW5zbGF0ZSA9IHRydWUpIHtcbiAgICB0aGlzLm1lc3NhZ2VUZXh0UGFydHMgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5tZXNzYWdlVGV4dCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0TWVzc2FnZUNvbnRlbnQoc2hvdWxkVHJhbnNsYXRlKTtcbiAgICBpZiAoXG4gICAgICAoIXRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzIHx8XG4gICAgICAgIHRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzLmxlbmd0aCA9PT0gMCkgJiZcbiAgICAgICFjb250ZW50Py5tYXRjaCh0aGlzLmVtb2ppUmVnZXhwKSAmJlxuICAgICAgIWNvbnRlbnQ/Lm1hdGNoKHRoaXMudXJsUmVnZXhwKVxuICAgICkge1xuICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5tZXNzYWdlVGV4dCA9IGNvbnRlbnQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghY29udGVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhdGhpcy5tZXNzYWdlIS5tZW50aW9uZWRfdXNlcnMgfHxcbiAgICAgIHRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgY29udGVudCA9IHRoaXMuZml4RW1vamlEaXNwbGF5KGNvbnRlbnQpO1xuICAgICAgY29udGVudCA9IHRoaXMud3JhcExpbmtzV2l0aEFuY2hvclRhZyhjb250ZW50KTtcbiAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cyA9IFt7IGNvbnRlbnQsIHR5cGU6ICd0ZXh0JyB9XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzID0gW107XG4gICAgICBsZXQgdGV4dCA9IGNvbnRlbnQ7XG4gICAgICB0aGlzLm1lc3NhZ2UhLm1lbnRpb25lZF91c2Vycy5mb3JFYWNoKCh1c2VyKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnRpb24gPSBgQCR7dXNlci5uYW1lIHx8IHVzZXIuaWR9YDtcbiAgICAgICAgY29uc3QgcHJlY2VkaW5nVGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIHRleHQuaW5kZXhPZihtZW50aW9uKSk7XG4gICAgICAgIGxldCBmb3JtYXR0ZWRQcmVjZWRpbmdUZXh0ID0gdGhpcy5maXhFbW9qaURpc3BsYXkocHJlY2VkaW5nVGV4dCk7XG4gICAgICAgIGZvcm1hdHRlZFByZWNlZGluZ1RleHQgPSB0aGlzLndyYXBMaW5rc1dpdGhBbmNob3JUYWcoXG4gICAgICAgICAgZm9ybWF0dGVkUHJlY2VkaW5nVGV4dFxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1lc3NhZ2VUZXh0UGFydHMhLnB1c2goe1xuICAgICAgICAgIGNvbnRlbnQ6IGZvcm1hdHRlZFByZWNlZGluZ1RleHQsXG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzIS5wdXNoKHtcbiAgICAgICAgICBjb250ZW50OiBtZW50aW9uLFxuICAgICAgICAgIHR5cGU6ICdtZW50aW9uJyxcbiAgICAgICAgICB1c2VyLFxuICAgICAgICB9KTtcbiAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShwcmVjZWRpbmdUZXh0ICsgbWVudGlvbiwgJycpO1xuICAgICAgfSk7XG4gICAgICBpZiAodGV4dCkge1xuICAgICAgICB0ZXh0ID0gdGhpcy5maXhFbW9qaURpc3BsYXkodGV4dCk7XG4gICAgICAgIHRleHQgPSB0aGlzLndyYXBMaW5rc1dpdGhBbmNob3JUYWcodGV4dCk7XG4gICAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cy5wdXNoKHsgY29udGVudDogdGV4dCwgdHlwZTogJ3RleHQnIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWVzc2FnZUNvbnRlbnQoc2hvdWxkVHJhbnNsYXRlOiBib29sZWFuKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxDb250ZW50ID0gdGhpcy5tZXNzYWdlPy50ZXh0O1xuICAgIGlmIChzaG91bGRUcmFuc2xhdGUpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy5tZXNzYWdlPy50cmFuc2xhdGlvbjtcbiAgICAgIGlmICh0cmFuc2xhdGlvbikge1xuICAgICAgICB0aGlzLnNob3VsZERpc3BsYXlUcmFuc2xhdGlvbk5vdGljZSA9IHRydWU7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID0gJ3RyYW5zbGF0aW9uJztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cmFuc2xhdGlvbiB8fCBvcmlnaW5hbENvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID0gJ29yaWdpbmFsJztcbiAgICAgIHJldHVybiBvcmlnaW5hbENvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaXhFbW9qaURpc3BsYXkoY29udGVudDogc3RyaW5nKSB7XG4gICAgLy8gV3JhcCBlbW9qaXMgaW4gc3BhbiB0byBkaXNwbGF5IGVtb2ppcyBjb3JyZWN0bHkgaW4gQ2hyb21lIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU5NjIyM1xuICAgIC8vIEJhc2VkIG9uIHRoaXM6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ1NjUxMTIvamF2YXNjcmlwdC1ob3ctdG8tZmluZC1vdXQtaWYtdGhlLXVzZXItYnJvd3Nlci1pcy1jaHJvbWVcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbiAgICBjb25zdCBpc0Nocm9tZSA9XG4gICAgICAhISh3aW5kb3cgYXMgYW55KS5jaHJvbWUgJiYgdHlwZW9mICh3aW5kb3cgYXMgYW55KS5vcHIgPT09ICd1bmRlZmluZWQnO1xuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4gICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShcbiAgICAgIHRoaXMuZW1vamlSZWdleHAsXG4gICAgICAobWF0Y2gpID0+XG4gICAgICAgIGA8c3BhbiAke1xuICAgICAgICAgIGlzQ2hyb21lID8gJ2NsYXNzPVwic3RyLWNoYXRfX2Vtb2ppLWRpc3BsYXktZml4XCInIDogJydcbiAgICAgICAgfT4ke21hdGNofTwvc3Bhbj5gXG4gICAgKTtcblxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgcHJpdmF0ZSB3cmFwTGlua3NXaXRoQW5jaG9yVGFnKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmRpc3BsYXlBcyA9PT0gJ2h0bWwnKSB7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZSh0aGlzLnVybFJlZ2V4cCwgKG1hdGNoKSA9PlxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5jdXN0b21MaW5rUmVuZGVyZXJcbiAgICAgICAgPyB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmN1c3RvbUxpbmtSZW5kZXJlcihtYXRjaClcbiAgICAgICAgOiBgPGEgaHJlZj1cIiR7bWF0Y2h9XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9mb2xsb3dcIj4ke21hdGNofTwvYT5gXG4gICAgKTtcblxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJc1NlbnRCeUN1cnJlbnRVc2VyKCkge1xuICAgIHRoaXMuaXNTZW50QnlDdXJyZW50VXNlciA9IHRoaXMubWVzc2FnZT8udXNlcj8uaWQgPT09IHRoaXMudXNlcklkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMYXN0UmVhZFVzZXIoKSB7XG4gICAgdGhpcy5sYXN0UmVhZFVzZXIgPSB0aGlzLm1lc3NhZ2U/LnJlYWRCeT8uZmlsdGVyKFxuICAgICAgKHUpID0+IHUuaWQgIT09IHRoaXMudXNlcklkXG4gICAgKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRNZXNzYWdlTWVudVNob3dUaW1lcihvcHRpb25zOiB7IGZyb21Ub3VjaDogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5zdG9wTWVzc2FnZU1lbnVTaG93VGltZXIoKTtcbiAgICBpZiAodGhpcy5zY3JvbGwkKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5zY3JvbGwkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnN0b3BNZXNzYWdlTWVudVNob3dUaW1lcigpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWVzc2FnZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgICAgICAgIGVuYWJsZWRBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgICAgICAgIGN1c3RvbUFjdGlvbnM6IHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbnMkLmdldFZhbHVlKCksXG4gICAgICAgICAgICBpc01pbmU6IHRoaXMuaXNTZW50QnlDdXJyZW50VXNlcixcbiAgICAgICAgICAgIG1lc3NhZ2VUZXh0SHRtbEVsZW1lbnQ6IHRoaXMubWVzc2FnZVRleHRFbGVtZW50Py5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNob3VsZFByZXZlbnRNZXNzYWdlTWVudUNsb3NlID0gIW9wdGlvbnMuZnJvbVRvdWNoO1xuICAgICAgICAgIHRoaXMubWVzc2FnZU1lbnVUcmlnZ2VyPy5zaG93KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0ID0gdW5kZWZpbmVkO1xuICAgICAgfSk7XG4gICAgfSwgNDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJNZW51VHJpZ2dlckV2ZW50SGFuZGxlcnMoKSB7XG4gICAgdGhpcy5tZXNzYWdlQnViYmxlIS5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCAoKSA9PlxuICAgICAgdGhpcy50b3VjaFN0YXJ0ZWQoKVxuICAgICk7XG4gICAgdGhpcy5tZXNzYWdlQnViYmxlIS5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgKCkgPT5cbiAgICAgIHRoaXMudG91Y2hFbmRlZCgpXG4gICAgKTtcbiAgICB0aGlzLm1lc3NhZ2VCdWJibGUhLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKGUpID0+XG4gICAgICB0aGlzLm1vdXNlUHVzaGVkRG93bihlKVxuICAgICk7XG4gICAgdGhpcy5tZXNzYWdlQnViYmxlIS5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCAoKSA9PlxuICAgICAgdGhpcy5tb3VzZVJlbGVhc2VkKClcbiAgICApO1xuICAgIHRoaXMubWVzc2FnZUJ1YmJsZSEubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PlxuICAgICAgdGhpcy5tZXNzYWdlQnViYmxlQ2xpY2tlZChlKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BNZXNzYWdlTWVudVNob3dUaW1lcigpIHtcbiAgICBpZiAodGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0KTtcbiAgICAgIHRoaXMuc2hvd01lc3NhZ2VNZW51VGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXZcbiAgI2NvbnRhaW5lclxuICBkYXRhLXRlc3RpZD1cIm1lc3NhZ2UtY29udGFpbmVyXCJcbiAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUgc3RyLWNoYXRfX21lc3NhZ2Ugc3RyLWNoYXRfX21lc3NhZ2UtLXt7XG4gICAgbWVzc2FnZT8udHlwZVxuICB9fSBzdHItY2hhdF9fbWVzc2FnZS0te3sgbWVzc2FnZT8uc3RhdHVzIH19IHt7XG4gICAgbWVzc2FnZT8udGV4dCA/ICdzdHItY2hhdF9fbWVzc2FnZS0taGFzLXRleHQnIDogJ2hhcy1uby10ZXh0J1xuICB9fSBzdHItY2hhdF9fbWVzc2FnZS1tZW51LXt7IGFyZU1lc3NhZ2VPcHRpb25zT3BlbiA/ICdvcGVuZWQnIDogJ2Nsb3NlZCcgfX1cIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtLW1lXT1cImlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtLW90aGVyXT1cIiFpc1NlbnRCeUN1cnJlbnRVc2VyXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS0tbWVdPVwiaXNTZW50QnlDdXJyZW50VXNlclwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS0taGFzLWF0dGFjaG1lbnRdPVwiaGFzQXR0YWNobWVudFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS0td2l0aC1yZWFjdGlvbnNdPVwiaGFzUmVhY3Rpb25zXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLS1oaWdobGlnaHRlZF09XCJpc0hpZ2hsaWdodGVkXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXdpdGgtdGhyZWFkLWxpbmtdPVwic2hvdWxkRGlzcGxheVRocmVhZExpbmtcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2Utc2VuZC1jYW4tYmUtcmV0cmllZF09XCJcbiAgICAobWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJiBtZXNzYWdlPy5lcnJvclN0YXR1c0NvZGUgIT09IDQwMykgfHxcbiAgICAobWVzc2FnZT8udHlwZSA9PT0gJ2Vycm9yJyAmJiBtZXNzYWdlPy5tb2RlcmF0aW9uX2RldGFpbHMpXG4gIFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS13aXRoLXRvdWNoLXN1cHBvcnRdPVwiaGFzVG91Y2hTdXBwb3J0XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXdpdGhvdXQtdG91Y2gtc3VwcG9ydF09XCIhaGFzVG91Y2hTdXBwb3J0XCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZXNzYWdlPy5kZWxldGVkX2F0OyBlbHNlIGRlbGV0ZWRNZXNzYWdlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2U/LnR5cGUgIT09ICdzeXN0ZW0nOyBlbHNlIHN5c3RlbU1lc3NhZ2VcIj5cbiAgICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXZhdGFyXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdC1hbmd1bGFyX19hdmF0YXItaG9zdCBzdHItY2hhdF9fbWVzc2FnZS1zZW5kZXItYXZhdGFyXCJcbiAgICAgICAgdHlwZT1cInVzZXJcIlxuICAgICAgICBsb2NhdGlvbj1cIm1lc3NhZ2Utc2VuZGVyXCJcbiAgICAgICAgW2ltYWdlVXJsXT1cIm1lc3NhZ2U/LnVzZXI/LmltYWdlXCJcbiAgICAgICAgW25hbWVdPVwibWVzc2FnZT8udXNlcj8ubmFtZSB8fCBtZXNzYWdlPy51c2VyPy5pZFwiXG4gICAgICAgIFt1c2VyXT1cIm1lc3NhZ2U/LnVzZXIgfHwgdW5kZWZpbmVkXCJcbiAgICAgID48L3N0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtaW5uZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiIWhhc1RvdWNoU3VwcG9ydCAmJiBhcmVPcHRpb25zVmlzaWJsZVwiXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnMgc3RyLWNoYXRfX21lc3NhZ2Utb3B0aW9uc1wiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLW9wdGlvbnNcIlxuICAgICAgICAgIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLW9wZW5dPVwiYXJlTWVzc2FnZU9wdGlvbnNPcGVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICNtZXNzYWdlQWN0aW9uc1RvZ2dsZVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLWFjdGlvbnMtY29udGFpbmVyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtY29udGFpbmVyXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc19fYWN0aW9uXG4gICAgICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZV9fYWN0aW9uc19fYWN0aW9uLS1vcHRpb25zXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2Zsb2F0VWlMb29zZV09XCJtZXNzYWdlTWVudUZsb2F0XCJcbiAgICAgICAgICAgIFtsb29zZVRyaWdnZXJdPVwiXG4gICAgICAgICAgICAgIG1lc3NhZ2VBY3Rpb25zU2VydmljZS5jdXN0b21BY3Rpb25DbGlja0hhbmRsZXIgPyAnbm9uZScgOiAnY2xpY2snXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW2hpZGVPblNjcm9sbF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbaGlkZU9uQ2xpY2tPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICAgICAgW2hpZGVPbk1vdXNlTGVhdmVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc2FibGVBbmltYXRpb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgW3ByZXZlbnRPdmVyZmxvd109XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwb3NpdGlvbkZpeGVkXT1cInRydWVcIlxuICAgICAgICAgICAgKG9uU0hvd24pPVwiYXJlTWVzc2FnZU9wdGlvbnNPcGVuID0gdHJ1ZVwiXG4gICAgICAgICAgICAob25IaWRkZW4pPVwiYXJlTWVzc2FnZU9wdGlvbnNPcGVuID0gZmFsc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgKm5nSWY9XCJ2aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCA+IDBcIlxuICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbnMtYm94LWJ1dHRvblwiXG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1vcHRpb25zLWJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJtZXNzYWdlT3B0aW9uc0J1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJtZXNzYWdlT3B0aW9uc0J1dHRvbkNsaWNrZWQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgIGljb249XCJhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9uLWljb25cIlxuICAgICAgICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1ob3N0XCI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAjZGVmYXVsdE1lc3NhZ2VSZWFjdGlvbnNcbiAgICAgICAgICAgIGxldC1tZXNzYWdlUmVhY3Rpb25Db3VudHM9XCJtZXNzYWdlUmVhY3Rpb25Db3VudHNcIlxuICAgICAgICAgICAgbGV0LWxhdGVzdFJlYWN0aW9ucz1cImxhdGVzdFJlYWN0aW9uc1wiXG4gICAgICAgICAgICBsZXQtbWVzc2FnZUlkPVwibWVzc2FnZUlkXCJcbiAgICAgICAgICAgIGxldC1vd25SZWFjdGlvbnM9XCJvd25SZWFjdGlvbnNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJlYW0tbWVzc2FnZS1yZWFjdGlvbnNcbiAgICAgICAgICAgICAgW21lc3NhZ2VSZWFjdGlvbkNvdW50c109XCJtZXNzYWdlUmVhY3Rpb25Db3VudHNcIlxuICAgICAgICAgICAgICBbbGF0ZXN0UmVhY3Rpb25zXT1cImxhdGVzdFJlYWN0aW9uc1wiXG4gICAgICAgICAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICAgICAgICAgICAgW293blJlYWN0aW9uc109XCJvd25SZWFjdGlvbnNcIlxuICAgICAgICAgICAgPjwvc3RyZWFtLW1lc3NhZ2UtcmVhY3Rpb25zPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubWVzc2FnZVJlYWN0aW9uc1RlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlUmVhY3Rpb25zO1xuICAgICAgICAgICAgICBjb250ZXh0OiBnZXRNZXNzYWdlUmVhY3Rpb25zQ29udGV4dCgpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxmbG9hdC11aS1jb250ZW50ICNtZXNzYWdlTWVudUZsb2F0PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2RlZmF1bHRNZXNzYWdlQWN0aW9uc0JveFxuICAgICAgICAgICAgbGV0LWlzTWluZT1cImlzTWluZVwiXG4gICAgICAgICAgICBsZXQtbWVzc2FnZUlucHV0PVwibWVzc2FnZVwiXG4gICAgICAgICAgICBsZXQtZW5hYmxlZEFjdGlvbnM9XCJlbmFibGVkQWN0aW9uc1wiXG4gICAgICAgICAgICBsZXQtbWVzc2FnZVRleHRIdG1sRWxlbWVudD1cIm1lc3NhZ2VUZXh0SHRtbEVsZW1lbnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdHJlYW0tbWVzc2FnZS1hY3Rpb25zLWJveFxuICAgICAgICAgICAgICBbaXNNaW5lXT1cImlzTWluZVwiXG4gICAgICAgICAgICAgIFttZXNzYWdlXT1cIm1lc3NhZ2VJbnB1dFwiXG4gICAgICAgICAgICAgIFtlbmFibGVkQWN0aW9uc109XCJlbmFibGVkQWN0aW9uc1wiXG4gICAgICAgICAgICAgIFttZXNzYWdlVGV4dEh0bWxFbGVtZW50XT1cIm1lc3NhZ2VUZXh0SHRtbEVsZW1lbnRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibWVzc2FnZUFjdGlvbnNCb3hDbGlja2VkKG1lc3NhZ2VNZW51RmxvYXQpXCJcbiAgICAgICAgICAgID48L3N0cmVhbS1tZXNzYWdlLWFjdGlvbnMtYm94PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZXNzYWdlQWN0aW9uc0JveFRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2VBY3Rpb25zQm94O1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGdldE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dCgpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mbG9hdC11aS1jb250ZW50PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1idWJibGUgc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1idWJibGVcIlxuICAgICAgICAgIFtjbGFzcy5zdHItY2hhdC1hbmd1bGFyX19tZXNzYWdlLWJ1YmJsZS0tYXR0YWNobWVudC1tb2RhbC1vcGVuXT1cIlxuICAgICAgICAgICAgaW1hZ2VBdHRhY2htZW50TW9kYWxTdGF0ZSA9PT0gJ29wZW5lZCdcbiAgICAgICAgICBcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1idWJibGVcIlxuICAgICAgICAgIFtmbG9hdFVpTG9vc2VdPVwibWVzc2FnZU1lbnVGbG9hdFwiXG4gICAgICAgICAgI21lc3NhZ2VNZW51VHJpZ2dlcj1cImZsb2F0VWlMb29zZVwiXG4gICAgICAgICAgI21lc3NhZ2VCdWJibGVcbiAgICAgICAgICBsb29zZVRyaWdnZXI9XCJub25lXCJcbiAgICAgICAgICBbaGlkZU9uU2Nyb2xsXT1cImZhbHNlXCJcbiAgICAgICAgICBbaGlkZU9uQ2xpY2tPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICAgIFtoaWRlT25Nb3VzZUxlYXZlXT1cImZhbHNlXCJcbiAgICAgICAgICBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICBbcHJldmVudE92ZXJmbG93XT1cInRydWVcIlxuICAgICAgICAgIChvblNob3duKT1cImFyZU1lc3NhZ2VPcHRpb25zT3BlbiA9IHRydWVcIlxuICAgICAgICAgIChvbkhpZGRlbik9XCJhcmVNZXNzYWdlT3B0aW9uc09wZW4gPSBmYWxzZVwiXG4gICAgICAgICAgW3Bvc2l0aW9uRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQXR0YWNobWVudCAmJiAhbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fYXR0YWNobWVudHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImF0dGFjaG1lbnRzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2U/LnRleHQgfHwgKG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlICYmIGhhc0F0dGFjaG1lbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtdGV4dFwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXRleHQtLXBvaW50ZXItY3Vyc29yXT1cIlxuICAgICAgICAgICAgICAobWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJyAmJlxuICAgICAgICAgICAgICAgIG1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSAhPT0gNDAzKSB8fFxuICAgICAgICAgICAgICAodGhpcy5tZXNzYWdlPy50eXBlID09PSAnZXJyb3InICYmXG4gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdlPy5tb2RlcmF0aW9uX2RldGFpbHMpIHx8XG4gICAgICAgICAgICAgIG1lc3NhZ2U/Lm1lc3NhZ2VfdGV4dF91cGRhdGVkX2F0XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm1lc3NhZ2VDbGlja2VkKClcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIm1lc3NhZ2VDbGlja2VkKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJpbm5lci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJcbiAgICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS10ZXh0LWlubmVyIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS10ZXh0LWlubmVyXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1saWdodC10ZXh0LWlubmVyLS1oYXMtYXR0YWNobWVudF09XCJcbiAgICAgICAgICAgICAgICBoYXNBdHRhY2htZW50XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJxdW90ZWRNZXNzYWdlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNBdHRhY2htZW50ICYmIG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhdHRhY2htZW50c1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZXNzYWdlPy50eXBlID09PSAnZXJyb3InXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNsaWVudC1lcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICAgICAgc3RyLWNoYXRfX3NpbXBsZS1tZXNzYWdlLS1lcnJvci1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS0tZXJyb3ItbWVzc2FnZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1lc3NhZ2U/Lm1vZGVyYXRpb25fZGV0YWlsc1wiPnt7XG4gICAgICAgICAgICAgICAgICBcInN0cmVhbUNoYXQuRXJyb3IgwrcgVW5zZW50XCIgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVzc2FnZT8uc3RhdHVzID09PSAnZmFpbGVkJ1wiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJlcnJvci1tZXNzYWdlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICAgICAgc3RyLWNoYXRfX3NpbXBsZS1tZXNzYWdlLS1lcnJvci1tZXNzYWdlXG4gICAgICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS0tZXJyb3ItbWVzc2FnZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgKG1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSA9PT0gNDAzXG4gICAgICAgICAgICAgICAgICAgID8gXCJzdHJlYW1DaGF0Lk1lc3NhZ2UgRmFpbGVkIMK3IFVuYXV0aG9yaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIDogXCJzdHJlYW1DaGF0Lk1lc3NhZ2UgRmFpbGVkIMK3IENsaWNrIHRvIHRyeSBhZ2FpblwiXG4gICAgICAgICAgICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgI21lc3NhZ2VUZXh0RWxlbWVudCBkYXRhLXRlc3RpZD1cInRleHRcIj5cbiAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlVGV4dFBhcnRzOyBlbHNlIGRlZmF1bHRDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS91c2UtdHJhY2stYnktZnVuY3Rpb24gLS0+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhcnQgb2YgbWVzc2FnZVRleHRQYXJ0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhcnQudHlwZSA9PT0gJ3RleHQnOyBlbHNlIG1lbnRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJwYXJ0LmNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtZW50aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TWVudGlvbiBsZXQtY29udGVudD1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1tZW50aW9uXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZW50aW9uVGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVudGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBnZXRNZW50aW9uQ29udGV4dChwYXJ0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheUFzID09PSAndGV4dCc7IGVsc2UgYXNIVE1MXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgbWVzc2FnZVRleHQgfHwgXCJcIiB9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNhc0hUTUxcbiAgICAgICAgICAgICAgICAgICAgICA+PHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaHRtbC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibWVzc2FnZVRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtZXJyb3ItaWNvblwiXG4gICAgICAgICAgICBpY29uPVwiZXJyb3JcIlxuICAgICAgICAgID48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInJlcGx5Q291bnRCdXR0b247IGNvbnRleHQ6IHsgbWVzc2FnZTogbWVzc2FnZSB9XCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lc3NhZ2VEYXRlQW5kU2VuZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGVsZXRlZE1lc3NhZ2U+XG4gIDxkaXYgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLWRlbGV0ZWQtY29tcG9uZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1kZWxldGVkLWlubmVyXCIgdHJhbnNsYXRlPlxuICAgICAgc3RyZWFtQ2hhdC5UaGlzIG1lc3NhZ2Ugd2FzIGRlbGV0ZWQuLi5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N5c3RlbU1lc3NhZ2U+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2Uuc3lzdGVtTWVzc2FnZVRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICBkZWZhdWx0U3lzdGVtTWVzc2FnZTtcbiAgICAgIGNvbnRleHQ6IGdldE1lc3NhZ2VDb250ZXh0KClcbiAgICBcIlxuICA+PC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFN5c3RlbU1lc3NhZ2UgbGV0LW1lc3NhZ2VJbnB1dD1cIm1lc3NhZ2VcIj5cbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwic3lzdGVtLW1lc3NhZ2VcIiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX190ZXh0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX19saW5lXCI+PC9kaXY+XG4gICAgICAgIDxwPnt7IG1lc3NhZ2VJbnB1dD8udGV4dCB9fTwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX2xpbmVcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLS1zeXN0ZW1fX2RhdGVcIj5cbiAgICAgICAge3sgcGFyc2VkRGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3F1b3RlZE1lc3NhZ2U+XG4gIDxkaXZcbiAgICAqbmdJZj1cIm1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlXCJcbiAgICBjbGFzcz1cInF1b3RlZC1tZXNzYWdlIHN0ci1jaGF0X19xdW90ZWQtbWVzc2FnZS1wcmV2aWV3XCJcbiAgICBkYXRhLXRlc3RpZD1cInF1b3RlZC1tZXNzYWdlLWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLm1pbmVdPVwiaXNTZW50QnlDdXJyZW50VXNlclwiXG4gICAgKGNsaWNrKT1cIlxuICAgICAganVtcFRvTWVzc2FnZShcbiAgICAgICAgKG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlKSEuaWQsXG4gICAgICAgIG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy5wYXJlbnRfaWRcbiAgICAgIClcbiAgICBcIlxuICAgIChrZXl1cC5lbnRlcik9XCJcbiAgICAgIGp1bXBUb01lc3NhZ2UoXG4gICAgICAgIChtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZSkhLmlkLFxuICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8ucGFyZW50X2lkXG4gICAgICApXG4gICAgXCJcbiAgPlxuICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICBkYXRhLXRlc3RpZD1cInFvdXRlZC1tZXNzYWdlLWF2YXRhclwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0LWFuZ3VsYXJfX2F2YXRhci1ob3N0IHN0ci1jaGF0X19tZXNzYWdlLXNlbmRlci1hdmF0YXJcIlxuICAgICAgdHlwZT1cInVzZXJcIlxuICAgICAgbG9jYXRpb249XCJxdW90ZWQtbWVzc2FnZS1zZW5kZXJcIlxuICAgICAgW2ltYWdlVXJsXT1cIm1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy51c2VyPy5pbWFnZVwiXG4gICAgICBbbmFtZV09XCJcbiAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnVzZXI/Lm5hbWUgfHwgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnVzZXI/LmlkXG4gICAgICBcIlxuICAgICAgW3VzZXJdPVwibWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnVzZXIgfHwgdW5kZWZpbmVkXCJcbiAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJxdW90ZWQtbWVzc2FnZS1pbm5lciBzdHItY2hhdF9fcXVvdGVkLW1lc3NhZ2UtYnViYmxlXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmF0dGFjaG1lbnRzICYmXG4gICAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmF0dGFjaG1lbnRzPy5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgI2RlZmF1bHRBdHRhY2htZW50c1xuICAgICAgICAgIGxldC1tZXNzYWdlSWQ9XCJtZXNzYWdlSWRcIlxuICAgICAgICAgIGxldC1hdHRhY2htZW50cz1cImF0dGFjaG1lbnRzXCJcbiAgICAgICAgICBsZXQtcGFyZW50TWVzc2FnZUlkPVwicGFyZW50TWVzc2FnZUlkXCJcbiAgICAgICAgICBsZXQtaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlSGFuZGxlcj1cImltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN0cmVhbS1hdHRhY2htZW50LWxpc3RcbiAgICAgICAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICAgICAgICAgIFthdHRhY2htZW50c109XCJhdHRhY2htZW50c1wiXG4gICAgICAgICAgICBbcGFyZW50TWVzc2FnZUlkXT1cInBhcmVudE1lc3NhZ2VJZFwiXG4gICAgICAgICAgICAoaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlKT1cImltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgPjwvc3RyZWFtLWF0dGFjaG1lbnQtbGlzdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5hdHRhY2htZW50TGlzdFRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgICBkZWZhdWx0QXR0YWNobWVudHM7XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRRdW90ZWRNZXNzYWdlQXR0YWNobWVudExpc3RDb250ZXh0KClcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxkaXZcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJxdW90ZWQtbWVzc2FnZS10ZXh0XCJcbiAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8udHJhbnNsYXRpb24gfHxcbiAgICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8uaHRtbCB8fFxuICAgICAgICAgIG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy50ZXh0XG4gICAgICAgIFwiXG4gICAgICA+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtZXNzYWdlRGF0ZUFuZFNlbmRlcj5cbiAgPG5nLWNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInNob3VsZERpc3BsYXlUcmFuc2xhdGlvbk5vdGljZVwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X190cmFuc2xhdGlvbi1ub3RpY2VcIlxuICAgICAgZGF0YS10ZXN0aWQ9XCJ0cmFuc2xhdGlvbi1ub3RpY2VcIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJkaXNwbGF5ZWRNZXNzYWdlVGV4dENvbnRlbnQgPT09ICd0cmFuc2xhdGlvbidcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInNlZS1vcmlnaW5hbFwiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAoY2xpY2spPVwiZGlzcGxheU9yaWdpbmFsTWVzc2FnZSgpXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImRpc3BsYXlPcmlnaW5hbE1lc3NhZ2UoKVwiXG4gICAgICA+XG4gICAgICAgIHN0cmVhbUNoYXQuU2VlIG9yaWdpbmFsIChhdXRvbWF0aWNhbGx5IHRyYW5zbGF0ZWQpXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJkaXNwbGF5ZWRNZXNzYWdlVGV4dENvbnRlbnQgPT09ICdvcmlnaW5hbCdcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInNlZS10cmFuc2xhdGlvblwiXG4gICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAoY2xpY2spPVwiZGlzcGxheVRyYW5zbGF0ZWRNZXNzYWdlKClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZGlzcGxheVRyYW5zbGF0ZWRNZXNzYWdlKClcIlxuICAgICAgPlxuICAgICAgICBzdHJlYW1DaGF0LlNlZSB0cmFuc2xhdGlvblxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmN1c3RvbU1lc3NhZ2VNZXRhZGF0YVRlbXBsYXRlJCB8IGFzeW5jXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2N1c3RvbS1tZXNzYWdlLW1ldGFkYXRhXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuY3VzdG9tTWVzc2FnZU1ldGFkYXRhVGVtcGxhdGUkIHwgYXN5bmMpITtcbiAgICAgICAgICAgIGNvbnRleHQ6IGdldE1lc3NhZ2VNZXRhZGF0YUNvbnRleHQoKVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiXG4gICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLWRhdGFcbiAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLWRhdGFcbiAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2UtbWV0YWRhdGFcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1lc3NhZ2VTdGF0dXNcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCIhaXNTZW50QnlDdXJyZW50VXNlclwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwic2VuZGVyXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtbmFtZSBzdHItY2hhdF9fbWVzc2FnZS1zZW5kZXItbmFtZVwiXG4gICAgICA+XG4gICAgICAgIHt7IG1lc3NhZ2U/LnVzZXI/Lm5hbWUgPyBtZXNzYWdlPy51c2VyPy5uYW1lIDogbWVzc2FnZT8udXNlcj8uaWQgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGF0ZVwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXRpbWVzdGFtcCBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtdGltZVwiXG4gICAgICA+XG4gICAgICAgIHt7IHBhcnNlZERhdGUgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy5tZXNzYWdlX3RleHRfdXBkYXRlZF9hdFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZWRpdGVkLWZsYWdcIlxuICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc2FnZS1zaW1wbGUtZWRpdGVkXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICA+c3RyZWFtQ2hhdC5FZGl0ZWQ8L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJlZGl0ZWQtdGltZXN0YW1wXCJcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWVkaXRlZC10aW1lc3RhbXBcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdzdHItY2hhdF9fbWVzc2FnZS1lZGl0ZWQtdGltZXN0YW1wLS1vcGVuJzogaXNFZGl0ZWRGbGFnT3BlbmVkLFxuICAgICAgICAgICAgJ3N0ci1jaGF0X19tZXNzYWdlLWVkaXRlZC10aW1lc3RhbXAtLWNvbGxhcHNlZCc6ICFpc0VkaXRlZEZsYWdPcGVuZWRcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5zdHJlYW1DaGF0LkVkaXRlZDwvc3Bhbj5cbiAgICAgICAgICA8dGltZVxuICAgICAgICAgICAgZGF0ZVRpbWU9XCJ7eyBtZXNzYWdlPy5tZXNzYWdlX3RleHRfdXBkYXRlZF9hdCB9fVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7IG1lc3NhZ2U/Lm1lc3NhZ2VfdGV4dF91cGRhdGVkX2F0IH19XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBwYXNlZEVkaXRlZERhdGUgfX1cbiAgICAgICAgICA8L3RpbWU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtZXNzYWdlU3RhdHVzPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJcbiAgICAgIGlzU2VudEJ5Q3VycmVudFVzZXIgJiZcbiAgICAgICgoaXNMYXN0U2VudE1lc3NhZ2UgJiYgbWVzc2FnZT8uc3RhdHVzID09PSAncmVjZWl2ZWQnKSB8fFxuICAgICAgICBtZXNzYWdlPy5zdGF0dXMgPT09ICdzZW5kaW5nJylcbiAgICBcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2U/LnN0YXR1cyA9PT0gJ3NlbmRpbmcnOyBlbHNlIHNlbnRTdGF0dXNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZW5kaW5nU3RhdHVzXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNzZW50U3RhdHVzPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIG1vZGUgPT09ICdtYWluJyAmJiBpc01lc3NhZ2VEZWxpdmVyZWRBbmRSZWFkICYmIGNhbkRpc3BsYXlSZWFkU3RhdHVzO1xuICAgICAgICAgIGVsc2UgZGVsaXZlcmVkU3RhdHVzXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZWFkU3RhdHVzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVsaXZlcmVkU3RhdHVzPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmRlbGl2ZXJlZFN0YXR1c1RlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgZGVmYXVsdERlbGl2ZXJlZFN0YXR1cztcbiAgICAgICAgICBjb250ZXh0OiBnZXREZWxpdmVyZWRTdGF0dXNDb250ZXh0KClcbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdERlbGl2ZXJlZFN0YXR1cz5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ21haW4nXCJcbiAgICAgICAgY2xhc3M9XCJcbiAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzXG4gICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1cy1hbmd1bGFyXG4gICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc3RhdHVzXG4gICAgICAgIFwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGVsaXZlcmVkLWluZGljYXRvclwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIFtmbG9hdFVpTG9vc2VdPVwiZmxvYXRpbmdDb250ZW50XCJcbiAgICAgICAgbG9vc2VQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICBbbG9vc2VUcmlnZ2VyXT1cImhhc1RvdWNoU3VwcG9ydCA/ICdjbGljaycgOiAnaG92ZXInXCJcbiAgICAgICAgW2Rpc2FibGVBbmltYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgIFtoaWRlT25DbGlja091dHNpZGVdPVwidHJ1ZVwiXG4gICAgICAgIFtwb3NpdGlvbkZpeGVkXT1cInRydWVcIlxuICAgICAgICBbcHJldmVudE92ZXJmbG93XT1cInRydWVcIlxuICAgICAgPlxuICAgICAgICA8ZmxvYXQtdWktY29udGVudCAjZmxvYXRpbmdDb250ZW50PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcCBzdHItY2hhdF9fdG9vbHRpcC1hbmd1bGFyXCI+XG4gICAgICAgICAgICB7eyBcInN0cmVhbUNoYXQuRGVsaXZlcmVkXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mbG9hdC11aS1jb250ZW50PlxuICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImRlbGl2ZXJlZC1pY29uXCJcbiAgICAgICAgICBpY29uPVwiZGVsaXZlcmVkXCJcbiAgICAgICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3NlbmRpbmdTdGF0dXM+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2Uuc2VuZGluZ1N0YXR1c1RlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgZGVmYXVsdFNlbmRpbmdTdGF0dXM7XG4gICAgICAgICAgY29udGV4dDogZ2V0U2VuZGluZ1N0YXR1c0NvbnRleHQoKVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VuZGluZ1N0YXR1cz5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1c1xuICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtYW5ndWxhclxuICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXN0YXR1c1xuICAgICAgICBcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInNlbmRpbmctaW5kaWNhdG9yXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2Zsb2F0VWlMb29zZV09XCJmbG9hdGluZ0NvbnRlbnRcIlxuICAgICAgICBsb29zZVBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIFtsb29zZVRyaWdnZXJdPVwiaGFzVG91Y2hTdXBwb3J0ID8gJ2NsaWNrJyA6ICdob3ZlcidcIlxuICAgICAgICBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgW2hpZGVPbkNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgW3Bvc2l0aW9uRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwcmV2ZW50T3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxmbG9hdC11aS1jb250ZW50ICNmbG9hdGluZ0NvbnRlbnQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwIHN0ci1jaGF0X190b29sdGlwLWFuZ3VsYXJcIj5cbiAgICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5TZW5kaW5nLi4uXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mbG9hdC11aS1jb250ZW50PlxuICAgICAgICA8c3RyZWFtLWxvYWRpbmctaW5kaWNhdG9yLXBsYWNlaG9sZGVyXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJsb2FkaW5nLWluZGljYXRvclwiXG4gICAgICAgID48L3N0cmVhbS1sb2FkaW5nLWluZGljYXRvci1wbGFjZWhvbGRlcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjcmVhZFN0YXR1cz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5yZWFkU3RhdHVzVGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgICBkZWZhdWx0UmVhZFN0YXR1cztcbiAgICAgICAgICBjb250ZXh0OiBnZXRSZWFkU3RhdHVzQ29udGV4dCgpXG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRSZWFkU3RhdHVzIGxldC1yZWFkQnlUZXh0PVwicmVhZEJ5VGV4dFwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJcbiAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzXG4gICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1cy1hbmd1bGFyXG4gICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc3RhdHVzXG4gICAgICAgIFwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVhZC1pbmRpY2F0b3JcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICBbZmxvYXRVaUxvb3NlXT1cImZsb2F0aW5nQ29udGVudFwiXG4gICAgICAgIGxvb3NlUGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgW2xvb3NlVHJpZ2dlcl09XCJoYXNUb3VjaFN1cHBvcnQgPyAnY2xpY2snIDogJ2hvdmVyJ1wiXG4gICAgICAgIFtkaXNhYmxlQW5pbWF0aW9uXT1cInRydWVcIlxuICAgICAgICBbaGlkZU9uQ2xpY2tPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICBbcG9zaXRpb25GaXhlZF09XCJ0cnVlXCJcbiAgICAgICAgW3ByZXZlbnRPdmVyZmxvd109XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAgPGZsb2F0LXVpLWNvbnRlbnQgI2Zsb2F0aW5nQ29udGVudD5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X190b29sdGlwIHN0ci1jaGF0X190b29sdGlwLWFuZ3VsYXJcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWFkLWJ5LXRvb2x0aXBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHJlYWRCeVRleHQgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mbG9hdC11aS1jb250ZW50PlxuICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXIgaWNvbj1cInJlYWRcIj48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyZXBseUNvdW50QnV0dG9uPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJcbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1yZXBseS1idXR0b25cbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXJlcGxpZXMtY291bnQtYnV0dG9uLXdyYXBwZXJcbiAgICBcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJzaG91bGREaXNwbGF5VGhyZWFkTGlua1wiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlcGxpZXMtY291bnQtYnV0dG9uXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwicmVwbHktY291bnQtYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJzZXRBc0FjdGl2ZVBhcmVudE1lc3NhZ2UoKVwiXG4gICAgPlxuICAgICAge3ttZXNzYWdlPy5yZXBseV9jb3VudCA9PT0gMSA/ICgnc3RyZWFtQ2hhdC4xIHJlcGx5JyB8IHRyYW5zbGF0ZSkgOiAoJ3N0cmVhbUNoYXQue3sgcmVwbHlDb3VudCB9fVxuICAgICAgcmVwbGllcycgfCB0cmFuc2xhdGU6cmVwbHlDb3VudFBhcmFtKX19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhdHRhY2htZW50c1RlbXBsYXRlPlxuICA8bmctdGVtcGxhdGVcbiAgICAjZGVmYXVsdEF0dGFjaG1lbnRzXG4gICAgbGV0LW1lc3NhZ2VJZD1cIm1lc3NhZ2VJZFwiXG4gICAgbGV0LWF0dGFjaG1lbnRzPVwiYXR0YWNobWVudHNcIlxuICAgIGxldC1wYXJlbnRNZXNzYWdlSWQ9XCJwYXJlbnRNZXNzYWdlSWRcIlxuICAgIGxldC1pbWFnZU1vZGFsU3RhdGVDaGFuZ2VIYW5kbGVyPVwiaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlSGFuZGxlclwiXG4gID5cbiAgICA8c3RyZWFtLWF0dGFjaG1lbnQtbGlzdFxuICAgICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIlxuICAgICAgW2F0dGFjaG1lbnRzXT1cImF0dGFjaG1lbnRzXCJcbiAgICAgIFtwYXJlbnRNZXNzYWdlSWRdPVwicGFyZW50TWVzc2FnZUlkXCJcbiAgICAgIChpbWFnZU1vZGFsU3RhdGVDaGFuZ2UpPVwiaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlSGFuZGxlcigkZXZlbnQpXCJcbiAgICA+PC9zdHJlYW0tYXR0YWNobWVudC1saXN0PlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmF0dGFjaG1lbnRMaXN0VGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgIGRlZmF1bHRBdHRhY2htZW50cztcbiAgICAgIGNvbnRleHQ6IGdldEF0dGFjaG1lbnRMaXN0Q29udGV4dCgpXG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
521
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS9tZXNzYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlL21lc3NhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBTUwsdUJBQXVCLEVBRXZCLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQWlCdkIsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBNEIsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZTFDOztHQUVHO0FBT0gsTUFBTSxPQUFPLGdCQUFnQjtJQXVFM0IsWUFDVSxpQkFBb0MsRUFDcEMsY0FBOEIsRUFDL0Isc0JBQThDLEVBQzdDLEtBQXdCLEVBQ3hCLFVBQTZCLEVBQzdCLGNBQThCLEVBQy9CLHFCQUE0QyxFQUMzQyxNQUFjO1FBUGQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0IsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM3QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUMzQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBeEV4Qjs7V0FFRztRQUNNLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztRQUs5Qzs7V0FFRztRQUNNLFNBQUksR0FB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N0IsS0FBSztnQkFJRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBSUcsT0FBTztzQkFBZixLQUFLO2dCQW9DTixrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUcvQixnQkFBZ0I7c0JBRGYsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBRUksa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDSCxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIEFmdGVyVmlld0luaXQsXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF0dGFjaG1lbnQsIFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBBdHRhY2htZW50TGlzdENvbnRleHQsXG4gIE1lbnRpb25UZW1wbGF0ZUNvbnRleHQsXG4gIE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dCxcbiAgTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQsXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIFN0cmVhbU1lc3NhZ2UsXG4gIERlbGl2ZXJlZFN0YXR1c0NvbnRleHQsXG4gIFNlbmRpbmdTdGF0dXNDb250ZXh0LFxuICBSZWFkU3RhdHVzQ29udGV4dCxcbiAgU3lzdGVtTWVzc2FnZUNvbnRleHQsXG4gIEN1c3RvbU1ldGFkYXRhQ29udGV4dCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IGVtb2ppUmVnZXggZnJvbSAnZW1vamktcmVnZXgnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IGxpc3RVc2VycyB9IGZyb20gJy4uL2xpc3QtdXNlcnMnO1xuaW1wb3J0IHsgRGF0ZVBhcnNlclNlcnZpY2UgfSBmcm9tICcuLi9kYXRlLXBhcnNlci5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VBY3Rpb25zU2VydmljZSB9IGZyb20gJy4uL21lc3NhZ2UtYWN0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE5neEZsb2F0VWlDb250ZW50Q29tcG9uZW50LFxuICBOZ3hGbG9hdFVpTG9vc2VEaXJlY3RpdmUsXG59IGZyb20gJ25neC1mbG9hdC11aSc7XG5cbnR5cGUgTWVzc2FnZVBhcnQgPSB7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgdHlwZTogJ3RleHQnIHwgJ21lbnRpb24nO1xuICB1c2VyPzogVXNlclJlc3BvbnNlO1xufTtcblxuLyoqXG4gKiBUaGUgYE1lc3NhZ2VgIGNvbXBvbmVudCBkaXNwbGF5cyBhIG1lc3NhZ2Ugd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHN1Y2ggYXMgc2VuZGVyIGFuZCBkYXRlLCBhbmQgZW5hYmxlcyBbaW50ZXJhY3Rpb24gd2l0aCB0aGUgbWVzc2FnZSAoaS5lLiBlZGl0IG9yIHJlYWN0KV0oLi4vY29uY2VwdHMvbWVzc2FnZS1pbnRlcmFjdGlvbnMubWR4KS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxue1xuICAvKipcbiAgICogVGhlIG1lc3NhZ2UgdG8gYmUgZGlzcGxheWVkXG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlOiBTdHJlYW1NZXNzYWdlIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgW2NoYW5uZWwgY2FwYWJpbGl0aWVzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC9jaGFubmVsX2NhcGFiaWxpdGllcy8/bGFuZ3VhZ2U9amF2YXNjcmlwdCkgdGhhdCBhcmUgZW5hYmxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlciwgdGhlIGxpc3Qgb2YgW3N1cHBvcnRlZCBpbnRlcmFjdGlvbnNdKC4uL2NvbmNlcHRzL21lc3NhZ2UtaW50ZXJhY3Rpb25zLm1keCkgY2FuIGJlIGZvdW5kIGluIG91ciBtZXNzYWdlIGludGVyYWN0aW9uIGd1aWRlLiBVbmF0aG9yaXplZCBhY3Rpb25zIHdvbid0IGJlIGRpc3BsYXllZCBvbiB0aGUgVUkuIFRoZSBbYE1lc3NhZ2VMaXN0YF0oLi9NZXNzYWdlTGlzdENvbXBvbmVudC5tZHgpIGNvbXBvbmVudCBhdXRvbWF0aWNhbGx5IHNldHMgdGhpcyBiYXNlZCBvbiBbY2hhbm5lbCBjYXBhYmlsaXRpZXNdKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAgICovXG4gIEBJbnB1dCgpIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIG1lc3NhZ2Ugc3RhdHVzIChzZW5kaW5nLCBzZW50LCB3aG8gcmVhZCB0aGUgbWVzc2FnZSkgaXMgZGlzcGxheWVkLlxuICAgKi9cbiAgQElucHV0KCkgaXNMYXN0U2VudE1lc3NhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBtZXNzYWdlIGlzIGJlaW5nIGRpc3BhbHllZCBpbiBhIGNoYW5uZWwgb3IgaW4gYSBbdGhyZWFkXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC90aHJlYWRzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KS5cbiAgICovXG4gIEBJbnB1dCgpIG1vZGU6ICd0aHJlYWQnIHwgJ21haW4nID0gJ21haW4nO1xuICAvKipcbiAgICogSGlnaGxpZ2h0aW5nIGlzIHVzZWQgdG8gYWRkIHZpc3VhbCBlbXBoYXNpemUgdG8gYSBtZXNzYWdlIHdoZW4ganVtcGluZyB0byB0aGUgbWVzc2FnZVxuICAgKi9cbiAgQElucHV0KCkgaXNIaWdobGlnaHRlZCA9IGZhbHNlO1xuICAvKipcbiAgICogQW4gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHdoZW4gdGhlIG1lc3NhZ2UgbGlzdCBpcyBzY3JvbGxlZCwgaXQncyB1c2VkIHRvIHByZXZlbnQgb3BlbmluZyB0aGUgbWVzc2FnZSBtZW51IHdoaWxlIHNjcm9sbCBpcyBpbiBwcm9ncmVzc1xuICAgKi9cbiAgQElucHV0KCkgc2Nyb2xsJD86IE9ic2VydmFibGU8dm9pZD47XG4gIGNhblJlY2VpdmVSZWFkRXZlbnRzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBjYW5SZWFjdFRvTWVzc2FnZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgaXNFZGl0ZWRGbGFnT3BlbmVkID0gZmFsc2U7XG4gIG1lc3NhZ2VUZXh0UGFydHM6IE1lc3NhZ2VQYXJ0W10gfCB1bmRlZmluZWQgPSBbXTtcbiAgbWVzc2FnZVRleHQ/OiBzdHJpbmc7XG4gIHNob3VsZERpc3BsYXlUcmFuc2xhdGlvbk5vdGljZSA9IGZhbHNlO1xuICBkaXNwbGF5ZWRNZXNzYWdlVGV4dENvbnRlbnQ6ICdvcmlnaW5hbCcgfCAndHJhbnNsYXRpb24nID0gJ29yaWdpbmFsJztcbiAgaW1hZ2VBdHRhY2htZW50TW9kYWxTdGF0ZTogJ29wZW5lZCcgfCAnY2xvc2VkJyA9ICdjbG9zZWQnO1xuICBzaG91bGREaXNwbGF5VGhyZWFkTGluayA9IGZhbHNlO1xuICBpc1NlbnRCeUN1cnJlbnRVc2VyID0gZmFsc2U7XG4gIHJlYWRCeVRleHQgPSAnJztcbiAgZGlzcGxheUFzOiAndGV4dCcgfCAnaHRtbCc7XG4gIGxhc3RSZWFkVXNlcjogVXNlclJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBpc09ubHlSZWFkQnlNZSA9IGZhbHNlO1xuICBpc1JlYWRCeU11bHRpcGxlVXNlcnMgPSBmYWxzZTtcbiAgaXNNZXNzYWdlRGVsaXZlcmVkQW5kUmVhZCA9IGZhbHNlO1xuICBwYXJzZWREYXRlID0gJyc7XG4gIHBhc2VkRWRpdGVkRGF0ZSA9ICcnO1xuICBhcmVPcHRpb25zVmlzaWJsZSA9IGZhbHNlO1xuICBoYXNBdHRhY2htZW50ID0gZmFsc2U7XG4gIGhhc1JlYWN0aW9ucyA9IGZhbHNlO1xuICByZXBseUNvdW50UGFyYW06IHsgcmVwbHlDb3VudDogbnVtYmVyIHwgdW5kZWZpbmVkIH0gPSB7XG4gICAgcmVwbHlDb3VudDogdW5kZWZpbmVkLFxuICB9O1xuICBhcmVNZXNzYWdlT3B0aW9uc09wZW4gPSBmYWxzZTtcbiAgY2FuRGlzcGxheVJlYWRTdGF0dXMgPSBmYWxzZTtcbiAgaGFzVG91Y2hTdXBwb3J0ID0gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDA7XG4gIHByaXZhdGUgcXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzOiBBdHRhY2htZW50W10gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBpc1ZpZXdJbml0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSB1c2VySWQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgdXJsUmVnZXhwID1cbiAgICAvKD86KD86aHR0cHM/fGZ0cHxmaWxlKTpcXC9cXC98d3d3XFwufGZ0cFxcLikoPzpcXChbLUEtWjAtOSsmQCMvJT1+X3wkPyE6LC5dKlxcKXxbLUEtWjAtOSsmQCMvJT1+X3wkPyE6LC5dKSooPzpcXChbLUEtWjAtOSsmQCMvJT1+X3wkPyE6LC5dKlxcKXxbQS1aMC05KyZAIy8lPX5ffCRdKS9naW07XG4gIHByaXZhdGUgZW1vamlSZWdleHAgPSBuZXcgUmVnRXhwKGVtb2ppUmVnZXgoKSwgJ2cnKTtcbiAgQFZpZXdDaGlsZCgnbWVzc2FnZU1lbnVUcmlnZ2VyJylcbiAgbWVzc2FnZU1lbnVUcmlnZ2VyITogTmd4RmxvYXRVaUxvb3NlRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkKCdtZXNzYWdlTWVudUZsb2F0JylcbiAgbWVzc2FnZU1lbnVGbG9hdCE6IE5neEZsb2F0VWlDb250ZW50Q29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdtZXNzYWdlVGV4dEVsZW1lbnQnKSBtZXNzYWdlVGV4dEVsZW1lbnQ/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnbWVzc2FnZUJ1YmJsZScpIG1lc3NhZ2VCdWJibGU/OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgcHJpdmF0ZSBzaG93TWVzc2FnZU1lbnVUaW1lb3V0PzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgc2hvdWxkUHJldmVudE1lc3NhZ2VNZW51Q2xvc2UgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGF0ZVBhcnNlcjogRGF0ZVBhcnNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICAgcHVibGljIG1lc3NhZ2VBY3Rpb25zU2VydmljZTogTWVzc2FnZUFjdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgdGhpcy5kaXNwbGF5QXMgPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmRpc3BsYXlBcztcbiAgfVxuXG4gIGdldCB2aXNpYmxlTWVzc2FnZUFjdGlvbnNDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQ7XG4gIH1cblxuICBzZXQgdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQoY291bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX3Zpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID0gY291bnQ7XG4gICAgaWYgKHRoaXMuYXJlT3B0aW9uc1Zpc2libGUgJiYgdGhpcy5fdmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPT09IDApIHtcbiAgICAgIHRoaXMuYXJlT3B0aW9uc1Zpc2libGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UudXNlciQuc3Vic2NyaWJlKCh1KSA9PiB7XG4gICAgICAgIGlmICh1Py5pZCAhPT0gdGhpcy51c2VySWQpIHtcbiAgICAgICAgICB0aGlzLnVzZXJJZCA9IHU/LmlkO1xuICAgICAgICAgIHRoaXMuc2V0SXNTZW50QnlDdXJyZW50VXNlcigpO1xuICAgICAgICAgIHRoaXMuc2V0TGFzdFJlYWRVc2VyKCk7XG4gICAgICAgICAgaWYgKHRoaXMuaXNWaWV3SW5pdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbnMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm1lc3NhZ2UpIHtcbiAgICAgICAgICBjb25zdCBudW1iZXJPZkVuYWJsZWRBY3Rpb25zID1cbiAgICAgICAgICAgIHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmdldEF1dGhvcml6ZWRNZXNzYWdlQWN0aW9uc0NvdW50KFxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2UsXG4gICAgICAgICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGlmIChudW1iZXJPZkVuYWJsZWRBY3Rpb25zICE9PSB0aGlzLnZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID0gbnVtYmVyT2ZFbmFibGVkQWN0aW9ucztcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5tZXNzYWdlKSB7XG4gICAgICB0aGlzLnNob3VsZERpc3BsYXlUcmFuc2xhdGlvbk5vdGljZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kaXNwbGF5ZWRNZXNzYWdlVGV4dENvbnRlbnQgPSAnb3JpZ2luYWwnO1xuICAgICAgdGhpcy5jcmVhdGVNZXNzYWdlUGFydHMoKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsQXR0YWNobWVudHMgPSB0aGlzLm1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy5hdHRhY2htZW50cztcbiAgICAgIHRoaXMucXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzID1cbiAgICAgICAgb3JpZ2luYWxBdHRhY2htZW50cyAmJiBvcmlnaW5hbEF0dGFjaG1lbnRzLmxlbmd0aFxuICAgICAgICAgID8gW29yaWdpbmFsQXR0YWNobWVudHNbMF1dXG4gICAgICAgICAgOiBbXTtcbiAgICAgIHRoaXMuc2V0SXNTZW50QnlDdXJyZW50VXNlcigpO1xuICAgICAgdGhpcy5zZXRMYXN0UmVhZFVzZXIoKTtcbiAgICAgIHRoaXMucmVhZEJ5VGV4dCA9IHRoaXMubWVzc2FnZT8ucmVhZEJ5XG4gICAgICAgID8gbGlzdFVzZXJzKHRoaXMubWVzc2FnZS5yZWFkQnkpXG4gICAgICAgIDogJyc7XG4gICAgICB0aGlzLmlzT25seVJlYWRCeU1lID0gISEoXG4gICAgICAgIHRoaXMubWVzc2FnZSAmJlxuICAgICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5ICYmXG4gICAgICAgIHRoaXMubWVzc2FnZS5yZWFkQnkubGVuZ3RoID09PSAwXG4gICAgICApO1xuICAgICAgdGhpcy5pc1JlYWRCeU11bHRpcGxlVXNlcnMgPSAhIShcbiAgICAgICAgdGhpcy5tZXNzYWdlICYmXG4gICAgICAgIHRoaXMubWVzc2FnZS5yZWFkQnkgJiZcbiAgICAgICAgdGhpcy5tZXNzYWdlLnJlYWRCeS5sZW5ndGggPiAxXG4gICAgICApO1xuICAgICAgdGhpcy5pc01lc3NhZ2VEZWxpdmVyZWRBbmRSZWFkID0gISEoXG4gICAgICAgIHRoaXMubWVzc2FnZSAmJlxuICAgICAgICB0aGlzLm1lc3NhZ2UucmVhZEJ5ICYmXG4gICAgICAgIHRoaXMubWVzc2FnZS5zdGF0dXMgPT09ICdyZWNlaXZlZCcgJiZcbiAgICAgICAgdGhpcy5tZXNzYWdlLnJlYWRCeS5sZW5ndGggPiAwXG4gICAgICApO1xuICAgICAgdGhpcy5wYXJzZWREYXRlID1cbiAgICAgICAgKHRoaXMubWVzc2FnZSAmJlxuICAgICAgICAgIHRoaXMubWVzc2FnZS5jcmVhdGVkX2F0ICYmXG4gICAgICAgICAgdGhpcy5kYXRlUGFyc2VyLnBhcnNlRGF0ZVRpbWUodGhpcy5tZXNzYWdlLmNyZWF0ZWRfYXQpKSB8fFxuICAgICAgICAnJztcbiAgICAgIHRoaXMucGFzZWRFZGl0ZWREYXRlID1cbiAgICAgICAgKHRoaXMubWVzc2FnZSAmJlxuICAgICAgICAgIHRoaXMubWVzc2FnZS5tZXNzYWdlX3RleHRfdXBkYXRlZF9hdCAmJlxuICAgICAgICAgIHRoaXMuZGF0ZVBhcnNlci5wYXJzZURhdGVUaW1lKFxuICAgICAgICAgICAgbmV3IERhdGUodGhpcy5tZXNzYWdlLm1lc3NhZ2VfdGV4dF91cGRhdGVkX2F0KVxuICAgICAgICAgICkpIHx8XG4gICAgICAgICcnO1xuICAgICAgdGhpcy5oYXNBdHRhY2htZW50ID1cbiAgICAgICAgISF0aGlzLm1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmICEhdGhpcy5tZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aDtcbiAgICAgIHRoaXMuaGFzUmVhY3Rpb25zID1cbiAgICAgICAgISF0aGlzLm1lc3NhZ2U/LnJlYWN0aW9uX2NvdW50cyAmJlxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLm1lc3NhZ2UucmVhY3Rpb25fY291bnRzKS5sZW5ndGggPiAwO1xuICAgICAgdGhpcy5yZXBseUNvdW50UGFyYW0gPSB7IHJlcGx5Q291bnQ6IHRoaXMubWVzc2FnZT8ucmVwbHlfY291bnQgfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zKSB7XG4gICAgICB0aGlzLmNhblJlYWN0VG9NZXNzYWdlID1cbiAgICAgICAgdGhpcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMuaW5kZXhPZignc2VuZC1yZWFjdGlvbicpICE9PSAtMTtcbiAgICAgIHRoaXMuY2FuUmVjZWl2ZVJlYWRFdmVudHMgPVxuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKCdyZWFkLWV2ZW50cycpICE9PSAtMTtcbiAgICAgIHRoaXMuY2FuRGlzcGxheVJlYWRTdGF0dXMgPVxuICAgICAgICB0aGlzLmNhblJlY2VpdmVSZWFkRXZlbnRzICE9PSBmYWxzZSAmJlxuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKCdyZWFkLWV2ZW50cycpICE9PSAtMTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSB8fCBjaGFuZ2VzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyB8fCBjaGFuZ2VzLm1vZGUpIHtcbiAgICAgIHRoaXMuc2hvdWxkRGlzcGxheVRocmVhZExpbmsgPVxuICAgICAgICAhIXRoaXMubWVzc2FnZT8ucmVwbHlfY291bnQgJiYgdGhpcy5tb2RlICE9PSAndGhyZWFkJztcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSB8fCBjaGFuZ2VzLm1vZGUgfHwgY2hhbmdlcy5lbmFibGVkTWVzc2FnZUFjdGlvbnMpIHtcbiAgICAgIHRoaXMuYXJlT3B0aW9uc1Zpc2libGUgPSB0aGlzLm1lc3NhZ2VcbiAgICAgICAgPyAhKFxuICAgICAgICAgICAgIXRoaXMubWVzc2FnZS50eXBlIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ2Vycm9yJyB8fFxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLnR5cGUgPT09ICdzeXN0ZW0nIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ2RlbGV0ZWQnIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2UudHlwZSA9PT0gJ2VwaGVtZXJhbCcgfHxcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZS5zdGF0dXMgPT09ICdmYWlsZWQnIHx8XG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2Uuc3RhdHVzID09PSAnc2VuZGluZycgfHxcbiAgICAgICAgICAgICh0aGlzLm1vZGUgPT09ICd0aHJlYWQnICYmICF0aGlzLm1lc3NhZ2UucGFyZW50X2lkKSB8fFxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlLmRlbGV0ZWRfYXQgfHxcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgIClcbiAgICAgICAgOiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSB8fCBjaGFuZ2VzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucykge1xuICAgICAgaWYgKHRoaXMubWVzc2FnZSkge1xuICAgICAgICB0aGlzLnZpc2libGVNZXNzYWdlQWN0aW9uc0NvdW50ID1cbiAgICAgICAgICB0aGlzLm1lc3NhZ2VBY3Rpb25zU2VydmljZS5nZXRBdXRob3JpemVkTWVzc2FnZUFjdGlvbnNDb3VudChcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSxcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gICAgaWYgKHRoaXMuaGFzVG91Y2hTdXBwb3J0ICYmIHRoaXMubWVzc2FnZUJ1YmJsZT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyTWVudVRyaWdnZXJFdmVudEhhbmRsZXJzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIG1vdXNlUHVzaGVkRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLmhhc1RvdWNoU3VwcG9ydCB8fFxuICAgICAgZXZlbnQuYnV0dG9uICE9PSAwIHx8XG4gICAgICAhdGhpcy5hcmVPcHRpb25zVmlzaWJsZVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXJ0TWVzc2FnZU1lbnVTaG93VGltZXIoeyBmcm9tVG91Y2g6IGZhbHNlIH0pO1xuICB9XG5cbiAgbW91c2VSZWxlYXNlZCgpIHtcbiAgICB0aGlzLnN0b3BNZXNzYWdlTWVudVNob3dUaW1lcigpO1xuICB9XG5cbiAgdG91Y2hTdGFydGVkKCkge1xuICAgIGlmICghdGhpcy5hcmVPcHRpb25zVmlzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0YXJ0TWVzc2FnZU1lbnVTaG93VGltZXIoeyBmcm9tVG91Y2g6IHRydWUgfSk7XG4gIH1cblxuICB0b3VjaEVuZGVkKCkge1xuICAgIHRoaXMuc3RvcE1lc3NhZ2VNZW51U2hvd1RpbWVyKCk7XG4gIH1cblxuICBtZXNzYWdlQnViYmxlQ2xpY2tlZChldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuaGFzVG91Y2hTdXBwb3J0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnNob3VsZFByZXZlbnRNZXNzYWdlTWVudUNsb3NlKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMuc2hvdWxkUHJldmVudE1lc3NhZ2VNZW51Q2xvc2UgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXJlTWVzc2FnZU9wdGlvbnNPcGVuKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VNZW51VHJpZ2dlcj8uaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIG1lc3NhZ2VPcHRpb25zQnV0dG9uQ2xpY2tlZCgpIHtcbiAgICBpZiAoIXRoaXMubWVzc2FnZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VBY3Rpb25zU2VydmljZS5jdXN0b21BY3Rpb25DbGlja0hhbmRsZXIoe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICAgIGVuYWJsZWRBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgICAgY3VzdG9tQWN0aW9uczogdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9ucyQuZ2V0VmFsdWUoKSxcbiAgICAgICAgaXNNaW5lOiB0aGlzLmlzU2VudEJ5Q3VycmVudFVzZXIsXG4gICAgICAgIG1lc3NhZ2VUZXh0SHRtbEVsZW1lbnQ6IHRoaXMubWVzc2FnZVRleHRFbGVtZW50Py5uYXRpdmVFbGVtZW50LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXJlTWVzc2FnZU9wdGlvbnNPcGVuID0gIXRoaXMuYXJlTWVzc2FnZU9wdGlvbnNPcGVuO1xuICAgIH1cbiAgfVxuXG4gIG1lc3NhZ2VBY3Rpb25zQm94Q2xpY2tlZChmbG9hdGluZ0NvbnRlbnQ6IE5neEZsb2F0VWlDb250ZW50Q29tcG9uZW50KSB7XG4gICAgZmxvYXRpbmdDb250ZW50LmhpZGUoKTtcbiAgfVxuXG4gIGdldEF0dGFjaG1lbnRMaXN0Q29udGV4dCgpOiBBdHRhY2htZW50TGlzdENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8uaWQgfHwgJycsXG4gICAgICBhdHRhY2htZW50czogdGhpcy5tZXNzYWdlPy5hdHRhY2htZW50cyB8fCBbXSxcbiAgICAgIHBhcmVudE1lc3NhZ2VJZDogdGhpcy5tZXNzYWdlPy5wYXJlbnRfaWQsXG4gICAgICBpbWFnZU1vZGFsU3RhdGVDaGFuZ2VIYW5kbGVyOiAoc3RhdGUpID0+XG4gICAgICAgICh0aGlzLmltYWdlQXR0YWNobWVudE1vZGFsU3RhdGUgPSBzdGF0ZSksXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VDb250ZXh0KCk6IFN5c3RlbU1lc3NhZ2VDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxuICAgICAgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgIGlzSGlnaGxpZ2h0ZWQ6IHRoaXMuaXNIaWdobGlnaHRlZCxcbiAgICAgIGlzTGFzdFNlbnRNZXNzYWdlOiB0aGlzLmlzTGFzdFNlbnRNZXNzYWdlLFxuICAgICAgbW9kZTogdGhpcy5tb2RlLFxuICAgICAgY3VzdG9tQWN0aW9uczogdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9ucyQuZ2V0VmFsdWUoKSxcbiAgICAgIHBhcnNlZERhdGU6IHRoaXMucGFyc2VkRGF0ZSxcbiAgICAgIHNjcm9sbCQ6IHRoaXMuc2Nyb2xsJCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0UXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRMaXN0Q29udGV4dCgpOiBBdHRhY2htZW50TGlzdENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LmlkIHx8ICcnLFxuICAgICAgYXR0YWNobWVudHM6IHRoaXMucXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRzISxcbiAgICAgIHBhcmVudE1lc3NhZ2VJZDogdGhpcz8ubWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnBhcmVudF9pZCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TWVzc2FnZVJlYWN0aW9uc0NvbnRleHQoKTogTWVzc2FnZVJlYWN0aW9uc0NvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHRoaXMubWVzc2FnZT8ucmVhY3Rpb25fY291bnRzIHx8IHt9LFxuICAgICAgbGF0ZXN0UmVhY3Rpb25zOiB0aGlzLm1lc3NhZ2U/LmxhdGVzdF9yZWFjdGlvbnMgfHwgW10sXG4gICAgICBtZXNzYWdlSWQ6IHRoaXMubWVzc2FnZT8uaWQsXG4gICAgICBvd25SZWFjdGlvbnM6IHRoaXMubWVzc2FnZT8ub3duX3JlYWN0aW9ucyB8fCBbXSxcbiAgICB9O1xuICB9XG5cbiAgbWVzc2FnZUNsaWNrZWQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5tZXNzYWdlPy5zdGF0dXMgPT09ICdmYWlsZWQnICYmXG4gICAgICB0aGlzLm1lc3NhZ2U/LmVycm9yU3RhdHVzQ29kZSAhPT0gNDAzXG4gICAgKSB7XG4gICAgICB0aGlzLnJlc2VuZE1lc3NhZ2UoKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5tZXNzYWdlPy50eXBlID09PSAnZXJyb3InICYmXG4gICAgICB0aGlzLm1lc3NhZ2U/Lm1vZGVyYXRpb25fZGV0YWlsc1xuICAgICkge1xuICAgICAgdGhpcy5vcGVuTWVzc2FnZUJvdW5jZVByb21wdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRWRpdGVkRmxhZ09wZW5lZCA9ICF0aGlzLmlzRWRpdGVkRmxhZ09wZW5lZDtcbiAgICB9XG4gIH1cblxuICByZXNlbmRNZXNzYWdlKCkge1xuICAgIHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5yZXNlbmRNZXNzYWdlKHRoaXMubWVzc2FnZSEpO1xuICB9XG5cbiAgc2V0QXNBY3RpdmVQYXJlbnRNZXNzYWdlKCkge1xuICAgIHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5zZXRBc0FjdGl2ZVBhcmVudE1lc3NhZ2UodGhpcy5tZXNzYWdlKTtcbiAgfVxuXG4gIGdldE1lbnRpb25Db250ZXh0KG1lc3NhZ2VQYXJ0OiBNZXNzYWdlUGFydCk6IE1lbnRpb25UZW1wbGF0ZUNvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiBtZXNzYWdlUGFydC5jb250ZW50LFxuICAgICAgdXNlcjogbWVzc2FnZVBhcnQudXNlciEsXG4gICAgfTtcbiAgfVxuXG4gIGdldE1lc3NhZ2VBY3Rpb25zQm94Q29udGV4dCgpOiBNZXNzYWdlQWN0aW9uc0JveENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBpc01pbmU6IHRoaXMuaXNTZW50QnlDdXJyZW50VXNlcixcbiAgICAgIGVuYWJsZWRBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIG1lc3NhZ2VUZXh0SHRtbEVsZW1lbnQ6IHRoaXMubWVzc2FnZVRleHRFbGVtZW50Py5uYXRpdmVFbGVtZW50LFxuICAgIH07XG4gIH1cblxuICBnZXREZWxpdmVyZWRTdGF0dXNDb250ZXh0KCk6IERlbGl2ZXJlZFN0YXR1c0NvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UhLFxuICAgIH07XG4gIH1cblxuICBnZXRTZW5kaW5nU3RhdHVzQ29udGV4dCgpOiBTZW5kaW5nU3RhdHVzQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSEsXG4gICAgfTtcbiAgfVxuXG4gIGdldFJlYWRTdGF0dXNDb250ZXh0KCk6IFJlYWRTdGF0dXNDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlISxcbiAgICAgIHJlYWRCeVRleHQ6IHRoaXMucmVhZEJ5VGV4dCxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TWVzc2FnZU1ldGFkYXRhQ29udGV4dCgpOiBDdXN0b21NZXRhZGF0YUNvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UhLFxuICAgIH07XG4gIH1cblxuICBqdW1wVG9NZXNzYWdlKG1lc3NhZ2VJZDogc3RyaW5nLCBwYXJlbnRNZXNzYWdlSWQ/OiBzdHJpbmcpIHtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UuanVtcFRvTWVzc2FnZShtZXNzYWdlSWQsIHBhcmVudE1lc3NhZ2VJZCk7XG4gIH1cblxuICBkaXNwbGF5VHJhbnNsYXRlZE1lc3NhZ2UoKSB7XG4gICAgdGhpcy5jcmVhdGVNZXNzYWdlUGFydHModHJ1ZSk7XG4gIH1cblxuICBkaXNwbGF5T3JpZ2luYWxNZXNzYWdlKCkge1xuICAgIHRoaXMuY3JlYXRlTWVzc2FnZVBhcnRzKGZhbHNlKTtcbiAgfVxuXG4gIG9wZW5NZXNzYWdlQm91bmNlUHJvbXB0KCkge1xuICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYm91bmNlZE1lc3NhZ2UkLm5leHQodGhpcy5tZXNzYWdlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTWVzc2FnZVBhcnRzKHNob3VsZFRyYW5zbGF0ZSA9IHRydWUpIHtcbiAgICB0aGlzLm1lc3NhZ2VUZXh0UGFydHMgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5tZXNzYWdlVGV4dCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0TWVzc2FnZUNvbnRlbnQoc2hvdWxkVHJhbnNsYXRlKTtcbiAgICBpZiAoXG4gICAgICAoIXRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzIHx8XG4gICAgICAgIHRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzLmxlbmd0aCA9PT0gMCkgJiZcbiAgICAgICFjb250ZW50Py5tYXRjaCh0aGlzLmVtb2ppUmVnZXhwKSAmJlxuICAgICAgIWNvbnRlbnQ/Lm1hdGNoKHRoaXMudXJsUmVnZXhwKVxuICAgICkge1xuICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5tZXNzYWdlVGV4dCA9IGNvbnRlbnQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghY29udGVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhdGhpcy5tZXNzYWdlIS5tZW50aW9uZWRfdXNlcnMgfHxcbiAgICAgIHRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgY29udGVudCA9IHRoaXMuZml4RW1vamlEaXNwbGF5KGNvbnRlbnQpO1xuICAgICAgY29udGVudCA9IHRoaXMud3JhcExpbmtzV2l0aEFuY2hvclRhZyhjb250ZW50KTtcbiAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cyA9IFt7IGNvbnRlbnQsIHR5cGU6ICd0ZXh0JyB9XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzID0gW107XG4gICAgICBsZXQgdGV4dCA9IGNvbnRlbnQ7XG4gICAgICB0aGlzLm1lc3NhZ2UhLm1lbnRpb25lZF91c2Vycy5mb3JFYWNoKCh1c2VyKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnRpb24gPSBgQCR7dXNlci5uYW1lIHx8IHVzZXIuaWR9YDtcbiAgICAgICAgY29uc3QgcHJlY2VkaW5nVGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIHRleHQuaW5kZXhPZihtZW50aW9uKSk7XG4gICAgICAgIGxldCBmb3JtYXR0ZWRQcmVjZWRpbmdUZXh0ID0gdGhpcy5maXhFbW9qaURpc3BsYXkocHJlY2VkaW5nVGV4dCk7XG4gICAgICAgIGZvcm1hdHRlZFByZWNlZGluZ1RleHQgPSB0aGlzLndyYXBMaW5rc1dpdGhBbmNob3JUYWcoXG4gICAgICAgICAgZm9ybWF0dGVkUHJlY2VkaW5nVGV4dFxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1lc3NhZ2VUZXh0UGFydHMhLnB1c2goe1xuICAgICAgICAgIGNvbnRlbnQ6IGZvcm1hdHRlZFByZWNlZGluZ1RleHQsXG4gICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzIS5wdXNoKHtcbiAgICAgICAgICBjb250ZW50OiBtZW50aW9uLFxuICAgICAgICAgIHR5cGU6ICdtZW50aW9uJyxcbiAgICAgICAgICB1c2VyLFxuICAgICAgICB9KTtcbiAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZShwcmVjZWRpbmdUZXh0ICsgbWVudGlvbiwgJycpO1xuICAgICAgfSk7XG4gICAgICBpZiAodGV4dCkge1xuICAgICAgICB0ZXh0ID0gdGhpcy5maXhFbW9qaURpc3BsYXkodGV4dCk7XG4gICAgICAgIHRleHQgPSB0aGlzLndyYXBMaW5rc1dpdGhBbmNob3JUYWcodGV4dCk7XG4gICAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cy5wdXNoKHsgY29udGVudDogdGV4dCwgdHlwZTogJ3RleHQnIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWVzc2FnZUNvbnRlbnQoc2hvdWxkVHJhbnNsYXRlOiBib29sZWFuKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxDb250ZW50ID0gdGhpcy5tZXNzYWdlPy50ZXh0O1xuICAgIGlmIChzaG91bGRUcmFuc2xhdGUpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy5tZXNzYWdlPy50cmFuc2xhdGlvbjtcbiAgICAgIGlmICh0cmFuc2xhdGlvbikge1xuICAgICAgICB0aGlzLnNob3VsZERpc3BsYXlUcmFuc2xhdGlvbk5vdGljZSA9IHRydWU7XG4gICAgICAgIHRoaXMuZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID0gJ3RyYW5zbGF0aW9uJztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cmFuc2xhdGlvbiB8fCBvcmlnaW5hbENvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID0gJ29yaWdpbmFsJztcbiAgICAgIHJldHVybiBvcmlnaW5hbENvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaXhFbW9qaURpc3BsYXkoY29udGVudDogc3RyaW5nKSB7XG4gICAgLy8gV3JhcCBlbW9qaXMgaW4gc3BhbiB0byBkaXNwbGF5IGVtb2ppcyBjb3JyZWN0bHkgaW4gQ2hyb21lIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU5NjIyM1xuICAgIC8vIEJhc2VkIG9uIHRoaXM6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ1NjUxMTIvamF2YXNjcmlwdC1ob3ctdG8tZmluZC1vdXQtaWYtdGhlLXVzZXItYnJvd3Nlci1pcy1jaHJvbWVcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbiAgICBjb25zdCBpc0Nocm9tZSA9XG4gICAgICAhISh3aW5kb3cgYXMgYW55KS5jaHJvbWUgJiYgdHlwZW9mICh3aW5kb3cgYXMgYW55KS5vcHIgPT09ICd1bmRlZmluZWQnO1xuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4gICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShcbiAgICAgIHRoaXMuZW1vamlSZWdleHAsXG4gICAgICAobWF0Y2gpID0+XG4gICAgICAgIGA8c3BhbiAke1xuICAgICAgICAgIGlzQ2hyb21lID8gJ2NsYXNzPVwic3RyLWNoYXRfX2Vtb2ppLWRpc3BsYXktZml4XCInIDogJydcbiAgICAgICAgfT4ke21hdGNofTwvc3Bhbj5gXG4gICAgKTtcblxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgcHJpdmF0ZSB3cmFwTGlua3NXaXRoQW5jaG9yVGFnKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmRpc3BsYXlBcyA9PT0gJ2h0bWwnKSB7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZSh0aGlzLnVybFJlZ2V4cCwgKG1hdGNoKSA9PlxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5jdXN0b21MaW5rUmVuZGVyZXJcbiAgICAgICAgPyB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmN1c3RvbUxpbmtSZW5kZXJlcihtYXRjaClcbiAgICAgICAgOiBgPGEgaHJlZj1cIiR7bWF0Y2h9XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9mb2xsb3dcIj4ke21hdGNofTwvYT5gXG4gICAgKTtcblxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJc1NlbnRCeUN1cnJlbnRVc2VyKCkge1xuICAgIHRoaXMuaXNTZW50QnlDdXJyZW50VXNlciA9IHRoaXMubWVzc2FnZT8udXNlcj8uaWQgPT09IHRoaXMudXNlcklkO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMYXN0UmVhZFVzZXIoKSB7XG4gICAgdGhpcy5sYXN0UmVhZFVzZXIgPSB0aGlzLm1lc3NhZ2U/LnJlYWRCeT8uZmlsdGVyKFxuICAgICAgKHUpID0+IHUuaWQgIT09IHRoaXMudXNlcklkXG4gICAgKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRNZXNzYWdlTWVudVNob3dUaW1lcihvcHRpb25zOiB7IGZyb21Ub3VjaDogYm9vbGVhbiB9KSB7XG4gICAgdGhpcy5zdG9wTWVzc2FnZU1lbnVTaG93VGltZXIoKTtcbiAgICBpZiAodGhpcy5zY3JvbGwkKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5zY3JvbGwkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnN0b3BNZXNzYWdlTWVudVNob3dUaW1lcigpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5zaG93TWVzc2FnZU1lbnVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWVzc2FnZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgICAgICAgIGVuYWJsZWRBY3Rpb25zOiB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucyxcbiAgICAgICAgICAgIGN1c3RvbUFjdGlvbnM6IHRoaXMubWVzc2FnZUFjdGlvbnNTZXJ2aWNlLmN1c3RvbUFjdGlvbnMkLmdldFZhbHVlKCksXG4gICAgICAgICAgICBpc01pbmU6IHRoaXMuaXNTZW50QnlDdXJyZW50VXNlcixcbiAgICAgICAgICAgIG1lc3NhZ2VUZXh0SHRtbEVsZW1lbnQ6IHRoaXMubWVzc2FnZVRleHRFbGVtZW50Py5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNob3VsZFByZXZlbnRNZXNzYWdlTWVudUNsb3NlID0gIW9wdGlvbnMuZnJvbVRvdWNoO1xuICAgICAgICAgIC8vIEZpeCBmb3IgaU9TIFNhZmFyaTogaU9TIFNhZmFyaSB3b24ndCBjbG9zZSB0aGUgaW5wdXQgaWYgd2Ugb3BlbiBtZXNzYWdlIG1lbnVcbiAgICAgICAgICAvLyBUaGUgdmlydHVhbCBrZXlib2FyZCBjYW4gaGlkZSBwYXJ0cyBvZiB0aGUgbWVzc2FnZSBtZW51LCBzbyB3ZSBjbG9zZSB0aGUgaW5wdXQgaGVyZVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgIHR5cGVvZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5ibHVyICE9PVxuICAgICAgICAgICAgICAndW5kZWZpbmVkJ1xuICAgICAgICAgIClcbiAgICAgICAgICAgIChkb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQpLmJsdXIoKTtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VNZW51VHJpZ2dlcj8uc2hvdygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd01lc3NhZ2VNZW51VGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICAgIH0pO1xuICAgIH0sIDQwMCk7XG4gIH1cblxuICBwcml2YXRlIHJlZ2lzdGVyTWVudVRyaWdnZXJFdmVudEhhbmRsZXJzKCkge1xuICAgIHRoaXMubWVzc2FnZUJ1YmJsZSEubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgKCkgPT5cbiAgICAgIHRoaXMudG91Y2hTdGFydGVkKClcbiAgICApO1xuICAgIHRoaXMubWVzc2FnZUJ1YmJsZSEubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsICgpID0+XG4gICAgICB0aGlzLnRvdWNoRW5kZWQoKVxuICAgICk7XG4gICAgdGhpcy5tZXNzYWdlQnViYmxlIS5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PlxuICAgICAgdGhpcy5tb3VzZVB1c2hlZERvd24oZSlcbiAgICApO1xuICAgIHRoaXMubWVzc2FnZUJ1YmJsZSEubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgKCkgPT5cbiAgICAgIHRoaXMubW91c2VSZWxlYXNlZCgpXG4gICAgKTtcbiAgICB0aGlzLm1lc3NhZ2VCdWJibGUhLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT5cbiAgICAgIHRoaXMubWVzc2FnZUJ1YmJsZUNsaWNrZWQoZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wTWVzc2FnZU1lbnVTaG93VGltZXIoKSB7XG4gICAgaWYgKHRoaXMuc2hvd01lc3NhZ2VNZW51VGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd01lc3NhZ2VNZW51VGltZW91dCk7XG4gICAgICB0aGlzLnNob3dNZXNzYWdlTWVudVRpbWVvdXQgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gICNjb250YWluZXJcbiAgZGF0YS10ZXN0aWQ9XCJtZXNzYWdlLWNvbnRhaW5lclwiXG4gIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlIHN0ci1jaGF0X19tZXNzYWdlIHN0ci1jaGF0X19tZXNzYWdlLS17e1xuICAgIG1lc3NhZ2U/LnR5cGVcbiAgfX0gc3RyLWNoYXRfX21lc3NhZ2UtLXt7IG1lc3NhZ2U/LnN0YXR1cyB9fSB7e1xuICAgIG1lc3NhZ2U/LnRleHQgPyAnc3RyLWNoYXRfX21lc3NhZ2UtLWhhcy10ZXh0JyA6ICdoYXMtbm8tdGV4dCdcbiAgfX0gc3RyLWNoYXRfX21lc3NhZ2UtbWVudS17eyBhcmVNZXNzYWdlT3B0aW9uc09wZW4gPyAnb3BlbmVkJyA6ICdjbG9zZWQnIH19XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLS1tZV09XCJpc1NlbnRCeUN1cnJlbnRVc2VyXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLS1vdGhlcl09XCIhaXNTZW50QnlDdXJyZW50VXNlclwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtLW1lXT1cImlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtLWhhcy1hdHRhY2htZW50XT1cImhhc0F0dGFjaG1lbnRcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtLXdpdGgtcmVhY3Rpb25zXT1cImhhc1JlYWN0aW9uc1wiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS0taGlnaGxpZ2h0ZWRdPVwiaXNIaWdobGlnaHRlZFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS13aXRoLXRocmVhZC1saW5rXT1cInNob3VsZERpc3BsYXlUaHJlYWRMaW5rXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXNlbmQtY2FuLWJlLXJldHJpZWRdPVwiXG4gICAgKG1lc3NhZ2U/LnN0YXR1cyA9PT0gJ2ZhaWxlZCcgJiYgbWVzc2FnZT8uZXJyb3JTdGF0dXNDb2RlICE9PSA0MDMpIHx8XG4gICAgKG1lc3NhZ2U/LnR5cGUgPT09ICdlcnJvcicgJiYgbWVzc2FnZT8ubW9kZXJhdGlvbl9kZXRhaWxzKVxuICBcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2Utd2l0aC10b3VjaC1zdXBwb3J0XT1cImhhc1RvdWNoU3VwcG9ydFwiXG4gIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS13aXRob3V0LXRvdWNoLXN1cHBvcnRdPVwiIWhhc1RvdWNoU3VwcG9ydFwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVzc2FnZT8uZGVsZXRlZF9hdDsgZWxzZSBkZWxldGVkTWVzc2FnZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy50eXBlICE9PSAnc3lzdGVtJzsgZWxzZSBzeXN0ZW1NZXNzYWdlXCI+XG4gICAgICA8c3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlclxuICAgICAgICBkYXRhLXRlc3RpZD1cImF2YXRhclwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXQtYW5ndWxhcl9fYXZhdGFyLWhvc3Qgc3RyLWNoYXRfX21lc3NhZ2Utc2VuZGVyLWF2YXRhclwiXG4gICAgICAgIHR5cGU9XCJ1c2VyXCJcbiAgICAgICAgbG9jYXRpb249XCJtZXNzYWdlLXNlbmRlclwiXG4gICAgICAgIFtpbWFnZVVybF09XCJtZXNzYWdlPy51c2VyPy5pbWFnZVwiXG4gICAgICAgIFtuYW1lXT1cIm1lc3NhZ2U/LnVzZXI/Lm5hbWUgfHwgbWVzc2FnZT8udXNlcj8uaWRcIlxuICAgICAgICBbdXNlcl09XCJtZXNzYWdlPy51c2VyIHx8IHVuZGVmaW5lZFwiXG4gICAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWlubmVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIiFoYXNUb3VjaFN1cHBvcnQgJiYgYXJlT3B0aW9uc1Zpc2libGVcIlxuICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlX19hY3Rpb25zIHN0ci1jaGF0X19tZXNzYWdlLW9wdGlvbnNcIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1vcHRpb25zXCJcbiAgICAgICAgICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtYWN0aW9ucy1vcGVuXT1cImFyZU1lc3NhZ2VPcHRpb25zT3BlblwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAjbWVzc2FnZUFjdGlvbnNUb2dnbGVcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwibWVzc2FnZS1hY3Rpb25zLWNvbnRhaW5lclwiXG4gICAgICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWNvbnRhaW5lclxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnNfX2FjdGlvblxuICAgICAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGVfX2FjdGlvbnNfX2FjdGlvbi0tb3B0aW9uc1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtmbG9hdFVpTG9vc2VdPVwibWVzc2FnZU1lbnVGbG9hdFwiXG4gICAgICAgICAgICBbbG9vc2VUcmlnZ2VyXT1cIlxuICAgICAgICAgICAgICBtZXNzYWdlQWN0aW9uc1NlcnZpY2UuY3VzdG9tQWN0aW9uQ2xpY2tIYW5kbGVyID8gJ25vbmUnIDogJ2NsaWNrJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtoaWRlT25TY3JvbGxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2hpZGVPbkNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtoaWRlT25Nb3VzZUxlYXZlXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlQW5pbWF0aW9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgIFtwcmV2ZW50T3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICAgICAgICBbcG9zaXRpb25GaXhlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgIChvblNIb3duKT1cImFyZU1lc3NhZ2VPcHRpb25zT3BlbiA9IHRydWVcIlxuICAgICAgICAgICAgKG9uSGlkZGVuKT1cImFyZU1lc3NhZ2VPcHRpb25zT3BlbiA9IGZhbHNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwidmlzaWJsZU1lc3NhZ2VBY3Rpb25zQ291bnQgPiAwXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hY3Rpb25zLWJveC1idXR0b25cIlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm1lc3NhZ2Utb3B0aW9ucy1idXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibWVzc2FnZU9wdGlvbnNCdXR0b25DbGlja2VkKClcIlxuICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwibWVzc2FnZU9wdGlvbnNCdXR0b25DbGlja2VkKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICBpY29uPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgPjwvc3RyZWFtLWljb24tcGxhY2Vob2xkZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtaG9zdFwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgI2RlZmF1bHRNZXNzYWdlUmVhY3Rpb25zXG4gICAgICAgICAgICBsZXQtbWVzc2FnZVJlYWN0aW9uQ291bnRzPVwibWVzc2FnZVJlYWN0aW9uQ291bnRzXCJcbiAgICAgICAgICAgIGxldC1sYXRlc3RSZWFjdGlvbnM9XCJsYXRlc3RSZWFjdGlvbnNcIlxuICAgICAgICAgICAgbGV0LW1lc3NhZ2VJZD1cIm1lc3NhZ2VJZFwiXG4gICAgICAgICAgICBsZXQtb3duUmVhY3Rpb25zPVwib3duUmVhY3Rpb25zXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3RyZWFtLW1lc3NhZ2UtcmVhY3Rpb25zXG4gICAgICAgICAgICAgIFttZXNzYWdlUmVhY3Rpb25Db3VudHNdPVwibWVzc2FnZVJlYWN0aW9uQ291bnRzXCJcbiAgICAgICAgICAgICAgW2xhdGVzdFJlYWN0aW9uc109XCJsYXRlc3RSZWFjdGlvbnNcIlxuICAgICAgICAgICAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgICAgICAgICAgIFtvd25SZWFjdGlvbnNdPVwib3duUmVhY3Rpb25zXCJcbiAgICAgICAgICAgID48L3N0cmVhbS1tZXNzYWdlLXJlYWN0aW9ucz5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lc3NhZ2VSZWFjdGlvbnNUZW1wbGF0ZSQgfCBhc3luYykgfHxcbiAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZVJlYWN0aW9ucztcbiAgICAgICAgICAgICAgY29udGV4dDogZ2V0TWVzc2FnZVJlYWN0aW9uc0NvbnRleHQoKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZmxvYXQtdWktY29udGVudCAjbWVzc2FnZU1lbnVGbG9hdD5cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICNkZWZhdWx0TWVzc2FnZUFjdGlvbnNCb3hcbiAgICAgICAgICAgIGxldC1pc01pbmU9XCJpc01pbmVcIlxuICAgICAgICAgICAgbGV0LW1lc3NhZ2VJbnB1dD1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgbGV0LWVuYWJsZWRBY3Rpb25zPVwiZW5hYmxlZEFjdGlvbnNcIlxuICAgICAgICAgICAgbGV0LW1lc3NhZ2VUZXh0SHRtbEVsZW1lbnQ9XCJtZXNzYWdlVGV4dEh0bWxFbGVtZW50XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3RyZWFtLW1lc3NhZ2UtYWN0aW9ucy1ib3hcbiAgICAgICAgICAgICAgW2lzTWluZV09XCJpc01pbmVcIlxuICAgICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlSW5wdXRcIlxuICAgICAgICAgICAgICBbZW5hYmxlZEFjdGlvbnNdPVwiZW5hYmxlZEFjdGlvbnNcIlxuICAgICAgICAgICAgICBbbWVzc2FnZVRleHRIdG1sRWxlbWVudF09XCJtZXNzYWdlVGV4dEh0bWxFbGVtZW50XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lc3NhZ2VBY3Rpb25zQm94Q2xpY2tlZChtZXNzYWdlTWVudUZsb2F0KVwiXG4gICAgICAgICAgICA+PC9zdHJlYW0tbWVzc2FnZS1hY3Rpb25zLWJveD5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubWVzc2FnZUFjdGlvbnNCb3hUZW1wbGF0ZSQgfCBhc3luYykgfHxcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlQWN0aW9uc0JveDtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiBnZXRNZXNzYWdlQWN0aW9uc0JveENvbnRleHQoKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmxvYXQtdWktY29udGVudD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYnViYmxlIHN0ci1jaGF0LWFuZ3VsYXJfX21lc3NhZ2UtYnViYmxlXCJcbiAgICAgICAgICBbY2xhc3Muc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1idWJibGUtLWF0dGFjaG1lbnQtbW9kYWwtb3Blbl09XCJcbiAgICAgICAgICAgIGltYWdlQXR0YWNobWVudE1vZGFsU3RhdGUgPT09ICdvcGVuZWQnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm1lc3NhZ2UtYnViYmxlXCJcbiAgICAgICAgICBbZmxvYXRVaUxvb3NlXT1cIm1lc3NhZ2VNZW51RmxvYXRcIlxuICAgICAgICAgICNtZXNzYWdlTWVudVRyaWdnZXI9XCJmbG9hdFVpTG9vc2VcIlxuICAgICAgICAgICNtZXNzYWdlQnViYmxlXG4gICAgICAgICAgbG9vc2VUcmlnZ2VyPVwibm9uZVwiXG4gICAgICAgICAgW2hpZGVPblNjcm9sbF09XCJmYWxzZVwiXG4gICAgICAgICAgW2hpZGVPbkNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgICBbaGlkZU9uTW91c2VMZWF2ZV09XCJmYWxzZVwiXG4gICAgICAgICAgW2Rpc2FibGVBbmltYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgW3ByZXZlbnRPdmVyZmxvd109XCJ0cnVlXCJcbiAgICAgICAgICAob25TaG93bik9XCJhcmVNZXNzYWdlT3B0aW9uc09wZW4gPSB0cnVlXCJcbiAgICAgICAgICAob25IaWRkZW4pPVwiYXJlTWVzc2FnZU9wdGlvbnNPcGVuID0gZmFsc2VcIlxuICAgICAgICAgIFtwb3NpdGlvbkZpeGVkXT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0F0dGFjaG1lbnQgJiYgIW1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2F0dGFjaG1lbnRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhdHRhY2htZW50c1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJtZXNzYWdlPy50ZXh0IHx8IChtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZSAmJiBoYXNBdHRhY2htZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXRleHRcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIFtjbGFzcy5zdHItY2hhdF9fbWVzc2FnZS10ZXh0LS1wb2ludGVyLWN1cnNvcl09XCJcbiAgICAgICAgICAgICAgKG1lc3NhZ2U/LnN0YXR1cyA9PT0gJ2ZhaWxlZCcgJiZcbiAgICAgICAgICAgICAgICBtZXNzYWdlPy5lcnJvclN0YXR1c0NvZGUgIT09IDQwMykgfHxcbiAgICAgICAgICAgICAgKHRoaXMubWVzc2FnZT8udHlwZSA9PT0gJ2Vycm9yJyAmJlxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZT8ubW9kZXJhdGlvbl9kZXRhaWxzKSB8fFxuICAgICAgICAgICAgICBtZXNzYWdlPy5tZXNzYWdlX3RleHRfdXBkYXRlZF9hdFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIChjbGljayk9XCJtZXNzYWdlQ2xpY2tlZCgpXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJtZXNzYWdlQ2xpY2tlZCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaW5uZXItbWVzc2FnZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2UtdGV4dC1pbm5lciBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtdGV4dC1pbm5lclxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtbGlnaHQtdGV4dC1pbm5lci0taGFzLWF0dGFjaG1lbnRdPVwiXG4gICAgICAgICAgICAgICAgaGFzQXR0YWNobWVudFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicXVvdGVkTWVzc2FnZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGFzQXR0YWNobWVudCAmJiBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXR0YWNobWVudHNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwibWVzc2FnZT8udHlwZSA9PT0gJ2Vycm9yJ1wiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbGllbnQtZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJcbiAgICAgICAgICAgICAgICAgIHN0ci1jaGF0X19zaW1wbGUtbWVzc2FnZS0tZXJyb3ItbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2UtLWVycm9yLW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZXNzYWdlPy5tb2RlcmF0aW9uX2RldGFpbHNcIj57e1xuICAgICAgICAgICAgICAgICAgXCJzdHJlYW1DaGF0LkVycm9yIMK3IFVuc2VudFwiIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lc3NhZ2U/LnN0YXR1cyA9PT0gJ2ZhaWxlZCdcIlxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJcbiAgICAgICAgICAgICAgICAgIHN0ci1jaGF0X19zaW1wbGUtbWVzc2FnZS0tZXJyb3ItbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2UtLWVycm9yLW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgIChtZXNzYWdlPy5lcnJvclN0YXR1c0NvZGUgPT09IDQwM1xuICAgICAgICAgICAgICAgICAgICA/IFwic3RyZWFtQ2hhdC5NZXNzYWdlIEZhaWxlZCDCtyBVbmF1dGhvcml6ZWRcIlxuICAgICAgICAgICAgICAgICAgICA6IFwic3RyZWFtQ2hhdC5NZXNzYWdlIEZhaWxlZCDCtyBDbGljayB0byB0cnkgYWdhaW5cIlxuICAgICAgICAgICAgICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2ICNtZXNzYWdlVGV4dEVsZW1lbnQgZGF0YS10ZXN0aWQ9XCJ0ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZVRleHRQYXJ0czsgZWxzZSBkZWZhdWx0Q29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvdXNlLXRyYWNrLWJ5LWZ1bmN0aW9uIC0tPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwYXJ0IG9mIG1lc3NhZ2VUZXh0UGFydHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXJ0LnR5cGUgPT09ICd0ZXh0JzsgZWxzZSBtZW50aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicGFydC5jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE1lbnRpb24gbGV0LWNvbnRlbnQ9XCJjb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtbWVudGlvblwiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UubWVudGlvblRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lbnRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogZ2V0TWVudGlvbkNvbnRleHQocGFydClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlBcyA9PT0gJ3RleHQnOyBlbHNlIGFzSFRNTFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IG1lc3NhZ2VUZXh0IHx8IFwiXCIgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYXNIVE1MXG4gICAgICAgICAgICAgICAgICAgICAgPjxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImh0bWwtY29udGVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm1lc3NhZ2VUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuXG4gICAgICAgICAgICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyXG4gICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWVycm9yLWljb25cIlxuICAgICAgICAgICAgaWNvbj1cImVycm9yXCJcbiAgICAgICAgICA+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZXBseUNvdW50QnV0dG9uOyBjb250ZXh0OiB7IG1lc3NhZ2U6IG1lc3NhZ2UgfVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZXNzYWdlRGF0ZUFuZFNlbmRlclwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RlbGV0ZWRNZXNzYWdlPlxuICA8ZGl2IGRhdGEtdGVzdGlkPVwibWVzc2FnZS1kZWxldGVkLWNvbXBvbmVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tZGVsZXRlZC1pbm5lclwiIHRyYW5zbGF0ZT5cbiAgICAgIHN0cmVhbUNoYXQuVGhpcyBtZXNzYWdlIHdhcyBkZWxldGVkLi4uXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzeXN0ZW1NZXNzYWdlPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLnN5c3RlbU1lc3NhZ2VUZW1wbGF0ZSQgfCBhc3luYykgfHxcbiAgICAgICAgZGVmYXVsdFN5c3RlbU1lc3NhZ2U7XG4gICAgICBjb250ZXh0OiBnZXRNZXNzYWdlQ29udGV4dCgpXG4gICAgXCJcbiAgPjwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTeXN0ZW1NZXNzYWdlIGxldC1tZXNzYWdlSW5wdXQ9XCJtZXNzYWdlXCI+XG4gICAgPGRpdiBkYXRhLXRlc3RpZD1cInN5c3RlbS1tZXNzYWdlXCIgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtLXN5c3RlbV9fdGV4dFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtLXN5c3RlbV9fbGluZVwiPjwvZGl2PlxuICAgICAgICA8cD57eyBtZXNzYWdlSW5wdXQ/LnRleHQgfX08L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX19saW5lXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS0tc3lzdGVtX19kYXRlXCI+XG4gICAgICAgIHt7IHBhcnNlZERhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNxdW90ZWRNZXNzYWdlPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZVwiXG4gICAgY2xhc3M9XCJxdW90ZWQtbWVzc2FnZSBzdHItY2hhdF9fcXVvdGVkLW1lc3NhZ2UtcHJldmlld1wiXG4gICAgZGF0YS10ZXN0aWQ9XCJxdW90ZWQtbWVzc2FnZS1jb250YWluZXJcIlxuICAgIFtjbGFzcy5taW5lXT1cImlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICAgIChjbGljayk9XCJcbiAgICAgIGp1bXBUb01lc3NhZ2UoXG4gICAgICAgIChtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZSkhLmlkLFxuICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8ucGFyZW50X2lkXG4gICAgICApXG4gICAgXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwiXG4gICAgICBqdW1wVG9NZXNzYWdlKFxuICAgICAgICAobWVzc2FnZT8ucXVvdGVkX21lc3NhZ2UpIS5pZCxcbiAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnBhcmVudF9pZFxuICAgICAgKVxuICAgIFwiXG4gID5cbiAgICA8c3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlclxuICAgICAgZGF0YS10ZXN0aWQ9XCJxb3V0ZWQtbWVzc2FnZS1hdmF0YXJcIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdC1hbmd1bGFyX19hdmF0YXItaG9zdCBzdHItY2hhdF9fbWVzc2FnZS1zZW5kZXItYXZhdGFyXCJcbiAgICAgIHR5cGU9XCJ1c2VyXCJcbiAgICAgIGxvY2F0aW9uPVwicXVvdGVkLW1lc3NhZ2Utc2VuZGVyXCJcbiAgICAgIFtpbWFnZVVybF09XCJtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8udXNlcj8uaW1hZ2VcIlxuICAgICAgW25hbWVdPVwiXG4gICAgICAgIG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy51c2VyPy5uYW1lIHx8IG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy51c2VyPy5pZFxuICAgICAgXCJcbiAgICAgIFt1c2VyXT1cIm1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy51c2VyIHx8IHVuZGVmaW5lZFwiXG4gICAgPjwvc3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlcj5cbiAgICA8ZGl2IGNsYXNzPVwicXVvdGVkLW1lc3NhZ2UtaW5uZXIgc3RyLWNoYXRfX3F1b3RlZC1tZXNzYWdlLWJ1YmJsZVwiPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy5hdHRhY2htZW50cyAmJlxuICAgICAgICAgIG1lc3NhZ2U/LnF1b3RlZF9tZXNzYWdlPy5hdHRhY2htZW50cz8ubGVuZ3RoXG4gICAgICAgIFwiXG4gICAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICNkZWZhdWx0QXR0YWNobWVudHNcbiAgICAgICAgICBsZXQtbWVzc2FnZUlkPVwibWVzc2FnZUlkXCJcbiAgICAgICAgICBsZXQtYXR0YWNobWVudHM9XCJhdHRhY2htZW50c1wiXG4gICAgICAgICAgbGV0LXBhcmVudE1lc3NhZ2VJZD1cInBhcmVudE1lc3NhZ2VJZFwiXG4gICAgICAgICAgbGV0LWltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXI9XCJpbWFnZU1vZGFsU3RhdGVDaGFuZ2VIYW5kbGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdHJlYW0tYXR0YWNobWVudC1saXN0XG4gICAgICAgICAgICBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiXG4gICAgICAgICAgICBbYXR0YWNobWVudHNdPVwiYXR0YWNobWVudHNcIlxuICAgICAgICAgICAgW3BhcmVudE1lc3NhZ2VJZF09XCJwYXJlbnRNZXNzYWdlSWRcIlxuICAgICAgICAgICAgKGltYWdlTW9kYWxTdGF0ZUNoYW5nZSk9XCJpbWFnZU1vZGFsU3RhdGVDaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgID48L3N0cmVhbS1hdHRhY2htZW50LWxpc3Q+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuYXR0YWNobWVudExpc3RUZW1wbGF0ZSQgfCBhc3luYykgfHxcbiAgICAgICAgICAgICAgZGVmYXVsdEF0dGFjaG1lbnRzO1xuICAgICAgICAgICAgY29udGV4dDogZ2V0UXVvdGVkTWVzc2FnZUF0dGFjaG1lbnRMaXN0Q29udGV4dCgpXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicXVvdGVkLW1lc3NhZ2UtdGV4dFwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/LnRyYW5zbGF0aW9uIHx8XG4gICAgICAgICAgbWVzc2FnZT8ucXVvdGVkX21lc3NhZ2U/Lmh0bWwgfHxcbiAgICAgICAgICBtZXNzYWdlPy5xdW90ZWRfbWVzc2FnZT8udGV4dFxuICAgICAgICBcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZURhdGVBbmRTZW5kZXI+XG4gIDxuZy1jb250YWluZXI+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJzaG91bGREaXNwbGF5VHJhbnNsYXRpb25Ob3RpY2VcIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fdHJhbnNsYXRpb24tbm90aWNlXCJcbiAgICAgIGRhdGEtdGVzdGlkPVwidHJhbnNsYXRpb24tbm90aWNlXCJcbiAgICA+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID09PSAndHJhbnNsYXRpb24nXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWUtb3JpZ2luYWxcIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlPcmlnaW5hbE1lc3NhZ2UoKVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJkaXNwbGF5T3JpZ2luYWxNZXNzYWdlKClcIlxuICAgICAgPlxuICAgICAgICBzdHJlYW1DaGF0LlNlZSBvcmlnaW5hbCAoYXV0b21hdGljYWxseSB0cmFuc2xhdGVkKVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZGlzcGxheWVkTWVzc2FnZVRleHRDb250ZW50ID09PSAnb3JpZ2luYWwnXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWUtdHJhbnNsYXRpb25cIlxuICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgKGNsaWNrKT1cImRpc3BsYXlUcmFuc2xhdGVkTWVzc2FnZSgpXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cImRpc3BsYXlUcmFuc2xhdGVkTWVzc2FnZSgpXCJcbiAgICAgID5cbiAgICAgICAgc3RyZWFtQ2hhdC5TZWUgdHJhbnNsYXRpb25cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiY3VzdG9tVGVtcGxhdGVzU2VydmljZS5jdXN0b21NZXNzYWdlTWV0YWRhdGFUZW1wbGF0ZSQgfCBhc3luY1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19jdXN0b20tbWVzc2FnZS1tZXRhZGF0YVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmN1c3RvbU1lc3NhZ2VNZXRhZGF0YVRlbXBsYXRlJCB8IGFzeW5jKSE7XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRNZXNzYWdlTWV0YWRhdGFDb250ZXh0KClcbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIlxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1kYXRhXG4gICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1kYXRhXG4gICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW1ldGFkYXRhXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZXNzYWdlU3RhdHVzXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiIWlzU2VudEJ5Q3VycmVudFVzZXJcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInNlbmRlclwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLW5hbWUgc3RyLWNoYXRfX21lc3NhZ2Utc2VuZGVyLW5hbWVcIlxuICAgICAgPlxuICAgICAgICB7eyBtZXNzYWdlPy51c2VyPy5uYW1lID8gbWVzc2FnZT8udXNlcj8ubmFtZSA6IG1lc3NhZ2U/LnVzZXI/LmlkIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICBkYXRhLXRlc3RpZD1cImRhdGVcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS10aW1lc3RhbXAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXRpbWVcIlxuICAgICAgPlxuICAgICAgICB7eyBwYXJzZWREYXRlIH19XG4gICAgICA8L3NwYW4+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVzc2FnZT8ubWVzc2FnZV90ZXh0X3VwZGF0ZWRfYXRcIj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImVkaXRlZC1mbGFnXCJcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNhZ2Utc2ltcGxlLWVkaXRlZFwiXG4gICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgPnN0cmVhbUNoYXQuRWRpdGVkPC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZWRpdGVkLXRpbWVzdGFtcFwiXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1lZGl0ZWQtdGltZXN0YW1wXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnc3RyLWNoYXRfX21lc3NhZ2UtZWRpdGVkLXRpbWVzdGFtcC0tb3Blbic6IGlzRWRpdGVkRmxhZ09wZW5lZCxcbiAgICAgICAgICAgICdzdHItY2hhdF9fbWVzc2FnZS1lZGl0ZWQtdGltZXN0YW1wLS1jb2xsYXBzZWQnOiAhaXNFZGl0ZWRGbGFnT3BlbmVkXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+c3RyZWFtQ2hhdC5FZGl0ZWQ8L3NwYW4+XG4gICAgICAgICAgPHRpbWVcbiAgICAgICAgICAgIGRhdGVUaW1lPVwie3sgbWVzc2FnZT8ubWVzc2FnZV90ZXh0X3VwZGF0ZWRfYXQgfX1cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyBtZXNzYWdlPy5tZXNzYWdlX3RleHRfdXBkYXRlZF9hdCB9fVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgcGFzZWRFZGl0ZWREYXRlIH19XG4gICAgICAgICAgPC90aW1lPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVzc2FnZVN0YXR1cz5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBpc1NlbnRCeUN1cnJlbnRVc2VyICYmXG4gICAgICAoKGlzTGFzdFNlbnRNZXNzYWdlICYmIG1lc3NhZ2U/LnN0YXR1cyA9PT0gJ3JlY2VpdmVkJykgfHxcbiAgICAgICAgbWVzc2FnZT8uc3RhdHVzID09PSAnc2VuZGluZycpXG4gICAgXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXNzYWdlPy5zdGF0dXMgPT09ICdzZW5kaW5nJzsgZWxzZSBzZW50U3RhdHVzXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2VuZGluZ1N0YXR1c1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VudFN0YXR1cz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBtb2RlID09PSAnbWFpbicgJiYgaXNNZXNzYWdlRGVsaXZlcmVkQW5kUmVhZCAmJiBjYW5EaXNwbGF5UmVhZFN0YXR1cztcbiAgICAgICAgICBlbHNlIGRlbGl2ZXJlZFN0YXR1c1xuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVhZFN0YXR1c1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2RlbGl2ZXJlZFN0YXR1cz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5kZWxpdmVyZWRTdGF0dXNUZW1wbGF0ZSQgfCBhc3luYykgfHxcbiAgICAgICAgICAgIGRlZmF1bHREZWxpdmVyZWRTdGF0dXM7XG4gICAgICAgICAgY29udGV4dDogZ2V0RGVsaXZlcmVkU3RhdHVzQ29udGV4dCgpXG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHREZWxpdmVyZWRTdGF0dXM+XG4gICAgICA8c3BhblxuICAgICAgICAqbmdJZj1cIm1vZGUgPT09ICdtYWluJ1wiXG4gICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1c1xuICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtYW5ndWxhclxuICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXN0YXR1c1xuICAgICAgICBcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlbGl2ZXJlZC1pbmRpY2F0b3JcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICBbZmxvYXRVaUxvb3NlXT1cImZsb2F0aW5nQ29udGVudFwiXG4gICAgICAgIGxvb3NlUGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgW2xvb3NlVHJpZ2dlcl09XCJoYXNUb3VjaFN1cHBvcnQgPyAnY2xpY2snIDogJ2hvdmVyJ1wiXG4gICAgICAgIFtkaXNhYmxlQW5pbWF0aW9uXT1cInRydWVcIlxuICAgICAgICBbaGlkZU9uQ2xpY2tPdXRzaWRlXT1cInRydWVcIlxuICAgICAgICBbcG9zaXRpb25GaXhlZF09XCJ0cnVlXCJcbiAgICAgICAgW3ByZXZlbnRPdmVyZmxvd109XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgICAgPGZsb2F0LXVpLWNvbnRlbnQgI2Zsb2F0aW5nQ29udGVudD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3Rvb2x0aXAgc3RyLWNoYXRfX3Rvb2x0aXAtYW5ndWxhclwiPlxuICAgICAgICAgICAge3sgXCJzdHJlYW1DaGF0LkRlbGl2ZXJlZFwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmxvYXQtdWktY29udGVudD5cbiAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZWxpdmVyZWQtaWNvblwiXG4gICAgICAgICAgaWNvbj1cImRlbGl2ZXJlZFwiXG4gICAgICAgID48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICAgICAgPC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNzZW5kaW5nU3RhdHVzPlxuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLnNlbmRpbmdTdGF0dXNUZW1wbGF0ZSQgfCBhc3luYykgfHxcbiAgICAgICAgICAgIGRlZmF1bHRTZW5kaW5nU3RhdHVzO1xuICAgICAgICAgIGNvbnRleHQ6IGdldFNlbmRpbmdTdGF0dXNDb250ZXh0KClcbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNlbmRpbmdTdGF0dXM+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cIlxuICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXNcbiAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtc3RhdHVzLWFuZ3VsYXJcbiAgICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1zdGF0dXNcbiAgICAgICAgXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZW5kaW5nLWluZGljYXRvclwiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgIFtmbG9hdFVpTG9vc2VdPVwiZmxvYXRpbmdDb250ZW50XCJcbiAgICAgICAgbG9vc2VQbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICBbbG9vc2VUcmlnZ2VyXT1cImhhc1RvdWNoU3VwcG9ydCA/ICdjbGljaycgOiAnaG92ZXInXCJcbiAgICAgICAgW2Rpc2FibGVBbmltYXRpb25dPVwidHJ1ZVwiXG4gICAgICAgIFtoaWRlT25DbGlja091dHNpZGVdPVwidHJ1ZVwiXG4gICAgICAgIFtwb3NpdGlvbkZpeGVkXT1cInRydWVcIlxuICAgICAgICBbcHJldmVudE92ZXJmbG93XT1cInRydWVcIlxuICAgICAgPlxuICAgICAgICA8ZmxvYXQtdWktY29udGVudCAjZmxvYXRpbmdDb250ZW50PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcCBzdHItY2hhdF9fdG9vbHRpcC1hbmd1bGFyXCI+XG4gICAgICAgICAgICB7eyBcInN0cmVhbUNoYXQuU2VuZGluZy4uLlwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmxvYXQtdWktY29udGVudD5cbiAgICAgICAgPHN0cmVhbS1sb2FkaW5nLWluZGljYXRvci1wbGFjZWhvbGRlclxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwibG9hZGluZy1pbmRpY2F0b3JcIlxuICAgICAgICA+PC9zdHJlYW0tbG9hZGluZy1pbmRpY2F0b3ItcGxhY2Vob2xkZXI+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3JlYWRTdGF0dXM+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgKGN1c3RvbVRlbXBsYXRlc1NlcnZpY2UucmVhZFN0YXR1c1RlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICAgICAgZGVmYXVsdFJlYWRTdGF0dXM7XG4gICAgICAgICAgY29udGV4dDogZ2V0UmVhZFN0YXR1c0NvbnRleHQoKVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0UmVhZFN0YXR1cyBsZXQtcmVhZEJ5VGV4dD1cInJlYWRCeVRleHRcIj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiXG4gICAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utc2ltcGxlLXN0YXR1c1xuICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXNpbXBsZS1zdGF0dXMtYW5ndWxhclxuICAgICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLXN0YXR1c1xuICAgICAgICBcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlYWQtaW5kaWNhdG9yXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2Zsb2F0VWlMb29zZV09XCJmbG9hdGluZ0NvbnRlbnRcIlxuICAgICAgICBsb29zZVBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgIFtsb29zZVRyaWdnZXJdPVwiaGFzVG91Y2hTdXBwb3J0ID8gJ2NsaWNrJyA6ICdob3ZlcidcIlxuICAgICAgICBbZGlzYWJsZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgW2hpZGVPbkNsaWNrT3V0c2lkZV09XCJ0cnVlXCJcbiAgICAgICAgW3Bvc2l0aW9uRml4ZWRdPVwidHJ1ZVwiXG4gICAgICAgIFtwcmV2ZW50T3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICA+XG4gICAgICAgIDxmbG9hdC11aS1jb250ZW50ICNmbG9hdGluZ0NvbnRlbnQ+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fdG9vbHRpcCBzdHItY2hhdF9fdG9vbHRpcC1hbmd1bGFyXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicmVhZC1ieS10b29sdGlwXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyByZWFkQnlUZXh0IH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmxvYXQtdWktY29udGVudD5cbiAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJyZWFkXCI+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVwbHlDb3VudEJ1dHRvbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiXG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1zaW1wbGUtcmVwbHktYnV0dG9uXG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1yZXBsaWVzLWNvdW50LWJ1dHRvbi13cmFwcGVyXG4gICAgXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwic2hvdWxkRGlzcGxheVRocmVhZExpbmtcIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZXBsaWVzLWNvdW50LWJ1dHRvblwiXG4gICAgICBkYXRhLXRlc3RpZD1cInJlcGx5LWNvdW50LWJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwic2V0QXNBY3RpdmVQYXJlbnRNZXNzYWdlKClcIlxuICAgID5cbiAgICAgIHt7bWVzc2FnZT8ucmVwbHlfY291bnQgPT09IDEgPyAoJ3N0cmVhbUNoYXQuMSByZXBseScgfCB0cmFuc2xhdGUpIDogKCdzdHJlYW1DaGF0Lnt7IHJlcGx5Q291bnQgfX1cbiAgICAgIHJlcGxpZXMnIHwgdHJhbnNsYXRlOnJlcGx5Q291bnRQYXJhbSl9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYXR0YWNobWVudHNUZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlXG4gICAgI2RlZmF1bHRBdHRhY2htZW50c1xuICAgIGxldC1tZXNzYWdlSWQ9XCJtZXNzYWdlSWRcIlxuICAgIGxldC1hdHRhY2htZW50cz1cImF0dGFjaG1lbnRzXCJcbiAgICBsZXQtcGFyZW50TWVzc2FnZUlkPVwicGFyZW50TWVzc2FnZUlkXCJcbiAgICBsZXQtaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlSGFuZGxlcj1cImltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXJcIlxuICA+XG4gICAgPHN0cmVhbS1hdHRhY2htZW50LWxpc3RcbiAgICAgIFttZXNzYWdlSWRdPVwibWVzc2FnZUlkXCJcbiAgICAgIFthdHRhY2htZW50c109XCJhdHRhY2htZW50c1wiXG4gICAgICBbcGFyZW50TWVzc2FnZUlkXT1cInBhcmVudE1lc3NhZ2VJZFwiXG4gICAgICAoaW1hZ2VNb2RhbFN0YXRlQ2hhbmdlKT1cImltYWdlTW9kYWxTdGF0ZUNoYW5nZUhhbmRsZXIoJGV2ZW50KVwiXG4gICAgPjwvc3RyZWFtLWF0dGFjaG1lbnQtbGlzdD5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5hdHRhY2htZW50TGlzdFRlbXBsYXRlJCB8IGFzeW5jKSB8fFxuICAgICAgICBkZWZhdWx0QXR0YWNobWVudHM7XG4gICAgICBjb250ZXh0OiBnZXRBdHRhY2htZW50TGlzdENvbnRleHQoKVxuICAgIFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -20,7 +20,7 @@ import transliterate from '@stream-io/transliterate';
20
20
  import * as i8$1 from 'angular-mentions';
21
21
  import { MentionModule } from 'angular-mentions';
22
22
 
23
- const version = '5.1.10';
23
+ const version = '5.1.11';
24
24
 
25
25
  /**
26
26
  * The `NotificationService` can be used to add or remove notifications. By default the [`NotificationList`](../components/NotificationListComponent.mdx) component displays the currently active notifications.
@@ -5290,6 +5290,12 @@ class MessageComponent {
5290
5290
  }
5291
5291
  else {
5292
5292
  this.shouldPreventMessageMenuClose = !options.fromTouch;
5293
+ // Fix for iOS Safari: iOS Safari won't close the input if we open message menu
5294
+ // The virtual keyboard can hide parts of the message menu, so we close the input here
5295
+ if (document.activeElement &&
5296
+ typeof document.activeElement.blur !==
5297
+ 'undefined')
5298
+ document.activeElement.blur();
5293
5299
  (_b = this.messageMenuTrigger) === null || _b === void 0 ? void 0 : _b.show();
5294
5300
  }
5295
5301
  if (this.isViewInited) {