ms-data-grid 0.0.77 → 0.0.78

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.
@@ -884,15 +884,21 @@ export class DataGridComponent {
884
884
  // this.dateFormat = user?.date_format;
885
885
  if (!this.dateFormat) {
886
886
  const storedDateFormat = localStorage.getItem('dateformat');
887
- this.dateFormat = storedDateFormat ? JSON.parse(storedDateFormat) : 'dd/MM/yyyy';
887
+ if (storedDateFormat) {
888
+ this.dateFormat = storedDateFormat ? JSON.parse(storedDateFormat) : 'dd/MM/yyyy';
889
+ }
888
890
  }
889
891
  if (!this.currencyFormat) {
890
892
  const storedCurrencyFormat = localStorage.getItem('currencyFormat');
891
- this.currencyFormat = storedCurrencyFormat ? JSON.parse(storedCurrencyFormat) : '1,234,567.89';
893
+ if (storedCurrencyFormat) {
894
+ this.currencyFormat = storedCurrencyFormat ? JSON.parse(storedCurrencyFormat) : '1,234,567.89';
895
+ }
892
896
  }
893
897
  if (!this.currencySymbol) {
894
898
  const storedCurrencySymbol = localStorage.getItem('currencySymbol');
895
- this.currencySymbol = storedCurrencySymbol ? JSON.parse(storedCurrencySymbol) : '$';
899
+ if (storedCurrencySymbol) {
900
+ this.currencySymbol = storedCurrencySymbol ? JSON.parse(storedCurrencySymbol) : '$';
901
+ }
896
902
  }
897
903
  }
898
904
  async ngOnChanges(changes) {
@@ -5404,4 +5410,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
5404
5410
  type: ViewChild,
5405
5411
  args: ['fullscreenImageTemplate']
5406
5412
  }] } });
5407
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBSU4sU0FBUyxFQUVULFlBQVksRUFFWixZQUFZLEVBTVosdUJBQXVCLEVBRXZCLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFVTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVdyRSxNQUFNLENBQU4sSUFBWSxnQkFRWDtBQVJELFdBQVksZ0JBQWdCO0lBQzFCLGlDQUFhLENBQUE7SUFDYiw4Q0FBMEIsQ0FBQTtJQUMxQiw4Q0FBMEIsQ0FBQTtJQUMxQixpREFBNkIsQ0FBQTtJQUM3QiwwQ0FBc0IsQ0FBQTtJQUN0QiwwQ0FBc0IsQ0FBQTtJQUN0QixpREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBUlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQVEzQjtBQUdE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QjtnQkFHN0Isa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLG9CQUFvQjtnQkFHL0IsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQjtnQkFJOUIsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLG1CQUFtQjtnQkFLOUIsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLHFCQUFxQjtnQkEwWmhDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFndEIxQyxRQUFRO3NCQURQLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBcUJuRCxRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTZGZCxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBNk9BLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDRSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRXZCLG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBR2pDLG9CQUFvQjtzQkFEbkIsU0FBUzt1QkFBQyxzQkFBc0I7Z0JBczRCSSxzQkFBc0I7c0JBQTFELFNBQVM7dUJBQUMsd0JBQXdCO2dCQUNFLHNCQUFzQjtzQkFBMUQsU0FBUzt1QkFBQyx3QkFBd0I7Z0JBbWVOLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQTAxQzNCLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkEySHRDLE9BQU87c0JBRFosWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkF1SjFDLFdBQVc7c0JBRFYsU0FBUzt1QkFBQyxhQUFhO2dCQThiYyx1QkFBdUI7c0JBQTVELFNBQVM7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBFbGVtZW50UmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgTmdab25lLFxyXG4gIFJlbmRlcmVyMixcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIEVtYmVkZGVkVmlld1JlZixcclxuICBUZW1wbGF0ZVJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIGluamVjdCxcclxuICBJbmplY3RvclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTcGxpdENvbHVtbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3BsaXQtY29sdW1ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBDZGtEcmFnLFxyXG4gIENka0RyYWdEcm9wLFxyXG4gIENka0RyYWdFbmQsXHJcbiAgQ2RrRHJhZ0VudGVyLFxyXG4gIENka0RyYWdFeGl0LFxyXG4gIENka0RyYWdNb3ZlLFxyXG4gIENka0RyYWdTb3J0RXZlbnQsXHJcbiAgQ2RrRHJhZ1N0YXJ0LFxyXG4gIERyYWdEcm9wLFxyXG4gIG1vdmVJdGVtSW5BcnJheSxcclxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHtcclxuICB0cmlnZ2VyLFxyXG4gIHN0YXRlLFxyXG4gIHN0eWxlLFxyXG4gIHRyYW5zaXRpb24sXHJcbiAgYW5pbWF0ZSxcclxuICBxdWVyeSxcclxuICBzdGFnZ2VyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDZGtEcm9wTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBTVEFUVVNFU19CQURHRV9NQVAgfSBmcm9tICcuL3N0YXR1c2VzJztcclxuaW1wb3J0IHsgQ29weVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29weS1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9leHBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENlbGxIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jZWxsSG9zdC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1hdEN1cnJlbmN5UGlwZSB9IGZyb20gJy4uL3BpcGVzL2Zvcm1hdC1jdXJyZW5jeS5waXBlJztcclxuXHJcbmludGVyZmFjZSBDZWxsUG9zaXRpb24ge1xyXG4gIHJvd0luZGV4OiBudW1iZXI7XHJcbiAgY29sSW5kZXg6IG51bWJlcjtcclxuICBzdWJDb2xJbmRleDogbnVtYmVyO1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAga2V5OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGVudW0gUm93QW5pbWF0aW9uVHlwZSB7XHJcbiAgTm9uZSA9ICdub25lJyxcclxuICBTcHJlYWQgPSAnc3ByZWFkQW5pbWF0aW9uJyxcclxuICBCb3VuY2UgPSAnYm91bmNlQW5pbWF0aW9uJyxcclxuICBTbGlkZVVwID0gJ3NsaWRlVXBGcm9tQm90dG9tJyxcclxuICBGbGlwID0gJ2ZsaXBBbmltYXRpb24nLFxyXG4gIFNrZXcgPSAnc2tld0FuaW1hdGlvbicsXHJcbiAgU2xpZGVSaWdodCA9ICdzbGlkZUZyb21SaWdodCcsXHJcbn1cclxuXHJcblxyXG5leHBvcnQgY29uc3Qgc29ydGluZ0FuaW1hdGlvbiA9IHRyaWdnZXIoJ2xpc3RTb3J0JywgW1xyXG4gIHRyYW5zaXRpb24oJyogPT4gKicsIFtcclxuICAgIC8vIFF1ZXJ5IGFsbCBlbGVtZW50cyBlbnRlcmluZyBvciBsZWF2aW5nXHJcbiAgICBxdWVyeSgnOmVudGVyLCA6bGVhdmUnLCBzdHlsZSh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCB3aWR0aDogJzEwMCUnIH0pLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgIC8vIEFuaW1hdGUgbGVhdmluZyBlbGVtZW50cyB1cHdhcmQgd2l0aCBmYWRlIG91dFxyXG4gICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjBweCknLCBvcGFjaXR5OiAwIH0pKVxyXG4gICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAvLyBTdGFnZ2VyIHRoZSBlbnRlcmluZyBlbGVtZW50cyBmb3IgYSBzbW9vdGhlciBlZmZlY3RcclxuICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXHJcbiAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgyMHB4KScsIG9wYWNpdHk6IDAgfSksXHJcbiAgICAgIHN0YWdnZXIoNTAsIFtcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsIG9wYWNpdHk6IDEgfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgXSlcclxuXSk7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGF0YS1ncmlkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRhLWdyaWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdhY2NvcmRpb25Ub2dnbGUnLCBbXHJcbiAgICAgIHN0YXRlKFxyXG4gICAgICAgICdjb2xsYXBzZWQnLFxyXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3ZlcmZsb3c6ICd1bnNldCcgfSlcclxuICAgICAgKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3ZlcmZsb3c6ICd1bnNldCcgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdjb2xsYXBzZWQgPD0+IGV4cGFuZGVkJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicpKSxcclxuICAgIF0pLFxyXG4gICAgdHJpZ2dlcignc2xpZGVUb2dnbGUnLCBbXHJcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAsIG92ZXJmbG93OiAnaGlkZGVuJyB9KSxcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicsIG9wYWNpdHk6IDEgfSkpXHJcbiAgICAgIF0pLFxyXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3BhY2l0eTogMSwgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pLFxyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAgfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdKSxcclxuICAgIHRyaWdnZXIoJ3NsaWRlVXAnLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwMCUpJywgb3BhY2l0eTogMCB9KSksXHJcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJywgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0JykpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBhbmltYXRlKCczMDBtcyBlYXNlLWluJykpLFxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdyb3dEeW5hbWljJywgW1xyXG5cclxuICAgICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1BSRUFEIC0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc3ByZWFkQW5pbWF0aW9uJywgW1xyXG4gICAgICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXHJcbiAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlWCgwLjcpJyB9KSxcclxuICAgICAgICAgIHN0YWdnZXIoNjAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMzUwbXMgZWFzZS1vdXQnLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2NhbGVYKDEpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzIyMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVYKDAuNyknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcbiAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEJPVU5DRSAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IGJvdW5jZUFuaW1hdGlvbicsIFtcclxuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMHB4KScgfSksXHJcbiAgICAgICAgICBzdGFnZ2VyKDQ1LCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoXHJcbiAgICAgICAgICAgICAgJzUwMG1zIGN1YmljLWJlemllciguNjgsLTAuNTUsLjI3LDEuNTUpJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgICAgIHN0YWdnZXIoNDAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbicsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwcHgpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgICAgXSksXHJcblxyXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMTogRkxJUCAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IGZsaXBBbmltYXRpb24nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAncm90YXRlWCgtODBkZWcpJyB9KSxcclxuICAgICAgICAgIHN0YWdnZXIoNzAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnNDUwbXMgZWFzZS1vdXQnLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAncm90YXRlWCgwKScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICAgICAgc3RhZ2dlcig1MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCcyNTBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3JvdGF0ZVgoODBkZWcpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgICAgXSksXHJcblxyXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMjogU0tFVyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHNrZXdBbmltYXRpb24nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2tld1koNmRlZykgdHJhbnNsYXRlWSg4cHgpJyB9KSxcclxuICAgICAgICAgIHN0YWdnZXIoNjAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMzIwbXMgZWFzZS1vdXQnLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2tld1koMGRlZykgdHJhbnNsYXRlWSgwKScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICAgICAgc3RhZ2dlcig0MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCcyMjBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NrZXdZKC02ZGVnKSB0cmFuc2xhdGVZKC04cHgpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVVcEZyb21Cb3R0b20nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMDB2aCknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCc1MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtNTBweCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVGcm9tUmlnaHQnLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDB2dyknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCc1MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCg1MHB4KScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICAgIF0pLFxyXG5cclxuXHJcblxyXG4gICAgXSlcclxuXHJcblxyXG4gIF0sXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YUdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuICAvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4gIC8vICoqKioqKioqKiogIElucHV0IEdvZXMgSGVyZSAqKioqKioqKioqKiAvL1xyXG4gIC8vICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcbiAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuXHJcblxyXG4gIEBJbnB1dCgpIHJvd0FuaW1hdGlvbjogUm93QW5pbWF0aW9uVHlwZSA9IFJvd0FuaW1hdGlvblR5cGUuTm9uZTtcclxuXHJcbiAgLy8gUGFnaW5hdGlvbiBDb25maWcgU3RvcmUgSGVyZVxyXG4gIEBJbnB1dCgpIHBhZ2luYXRpb25Db25maWc6IGFueSA9IHt9O1xyXG5cclxuICAvLyBUaGUgZGF0YXNldCBzdG9yZSBoZXJlO1xyXG4gIEBJbnB1dCgpIGRhdGFTZXQ6IGFueVtdID0gW107XHJcblxyXG4gIC8vIFRoZSBjb2x1bW5zIFN0b3JlIEhlcmVcclxuICBASW5wdXQoKSBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvLyBSb3cgSGVpZ2h0O1xyXG4gIEBJbnB1dCgpIHJvd0hlaWdodDogbnVtYmVyID0gNDQ7XHJcblxyXG4gIC8vIEhlYWRlciBSb3cgSGVpZ2h0O1xyXG4gIEBJbnB1dCgpIGhlYWRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XHJcblxyXG4gIC8vIFNob3cgVmVydGljYWwgQm9yZGVycztcclxuICBASW5wdXQoKSBzaG93VmVydGljYWxCb3JkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gRXZlbiBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgZXZlblJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG5cclxuICAvLyBFdmVuIFJvd3MgQmFja2dyb3VuZCBDb2xvcjtcclxuICBASW5wdXQoKSBvZGRSb3dzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2YyZjJmMic7XHJcblxyXG4gIC8vIEhlYWRlciBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgaGVhZGVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2Y2ZjhmZic7XHJcblxyXG4gIC8vIEhlYWRlciBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgY2hlY2tib3hlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNmNmY4ZmYnO1xyXG5cclxuICAvLyBTaG93IENvbHVtbnMgR3JvdXBpbmc7XHJcbiAgQElucHV0KCkgc2hvd0NvbHVtbnNHcm91cGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBSb3cgSG92ZXJlZCBCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIHJvd0hvdmVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdyZ2JhKDAsIDEyMywgMjU1LCAwLjEpJztcclxuXHJcbiAgLy8gTGVmdCBQaW5uZWRCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIGxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gQm9keSBCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIGJvZHlCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gUmlnaHQgUGlubmVkIEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgcmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gU2lkZSBNZW51IEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgc2lkZW1lbnVCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gQm9keSB0ZXh0IGNvbG9yO1xyXG4gIEBJbnB1dCgpIGJvZHlUZXh0Q29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjMGMxMTJiJztcclxuXHJcbiAgLy8gSGVhZGVyIHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgaGVhZGVyVGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnIzJhMWY3Myc7XHJcblxyXG4gIC8vIEhlYWRlciB0ZXh0IGNvbG9yO1xyXG4gIEBJbnB1dCgpIGNoZWNrYm94ZXNDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyMyYTFmNzMnO1xyXG5cclxuICAvLyBIZWFkZXIgdGV4dCBzaXplO1xyXG4gIEBJbnB1dCgpIGhlYWRlclRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xyXG5cclxuICAvLyBCb2R5IHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgYm9keVRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xyXG5cclxuICAvLyBIZWFkZXIgZm9udCB3ZWlnaHQ7XHJcbiAgQElucHV0KCkgaGVhZGVyRm9udFdlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkID0gNTAwO1xyXG5cclxuICAvLyBCb2R5IEZvbnQgV2VpZ2h0O1xyXG4gIEBJbnB1dCgpIGJvZHlGb250V2VpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSA0MDA7XHJcblxyXG4gIC8vIENoZWNrZWQgUm93IEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgY2hlY2tlZFJvd0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2FsaWNlYmx1ZSc7XHJcblxyXG4gIC8vIGRyb3Bkb3ducyBCYWNrZ3JvdW5kIENvbG9yO1xyXG4gIEBJbnB1dCgpIGRyb3Bkb3duc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZjgnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZm9vdGVyUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuXHJcbiAgLy8gRm9vdGVyIHJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgZm9vdGVyUm93SGVpZ2h0OiBudW1iZXIgPSA0NjtcclxuXHJcbiAgLy8gRm9vdGVyIHJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgdG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XHJcblxyXG4gIC8vIFNob3cgUm93IHdpc2UgZ3JvdXBpbmc7XHJcbiAgQElucHV0KCkgc2hvd1Jvd3NHcm91cGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG5cclxuICAvLyBTaG93IFJvdyB3aXNlIGdyb3VwaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJSb3c6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8gU2hvdyBSb3cgd2lzZSBncm91cGluZztcclxuICBASW5wdXQoKSBmb250RmFpbWx5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnc2Fucy1zZXJpZic7XHJcblxyXG4gIC8vIFNob3cgU2lkZUNvbHVtbjtcclxuICBASW5wdXQoKSBzaG93U2lkZU1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gRm9vdGVyIFBhZGRpbmdcclxuICBASW5wdXQoKSBmb290ZXJQYWRkaW5nOiBudW1iZXIgPSAzXHJcblxyXG5cclxuICAvLyBGb290ZXIgUGFkZGluZ1xyXG4gIEBJbnB1dCgpIHRvcEZpbHRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XHJcblxyXG4gIC8vIFNob3cgUm93cyBzaGFkaW5nXHJcbiAgQElucHV0KCkgcm93U2hhZGluZ0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gU2hvdyBSb3dzIHNoYWRpbmdcclxuICBASW5wdXQoKSBzaG93U2VyaWFsTnVtYmVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIFNpbmdsZSBTcGEgVXJsIEF0dGFjaCB0byBpY29uc1xyXG4gIEBJbnB1dCgpIHNpbmdsZVNwYUFzc2V0c1BhdGg6IHN0cmluZyA9ICdhc3NldHMvJztcclxuXHJcblxyXG4gIC8vIEFwcGxpZWQgRmlsdGVyc1xyXG4gIEBJbnB1dCgpIGZpbHRlcnNDb25maWc6IGFueVtdID0gW107XHJcblxyXG5cclxuICAvLyBBcHBsaWVkIEZpbHRlcnNcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vVmVydGljYWwgU2Nyb2xsYmFyIHN0eWxlXHJcbiAgQElucHV0KCkgdmVydGljYWxTY3JvbGxiYXJXaWR0aDogJ2F1dG8nIHwgJ3RoaW4nID0gJ2F1dG8nO1xyXG5cclxuICAvL0hvcml6aW50YWwgU2Nyb2xsYmFyIHN0eWxlXHJcbiAgQElucHV0KCkgaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoOiAnYXV0bycgfCAndGhpbicgPSAnYXV0byc7XHJcblxyXG4gIC8vIFNob3cgQ2VsbCBkZXRhaWxzIGJveFxyXG4gIEBJbnB1dCgpIHNob3dDZWxsRGV0YWlsc0JveDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL0RhdGUgZm9ybWF0XHJcblxyXG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICcnXHJcblxyXG4gIC8vRGF0ZSBmb3JtYXRcclxuICBASW5wdXQoKSB0YWJsZVNlYXJjaDogc3RyaW5nID0gJyc7XHJcblxyXG5cclxuICAvL0RhdGUgZm9ybWF0XHJcbiAgQElucHV0KCkgYWN0aW9uczogYW55W10gPSBbJ2VkaXQnLCAnZGVsZXRlJ107XHJcblxyXG5cclxuICAvLyBUYWJsZSBDb25maWcgZm9yIHBhZ2luYXRpb25zIGlzIGhlcmVcclxuICBASW5wdXQoKSBjb25maWc6IGFueTtcclxuXHJcblxyXG4gIC8vIFNlbGVjdGlvbiB0YXNrIGJhclxyXG4gIEBJbnB1dCgpIHNob3dUYXNrYmFyID0gZmFsc2VcclxuXHJcbiAgLy8gVGFibGUgTmFtZSBmb3Igc3RhdGUgbWFuYWdlXHJcbiAgQElucHV0KCkgdGFibGVOYW1lID0gdHJ1ZVxyXG5cclxuXHJcbiAgLy8gTGlzdGluZyB0eXBlXHJcbiAgQElucHV0KCkgbGlzdGluZ1R5cGU6IHN0cmluZyB8IGJvb2xlYW4gPSAnJztcclxuXHJcbiAgLy8gTGlzdGluZyB0eXBlXHJcblxyXG4gIEBJbnB1dCgpIGNoZWNrYm94U3RhdGU6IHsgcmVzZXQ6IGJvb2xlYW4gfSA9IHtcclxuICAgIHJlc2V0OiB0cnVlXHJcbiAgfVxyXG5cclxuICAvLyBUYXNrYmFyIGFjdGlvbnNcclxuICBASW5wdXQoKSB0YXNrYmFyQWN0aW9uczogYW55W10gPSBbXVxyXG5cclxuXHJcbiAgLy8gU29ydGluZyBDb25maWcgdG8gc2hvdyBzb3J0IGljb25zXHJcbiAgQElucHV0KCkgc29ydGluZ0NvbmZpZzogeyBmaWVsZDogc3RyaW5nLCBvcmRlcl9ieTogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlRmlsdGVyVmlld0lkOiBhbnkgPSAnJztcclxuXHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVGFibGVMYXlvdXQ6IGFueSA9ICdtZWRpdW0nXHJcblxyXG4gIEBJbnB1dCgpIGNsb3NlRHJvcGRvd246IHsgcHJlc2V0OiB7IGNsb3NlZDogYm9vbGVhbiwgbG9hZGluZzogYm9vbGVhbiB9IH0gPSB7IHByZXNldDogeyBjbG9zZWQ6IGZhbHNlLCBsb2FkaW5nOiBmYWxzZSB9IH07XHJcblxyXG4gIC8vIFRhYmxlIFZpZXdcclxuXHJcbiAgLy8gR2xvYmFsU2VhcmNoXHJcbiAgQElucHV0KCkgZ2xvYmFsU2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8vIE5lc3RlZCBUYWJsZSBSb3cgRm9udHNpemVcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZXJvd0ZvbnRzaXplID0gMTQ7XHJcblxyXG4gIC8vIE5lc3RlZCB0YWJsZSByb3cgSGVhZGVyIHJvdyBIZWlnaHRcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodCA9IDQwO1xyXG5cclxuICAvLyBOZXN0ZWQgVGFibGUgcm93IGhlaWdodFxyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlcm93SGVpZ2h0ID0gNDU7XHJcblxyXG5cclxuICBASW5wdXQoKSBncmlkVHlwZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgY3VycmVuY3lGb3JtYXQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBsZWZ0UGlubmVkQm94c2hhZG93OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgcmlnaHRQaW5uZWRCb3hzaGFkb3c6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvLyBHbG9iYWxTZWFyY2hcclxuICBASW5wdXQoKSBzZWxlY3RlZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjOGFjNWZmJztcclxuXHJcbiAgLy8gR2xvYmFsU2VhcmNoXHJcbiAgQElucHV0KCkgbmVzdGVkVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZjZmOGZmJztcclxuXHJcblxyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2VhZWFlYSc7XHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlVmlldzogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgYnV0dG9uczogeyBuYW1lOiBzdHJpbmc7IGlzX3Nob3dJY29uOiBib29sZWFuOyBpY29uOiBzdHJpbmcsIGhhc19wZXJtaXNzaW9uOiBib29sZWFuIH1bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBrZWVwTXVsdGlwbGVFeHBhbmRlZERldGFpbHMgPSBmYWxzZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHNob3dUb3RhbEFtb3VudFJvdyA9IGZhbHNlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlR2xvYmFsU2VhcmNoID0gdHJ1ZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlVHlwZSA9ICcnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlRXhwb3J0ID0gZmFsc2U7XHJcblxyXG5cclxuICBASW5wdXQoKSBzaG93RnVsbFNjcmVlbkJ1dHRvbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlQ3V0ID0gZmFsc2U7XHJcblxyXG5cclxuICBASW5wdXQoKSB0YWJzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBzaG93Q2hlY2tib3hlcyA9IHRydWU7XHJcblxyXG5cclxuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnMgPSBbMTAsIDI1LCA1MCwgNzUsIDEwMCwgMTUwLCAyMDAsIDI1MCwgMzAwLCA1MDBdO1xyXG5cclxuXHJcbiAgQElucHV0KCkgcmVzZXRBbGxGaWx0ZXJzID0geyByZXNldEFsbDogZmFsc2UgfTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtblRocmVlZG90c011bnVDb25maWcgPSB7XHJcbiAgICBzaG93UGlubGVmdDogdHJ1ZSxcclxuICAgIHNob3dQaW5yaWdodDogdHJ1ZSxcclxuICAgIHNob3dBc2NlbmRpbmc6IHRydWUsXHJcbiAgICBzaG93RGVzY2VuZGluZzogdHJ1ZSxcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBzaG93Um93c0dyb3VwaW5nOiB0aGlzLnNob3dSb3dzR3JvdXBpbmcsXHJcbiAgICBzaG93QXV0b3NpemVBbGxDb2x1bW5zOiB0cnVlLFxyXG4gICAgc2hvd0F1dG9zaXplVGhpc0NvbHVtbjogZmFsc2UsXHJcbiAgICBzaG93Q2hvc2VDb2x1bW5zOiBmYWxzZSxcclxuICAgIHNob3dSZXNldENvbHVtbnM6IGZhbHNlLFxyXG4gIH07XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIE91dCBQdXQgRXZlbnRzXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcblxyXG5cclxuICAvL0NoYW5nZSBUYWJsZSBMYXlvdXRcclxuICBAVmlld0NoaWxkcmVuKENlbGxIb3N0RGlyZWN0aXZlKSBjZWxsSG9zdHMhOiBRdWVyeUxpc3Q8Q2VsbEhvc3REaXJlY3RpdmU+O1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZUxheW91dCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGN1c3RvbUNlbGxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvLyBGaWx0ZXIgQXBwbHkgZXZlbnQ7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBmaWx0ZXJPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBnZW5lcmljRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgdGFibGVQcmVzZXRDb25maWc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgc29ydGluZ09yZGVyT3B0aW9uczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIGNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3Rpbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGlzRnVsbFNjcmVlbiA9IGZhbHNlO1xyXG4gIGFjdGl2ZVRhYjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZ3JvdXBlZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgYWN0aXZlQ29sOiBhbnkgPSBudWxsO1xyXG4gIGFjdGl2ZUZpbHRlckNlbGw6IGFueSA9IG51bGw7XHJcbiAgc2hvd0FjdGlvbnNEcm9wRG93biA9IGZhbHNlO1xyXG4gIHNpZGVNZW51VmlzaWJsZSA9IGZhbHNlO1xyXG4gIHBpdm90TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbHVtblNlYXJjaDogc3RyaW5nID0gJyc7XHJcbiAgZXhwYW5kQWxsQWNjb3JkaWFucyA9IHRydWU7XHJcbiAgY3VycmVudE9wZW5lZFNpZGVNZW51ZTogJ2NvbHMnIHwgJ2ZpbHRycycgfCBudWxsID0gbnVsbDtcclxuICBvcmlnaW5hbENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgb3JpZ2luYWxEYXRhU2V0OiBhbnlbXSA9IFtdO1xyXG4gIGFjdGl2ZVRvcEJ1dHRvbjogc3RyaW5nIHwgbnVsbCA9ICcnO1xyXG4gIGZpbHRlckNvbHVtbnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGdyb3VwQm94UGFkZGluZyA9IDIwMDtcclxuICBwcmVzZXROYW1lOiBzdHJpbmcgPSAnJztcclxuICBwcmVzZXRGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWFyY2hUZXh0UHJlc2V0VGFibGUgPSAnJztcclxuICBhZGRGaWx0ZXJDb2x1bW5JbnB1dCA9ICcnO1xyXG4gIHNlYXJjaEluRHJvcGRvd24gPSAnJztcclxuICBwcml2YXRlIHNlY3JldEtleSA9ICd0Yi1zdXBlci1hZG1pbidcclxuICBhZGRGaWx0ZXJEcm9wZG93blNlYXJjaCA9ICcnXHJcbiAgdG9wU2hvd0hpZGVDb2x1bW5zID0gJyc7XHJcbiAgY2hvc2VDb2x1bW5zU2VhcmNoID0gJydcclxuICBzaWRlTmVzdGVkRmlsdGVyU2VhcmNoID0gJydcclxuICBlZGl0aW5Ecm9wZG93blNlYXJjaCA9ICcnO1xyXG4gIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIGNvbmZpcm1EZWxldGUgPSBmYWxzZTtcclxuICBmb250RmFtaWxpZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgLy8gQ29tbW9uIEV4Y2VsIGZvbnRzXHJcbiAgICAnQXJpYWwnLFxyXG4gICAgJ0FyaWFsIEJsYWNrJyxcclxuICAgICdCYWhuc2NocmlmdCcsXHJcbiAgICAnQ2FsaWJyaScsXHJcbiAgICAnQ2FtYnJpYScsXHJcbiAgICAnQ2FtYnJpYSBNYXRoJyxcclxuICAgICdtYXRoJyxcclxuICAgICdDYW5kYXJhJyxcclxuICAgICdDb21pYyBTYW5zIE1TJyxcclxuICAgICdDb25zb2xhcycsXHJcbiAgICAnQ29uc3RhbnRpYScsXHJcbiAgICAnQ29yYmVsJyxcclxuICAgICdDb3VyaWVyIE5ldycsXHJcbiAgICAnRWJyaW1hJyxcclxuICAgICdGcmFua2xpbiBHb3RoaWMgTWVkaXVtJyxcclxuICAgICdHYWJyaW9sYScsXHJcbiAgICAnR2FkdWdpJyxcclxuICAgICdHZW9yZ2lhJyxcclxuICAgICdJbXBhY3QnLFxyXG4gICAgJ0luayBGcmVlJyxcclxuICAgICdKYXZhbmVzZSBUZXh0JyxcclxuICAgICdMZWVsYXdhZGVlIFVJJyxcclxuICAgICdMdWNpZGEgQ29uc29sZScsXHJcbiAgICAnTHVjaWRhIFNhbnMgVW5pY29kZScsXHJcbiAgICAnTWFsZ3VuIEdvdGhpYycsXHJcbiAgICAnTWljcm9zb2Z0IEhpbWFsYXlhJyxcclxuICAgICdNaWNyb3NvZnQgSmhlbmdIZWknLFxyXG4gICAgJ01pY3Jvc29mdCBOZXcgVGFpIEx1ZScsXHJcbiAgICAnTWljcm9zb2Z0IFBoYWdzUGEnLFxyXG4gICAgJ01pY3Jvc29mdCBTYW5zIFNlcmlmJyxcclxuICAgICdNaWNyb3NvZnQgVGFpIExlJyxcclxuICAgICdNaWNyb3NvZnQgWWFIZWknLFxyXG4gICAgJ01pY3Jvc29mdCBZaSBCYWl0aScsXHJcbiAgICAnTW9uZ29saWFuIEJhaXRpJyxcclxuICAgICdNUyBHb3RoaWMnLFxyXG4gICAgJ01TIFBHb3RoaWMnLFxyXG4gICAgJ01TIFVJIEdvdGhpYycsXHJcbiAgICAnTVYgQm9saScsXHJcbiAgICAnTmlybWFsYSBVSScsXHJcbiAgICAnUGFsYXRpbm8gTGlub3R5cGUnLFxyXG4gICAgJ1NlZ29lIFByaW50JyxcclxuICAgICdTZWdvZSBTY3JpcHQnLFxyXG4gICAgJ1NlZ29lIFVJJyxcclxuICAgICdTZWdvZSBVSSBIaXN0b3JpYycsXHJcbiAgICAnU2Vnb2UgVUkgRW1vamknLFxyXG4gICAgJ1NlZ29lIFVJIFN5bWJvbCcsXHJcbiAgICAnU2ltU3VuJyxcclxuICAgICdTaXRrYSBTbWFsbCcsXHJcbiAgICAnU3lsZmFlbicsXHJcbiAgICAnU3ltYm9sJyxcclxuICAgICdUYWhvbWEnLFxyXG4gICAgJ1RpbWVzIE5ldyBSb21hbicsXHJcbiAgICAnVHJlYnVjaGV0IE1TJyxcclxuICAgICdWZXJkYW5hJyxcclxuICAgICdXZWJkaW5ncycsXHJcbiAgICAnV2luZ2RpbmdzJyxcclxuICAgICdZdSBHb3RoaWMnLFxyXG4gICAgJ3NhbnMtc2VyaWYnLFxyXG4gICAgJ3NlcmlmJyxcclxuICAgICdtb25vc3BhY2UnLFxyXG4gICAgJ0ludGVyJ1xyXG4gIF07XHJcblxyXG4gIGZvbnRTaXplczogc3RyaW5nW10gPSBbXHJcbiAgICAnOCcsICc5JywgJzEwJywgJzExJywgJzEyJywgJzE0JywgJzE2JywgJzE4JywgJzIwJywgJzI0JywgJzI4JywgJzMyJ1xyXG4gIF07XHJcblxyXG4gIGhhc1Njcm9sbCA9IGZhbHNlO1xyXG5cclxuXHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29sdW1uU2VydmljZTogU3BsaXRDb2x1bW5zU2VydmljZSxcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbW1vblNldmljZTogQ29tbW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGNvcHlTZXJ2aWNlOiBDb3B5U2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIGZvcm1hdEN1cnJlbmN5OiBGb3JtYXRDdXJyZW5jeVBpcGUsXHJcblxyXG4gICkgeyB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NlbGxUZXh0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGNlbGxUZXh0ITogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZEhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBuZXN0ZWRIZWFkZXIhOiBFbGVtZW50UmVmO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgIHRoaXMuY29tcHV0ZVZpZXdwb3J0Um93cygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY2VsbFRleHQpIHtcclxuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNlbGxUZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVuZGVyQ3VzdG9tQ2VsbHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG5cclxuICBjcmVhdGVDZWxsSW5qZWN0b3Iocm93OiBhbnksIGNvbDogYW55KTogSW5qZWN0b3Ige1xyXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogJ3Jvd0RhdGEnLCB1c2VWYWx1ZTogcm93IH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiAnY29sRGF0YScsIHVzZVZhbHVlOiBjb2wgfVxyXG4gICAgICBdLFxyXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3JcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgcmVuZGVyQ3VzdG9tQ2VsbHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBob3N0cyA9IHRoaXMuY2VsbEhvc3RzLnRvQXJyYXkoKTtcclxuICAgIGxldCBob3N0SW5kZXggPSAwO1xyXG5cclxuICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMudmlzaWJsZVJvd3MpIHtcclxuICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgY29uc3QgaG9zdCA9IGhvc3RzW2hvc3RJbmRleCsrXTtcclxuICAgICAgICBpZiAoIWhvc3QgfHwgIWNvbC5jZWxsUmVuZGVyZXIpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjb25zdCB2aWV3Q29udGFpbmVyID0gaG9zdC52aWV3Q29udGFpbmVyUmVmO1xyXG4gICAgICAgIHZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgY29tcFJlZiA9IHZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbC5jZWxsUmVuZGVyZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICByb3csXHJcbiAgICAgICAgICBjb2wsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCksXHJcbiAgICAgICAgICBhcGk6IHRoaXMsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKChjb21wUmVmLmluc3RhbmNlIGFzIGFueSkuZ3JpZEluaXQpIHtcclxuICAgICAgICAgIChjb21wUmVmLmluc3RhbmNlIGFzIGFueSkuZ3JpZEluaXQocGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkU3R5bGVzVG9JbWFnZXMoKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vICBpZiAodGhpcy50YWJzPy5sZW5ndGgpIHtcclxuICAgIC8vICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYnNbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLmF1dG9zaXplQWxsQ29sdW1ucygpO1xyXG4gICAgaWYgKCF0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkge1xyXG4gICAgICB0aGlzLmF1dG9zaXplQWxsQ29sdW1ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvbnN0IHVzZXIgPSB0aGlzLmdldERlY3J5cHQoJ3VzZXInKTtcclxuICAgIC8vIHRoaXMuY3VycmVuY3lGb3JtYXQgPSB1c2VyPy5jdXJyZW5jeV9mb3JtYXQ7XHJcbiAgICAvLyB0aGlzLmN1cnJlbmN5U3ltYm9sID0gdXNlcj8uY3VycmVuY3lfc3ltYm9sO1xyXG4gICAgLy8gdGhpcy5kYXRlRm9ybWF0ID0gdXNlcj8uZGF0ZV9mb3JtYXQ7XHJcbiAgICBpZiAoIXRoaXMuZGF0ZUZvcm1hdCkge1xyXG4gICAgICBjb25zdCBzdG9yZWREYXRlRm9ybWF0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGVmb3JtYXQnKTtcclxuICAgICAgdGhpcy5kYXRlRm9ybWF0ID0gc3RvcmVkRGF0ZUZvcm1hdCA/IEpTT04ucGFyc2Uoc3RvcmVkRGF0ZUZvcm1hdCkgOiAnZGQvTU0veXl5eSc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmN1cnJlbmN5Rm9ybWF0KSB7XHJcbiAgICAgIGNvbnN0IHN0b3JlZEN1cnJlbmN5Rm9ybWF0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5Rm9ybWF0Jyk7XHJcbiAgICAgIHRoaXMuY3VycmVuY3lGb3JtYXQgPSBzdG9yZWRDdXJyZW5jeUZvcm1hdCA/IEpTT04ucGFyc2Uoc3RvcmVkQ3VycmVuY3lGb3JtYXQpIDogJzEsMjM0LDU2Ny44OSc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0aGlzLmN1cnJlbmN5U3ltYm9sKSB7XHJcbiAgICAgIGNvbnN0IHN0b3JlZEN1cnJlbmN5U3ltYm9sID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5U3ltYm9sJyk7XHJcbiAgICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPSBzdG9yZWRDdXJyZW5jeVN5bWJvbCA/IEpTT04ucGFyc2Uoc3RvcmVkQ3VycmVuY3lTeW1ib2wpIDogJyQnO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgZ2V0RGVjcnlwdChrZXk6c3RyaW5nKXtcclxuICAvLyAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXHJcbiAgLy8gICAgIHRyeSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIEpTT04ucGFyc2UoQ3J5cHRvSlMuQUVTLmRlY3J5cHQodmFsdWUgYXMgc3RyaW5nLCB0aGlzLnNlY3JldEtleSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpKVxyXG4gIC8vICAgICB9IGNhdGNoIChlKSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIG51bGw7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuXHJcbiAgZGF0YVNldExvYWRpbmcgPSBmYWxzZTtcclxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2V0Q29sdW1uc0NvbHVtbkRyb3Bkb3duVmFsdXMoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3RhYnMnXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1sndGFicyddKSB7XHJcbiAgICAgICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcclxuICAgICAgICBjb25zdCBzYXZlZFRhYiA9IGFsbFRhYnNbdGhpcy50YWJsZVR5cGVdO1xyXG4gICAgICAgIGlmKHRoaXMudGFicy5pbmNsdWRlcygnQ3VycmVudCBQb2xpY3knKSl7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHRoaXMudGFicz8uWzFdIHx8ICdDdXJyZW50IFBvbGljeSc7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHNhdmVkVGFiIHx8IHRoaXMudGFicz8uWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gaWYgKHRoaXMudGFibGVUeXBlKSB7XHJcbiAgICAgICAgLy8gICB0aGlzLnNldEFjdGl2ZVRhYih0aGlzLmFjdGl2ZVRhYik7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVyc0NvbmZpZyddKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXT8uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcblxyXG4gICAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoY29sID0+ICh7XHJcbiAgICAgICAgLi4uY29sLFxyXG4gICAgICAgIHF1ZXJ5OiBjb2wucXVlcnkgPyB7IC4uLmNvbC5xdWVyeSB9IDogbnVsbCxcclxuICAgICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXHJcbiAgICAgICAgICA6IFtdLFxyXG4gICAgICB9KSk7XHJcblxyXG5cclxuICAgICAgaWYgKHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICAgIHRoaXMuc2V0U2VjdGlvbnNXaWR0aCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YVNldCddKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNldCA9IHRoaXMuZGF0YVNldD8ubWFwKChyb3csIGkpID0+ICh7XHJcbiAgICAgICAgLi4ucm93LFxyXG4gICAgICAgIF9fdmlydHVhbEluZGV4OiBpICsgMSxcclxuICAgICAgfSkpO1xyXG4gICAgICB0aGlzLm9yaWdpbmFsRGF0YVNldCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTZXQpO1xyXG4gICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21wdXRlVmlld3BvcnRSb3dzKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcclxuXHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNlbnRlclBpbm5lZEhlYWRlcj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgIHZvaWQgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhU2V0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kYXRhU2V0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XHJcbiAgICAgICAgdGhpcy5kYXRhU2V0ID0gYXdhaXQgdGhpcy5ncm91cERhdGFBc3luYyh0aGlzLm9yaWdpbmFsRGF0YVNldCwgZmllbGRzKTtcclxuXHJcbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2JveFN0YXRlJ10/LmN1cnJlbnRWYWx1ZT8ucmVzZXQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuY2xlYXIoKTtcclxuICAgICAgdGhpcy5jbGVhclNlbGVjdGlvblN0YXRlKHRoaXMudGFibGVUeXBlKTtcclxuXHJcbiAgICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xyXG4gICAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgICAgIG9iajogaWRzLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXZlbnRUeXBlOiAnb25TZWxlY3RSb3cnLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snY2xvc2VEcm9wZG93biddICYmIHRoaXMuY2xvc2VEcm9wZG93bi5wcmVzZXQuY2xvc2VkKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gbnVsbDtcclxuICAgICAgdGhpcy5wcmVzZXRGaWx0ZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wcmVzZXROYW1lID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgKGNoYW5nZXNbJ29kZFJvd3NCYWNrZ3JvdW5kQ29sb3InXSkge1xyXG4gICAgLy8gICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gISF0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3Jlc2V0QWxsRmlsdGVycyddICYmIHRoaXMucmVzZXRBbGxGaWx0ZXJzLnJlc2V0QWxsKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJBbGxGaWx0ZXJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3RhYmxlVmlldyddKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZpZXdWYWx1ZSA9IHRoaXMudGFibGVWaWV3O1xyXG4gICAgICAgIGxldCB0ZW1wcm9yeVNlbGVjdGVkID0gQXJyYXkuaXNBcnJheSh2aWV3VmFsdWUpXHJcbiAgICAgICAgICA/IHZpZXdWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5pc190ZW1wKVxyXG4gICAgICAgICAgOiBudWxsO1xyXG5cclxuICAgICAgICBpZiAoIXRlbXByb3J5U2VsZWN0ZWQpIHtcclxuICAgICAgICAgIHRlbXByb3J5U2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHZpZXdWYWx1ZSlcclxuICAgICAgICAgICAgPyB2aWV3VmFsdWUuZmluZChpdGVtID0+IGl0ZW0uaXNfZGVmYXVsdClcclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUgPSB0ZW1wcm9yeVNlbGVjdGVkIHx8IG51bGw7XHJcbiAgICAgICAgdGhpcy5wcmVzZXROYW1lID0gdGVtcHJvcnlTZWxlY3RlZD8ubmFtZSB8fCAnJztcclxuICAgICAgICB0aGlzLnByZXNldEZpbHRlciA9IHRlbXByb3J5U2VsZWN0ZWQ/LmFjdGl2ZUZpbHRlcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcucm93U2hhZGluZ0VuYWJsZWQ7XHJcbiAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlcjtcclxuICAgICAgICAgIHRoaXMuZm9udEZhaW1seSA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmZvbnRGYWltbHk7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dDtcclxuICAgICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZTtcclxuICAgICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmdsb2JhbFNlYXJjaDtcclxuICAgICAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQodGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0KTtcclxuICAgICAgICAgIHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA9IHRlbXByb3J5U2VsZWN0ZWQ/LmNvbmZpZz8ub2RkUm93c0JhY2tncm91bmRDb2xvciB8fCAnI2YxZjFmMSc7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSAnSW50ZXInO1xyXG4gICAgICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSAnbWVkaXVtJztcclxuICAgICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNDtcclxuICAgICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5hdXRvc2l6ZUFsbENvbHVtbnMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRDb2x1bW5zQ29sdW1uRHJvcGRvd25WYWx1cygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5jb2x1bW5zKSByZXR1cm47XHJcbiAgICAvLyBKdXN0IHJlbW92ZWQgdGVtcG9yYXJ5IGZvciBzdXBlciBhZG1pbiB3aWxsIHNldCBpdCBhZ2FpblxyXG4gICAgaWYodGhpcy5jb2x1bW5zPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcihjID0+IGM/LmZpZWxkPy50cmltKCkgIT09ICdpc19kZWxldGVkJylcclxuICAgIH1cclxuICAgIHRoaXMuY29sdW1ucyA9IGF3YWl0IHRoaXMuY29tbW9uU2V2aWNlLmNvcHlEcm9wZG93bkRhdGFSZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZElkc0Zyb21TdGF0ZSA9IHRoaXMucmVzdG9yZVNlbGVjdGlvbih0aGlzLnRhYmxlVHlwZSk7XHJcbiAgICBpZiAoc2VsZWN0ZWRJZHNGcm9tU3RhdGUuc2l6ZSA+IDApIHtcclxuICAgICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgICAgb2JqOiBpZHNcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWxlY3Rpb25TdGF0ZSh0YWJsZVR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YXRhYmxlU2VsZWN0aW9ucycpIHx8ICd7XCJzZWxlY3RlZFJvd3NcIjoge319Jyk7XHJcbiAgICBpZiAoc3RvcmVkLnNlbGVjdGVkUm93cyAmJiBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV0pIHtcclxuICAgICAgZGVsZXRlIHN0b3JlZC5zZWxlY3RlZFJvd3NbdGFibGVUeXBlXTtcclxuICAgIH1cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAnZGF0YXRhYmxlU2VsZWN0aW9ucycsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHN0b3JlZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIGFwcGx5RmlsdGVyb3B0aW9uTGlzdCgpIHtcclxuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gYXdhaXQgdGhpcy5jb21tb25TZXZpY2UuYXBwbHlGaWx0ZXJzVG9Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIHRoaXMuY29sdW1ucyA9IFsuLi51cGRhdGVkQ29sdW1uc107XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGxlZnRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIGNlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcmlnaHRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld0NlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld1JpZ2h0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcclxuXHJcbiAgLy8gTWFpbiBDb250YWluZXIgVGVtcGxhdGUgUmVmZXJlbmNlc1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGFHcmlkQ29udGFpbmVyJylcclxuICBkYXRhR3JpZENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyJylcclxuICB0YXNrTWFuYWdlbWVudENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZFRhYmxlQ29udGFpbmVyJylcclxuICBuZXN0ZWRUYWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBCb2R5IFRlbXBsYXRlIFJlZmVyZW5jZXNcclxuICBAVmlld0NoaWxkKCdsZWZ0UGlubmVkQm9keScpXHJcbiAgbGVmdFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdjZW50ZXJQaW5uZWRCb2R5JylcclxuICBjZW50ZXJQaW5uZWRCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRCb2R5JylcclxuICByaWdodFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgLy8gSGVhZGVycyBUZW1wbGF0ZSBSZWZlcmVuY2VzXHJcbiAgQFZpZXdDaGlsZCgnbGVmdFBpbm5lZEhlYWRlcicpXHJcbiAgbGVmdFBpbm5lZEhlYWRlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclBpbm5lZEhlYWRlcicpXHJcbiAgY2VudGVyUGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRIZWFkZXInKVxyXG4gIHJpZ2h0UGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbnNHcm91cGVkQm94JylcclxuICBjb2x1bW5zR3JvdXBlZEJveCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBDZW50ZXIgRmFrZSBzY3JvbGxiYXJkXHJcbiAgQFZpZXdDaGlsZCgnY2VudGVyRmFrZVNjcm9sbGJhcicpXHJcbiAgY2VudGVyRmFrZVNjcm9sbGJhciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIGFzeW5jIHVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3Vwcyhjb2x1bW5zOiBhbnkgPSBudWxsKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YUdyaWRDb250YWluZXIpIHJldHVybjtcclxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XHJcbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XHJcbiAgICAvLyBXcmFwIGluIGEgcHJvbWlzZSBzbyB3ZSBjYW4gYXdhaXRcclxuICAgIGNvbnN0IHsgbGVmdCwgY2VudGVyLCByaWdodCB9OiBhbnkgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgY29uc3QgcHJlcGFyZWQgPSB0aGlzLmNvbHVtblNlcnZpY2UucHJlcGFyZUNvbHVtbnMoXHJcbiAgICAgICAgY29sdW1ucyA/IGNvbHVtbnMgOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICAgKTtcclxuICAgICAgcmVzb2x2ZShwcmVwYXJlZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gbGVmdDtcclxuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucmlnaHRQaW5uZWRDb2x1bW5zID0gcmlnaHQ7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVmcmVzaFByZXZpZXdDb2x1bW5zKGNvbHVtbnM6IGFueSA9IG51bGwpIHtcclxuICAgIGlmICghdGhpcy5kYXRhR3JpZENvbnRhaW5lcikgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIC8vIFdyYXAgcHJlcGFyZUNvbHVtbnMgaW4gYSBQcm9taXNlIHRvIG1ha2UgaXQgYXdhaXRhYmxlXHJcbiAgICBjb25zdCB7IGxlZnQsIGNlbnRlciwgcmlnaHQgfTogYW55ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5jb2x1bW5TZXJ2aWNlLnByZXBhcmVDb2x1bW5zKFxyXG4gICAgICAgIGNvbHVtbnMgPyBjb2x1bW5zIDogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGNvbnRhaW5lcldpZHRoXHJcbiAgICAgICk7XHJcbiAgICAgIHJlc29sdmUocHJlcGFyZWQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5wcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMgPSBsZWZ0O1xyXG4gICAgdGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyA9IHJpZ2h0O1xyXG4gICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDEwKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpIHtcclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gdGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcclxuXHJcbiAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cclxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcclxuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIC8vIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICAvLyBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIC8vIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgLy8gaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIC8vIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICAvLyBjb250YWluZXJXaWR0aCAtPSA1O1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5TZXJ2aWNlLmFzc2lnbkRlZmF1bHRXaWR0aHMoXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICk7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldFNlY3Rpb25zV2lkdGgoKSB7XHJcbiAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxlZnQtcGlubmVkLWJvZHknKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGNlbnRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICcuY2VudGVyLXNjcm9sbGFibGUtYm9keSdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yaWdodC1waW5uZWQtYm9keScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKGxlZnQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMubGVmdFBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAoY2VudGVyKSB7XHJcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAocmlnaHQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMucmlnaHRQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gb25DZW50ZXJCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XHJcblxyXG4gIC8vICAgLy8gU3luYyB2ZXJ0aWNhbCBzY3JvbGwgd2l0aCBsZWZ0ICYgcmlnaHQgcGlubmVkIGJvZGllc1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG5cclxuICAvLyAgIC8vIFN5bmMgaG9yaXpvbnRhbCBzY3JvbGwgd2l0aCBjZW50ZXIgaGVhZGVyXHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xyXG4gIC8vICAgdGhpcy5jZW50ZXJGYWtlU2Nyb2xsYmFyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBvbkxlZnRCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vIH1cclxuICAvLyBvblJpZ2h0Qm9keVNjcm9sbCgpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyB9XHJcblxyXG4gIGZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gMDtcclxuICAvLyBvbkZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgLy8gICB0aGlzLmZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG4gIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBmaWVsZDogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBmaWVsZD8uc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgb2JqKTtcclxuICB9XHJcblxyXG4gIGlzTmVzdGVkVmFsdWVBcnJheShvYmo6IGFueSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFvYmogfHwgIWZpZWxkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGZpZWxkXHJcbiAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgIC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gKGFjYyAmJiBhY2NbcGFydF0gIT09IHVuZGVmaW5lZCA/IGFjY1twYXJ0XSA6IHVuZGVmaW5lZCksIG9iaik7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZUdyb3VwKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSwgaXNSaWdodFBpbm5lZD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSBjb2wuY2hpbGRyZW4gfHwgW107XHJcbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNoaWxkV2lkdGhzOiB7IGZpZWxkOiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdID0gY2hpbGRyZW4ubWFwKFxyXG4gICAgICAoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgIGBbZmllbGQ9XCIke2NoaWxkLmZpZWxkfVwiXWBcclxuICAgICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZDogY2hpbGQuZmllbGQsXHJcbiAgICAgICAgICB3aWR0aDogZWw/Lm9mZnNldFdpZHRoIHx8IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCB0b3RhbEluaXRpYWxXaWR0aCA9IGNoaWxkV2lkdGhzLnJlZHVjZShcclxuICAgICAgKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsXHJcbiAgICAgIDBcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGxldCBkZWx0YVggPSBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcclxuXHJcbiAgICAgIGlmIChpc1JpZ2h0UGlubmVkKSB7XHJcbiAgICAgICAgZGVsdGFYID0gLWRlbHRhWDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJldmVudCBzaHJpbmtpbmcgdG9vIHNtYWxsXHJcbiAgICAgIGlmICh0b3RhbEluaXRpYWxXaWR0aCArIGRlbHRhWCA8IGNoaWxkcmVuLmxlbmd0aCAqIDgwKSByZXR1cm47XHJcblxyXG4gICAgICBsZXQgdG90YWxOZXdXaWR0aCA9IDA7XHJcblxyXG4gICAgICBjaGlsZFdpZHRocy5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gY2hpbGQud2lkdGggLyB0b3RhbEluaXRpYWxXaWR0aDtcclxuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWF4KGNoaWxkLndpZHRoICsgZGVsdGFYICogcmF0aW8sIDgwKTtcclxuICAgICAgICB0b3RhbE5ld1dpZHRoICs9IG5ld1dpZHRoO1xyXG5cclxuICAgICAgICBjb25zdCBjaGlsZEVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWZpZWxkPVwiJHtjaGlsZC5maWVsZH1cIl1gKTtcclxuICAgICAgICBjaGlsZEVscy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZWxIdG1sID0gZWwgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICBlbEh0bWwuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgICBlbEh0bWwuc3R5bGUud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY2hpbGQuZmllbGQsIG5ld1dpZHRoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyDinIUgVXBkYXRlIGdyb3VwIGhlYWRlciB3aWR0aCBpbiBET01cclxuICAgICAgY29uc3QgZ3JvdXBIZWFkZXJFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgYFtncm91cD1cIiR7Y29sLmhlYWRlcn1cIl1gXHJcbiAgICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmIChncm91cEhlYWRlckVsKSB7XHJcbiAgICAgICAgZ3JvdXBIZWFkZXJFbC5zdHlsZS53aWR0aCA9IGAke3RvdGFsTmV3V2lkdGh9cHhgO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uTW91c2VVcCA9ICgpID0+IHtcclxuICAgICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcclxuICAgICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoZmllbGQ6IHN0cmluZywgd2lkdGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgdXBkYXRlID0gKGNvbHVtbnM6IGFueVtdKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHVwZGF0ZShjb2wuY2hpbGRyZW4pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xyXG4gICAgICAgICAgY29sLndpZHRoID0gd2lkdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHVwZGF0ZSh0aGlzLmNvbHVtbnMpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgIGNsZWFuQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgICAgcmV0dXJuIGNvbHVtbnMubWFwKChjb2wpID0+IHtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICBfX3R5cGVuYW1lLFxyXG4gICAgICAgICAgX2lkLFxyXG4gICAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLFxyXG4gICAgICAgICAgZmlsdGVyVmFsdWUsXHJcbiAgICAgICAgICBleHBhbmRlZEZpbHRlcixcclxuICAgICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgICAgaXNSb3dHcm91cGVkLFxyXG4gICAgICAgICAgLi4ucmVzdFxyXG4gICAgICAgIH0gPSBjb2w7XHJcblxyXG4gICAgICAgIC8vIENsZWFuIGRyb3Bkb3duIHZhbHVlcyAoX190eXBlbmFtZSByZW1vdmVkKVxyXG4gICAgICAgIGNvbnN0IGNsZWFuZWREcm9wZG93biA9IEFycmF5LmlzQXJyYXkoY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKVxyXG4gICAgICAgICAgPyBjb2x1bW5fZHJvcGRvd25fdmFsdWUubWFwKCh7IF9fdHlwZW5hbWUsIC4uLmRSZXN0IH0pID0+IGRSZXN0KVxyXG4gICAgICAgICAgOiBjb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgPyAoKHsgX190eXBlbmFtZSwgLi4uZFJlc3QgfSkgPT4gZFJlc3QpKGNvbHVtbl9kcm9wZG93bl92YWx1ZSlcclxuICAgICAgICAgICAgOiBudWxsO1xyXG5cclxuICAgICAgICAvLyBDbGVhbiBxdWVyeSAoX190eXBlbmFtZSByZW1vdmVkKVxyXG4gICAgICAgIGNvbnN0IGNsZWFuZWRRdWVyeSA9IEFycmF5LmlzQXJyYXkocXVlcnkpXHJcbiAgICAgICAgICA/IHF1ZXJ5Lm1hcCgoeyBfX3R5cGVuYW1lLCAuLi5xUmVzdCB9KSA9PiBxUmVzdClcclxuICAgICAgICAgIDogcXVlcnlcclxuICAgICAgICAgICAgPyAoKHsgX190eXBlbmFtZSwgX2lkcywgLi4ucVJlc3QgfSkgPT4gcVJlc3QpKHF1ZXJ5KVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5yZXN0LFxyXG4gICAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBjbGVhbmVkRHJvcGRvd24sXHJcbiAgICAgICAgICBxdWVyeTogY2xlYW5lZFF1ZXJ5LFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICBvblJlc2l6ZUNvbHVtbihldmVudDogTW91c2VFdmVudCwgY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWBcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpbml0aWFsV2lkdGggPSB0YXJnZXRFbD8ub2Zmc2V0V2lkdGggfHwgMTUwO1xyXG5cclxuICAgIGNvbnN0IG1hdGNoaW5nRWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtZmllbGQ9XCIke2NvbC5maWVsZH1cIl1gKTtcclxuXHJcbiAgICAvLyDwn5GJIEFkZCBoaWdobGlnaHQgd2hpbGUgcmVzaXppbmdcclxuICAgIGlmIChjb2w/LnBpbm5lZCA9PSAncmlnaHQnKSB7XHJcbiAgICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKCdyZXNpemluZy1oaWdobGlnaHQtcmlnaHQnKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBtYXRjaGluZ0Vscy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZCgncmVzaXppbmctaGlnaGxpZ2h0Jyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9uTW91c2VNb3ZlID0gKG1vdmVFdmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICBsZXQgZGVsdGFYID0gbW92ZUV2ZW50LmNsaWVudFggLSBzdGFydFg7XHJcblxyXG4gICAgICAvLyDwn5GJIFJldmVyc2UgaWYgdGhlIGNvbHVtbiBpcyBwaW5uZWQgdG8gdGhlIHJpZ2h0XHJcbiAgICAgIGlmIChjb2wucGlubmVkID09PSAncmlnaHQnKSB7XHJcbiAgICAgICAgZGVsdGFYID0gLWRlbHRhWDtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IG5ld1dpZHRoID0gaW5pdGlhbFdpZHRoICsgZGVsdGFYO1xyXG4gICAgICBpZiAobmV3V2lkdGggPCA4MCkgcmV0dXJuO1xyXG5cclxuICAgICAgbWF0Y2hpbmdFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS5taW5XaWR0aCA9IGAke25ld1dpZHRofXB4YDtcclxuICAgICAgICBlbGVtZW50LnN0eWxlLndpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBuZXdXaWR0aCk7XHJcbiAgICAgIGNvbC53aWR0aCA9IG5ld1dpZHRoO1xyXG4gICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgICAgbWF0Y2hpbmdFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5yZW1vdmUoJ3Jlc2l6aW5nLWhpZ2hsaWdodCcpO1xyXG4gICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LnJlbW92ZSgncmVzaXppbmctaGlnaGxpZ2h0LXJpZ2h0Jyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBvblJlc2l6ZUdyb3VwQm94KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgY29uc3Qgc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcclxuXHJcbiAgICBjb25zdCB0YXJnZXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncm91cEJveEhlYWRlckRpdicpO1xyXG4gICAgY29uc3QgaW5pdGlhbFdpZHRoID0gdGFyZ2V0RWw/Lm9mZnNldFdpZHRoIHx8IDE1MDtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgZGVsdGFYID0gbW92ZUV2ZW50LmNsaWVudFggLSBzdGFydFg7XHJcblxyXG4gICAgICBsZXQgbmV3V2lkdGggPSBpbml0aWFsV2lkdGggKyBkZWx0YVg7XHJcbiAgICAgIGlmIChuZXdXaWR0aCA8IDEwMCkgbmV3V2lkdGggPSAxMDA7XHJcblxyXG4gICAgICBpZiAodGFyZ2V0RWwpIHtcclxuICAgICAgICB0YXJnZXRFbC5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcclxuICAgICAgICB0YXJnZXRFbC5zdHlsZS5taW5XaWR0aCA9IGAke25ld1dpZHRofXB4YDtcclxuICAgICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IG5ld1dpZHRoO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uTW91c2VVcCA9ICgpID0+IHtcclxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xyXG4gIH1cclxuXHJcbiAgb25QYXN0ZUluRmlsdGVyUm93U2VhcmNoKGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgY29sOiBhbnkpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKGNvbCk7XHJcbiAgICAgIHRoaXMuYXBwbHlEcm9wZG93bkZpbHRlcigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlckNoYW5nZShjb2w6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSBjb2wuZmlsdGVyVmFsdWU/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyID0gY29sO1xyXG4gICAgaWYgKCFjb2w/LnF1ZXJ5KSB7XHJcbiAgICAgIGNvbC5xdWVyeSA9IHtcclxuICAgICAgICBmaXJzdF9jb25kaXRpb246IGNvbC50eXBlID09ICdkYXRlJyA/ICdlcXVhbCcgOiAnY29udGFpbicsXHJcbiAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogbnVsbCxcclxuICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgY29uZGl0aW9uOiBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbC5xdWVyeS5maXJzdF92YWx1ZSA9IGZpbHRlclZhbHVlO1xyXG4gICAgdGhpcy5maXJzdFZhbHVlID0gZmlsdGVyVmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgQm9keSBIZWlnaHRcclxuICBnZXQgYm9keVdyYXBwZXJIZWlnaHQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLnNob3dDb2x1bW5zR3JvdXBpbmcgJiYgdGhpcy5zaG93RmlsdGVyUm93ID8gMyA6ICh0aGlzLnNob3dDb2x1bW5zR3JvdXBpbmcgfHwgdGhpcy5zaG93RmlsdGVyUm93ID8gMiA6IDEpO1xyXG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5oZWFkZXJSb3dIZWlnaHQgKiByb3dzICsgKHRoaXMuaGFzU2Nyb2xsID8gMTcgOiAwKTtcclxuICAgIHJldHVybiBgY2FsYygxMDAlIC0gJHtvZmZzZXR9cHgpYDtcclxuICB9XHJcblxyXG4gIC8vIFJvdyBIb3ZlciBMb2dpYyBIZXJlXHJcbiAgaG92ZXJlZFJvd0lkOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBvblJvd0hvdmVyKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmhvdmVyZWRSb3dJZCA9IHJvdy5faWQgfHwgcm93LmlkO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dMZWF2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaG92ZXJlZFJvd0lkID0gbnVsbDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLm9wZW5JbmRleCA9IG51bGw7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmhhc1BhcmVudFdpdGhDbGFzcyh0YXJnZXQsIFtcclxuICAgICAgICAndGhyZWUtZG90cycsXHJcbiAgICAgICAgJ2ZpbHRlci1pY29uLXdyYXBwZXInLFxyXG4gICAgICAgICdjb2x1bW4tbWVudScsXHJcbiAgICAgICAgJ2ZpbHRlci1tZW51JyxcclxuICAgICAgXSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5zaG93QWN0aW9uc0Ryb3BEb3duID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbnNpZGVUb3BGaWx0ZXJSb3cgPSB0YXJnZXQuY2xvc2VzdCgnLmZpbHRlci10YWdzJykgfHwgdGFyZ2V0LmNsb3Nlc3QoJy5hZGQtZmlsdGVyLWJ1dHRvbi1tZW51JykgfHxcclxuICAgICAgdGFyZ2V0LmNsb3Nlc3QoJy50YWJsZS1yaWdodC10b3AtYWN0aW9ucycpIHx8IHRhcmdldC5jbG9zZXN0KCcudGFibGUtbGF5b3V0JykgfHwgdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItcm93LWZpbHRlci13cmFwcGVyJyk7XHJcbiAgICBjb25zdCBpc0NsaWNrZWRJbnNpZGVUaHJlZURvdHNGaWx0ZXIgPSB0YXJnZXQuY2xvc2VzdCgnLnRocmVlLWRvdHMtZmlsdGVyJykgfHwgdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItbWVudS1jb250YWluZXInKTtcclxuICAgIGlmICghaXNDbGlja2VkSW5zaWRlVGhyZWVEb3RzRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VUaHJlZURvdHNNZW51RmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWluc2lkZVRvcEZpbHRlclJvdykge1xyXG4gICAgICB0aGlzLmNsb3NlRmlsdGVyRHJvcGRvd25zKGV2ZW50KTtcclxuICAgIH1cclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5zZXQtZGVmYXVsdC1wcmVzZXQnKSkge1xyXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2V0LWRlZmF1bHQtcHJlc2V0Jyk/LmNsYXNzTGlzdD8ucmVtb3ZlKCdzaG93Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmZ1bGwtdGV4dC1ib3gnKSAmJiAhdGFyZ2V0LmNsb3Nlc3QoJy5kYXRhLWdyaWQtaGVhZGVyLXdyYXBwZXInKSkge1xyXG4gICAgICB0aGlzLmNvbGxhcHNlQWxsRXhwYW5kZWRDZWxscygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5kYXRhLWdyaWQtdGFibGUtd3JhcHBlcicpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuYWN0aXZlQ2VsbCA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlVGhyZWVEb3RzTWVudUZpbHRlcigpIHtcclxuICAgIHRoaXMuaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2xvc2VGaWx0ZXJEcm9wZG93bnMoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1BhcmVudFdpdGhDbGFzcyhcclxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxyXG4gICAgY2xhc3NMaXN0OiBzdHJpbmdbXVxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50O1xyXG5cclxuICAgIHdoaWxlIChlbCAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZWwuY2xhc3NMaXN0ICYmXHJcbiAgICAgICAgY2xhc3NMaXN0LnNvbWUoKGNsYXNzTmFtZSkgPT4gZWwhLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNNZW51ZUhpZGRlbiA9IGZhbHNlO1xyXG4gIG9wZW5UaHJlZURvdHNNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCBjaGlsZDogYW55LCBrZWVwT3JpZ2luYWxQb3NpdGlvbiA9IGZhbHNlKSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmlzTWVudWVIaWRkZW4gPSB0cnVlO1xyXG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aDtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gY2hpbGQ7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgY29uc3QgeCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb2x1bW4tbWVudScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgIGlmICh4ID4gKGNvbnRhaW5lcldpZHRoIC8gMikpIHtcclxuICAgICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IGAke3ggLSAyNDB9cHhgO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBlbGVtZW50IS5zdHlsZS5sZWZ0ID0gYCR7eH1weGA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNNZW51ZUhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyBDb2x1bW4gVGhyZWUgRG90cyBBY3Rpb25zXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIHNvcnRBc2MoY29sOiBhbnkpIHtcclxuICAgIGlmICghY29sLmlzX3NvcnRhYmxlKSByZXR1cm47XHJcbiAgICBjb2whLm9yZGVyX2J5ID0gJ2FzYyc7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb3JkZXI6ICdhc2MnLFxyXG4gICAgICBjb2x1bW46IGNvbFxyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zb3J0aW5nT3JkZXJPcHRpb25zLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgc29ydERlc2MoY29sOiBhbnkpIHtcclxuICAgIGlmICghY29sLmlzX3NvcnRhYmxlKSByZXR1cm47XHJcbiAgICBjb2whLm9yZGVyX2J5ID0gJ2Rlc2MnO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9yZGVyOiAnZGVzYycsXHJcbiAgICAgIGNvbHVtbjogY29sXHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnNvcnRpbmdPcmRlck9wdGlvbnMuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICByZXNldFNvcnQoY29sOiBhbnkpIHtcclxuICAgIHRoaXMuc29ydGluZ0NvbmZpZyA9IHsgZmllbGQ6ICcnLCBvcmRlcl9ieTogJycgfTtcclxuICAgIGNvbnN0IGV2ZW50ID0geyBmaWVsZDogbnVsbCwgb3JkZXJfYnk6IG51bGwgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zb3J0aW5nT3JkZXJPcHRpb25zLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcclxuICAgIGNvbHVtbjogYW55LFxyXG4gICAgcGlubmVkOiAnbGVmdCcgfCAncmlnaHQnIHwgbnVsbCxcclxuICAgIGlzTmVzdGVkVGFibGU6IGFueSA9IGZhbHNlLFxyXG4gICAgY29sdW1ucz86IGFueVxyXG4gICkge1xyXG4gICAgZGVidWdnZXJcclxuICAgIGlmIChpc05lc3RlZFRhYmxlKSB7XHJcbiAgICAgIHRoaXMucGluVW5waW5Db2x1bShjb2x1bW4sIHBpbm5lZCwgY29sdW1ucyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHVwZGF0ZSA9IChjb2x1bW5zOiBhbnlbXSkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB1cGRhdGUoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgICAgICBjb2wucGlubmVkID0gcGlubmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuICAgIHVwZGF0ZSh0aGlzLmNvbHVtbnMpO1xyXG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUpIHtcclxuICAgICAgICByZXN1bHQucHVzaChjb2x1bW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH07XHJcblxyXG4gIGF1dG9zaXplQ29sdW1uKGNvbHM6IGFueSB8IGFueVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcblxyXG4gICAgLy8gTm9ybWFsaXplIGlucHV0IHRvIGFuIGFycmF5XHJcbiAgICBjb25zdCBjb2x1bW5zVG9SZXNpemUgPSBBcnJheS5pc0FycmF5KGNvbHMpID8gY29scyA6IFtjb2xzXTtcclxuXHJcbiAgICAvLyBIZWxwZXI6IEZsYXR0ZW4gYWxsIHZpc2libGUgbGVhZiBjb2x1bW5zXHJcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IHRoaXMuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ291bnQgPSB2aXNpYmxlQ29sdW1ucy5sZW5ndGg7XHJcblxyXG4gICAgaWYgKHZpc2libGVDb3VudCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XHJcbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XHJcbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PSAnQXNzZXRzJyB8fCB0aGlzLmdyaWRUeXBlID09ICdUYXNrcycpIGNvbnRhaW5lcldpZHRoIC09IDMwO1xyXG4gICAgY29udGFpbmVyV2lkdGggLT0gNTU7XHJcbiAgICBjb25zdCBlcXVhbFdpZHRoID0gTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIHZpc2libGVDb3VudCk7XHJcblxyXG4gICAgLy8gUmVzaXplIGVhY2ggcGFzc2VkIGNvbHVtblxyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1uc1RvUmVzaXplKSB7XHJcbiAgICAgIGlmIChjb2wgJiYgY29sLmZpZWxkKSB7XHJcbiAgICAgICAgY29sLndpZHRoID0gZXF1YWxXaWR0aDtcclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgZXF1YWxXaWR0aCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0R3JvdXBXaWR0aChncm91cDogYW55KTogbnVtYmVyIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGdyb3VwPy5jaGlsZHJlblxyXG4gICAgICAgID8uZmlsdGVyKChjb2w6IGFueSkgPT4gY29sPy5pc192aXNpYmxlKVxyXG4gICAgICAgID8ucmVkdWNlKChhY2M6IG51bWJlciwgY29sOiBhbnkpID0+IGFjYyArIChjb2w/LndpZHRoIHx8IDApLCAwKSB8fCAwXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXV0b3NpemVBbGxDb2x1bW5zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0IGdldFZpc2libGVMZWFmQ29sdW1ucyA9IChjb2x1bW5zOiBhbnlbXSk6IGFueVtdID0+IHtcclxuICAgICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uaXNfdmlzaWJsZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbHVtbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgY29uc3QgdmlzaWJsZUNvdW50ID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoO1xyXG5cclxuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHJldHVybjtcclxuXHJcbiAgICBsZXQgY29udGFpbmVyV2lkdGggPVxyXG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xyXG4gICAgaWYgKHRoaXMuc2hvd1NlcmlhbE51bWJlcikgY29udGFpbmVyV2lkdGggLT0gNTU7XHJcbiAgICBpZiAodGhpcy5zaG93U2lkZU1lbnUpIGNvbnRhaW5lcldpZHRoIC09IDI5O1xyXG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT0gJ0Fzc2V0cycgfHwgdGhpcy5ncmlkVHlwZSA9PSAnVGFza3MnKSBjb250YWluZXJXaWR0aCAtPSAzMDtcclxuICAgIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgY29uc3QgZXF1YWxXaWR0aCA9IE1hdGgubWF4KE1hdGguZmxvb3IoY29udGFpbmVyV2lkdGggLyB2aXNpYmxlQ291bnQpLCAxNTApO1xyXG5cclxuICAgIC8vIFVwZGF0ZSB3aWR0aHMgZm9yIGFsbCB2aXNpYmxlIGNvbHVtbnNcclxuICAgIHZpc2libGVDb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xyXG4gICAgICBjb2wud2lkdGggPSBlcXVhbFdpZHRoO1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgZXF1YWxXaWR0aCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFya0NvbHVtbkFzR3JvdXBlZChjb2x1bW5zOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xyXG4gICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xyXG4gICAgICAgIGNvbC5pc1Jvd0dyb3VwZWQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLm1hcmtDb2x1bW5Bc0dyb3VwZWQoY29sLmNoaWxkcmVuLCBmaWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdyb3VwQnkoY29sOiBhbnkpIHtcclxuICAgIHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVkgPSAwO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gICAgaWYgKCFjb2wpIHJldHVybjtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAoY29sPy5pc19ncm91cGFibGUpIHtcclxuICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGNvbCk7XHJcbiAgICAgIHRoaXMubWFya0NvbHVtbkFzR3JvdXBlZCh0aGlzLmNvbHVtbnMsIGNvbC5maWVsZCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XHJcbiAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncm91cEJveFBhZGRpbmcgPSB0aGlzLmNvbHVtbnNHcm91cGVkQm94Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIH0sIDEwKTtcclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBncm91cERhdGFBc3luYyhkYXRhOiBhbnlbXSwgZ3JvdXBGaWVsZHM6IHN0cmluZ1tdKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdyb3VwRGF0YShkYXRhLCBncm91cEZpZWxkcyk7XHJcbiAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgY2hvb3NlQ29sdW1ucygpIHtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuICAgIHRoaXMuc2hvd0NvbHVtblBhbmVsID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1ucygpIHtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuXHJcbiAgICAvLyB0aGlzLmNvbHVtbnMgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5vcmlnaW5hbENvbHVtbnMpO1xyXG4gICAgLy8gRGVlcCBjb3B5IG5lc3RlZCBvYmplY3RzIGJ1dCBrZWVwIGNsYXNzIHJlZnMgc2FmZVxyXG4gICAgdGhpcy5vcmlnaW5hbENvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKGNvbCA9PiAoe1xyXG4gICAgICAuLi5jb2wsXHJcbiAgICAgIC8vIERlZXAgY29weSBuZXN0ZWQgb2JqZWN0cyBidXQga2VlcCBjbGFzcyByZWZzIHNhZmVcclxuICAgICAgcXVlcnk6IGNvbC5xdWVyeSA/IHsgLi4uY29sLnF1ZXJ5IH0gOiBudWxsLFxyXG4gICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICA/IFsuLi5jb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXVxyXG4gICAgICAgIDogW10sXHJcbiAgICB9KSk7XHJcblxyXG4gICAgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGNsZWFyRmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICBjb2wuZmlyc3RWYWx1ZSA9ICcnO1xyXG4gICAgY29sLnNlY29uZFZhbHVlID0gJyc7XHJcbiAgICBjb2wuZmlyc3RDb25kaXRpb24gPSAnY29udGFpbic7XHJcbiAgICBjb2wuc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcclxuICAgIGNvbC5sb2dpYyA9ICdBTkQnO1xyXG4gICAgY29sLnNlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgY29sLnNlbGVjdGVkT3B0aW9ucyA9IHt9O1xyXG4gICAgY29sLnNlYXJjaFZhbHVlID0gJyc7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGFwcGx5RmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICB0aGlzLmZpbHRlckNvbHVtbnNMaXN0LnB1c2goY29sKTtcclxuICB9XHJcblxyXG4gIC8vIFJvd3MgU2VsZWN0aW9uIExvZ2ljIEdvZXMgSGVyZVxyXG5cclxuICBzZWxlY3RlZFJvd3M6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xyXG5cclxuICAvKipcclxuICAgKiBHZXQgbm9ybWFsaXplZCBJRCBmcm9tIHJvdy5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFJvd0lkKHJvdzogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiByb3cuaWQgPz8gcm93Ll9pZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvZ2dsZSBhIHNpbmdsZSByb3cgc2VsZWN0aW9uLlxyXG4gICAqL1xyXG4gIHRvZ2dsZVJvd1NlbGVjdGlvbihyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgaWQgPSB0aGlzLmdldFJvd0lkKHJvdyk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKGlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcblxyXG4gICAgdGhpcy5zYXZlU2VsZWN0aW9uKGlkcywgdGhpcy50YWJsZVR5cGUpO1xyXG5cclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgb2JqOiBpZHNcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiBcIm9uU2VsZWN0Um93XCIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHRvZ2dsZVNlbGVjdEFsbChkYXRhOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmdldEFsbExlYWZSb3dzKGRhdGEpO1xyXG4gICAgY29uc3QgYWxsSWRzID0gbGVhZlJvd3MubWFwKHIgPT4gdGhpcy5nZXRSb3dJZChyKSk7XHJcblxyXG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBhbGxJZHMuZXZlcnkoaWQgPT4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSk7XHJcblxyXG4gICAgaWYgKGFsbFNlbGVjdGVkKSB7XHJcbiAgICAgIGFsbElkcy5mb3JFYWNoKGlkID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYWxsSWRzLmZvckVhY2goaWQgPT4gdGhpcy5zZWxlY3RlZFJvd3MuYWRkKGlkKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgb2JqOiBpZHNcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiBcIm9uU2VsZWN0Um93XCIsXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbihpZHMsIHRoaXMudGFibGVUeXBlKTtcclxuICB9XHJcblxyXG4gIGlzUm93U2VsZWN0ZWQocm93OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUm93cy5oYXModGhpcy5nZXRSb3dJZChyb3cpKTtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoZGF0YTogYW55W10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5nZXRBbGxMZWFmUm93cyhkYXRhKTtcclxuICAgIHJldHVybiBsZWFmUm93cy5sZW5ndGggPiAwICYmIGxlYWZSb3dzLmV2ZXJ5KHIgPT4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuZ2V0Um93SWQocikpKTtcclxuICB9XHJcblxyXG5cclxuICBpc0luZGV0ZXJtaW5hdGVTdGF0ZShkYXRhOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmdldEFsbExlYWZSb3dzKGRhdGEpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb3VudCA9IGxlYWZSb3dzLmZpbHRlcihyID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHIpKSkubGVuZ3RoO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50IDwgbGVhZlJvd3MubGVuZ3RoO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEFsbExlYWZSb3dzKGRhdGE6IGFueVtdKTogYW55W10ge1xyXG4gICAgY29uc3QgbGVhZjogYW55W10gPSBbXTtcclxuXHJcbiAgICBjb25zdCB0cmF2ZXJzZSA9IChub2RlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCFub2RlKSByZXR1cm47XHJcblxyXG4gICAgICBpZiAobm9kZS5pc0dyb3VwKSB7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCh0cmF2ZXJzZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGVhZi5wdXNoKG5vZGUpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGRhdGEuZm9yRWFjaCh0cmF2ZXJzZSk7XHJcbiAgICByZXR1cm4gbGVhZjtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIC8vIFNpZGUgTWVudSBXb3JraW5nIEdvZXMgSGVyZVxyXG4gIHRvZ2dsZVNpZGVNZW51KGNsaWNrZWRPbjogJ2NvbHMnIHwgJ2ZpbHRycycpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gY2xpY2tlZE9uKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9IGNsaWNrZWRPbjtcclxuICAgICAgdGhpcy5zaWRlTWVudVZpc2libGUgPSAhdGhpcy5zaWRlTWVudVZpc2libGU7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLnNpZGVNZW51VmlzaWJsZSAmJlxyXG4gICAgICBjbGlja2VkT24gIT0gdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID0gY2xpY2tlZE9uO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPSBjbGlja2VkT247XHJcbiAgICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlID0gIXRoaXMuc2lkZU1lbnVWaXNpYmxlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUdyb3VwVmlzaWJpbGl0eShjb2w6IGFueSkge1xyXG4gICAgY29uc3QgYWxsVmlzaWJsZSA9IGNvbC5jaGlsZHJlbi5ldmVyeSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQuaXNfdmlzaWJsZSk7XHJcbiAgICBjb2wuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gKGNoaWxkLmlzX3Zpc2libGUgPSAhYWxsVmlzaWJsZSkpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICB0aGlzLlNldENvbHVtbnNEZWZhdWx0V2lkdGgoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgaXNDb2x1bW5WaXNpYmxlKGNvbHVtbnM6IGFueSkge1xyXG4gICAgaWYgKGNvbHVtbnM/LmNoaWxkcmVuKSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW5zLmNoaWxkcmVuLmV2ZXJ5KChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQuaXNfdmlzaWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbHVtbnM/LmlzX3Zpc2libGU7XHJcbiAgfVxyXG5cclxuICBhbGxDb2x1bW5zU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgcmV0dXJuIGZsYXR0ZW4uZXZlcnkoKGNvbCkgPT4gY29sLmlzX3Zpc2libGUpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZmluZENvbHVtbkJ5RmllbGQoZmllbGQ6IHN0cmluZywgY29sczogYW55W10pOiBhbnkgfCBudWxsIHtcclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcclxuICAgICAgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcclxuICAgICAgICByZXR1cm4gY29sO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLmZpbmRDb2x1bW5CeUZpZWxkKGZpZWxkLCBjb2wuY2hpbGRyZW4pO1xyXG4gICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgYXN5bmMgdG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2x1bW46IGFueSwgaXNWaXNpYmxlOiBib29sZWFuKSB7XHJcbiAgICBpZiAoaXNWaXNpYmxlKSB7XHJcbiAgICAgIGlmICh0aGlzLnZpc2libGVDb2x1bW5zKCk/Lmxlbmd0aCA8PSAyICYmIGNvbHVtbi5pc192aXNpYmxlIHx8IChjb2x1bW4/LmlzX2Fsd2F5c192aXNpYmxlKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgY29sID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChjb2x1bW4uZmllbGQsIHRoaXMuY29sdW1ucyk7XHJcbiAgICBpZiAoY29sKSB7XHJcbiAgICAgIGNvbC5pc192aXNpYmxlID0gaXNWaXNpYmxlO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIHRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZmxhdHRlbiA9IHRoaXMuZmxhdHRlbkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBmbGF0dGVuLmZpbHRlcihjb2wgPT4gY29sLmlzX3Zpc2libGUpO1xyXG4gICAgICBpZiAodmlzaWJsZUNvbHVtbnMubGVuZ3RoIDw9IDIpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG5vbkFsd2F5c1Zpc2libGUgPSBmbGF0dGVuLmZpbHRlcihjb2wgPT4gIWNvbC5pc19hbHdheXNfdmlzaWJsZSk7XHJcbiAgICAgIGNvbnN0IGFsbE5vbkFsd2F5c1Zpc2libGVBcmVWaXNpYmxlID0gbm9uQWx3YXlzVmlzaWJsZS5ldmVyeShjb2wgPT4gY29sLmlzX3Zpc2libGUpO1xyXG4gICAgICBpZiAoYWxsTm9uQWx3YXlzVmlzaWJsZUFyZVZpc2libGUpIHtcclxuICAgICAgICBmbGF0dGVuLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICAgIGNvbC5pc192aXNpYmxlID0gY29sLmlzX2Fsd2F5c192aXNpYmxlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZsYXR0ZW4uZm9yRWFjaChjb2wgPT4gKGNvbC5pc192aXNpYmxlID0gdHJ1ZSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGF3YWl0IHRoaXMud2FpdCgxMCk7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIGF3YWl0IHRoaXMud2FpdCgxMCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgYXdhaXQgdGhpcy53YWl0KDEwMCk7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcblxyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhaXQobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB2aXNpYmxlQ29sdW1ucygpIHtcclxuICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGZsYXR0ZW4uZmlsdGVyKChjOiBhbnkpID0+IGMuaXNfdmlzaWJsZSk7XHJcbiAgICByZXR1cm4gdmlzaWJsZUNvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBmbGF0dGVuQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBjb2xzLnJlZHVjZSgoYWNjOiBhbnlbXSwgY29sOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGNvbD8uY2hpbGRyZW4gJiYgY29sLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIHJlY3Vyc2l2ZWx5IGZsYXR0ZW4gY2hpbGRyZW5cclxuICAgICAgICByZXR1cm4gYWNjLmNvbmNhdCh0aGlzLmZsYXR0ZW5Db2x1bW5zKGNvbC5jaGlsZHJlbikpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGxlYWYgY29sdW1uXHJcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQoY29sKTtcclxuICAgICAgfVxyXG4gICAgfSwgW10pO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbHRlcmVkQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuY29sdW1uU2VhcmNoLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gY29sc1xyXG4gICAgICAubWFwKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZENoaWxkcmVuID0gdGhpcy5maWx0ZXJlZENvbHVtbnMoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgY29sLmhlYWRlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkgfHxcclxuICAgICAgICAgICAgZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4geyAuLi5jb2wsIGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGNvbC5oZWFkZXIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpID8gY29sIDogbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XHJcbiAgfVxyXG5cclxuICBnZXQgYWNjb3JkaW9uU3RhdGUoKTogJ2FsbCcgfCAnbm9uZScgfCAnc29tZScge1xyXG4gICAgY29uc3QgZ3JvdXBzID0gdGhpcy5nZXRBbGxHcm91cENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZCkubGVuZ3RoO1xyXG5cclxuICAgIGlmIChleHBhbmRlZENvdW50ID09PSAwKSByZXR1cm4gJ25vbmUnO1xyXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcclxuICAgIHJldHVybiAnc29tZSc7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyQWNjb3JkaW9uU3RhdGUoKTogJ2FsbCcgfCAnbm9uZScgfCAnc29tZScge1xyXG4gICAgY29uc3QgZ3JvdXBzID0gdGhpcy5nZXRBbGxHcm91cENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZEZpbHRlcikubGVuZ3RoO1xyXG5cclxuICAgIGlmIChleHBhbmRlZENvdW50ID09PSAwKSByZXR1cm4gJ25vbmUnO1xyXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcclxuICAgIHJldHVybiAnc29tZSc7XHJcbiAgfVxyXG5cclxuICAvLyBSZWN1cnNpdmVseSBjb2xsZWN0IGFsbCBncm91cCBjb2x1bW5zXHJcbiAgcHJpdmF0ZSBnZXRBbGxHcm91cENvbHVtbnMoY29sczogYW55W10pOiBhbnlbXSB7XHJcbiAgICBsZXQgZ3JvdXBzOiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBncm91cHMucHVzaChjb2wpO1xyXG4gICAgICAgIGdyb3VwcyA9IGdyb3Vwcy5jb25jYXQodGhpcy5nZXRBbGxHcm91cENvbHVtbnMoY29sLmNoaWxkcmVuKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBncm91cHM7XHJcbiAgfVxyXG5cclxuICAvLyBUb2dnbGUgYmFzZWQgb24gY3VycmVudCBzdGF0ZVxyXG4gIHRvZ2dsZUFsbEFjY29yZGlvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLmFjY29yZGlvblN0YXRlID09PSAnYWxsJyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIHRoaXMuc2V0QWNjb3JkaW9uU3RhdGUodGhpcy5jb2x1bW5zLCBuZXh0U3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsRmlsdGVyQWNjb3JkaW9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHRoaXMuZmlsdGVyQWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZSh0aGlzLmNvbHVtbnMsIG5leHRTdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFjY29yZGlvblN0YXRlKGNvbHM6IGFueVtdLCBzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgY29sIG9mIGNvbHMpIHtcclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29sLmV4cGFuZGVkID0gc3RhdGU7XHJcbiAgICAgICAgdGhpcy5zZXRBY2NvcmRpb25TdGF0ZShjb2wuY2hpbGRyZW4sIHN0YXRlKTsgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgc2V0RmlsdGVyQWNjb3JkaW9uU3RhdGUoY29sczogYW55W10sIHN0YXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBjb2wgb2YgY29scykge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBjb2wuZXhwYW5kZWRGaWx0ZXIgPSBzdGF0ZTtcclxuICAgICAgICB0aGlzLnNldEZpbHRlckFjY29yZGlvblN0YXRlKGNvbC5jaGlsZHJlbiwgc3RhdGUpOyAvLyBSZWN1cnNpdmVseSBoYW5kbGUgbmVzdGVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xyXG5cclxuICBjbG9zZU1vZGFsQ29sdW1uUGFuZWwoKSB7XHJcbiAgICB0aGlzLnNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxyXG4gIG9uRXNjYXBlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5jbG9zZU1vZGFsQ29sdW1uUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIElmICBBbnkgY29sdW1uIGhhdmUgcmlnaHQgcGlubmVkXHJcbiAgZ2V0IGhhc1JpZ2h0UGlubmVkQ29sdW1ucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNSaWdodFBpbm5lZENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNMZWZ0UGlubmVkQ29sdW1ucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNMZWZ0UGlubmVkQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRhdGFTZXRMZW5ndGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0RXhwYW5kZWRSb3dDb3VudCh0aGlzLmRhdGFTZXQpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudDogVUlFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkgdGhpcy5hdXRvU2l6ZUNvbHVtbnNCeVJhdGlvKCk7XHJcbiAgICBjb25zdCBoID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50Py5jbGllbnRIZWlnaHQgPz8gMDtcclxuICAgIHRoaXMudmlld3BvcnRSb3dzID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKGggLyB0aGlzLnJvd0hlaWdodCkpO1xyXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cyh0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbFRvcCk7XHJcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBhdXRvU2l6ZUNvbHVtbnNCeVJhdGlvKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0IGdldFZpc2libGVMZWFmQ29sdW1ucyA9IChjb2x1bW5zOiBhbnlbXSk6IGFueVtdID0+IHtcclxuICAgICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uaXNfdmlzaWJsZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbHVtbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcblxyXG4gICAgaWYgKHZpc2libGVDb2x1bW5zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cclxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PSAnQXNzZXRzJyB8fCB0aGlzLmdyaWRUeXBlID09ICdUYXNrcycpXHJcbiAgICAgIGNvbnRhaW5lcldpZHRoIC09IDMwO1xyXG4gICAgY29udGFpbmVyV2lkdGggLT0gNTU7XHJcbiAgICBjb25zdCB0b3RhbE9sZFdpZHRoID0gdmlzaWJsZUNvbHVtbnMucmVkdWNlKFxyXG4gICAgICAoc3VtLCBjb2wpID0+IHN1bSArIChjb2wud2lkdGggfHwgMCksXHJcbiAgICAgIDBcclxuICAgICk7XHJcbiAgICBpZiAodG90YWxPbGRXaWR0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgdmlzaWJsZUNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJhdGlvID0gY29sLndpZHRoIC8gdG90YWxPbGRXaWR0aDtcclxuICAgICAgY29uc3QgbmV3V2lkdGggPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoICogcmF0aW8pLCAxMDApO1xyXG4gICAgICBjb2wud2lkdGggPSBuZXdXaWR0aDtcclxuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChjb2wuZmllbGQsIG5ld1dpZHRoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIH0sIDQwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgcmVmcmVzaEhlYWRlcnMoKSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihhc3luYyAoKSA9PiB7XHJcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCAwKSk7XHJcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0FueVZpc2libGVDb2x1bW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0aGFzVmlzaWJsZUNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNBbnlJblZpc2libGVDb2x1bW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0aGFzSW5WaXNpYmxlQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbHVtbnNDb3VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRUb3RhbENvbHVtbnNMZW5ndGgodGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIHRhYmxlSGVhZGVyQW5kQm9keUhlaWdodCgpIHtcclxuICAgIHJldHVybiBgY2FsYygxMDAlIC0gJHt0aGlzLmZvb3RlclJvd0hlaWdodH0pYDtcclxuICB9XHJcblxyXG4gIGRyYWdnaW5nSW5Hcm91cEFyZWEgPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY2VudGVyU2Nyb2xsJykgY2VudGVyU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgdmlzaWJsZVJvd0NvdW50ID0gMjU7XHJcbiAgc3RhcnRJbmRleCA9IDA7XHJcbiAgdmlzaWJsZVJvd3M6IGFueVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgZmxhdHRlbkdyb3VwZWRSb3dzKFxyXG4gICAgcm93czogYW55W10gPSBbXSxcclxuICAgIGxldmVsID0gMCxcclxuICAgIHJlc3VsdDogYW55W10gPSBbXVxyXG4gICk6IGFueVtdIHtcclxuICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcclxuICAgICAgcmVzdWx0LnB1c2goeyAuLi5yb3csIF9fZGVwdGg6IGxldmVsIH0pO1xyXG4gICAgICBpZiAocm93LmlzR3JvdXAgJiYgcm93LmlzRXhwYW5kICYmIHJvdy5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3Mocm93LmNoaWxkcmVuLCBsZXZlbCArIDEsIFtdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5hc3NpZ25WaXJ0dWFsSW5kZXhlcyh0aGlzLnZpc2libGVSb3dzKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBhc3NpZ25WaXJ0dWFsSW5kZXhlcyhkYXRhOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGxldCBjdXJyZW50SW5kZXggPSAxO1xyXG4gICAgY29uc3Qgd2FsayA9IChpdGVtczogYW55W10pOiB2b2lkID0+IHtcclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgICAgaXRlbS5fX3ZpcnR1YWxJbmRleCA9IGN1cnJlbnRJbmRleCsrO1xyXG4gICAgICAgIGlmIChpdGVtPy5pc0dyb3VwKSB7XHJcbiAgICAgICAgICBjb25zdCBncm91cCA9IGl0ZW07XHJcbiAgICAgICAgICBpZiAoZ3JvdXAuaXNFeHBhbmQgJiYgQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgd2Fsayhncm91cC5jaGlsZHJlbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgd2FsayhkYXRhKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdUaGlzIGRhdGFzZXQ6ICcsIHRoaXMudmlzaWJsZVJvd3MpXHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG5cclxuICB1cGRhdGVWaXNpYmxlUm93cyhzY3JvbGxUb3A6IG51bWJlcikge1xyXG5cclxuICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuZGF0YVNldDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmxhdERhdGEgPSB0aGlzLmZsYXR0ZW5Hcm91cGVkUm93cyh0aGlzLmRhdGFTZXQpO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGFTZXQ/Lmxlbmd0aCA8PSAxNSkge1xyXG4gICAgICB0aGlzLnZpc2libGVSb3dzID0gZmxhdERhdGE7XHJcbiAgICAgIHRoaXMuZmlyc3RJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMucmVuZGVyU3RhcnQgPSAwO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdGFsID0gZmxhdERhdGEubGVuZ3RoO1xyXG4gICAgY29uc3QgbWF4Rmlyc3QgPSBNYXRoLm1heCgwLCB0b3RhbCAtIHRoaXMudmlld3BvcnRSb3dzKTtcclxuICAgIGNvbnN0IGZpcnN0ID0gTWF0aC5taW4oTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCksIG1heEZpcnN0KTtcclxuICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgZmlyc3QpO1xyXG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4odG90YWwsIGZpcnN0ICsgdGhpcy52aWV3cG9ydFJvd3MpO1xyXG5cclxuICAgIHRoaXMuZmlyc3RJbmRleCA9IGZpcnN0O1xyXG4gICAgdGhpcy5zdGFydEluZGV4ID0gZmlyc3Q7XHJcbiAgICB0aGlzLnJlbmRlclN0YXJ0ID0gc3RhcnQ7XHJcbiAgICB0aGlzLnZpc2libGVSb3dzID0gZmxhdERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgICB0aGlzLmFzc2lnblZpcnR1YWxJbmRleGVzKHRoaXMudmlzaWJsZVJvd3MpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHRyYWNrQnlSZW5kZXJlZEluZGV4ID0gKGk6IG51bWJlciwgX3JvdzogYW55KSA9PiB0aGlzLnJlbmRlclN0YXJ0ICsgaTtcclxuXHJcbiAgcHJpdmF0ZSBpc1N5bmNpbmdGcm9tTWFpbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaXNTeW5jaW5nRnJvbUZha2UgPSBmYWxzZTtcclxuICBwcml2YXRlIG1haW5TY3JvbGxSYWY6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZCB8fCBpdGVtLl9pZDtcclxuICB9XHJcblxyXG4gIGZsYXR0ZW5lZERhdGE6IGFueVtdID0gW107XHJcblxyXG4gIHVwZGF0ZUZsYXR0ZW5lZERhdGEoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5mbGF0dGVuZWREYXRhID0gdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3ModGhpcy5kYXRhU2V0KTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgLy8gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIElEc1xyXG4gIHByaXZhdGUgZmFrZVNjcm9sbFJhZjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAvLyBvbk1haW5TY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcclxuICAvLyAgICAgaWYgKHRoaXMuZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gIC8vICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgICAgICByZXR1cm47XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgY29uc3Qgb3ZlcnNjYW4gPSB0aGlzLm92ZXJzY2FuICogMjtcclxuICAvLyAgICAgdGhpcy5zdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgLy8gICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgdGhpcy5zdGFydEluZGV4IC0gb3ZlcnNjYW4pO1xyXG4gIC8vICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbih0aGlzLmZsYXR0ZW5lZERhdGEubGVuZ3RoLCB0aGlzLnN0YXJ0SW5kZXggKyB0aGlzLnZpZXdwb3J0Um93cyArIG92ZXJzY2FuKTtcclxuICAvLyAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuZmxhdHRlbmVkRGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAvLyAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vIH1cclxuICB0cmFuc2xhdGVZID0gMDtcclxuXHJcbiAgbGFzdFNjcm9sbFRvcCA9IDA7XHJcbiAgcGVuZGluZ0FuaW1hdGlvbkZyYW1lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgb25NYWluU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wO1xyXG4gICAgaWYgKE1hdGguYWJzKHNjcm9sbFRvcCAtIHRoaXMubGFzdFNjcm9sbFRvcCkgPCAoMTApKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lKTtcclxuICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICBjb25zdCBzY3JvbGxpbmdEb3duID0gc2Nyb2xsVG9wID4gdGhpcy5sYXN0U2Nyb2xsVG9wO1xyXG4gICAgICB0aGlzLmxhc3RTY3JvbGxUb3AgPSBzY3JvbGxUb3A7XHJcblxyXG4gICAgICBjb25zdCBvdmVyc2NhbiA9IDU7XHJcbiAgICAgIGNvbnN0IG5ld1N0YXJ0SW5kZXggPSBNYXRoLmZsb29yKHNjcm9sbFRvcCAvIHRoaXMucm93SGVpZ2h0KTtcclxuICAgICAgY29uc3QgZHluYW1pY092ZXJzY2FuID0gc2Nyb2xsaW5nRG93biA/IG92ZXJzY2FuIDogb3ZlcnNjYW47XHJcblxyXG4gICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIG5ld1N0YXJ0SW5kZXggLSBkeW5hbWljT3ZlcnNjYW4pO1xyXG4gICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihcclxuICAgICAgICB0aGlzLmZsYXR0ZW5lZERhdGEubGVuZ3RoLFxyXG4gICAgICAgIG5ld1N0YXJ0SW5kZXggKyB0aGlzLnZpZXdwb3J0Um93cyArIGR5bmFtaWNPdmVyc2NhblxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVkgPSBzdGFydCAqIHRoaXMucm93SGVpZ2h0O1xyXG4gICAgICBpZiAodGhpcy5zdGFydEluZGV4ICE9PSBzdGFydCB8fCB0aGlzLnZpc2libGVSb3dzLmxlbmd0aCAhPT0gZW5kIC0gc3RhcnQpIHtcclxuICAgICAgICB0aGlzLnN0YXJ0SW5kZXggPSBzdGFydDtcclxuICAgICAgICB0aGlzLnZpc2libGVSb3dzID0gdGhpcy5kYXRhU2V0LnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSA9IG51bGw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvLyBvbk1haW5TY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAvLyAgIGlmICh0aGlzLmlzU3luY2luZ0Zyb21GYWtlKSB7XHJcbiAgLy8gICAgIHRoaXMuaXNTeW5jaW5nRnJvbUZha2UgPSBmYWxzZTtcclxuICAvLyAgICAgcmV0dXJuO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wO1xyXG4gIC8vICAgaWYgKE1hdGguYWJzKHNjcm9sbFRvcCAtIHRoaXMubGFzdFNjcm9sbFRvcCkgPCB0aGlzLnJvd0hlaWdodCAvIDIpIHJldHVybjtcclxuICAvLyAgIHRoaXMubGFzdFNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuXHJcbiAgLy8gICBpZiAodGhpcy5mYWtlU2Nyb2xsUmFmKSBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmZha2VTY3JvbGxSYWYpO1xyXG5cclxuICAvLyAgIHRoaXMuZmFrZVNjcm9sbFJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgLy8gICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgdGhpcy5zdGFydEluZGV4ID0gMDtcclxuICAvLyAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGNvbnN0IGZsYXREYXRhID0gdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3ModGhpcy5kYXRhU2V0KTtcclxuICAvLyAgICAgY29uc3QgdG90YWxSb3dzID0gZmxhdERhdGEubGVuZ3RoO1xyXG4gIC8vICAgICBjb25zdCBuZXdTdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgLy8gICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgbmV3U3RhcnRJbmRleCAtICh0aGlzLm92ZXJzY2FuICogMikpO1xyXG4gIC8vICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbih0b3RhbFJvd3MsIG5ld1N0YXJ0SW5kZXggKyB0aGlzLnZpZXdwb3J0Um93cyArICh0aGlzLm92ZXJzY2FuICogMikpO1xyXG5cclxuICAvLyAgICAgdGhpcy50cmFuc2xhdGVZID0gc3RhcnQgKiB0aGlzLnJvd0hlaWdodDtcclxuICAvLyAgICAgdGhpcy5zdGFydEluZGV4ID0gc3RhcnQ7XHJcbiAgLy8gICAgIHRoaXMudmlzaWJsZVJvd3MgPSBmbGF0RGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAvLyAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuXHJcbiAgZ2V0IGlzU2Nyb2xsYmFyVmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5tYWluU2Nyb2xsKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgcmV0dXJuIGVsLnNjcm9sbEhlaWdodCA+IGVsLmNsaWVudEhlaWdodDtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUV4cGFuZChyb3c6IGFueSkge1xyXG4gICAgaWYgKHJvdy5kZXRhaWxzKSB7XHJcbiAgICAgIHJvdy5pc0RldGFpbHNFeHBhbmQgPSAhcm93LmlzRGV0YWlsc0V4cGFuZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJvdy5pc0V4cGFuZCA9ICFyb3cuaXNFeHBhbmQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAvLyB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIC8vIG9uTWFpbkZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICBpZiAodGhpcy5pc1N5bmNpbmdGcm9tTWFpbikge1xyXG4gIC8vICAgICB0aGlzLmlzU3luY2luZ0Zyb21NYWluID0gZmFsc2U7XHJcbiAgLy8gICAgIHJldHVybjtcclxuICAvLyAgIH1cclxuICAvLyAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XHJcbiAgLy8gICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgICAgcmV0dXJuO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wO1xyXG4gIC8vICAgaWYgKHRoaXMubWFpblNjcm9sbFJhZikgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5tYWluU2Nyb2xsUmFmKTtcclxuICAvLyAgIHRoaXMubWFpblNjcm9sbFJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgLy8gICAgIHRoaXMuaXNTeW5jaW5nRnJvbUZha2UgPSB0cnVlO1xyXG4gIC8vICAgICB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XHJcbiAgLy8gICAgIGNvbnN0IG92ZXJzY2FuID0gdGhpcy5vdmVyc2NhbiA/PyAwO1xyXG4gIC8vICAgICB0aGlzLnN0YXJ0SW5kZXggPSBNYXRoLmZsb29yKHNjcm9sbFRvcCAvIHRoaXMucm93SGVpZ2h0KTtcclxuICAvLyAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCB0aGlzLnN0YXJ0SW5kZXggLSBvdmVyc2Nhbik7XHJcbiAgLy8gICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKFxyXG4gIC8vICAgICAgIHRoaXMuZmxhdHRlbmVkRGF0YS5sZW5ndGgsXHJcbiAgLy8gICAgICAgdGhpcy5zdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyBvdmVyc2NhblxyXG4gIC8vICAgICApO1xyXG4gIC8vICAgICB0aGlzLnZpc2libGVSb3dzID0gdGhpcy5mbGF0dGVuZWREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gIC8vICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICB2aWV3cG9ydFJvd3MgPSAwOyAvLyBob3cgbWFueSByb3dzIGZpdCBpbiB2aWV3cG9ydCAoY29tcHV0ZWQpXHJcbiAgZmlyc3RJbmRleCA9IDA7IC8vIGluZGV4IG9mIHRoZSBmaXJzdCB2aXNpYmxlIHJvdyAoY2xhbXBlZClcclxuICByZW5kZXJTdGFydCA9IDA7IC8vIHdoZXJlIHRoZSBzbGljZSBhY3R1YWxseSBzdGFydHMgKGZpcnN0SW5kZXggLSBvdmVyc2NhbiwgY2xhbXBlZClcclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxSYWY6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgcGVuZGluZ1Njcm9sbFRvcCA9IDA7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21haW5TY3JvbGwnKSBtYWluU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnZmFrZVNjcm9sbCcpIGZha2VTY3JvbGwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdob3JpemludGFsRmFrZVNjcm9sbCcpXHJcbiAgaG9yaXppbnRhbEZha2VTY3JvbGwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdjZW50ZXJTY3JvbGxhYmxlQm9keScpXHJcbiAgY2VudGVyU2Nyb2xsYWJsZUJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBwcml2YXRlIG92ZXJzY2FuID0gMTA7IC8vIGJ1ZmZlciByb3dzIGFib3ZlIGFuZCBiZWxvd1xyXG5cclxuICBjb21wdXRlVmlld3BvcnRSb3dzKCkge1xyXG4gICAgaWYgKHRoaXMuZmFrZVNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmZha2VTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgY29uc3QgaCA9IHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCA/PyAwO1xyXG5cclxuICAgICAgLy8gcm93cyB2aXNpYmxlIGluIHZpZXdwb3J0XHJcbiAgICAgIGNvbnN0IHJvd3NJblZpZXdwb3J0ID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKGggLyB0aGlzLnJvd0hlaWdodCkpO1xyXG5cclxuICAgICAgLy8gYWRkIGJ1ZmZlciByb3dzIChvdmVyc2NhbilcclxuICAgICAgdGhpcy52aWV3cG9ydFJvd3MgPSByb3dzSW5WaWV3cG9ydCArIHRoaXMub3ZlcnNjYW47XHJcblxyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Ib3Jpem9udGFsRmFrZVNjcm9sbChldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHNjcm9sbExlZnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxMZWZ0O1xyXG4gICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcclxuICAgIGlmICh0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2VudGVyQm9keVNjcm9sbChldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICh0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIpIHtcclxuICAgICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ob3JpemludGFsRmFrZVNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgb25DZW50ZXJIZWFkZXJTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGhpcy5ob3JpemludGFsRmFrZVNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIERyYWdnaW5nIExvZ2ljIGlzIGltcGxlbWVudGVkIGhlcmVcclxuICAvLyBwcml2YXRlIGluaXRpYWxJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGRyYWdnaW5nQ29sdW1uOiBhbnk7XHJcbiAgZHJhZ1N0YXJ0SW5kZXg6IGFueSA9IDA7XHJcbiAgLy8gb25EcmFnU3RhcnQoZGF0YTogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgLy8gICB0aGlzLmRyYWdnaW5nQ29sdW1uID0gZGF0YS5jb2x1bW47XHJcbiAgLy8gICB0aGlzLmRyYWdTdGFydEluZGV4ID0gaW5kZXg7XHJcbiAgLy8gfVxyXG4gIC8vIG9uRHJhZ01vdmUoZGF0YTogYW55KSB7XHJcbiAgLy8gICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IGRhdGEuZXZlbnQ7XHJcbiAgLy8gICBjb25zdCBoZWFkZXJzID0gQXJyYXkuZnJvbShcclxuICAvLyAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm9uZS1yb3ctaGVhZGVyLWNlbGxzJylcclxuICAvLyAgICkgYXMgSFRNTEVsZW1lbnRbXTtcclxuXHJcbiAgLy8gICBoZWFkZXJzLmZvckVhY2goKGhlYWRlckVsLCBpZHgpID0+IHtcclxuICAvLyAgICAgY29uc3QgcmVjdCA9IGhlYWRlckVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gIC8vICAgICBpZiAoXHJcbiAgLy8gICAgICAgaWR4ICE9PSB0aGlzLmRyYWdTdGFydEluZGV4ICYmXHJcbiAgLy8gICAgICAgY2xpZW50WCA+IHJlY3QubGVmdCAmJlxyXG4gIC8vICAgICAgIGNsaWVudFggPCByZWN0LnJpZ2h0ICYmXHJcbiAgLy8gICAgICAgY2xpZW50WSA+IHJlY3QudG9wICYmXHJcbiAgLy8gICAgICAgY2xpZW50WSA8IHJlY3QuYm90dG9tXHJcbiAgLy8gICAgICkge1xyXG4gIC8vICAgICAgIGNvbnN0IG90aGVySW5kZXggPSBpZHg7XHJcbiAgLy8gICAgICAgY29uc29sZS5sb2coYCR7dGhpcy5kcmFnU3RhcnRJbmRleH0gLS0+ICR7b3RoZXJJbmRleH1gKTtcclxuICAvLyAgICAgICB0aGlzLnN3YXBDb2x1bW4odGhpcy5kcmFnU3RhcnRJbmRleCwgb3RoZXJJbmRleCk7XHJcbiAgLy8gICAgICAgY29uc29sZS5sb2coJ1VwZGF0ZWQgQ29sdW1uczogJywgdGhpcy5jb2x1bW5zKTtcclxuICAvLyAgICAgICB0aGlzLmRyYWdTdGFydEluZGV4ID0gb3RoZXJJbmRleDsgLy8gdXBkYXRlIGluZGV4XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gc3dhcENvbHVtbihwcmV2aXVzSW5kZXg6IG51bWJlciwgY3VycmVudEluZGV4OiBudW1iZXIpIHtcclxuICAvLyAgIGNvbnN0IGNvbHVtbnMgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5jb2x1bW5zKTtcclxuICAvLyAgIGNvbnN0IGZsYXR0ZW5Db2x1bW5zID0gdGhpcy5mbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcclxuXHJcbiAgLy8gICBjb25zdCB2aXNpYmxlRmxhdHRlbkNvbHVtbnMgPSBmbGF0dGVuQ29sdW1ucy5maWx0ZXIoXHJcbiAgLy8gICAgIChjb2wpID0+IGNvbC5pc192aXNpYmxlXHJcbiAgLy8gICApO1xyXG4gIC8vICAgY29uc3QgcHJldml1c0NvbHVtbiA9IHZpc2libGVGbGF0dGVuQ29sdW1uc1twcmV2aXVzSW5kZXhdO1xyXG4gIC8vICAgY29uc3QgY3VycmVudENvbHVtbiA9IHZpc2libGVGbGF0dGVuQ29sdW1uc1tjdXJyZW50SW5kZXhdO1xyXG5cclxuICAvLyAgIGNvbnNvbGUubG9nKCdQcmV2aXVzIENvbHVtbjogJywgcHJldml1c0NvbHVtbik7XHJcbiAgLy8gICBjb25zb2xlLmxvZygnY3VycmVudCBjbHVtbjogJywgY3VycmVudENvbHVtbik7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBvbkRyYWdFbmQoZGF0YTogYW55KSB7XHJcbiAgLy8gICB0aGlzLmRyYWdnaW5nQ29sdW1uID0gbnVsbDtcclxuICAvLyAgIHRoaXMuZHJhZ1N0YXJ0SW5kZXggPSBudWxsO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gQ0RLIERSQUcgRFJPUCBMT0dJQyBHT0VTIEhFUkVcclxuXHJcblxyXG4gIGNhbkVudGVyVG9Sb3dzR3JvdXBpbmcgPSAoZHJhZzogQ2RrRHJhZzxhbnk+LCBkcm9wOiBDZGtEcm9wTGlzdDxhbnk+KSA9PiB7XHJcbiAgICAvLyBFeGFtcGxlOiBCbG9jayBpZiBhbHJlYWR5IHBpbm5lZCBsZWZ0XHJcbiAgICBjb25zdCBkYXRhID0gZHJhZy5kYXRhO1xyXG4gICAgaWYgKGRhdGE/LmNoaWxkcmVuICYmIGRhdGE/LmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZGF0YS5jaGlsZHJlbi5zb21lKFxyXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmlzX3Zpc2libGUgJiYgY29sLmlzX2dyb3VwYWJsZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGEuaXNfdmlzaWJsZSAmJiBkYXRhLmlzX2dyb3VwYWJsZTtcclxuICB9O1xyXG5cclxuICAvLyBvbkRyYWdNb3ZlZChldmVudDogQ2RrRHJhZ01vdmU8YW55Pikge1xyXG4gIC8vICAgY29uc3QgcG9pbnRlclggPSBldmVudC5wb2ludGVyUG9zaXRpb24ueDtcclxuICAvLyAgIGNvbnN0IHBvaW50ZXJZID0gZXZlbnQucG9pbnRlclBvc2l0aW9uLnk7XHJcblxyXG4gIC8vICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gIC8vICAgICAncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ1xyXG4gIC8vICAgKTtcclxuXHJcbiAgLy8gICBpZiAodGFyZ2V0RWxlbWVudCkge1xyXG4gIC8vICAgICBjb25zdCByZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgLy8gICAgIGNvbnN0IGlzT3ZlclRhcmdldCA9XHJcbiAgLy8gICAgICAgcG9pbnRlclggPj0gcmVjdC5sZWZ0ICYmXHJcbiAgLy8gICAgICAgcG9pbnRlclggPD0gcmVjdC5yaWdodCAmJlxyXG4gIC8vICAgICAgIHBvaW50ZXJZID49IHJlY3QudG9wICYmXHJcbiAgLy8gICAgICAgcG9pbnRlclkgPD0gcmVjdC5ib3R0b207XHJcblxyXG4gIC8vICAgICBpZiAoaXNPdmVyVGFyZ2V0KSB7XHJcbiAgLy8gICAgICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gdHJ1ZTtcclxuICAvLyAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSBmYWxzZTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgZW50ZXJUb1RvcFJvd0dyb3VwaW5nKGRyb3BMaXN0OiBDZGtEcmFnRW50ZXI8YW55Pikge1xyXG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xyXG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gdHJ1ZTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwiRHJhZ2dpbmcgaW4gZ3JvdXAgYXJlYVwiKVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGRyYWdnaW5nRGF0YT8uY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldEdyb3VwID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxyXG4gICAgICApO1xyXG4gICAgICBpZiAodGFyZ2V0R3JvdXApIHtcclxuICAgICAgICBkcmFnZ2luZ0RhdGEuY2hpbGRyZW4uZm9yRWFjaCgoZHJhZ2dlZENoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSB0YXJnZXRHcm91cC5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gISFtYXRjaGluZ0NoaWxkLmlzX2dyb3VwYWJsZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIFRyeSBmaW5kaW5nIGl0IGluIHRvcC1sZXZlbCBjb2x1bW5zIGZpcnN0XHJcbiAgICAgIGxldCB0YXJnZXRDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGFyZ2V0Q29sdW1uKSB7XHJcbiAgICAgICAgdGFyZ2V0Q29sdW1uLmlzUm93R3JvdXBlZCA9ICEhdGFyZ2V0Q29sdW1uLmlzX2dyb3VwYWJsZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBncm91cCBvZiB0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gZ3JvdXAuY2hpbGRyZW4uZmluZChcclxuICAgICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnaW5nRGF0YS5maWVsZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xyXG4gICAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gISFtYXRjaGluZ0NoaWxkLmlzX2dyb3VwYWJsZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOKchSBSZWZyZXNoIFVJXHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25Ecm9wTGlzdEVudGVyKFxyXG4gICAgZHJvcExpc3Q6IENka0RyYWdFbnRlcjxhbnk+LFxyXG4gICAgc2VjdGlvbjogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnXHJcbiAgKSB7XHJcbiAgICBjb25zdCBkcmFnZ2luZ0RhdGEgPSBkcm9wTGlzdC5pdGVtLmRhdGE7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0Q29sdW1uOiBhbnkgPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PSBkcmFnZ2luZ0RhdGEuaGVhZGVyXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghdGFyZ2V0Q29sdW1uKSByZXR1cm47XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBBcnJheS5pc0FycmF5KGRyYWdnaW5nRGF0YT8uY2hpbGRyZW4pICYmXHJcbiAgICAgIEFycmF5LmlzQXJyYXkodGFyZ2V0Q29sdW1uPy5jaGlsZHJlbilcclxuICAgICkge1xyXG4gICAgICBkcmFnZ2luZ0RhdGEuY2hpbGRyZW4uZm9yRWFjaCgoZHJhZ2dlZENoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gdGFyZ2V0Q29sdW1uLmNoaWxkcmVuLmZpbmQoXHJcbiAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcclxuICAgICAgICAgIG1hdGNoaW5nQ2hpbGQucGlubmVkID0gc2VjdGlvbiA9PT0gJ2NlbnRlcicgPyBudWxsIDogc2VjdGlvbjtcclxuICAgICAgICAgIG1hdGNoaW5nQ2hpbGRbJ2lzUm93R3JvdXBlZCddID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRhcmdldENvbHVtbi5waW5uZWQgPSBzZWN0aW9uID09PSAnY2VudGVyJyA/IG51bGwgOiBzZWN0aW9uO1xyXG4gICAgICB0YXJnZXRDb2x1bW5bJ2lzUm93R3JvdXBlZCddID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIGVudGVyVG9Ub3BHcm91cGluZ1Jvdyhkcm9wTGlzdDogQ2RrRHJhZ0VudGVyPGFueT4pIHtcclxuICAvLyAgIHRoaXMuc2hvdWxkRGlzYWJsZURyb3BsaXN0U29ydGluZyA9IHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmc7XHJcbiAgLy8gICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSB0cnVlO1xyXG4gIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vIGNvbnN0IGluZGV4ID0gdGhpcy5ncm91cGVkQ29sdW1ucy5maW5kSW5kZXgoXHJcbiAgLy8gICAoY29sKSA9PiBjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZFxyXG4gIC8vICk7XHJcbiAgLy8gaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gIC8vICAgdGhpcy5ncm91cGVkQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gLy8gMi4gVHJhdmVyc2UgdGhpcy5jb2x1bW5zIHRvIGZpbmQgYW5kIHVwZGF0ZSB0aGUgbWF0Y2hpbmcgY29sdW1uXHJcbiAgLy8gdGhpcy5jb2x1bW5zLmZvckVhY2goKGdyb3VwKSA9PiB7XHJcbiAgLy8gICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgLy8gICAgIGdyb3VwLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKGNoaWxkLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAvLyAgICAgICAgIGNoaWxkLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICB9IGVsc2UgaWYgKGdyb3VwLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAvLyAgICAgZ3JvdXAuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgLy8gICB9XHJcbiAgLy8gfSk7XHJcbiAgLy8gICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gfVxyXG5cclxuICBleGl0ZWRGcm9tVGhlVG9wUm93KGRyb3BMaXN0OiBDZGtEcmFnRXhpdDxhbnk+KSB7XHJcbiAgICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvdWxkRGlzYWJsZURyb3BsaXN0U29ydGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZHJhZ2dpbmdEYXRhPy5jaGlsZHJlbikpIHtcclxuICAgICAgY29uc3QgdGFyZ2V0R3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgICAoY29sKSA9PiBjb2wuaGVhZGVyID09PSBkcmFnZ2luZ0RhdGEuaGVhZGVyXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0YXJnZXRHcm91cCkge1xyXG4gICAgICAgIGRyYWdnaW5nRGF0YS5jaGlsZHJlbi5mb3JFYWNoKChkcmFnZ2VkQ2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IHRhcmdldEdyb3VwLmNoaWxkcmVuLmZpbmQoXHJcbiAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dlZENoaWxkLmZpZWxkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcclxuICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHRhcmdldENvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKFxyXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh0YXJnZXRDb2x1bW4pIHtcclxuICAgICAgICB0YXJnZXRDb2x1bW4uaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IGdyb3VwLmNoaWxkcmVuLmZpbmQoXHJcbiAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcclxuICAgICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2hvdWxkRGlzYWJsZURyb3BsaXN0U29ydGluZyA9IGZhbHNlO1xyXG4gIGlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gZmFsc2U7XHJcbiAgY2hlY2tDb2x1bW5Hcm91cGluZ1N0YXR1cyhjb2w6IGFueSkge1xyXG4gICAgaWYgKGNvbD8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNvbnN0IGFsbENoaWxkcmVuRGlzYWJsZWQgPSBjb2wuY2hpbGRyZW4uZXZlcnkoXHJcbiAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmlzX2dyb3VwYWJsZSA9PT0gZmFsc2VcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGFsbENoaWxkcmVuRGlzYWJsZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gY29sLmlzX2dyb3VwYWJsZSA9PT0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50RHJhZ2dpbmdDb2x1bW46IGFueSA9IG51bGw7XHJcbiAgZHJhZ1N0YXJ0T25Hcm91cChjb2w6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBjb2w7XHJcbiAgfVxyXG5cclxuICBvblNvcnRHcm91cCA9IGFzeW5jIChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnk+LCBzZWN0aW9uOiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IGNvbHVtbnMgPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dO1xyXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigoY29sOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGNvbD8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZC5pc192aXNpYmxlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sLmlzX3Zpc2libGU7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHByZXZpb3VzSGVhZGVyID0gdmlzaWJsZUNvbHVtbnNbZXZlbnQucHJldmlvdXNJbmRleF0uaGVhZGVyO1xyXG4gICAgY29uc3QgY3VycmVudEhlYWRlciA9IHZpc2libGVDb2x1bW5zW2V2ZW50LmN1cnJlbnRJbmRleF0uaGVhZGVyO1xyXG4gICAgY29uc3QgdmlzaWJsZVByZXZJbmRleCA9IHZpc2libGVDb2x1bW5zLmZpbmRJbmRleChcclxuICAgICAgKGNvbDogYW55KSA9PiBjb2wuaGVhZGVyID09PSBwcmV2aW91c0hlYWRlclxyXG4gICAgKTtcclxuICAgIGNvbnN0IHZpc2libGVDdXJySW5kZXggPSB2aXNpYmxlQ29sdW1ucy5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmhlYWRlciA9PT0gY3VycmVudEhlYWRlclxyXG4gICAgKTtcclxuICAgIGNvbnN0IGdldEZpZWxkcyA9IChpdGVtOiBhbnkpOiBzdHJpbmdbXSA9PiB7XHJcbiAgICAgIGlmIChpdGVtPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uY2hpbGRyZW4ubWFwKChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFtpdGVtLmZpZWxkXTtcclxuICAgIH07XHJcbiAgICBjb25zdCBwcmV2RmllbGRzID0gZ2V0RmllbGRzKHZpc2libGVDb2x1bW5zW3Zpc2libGVQcmV2SW5kZXhdKTtcclxuICAgIGNvbnN0IGN1cnJGaWVsZHMgPSBnZXRGaWVsZHModmlzaWJsZUNvbHVtbnNbdmlzaWJsZUN1cnJJbmRleF0pO1xyXG4gICAgY29uc3QgYWxsRmllbGRzID0gWy4uLnByZXZGaWVsZHMsIC4uLmN1cnJGaWVsZHNdO1xyXG4gICAgY29uc3QgY2VsbHMgPSBhbGxGaWVsZHMubGVuZ3RoXHJcbiAgICAgID8gKFtdIGFzIEhUTUxFbGVtZW50W10pLmNvbmNhdChcclxuICAgICAgICAuLi5hbGxGaWVsZHMubWFwKChmaWVsZCkgPT5cclxuICAgICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtZmllbGQ9XCIke2ZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcclxuICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiBmaXJzdFBvc2l0aW9ucy5zZXQoZWwsIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwidGhpcyAuY29sdW5zXCIsIHRoaXMuY29sdW1ucyk7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoKHRoaXMgYXMgYW55KVtzZWN0aW9uXSwgdmlzaWJsZVByZXZJbmRleCwgdmlzaWJsZUN1cnJJbmRleCk7XHJcblxyXG4gICAgY29uc3QgcHJldkNvbEluZGV4SW5Db2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaGVhZGVyID09PSBwcmV2aW91c0hlYWRlcik7XHJcbiAgICBjb25zdCBjdXJyQ29sSW5kZXhJbkNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5oZWFkZXIgPT09IGN1cnJlbnRIZWFkZXIpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuY29sdW1ucywgcHJldkNvbEluZGV4SW5Db2x1bW5zLCBjdXJyQ29sSW5kZXhJbkNvbHVtbnMpO1xyXG4gICAgLy8gYXdhaXQgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubmdab25lLm9uU3RhYmxlKTtcclxuICAgIC8vIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgLy8gV2FpdCBhIHRpY2sgdG8gbWFrZSBzdXJlIGVsZW1lbnRzIGFyZSByZW5kZXJlZFxyXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIGFsbEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtZmllbGQ9XCIke2ZpZWxkfVwiXWApXHJcbiAgICAgICAgICApIGFzIEhUTUxFbGVtZW50W107XHJcblxyXG4gICAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpO1xyXG4gICAgICAgICAgICBpZiAob2xkTGVmdCA9PSBudWxsKSByZXR1cm47IC8vIHNraXAgaWYgb2xkIHBvc2l0aW9uIG5vdCBhdmFpbGFibGVcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0xlZnQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcclxuXHJcbiAgICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcclxuICAgICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xyXG5cclxuICAgICAgICAgICAgICAvLyBGb3JjZSByZWZsb3dcclxuICAgICAgICAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJztcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgwKSc7XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcclxuICAgICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Ecm9wR3JvdXAoKSB7XHJcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHRoaXMucHJldmlld0xlZnRQaW5uZWRDb2x1bW5zKTtcclxuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IHRoaXMuZGVlcENsb25lQ29sdW1ucyh0aGlzLnByZXZpZXdDZW50ZXJDb2x1bW5zKTtcclxuICAgIHRoaXMucmlnaHRQaW5uZWRDb2x1bW5zID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVlcENsb25lQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb2x1bW5zKSkgcmV0dXJuIFtdO1xyXG5cclxuICAgIHJldHVybiBjb2x1bW5zLm1hcChjb2wgPT4gKHtcclxuICAgICAgLi4uY29sLFxyXG4gICAgICBxdWVyeTogY29sLnF1ZXJ5ID8geyAuLi5jb2wucXVlcnkgfSA6IG51bGwsXHJcbiAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZTogQXJyYXkuaXNBcnJheShjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKVxyXG4gICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgLy8gUmVjdXJzaXZlbHkgZGVlcCBjbG9uZSBjaGlsZHJlbiBpZiBwcmVzZW50XHJcbiAgICAgIGNoaWxkcmVuOiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbilcclxuICAgICAgICA/IHRoaXMuZGVlcENsb25lQ29sdW1ucyhjb2wuY2hpbGRyZW4pXHJcbiAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgb25Ecm9wVG9wR3JvdXAoZXZlbnQ6IENka0RyYWdEcm9wPGFueT4pIHtcclxuICAgIGlmICh0aGlzLmlzT3V0c2lkZUNvbnRhaW5lcikgcmV0dXJuO1xyXG4gICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVkgPSAwO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgZHJhZ2dlZERhdGEgPSBldmVudC5pdGVtLmRhdGE7XHJcbiAgICBpZiAoZHJhZ2dlZERhdGE/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoZHJhZ2dlZERhdGEuY2hpbGRyZW4pKSB7XHJcbiAgICAgIGRyYWdnZWREYXRhLmNoaWxkcmVuLmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbC5pc192aXNpYmxlICYmIGNvbC5pc19ncm91cGFibGUpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMucHVzaChjb2wpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZHJhZ2dlZERhdGEuaXNfdmlzaWJsZSAmJiBkcmFnZ2VkRGF0YS5pc19ncm91cGFibGUpIHtcclxuICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnB1c2goZHJhZ2dlZERhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSBmYWxzZTtcclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XHJcbiAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcclxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zZWxlY3RlZENlbGxzID0gW107XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkdyb3VwUmVvcmRlcihldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5ncm91cGVkQ29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IHRoaXMuY29sdW1uc0dyb3VwZWRCb3g/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdW5ncm91cENvbHVtbihjb2x1bW46IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ3JvdXBlZENvbHVtbnMuZmluZEluZGV4KFxyXG4gICAgICAgIChjb2wpID0+IGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xyXG4gICAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoZ3JvdXApID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICBncm91cC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgY2hpbGQuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXAuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgICAgZ3JvdXAuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAxMDAwKTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluIHVuZ3JvdXBDb2x1bW46XCIsIGVycik7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNob3VsZFRoZUdyb3VwSGVhZGVyU2hvdyhncm91cDogYW55KSB7XHJcbiAgICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIGdyb3VwLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZ3JvdXAuY2hpbGRyZW4uc29tZShcclxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5pc192aXNpYmxlICYmICFjb2w/LmlzUm93R3JvdXBlZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyb3VwPy5pc192aXNpYmxlICYmICFncm91cD8uaXNSb3dHcm91cGVkO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIG9uQ2hpbGREcmFnU3RhcnQoKSB7XHJcbiAgLy8gICBkZWJ1Z2dlcjtcclxuICAvLyB9XHJcblxyXG4gIC8vIGRyb3BMaXN0SWRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAvLyBnZW5lcmF0ZURyb3BMaXN0SWRzKCkge1xyXG4gIC8vICAgdGhpcy5kcm9wTGlzdElkcyA9IFtdO1xyXG5cclxuICAvLyAgIGNvbnN0IHNlY3Rpb25LZXlzID0gW1xyXG4gIC8vICAgICAnbGVmdFBpbm5lZENvbHVtbnMnLFxyXG4gIC8vICAgICAnY2VudGVyQ29sdW1ucycsXHJcbiAgLy8gICAgICdyaWdodFBpbm5lZENvbHVtbnMnLFxyXG4gIC8vICAgXTtcclxuXHJcbiAgLy8gICBzZWN0aW9uS2V5cy5mb3JFYWNoKChzZWN0aW9uS2V5KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IHNlY3Rpb25Db2xzID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uS2V5XTtcclxuXHJcbiAgLy8gICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjb2w6IGFueSwgaTogbnVtYmVyKSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICAgIGNvbC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55LCBjaGlsZEluZGV4OiBudW1iZXIpID0+IHtcclxuICAvLyAgICAgICAgICAgaWYgKGNoaWxkPy5pc192aXNpYmxlICYmICFjaGlsZC5pc1Jvd0dyb3VwZWQpIHtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBpZCA9IGAke3NlY3Rpb25LZXl9JHtpfWA7XHJcbiAgLy8gICAgICAgICAgICAgdGhpcy5kcm9wTGlzdElkcy5wdXNoKGlkKTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgfSBlbHNlIGlmIChjb2w/LmlzX3Zpc2libGUgJiYgIWNvbC5pc1Jvd0dyb3VwZWQpIHtcclxuICAvLyAgICAgICAgIGNvbnN0IGlkID0gYCR7c2VjdGlvbktleX0ke2l9YDtcclxuICAvLyAgICAgICAgIHRoaXMuZHJvcExpc3RJZHMucHVzaChpZCk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgb25DaGlsZERyb3BsaXN0U29ydGVkID0gYXN5bmMgKGV2ZW50OiBDZGtEcmFnU29ydEV2ZW50PGFueT4sIHNlY3Rpb246IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHBpbm5lZCA9XHJcbiAgICAgIHNlY3Rpb24gPT0gJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucydcclxuICAgICAgICA/ICdsZWZ0J1xyXG4gICAgICAgIDogc2VjdGlvbiA9PSAncHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucydcclxuICAgICAgICAgID8gJ3JpZ2h0J1xyXG4gICAgICAgICAgOiBcIlwiO1xyXG5cclxuICAgIGNvbnN0IGNvbHVtbiA9IGV2ZW50Lml0ZW0uZGF0YTtcclxuICAgIGxldCBncm91cCA9IHRoaXMuY29sdW1ucy5maW5kKFxyXG4gICAgICAoY29sOiBhbnkpID0+XHJcbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXHJcbiAgICAgICAgY29sLmNoaWxkcmVuLnNvbWUoKGNoaWxkOiBhbnkpID0+IGNoaWxkPy5maWVsZCA9PT0gY29sdW1uPy5maWVsZClcclxuICAgICk7XHJcbiAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleChcclxuICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PT0gZ3JvdXAuaGVhZGVyXHJcbiAgICApO1xyXG4gICAgY29uc3QgZmlsdGVyZWRHcm91cCA9IGdyb3VwPy5jaGlsZHJlbi5maWx0ZXIoKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGlzUGlubmVkTWF0Y2ggPVxyXG4gICAgICAgIChwaW5uZWQgPT09IFwiXCIgJiYgKCFjb2w/LnBpbm5lZCB8fCBjb2w/LnBpbm5lZCA9PT0gXCJcIikpIHx8IGNvbD8ucGlubmVkID09PSBwaW5uZWQ7XHJcbiAgICAgIHJldHVybiBpc1Bpbm5lZE1hdGNoICYmIGNvbD8uaXNfdmlzaWJsZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHByZXZpb3VzRmllbGQgPSBmaWx0ZXJlZEdyb3VwW2V2ZW50LnByZXZpb3VzSW5kZXhdLmZpZWxkO1xyXG4gICAgY29uc3QgY3VycmVudEZpZWxkID0gZmlsdGVyZWRHcm91cFtldmVudC5jdXJyZW50SW5kZXhdLmZpZWxkO1xyXG4gICAgY29uc3QgdmlzaWJsZVByZXZJbmRleCA9IGdyb3VwLmNoaWxkcmVuLmZpbmRJbmRleChcclxuICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT0gcHJldmlvdXNGaWVsZFxyXG4gICAgKTtcclxuICAgIGNvbnN0IHZpc2libGVDdXJySW5kZXggPSBncm91cC5jaGlsZHJlbi5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09IGN1cnJlbnRGaWVsZFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGFsbEZpZWxkcyA9IFtwcmV2aW91c0ZpZWxkLCBjdXJyZW50RmllbGRdO1xyXG4gICAgY29uc3QgY2VsbHMgPSBhbGxGaWVsZHMubGVuZ3RoXHJcbiAgICAgID8gKFtdIGFzIEhUTUxFbGVtZW50W10pLmNvbmNhdChcclxuICAgICAgICAuLi5hbGxGaWVsZHMubWFwKChmaWVsZCkgPT5cclxuICAgICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtZmllbGQ9XCIke2ZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIDogW107XHJcblxyXG4gICAgY29uc3QgZ3JvdXBJblNlY3Rpb24gPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmQoXHJcbiAgICAgIChjb2w6IGFueSkgPT5cclxuICAgICAgICBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikgJiZcclxuICAgICAgICBjb2wuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQ/LmZpZWxkID09PSBjb2x1bW4/LmZpZWxkKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJHcm91cEluU2VjdGlvbiA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl0uZmluZChcclxuICAgICAgKGNvbDogYW55KSA9PlxyXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxyXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGdyb3VwSW5TZWN0aW9uSW5kZXggPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmRJbmRleChcclxuICAgICAgKGNvbDogYW55KSA9PiBjb2wuaGVhZGVyID09PSBncm91cEluU2VjdGlvbi5oZWFkZXJcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZmlyc3RQb3NpdGlvbnMgPSBuZXcgTWFwPEhUTUxFbGVtZW50LCBudW1iZXI+KCk7XHJcbiAgICBjZWxscy5mb3JFYWNoKChlbCkgPT4gZmlyc3RQb3NpdGlvbnMuc2V0KGVsLCBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KSk7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoXHJcbiAgICAgIHRoaXMuY29sdW1uc1tncm91cEluZGV4XT8uY2hpbGRyZW4sXHJcbiAgICAgIHZpc2libGVQcmV2SW5kZXgsXHJcbiAgICAgIHZpc2libGVDdXJySW5kZXhcclxuICAgICk7XHJcblxyXG4gICAgbW92ZUl0ZW1JbkFycmF5KFxyXG4gICAgICAodGhpcyBhcyBhbnkpW3NlY3Rpb25dPy5bZ3JvdXBJblNlY3Rpb25JbmRleF0uY2hpbGRyZW4sXHJcbiAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXHJcbiAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubmdab25lLm9uU3RhYmxlKTtcclxuICAgIC8vIGFsbEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgLy8gICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKFxyXG4gICAgLy8gICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWZpZWxkPVwiJHtmaWVsZH1cIl1gKVxyXG4gICAgLy8gICApIGFzIEhUTUxFbGVtZW50W107XHJcbiAgICAvLyAgIHVwZGF0ZWRDZWxscy5mb3JFYWNoKChlbCkgPT4ge1xyXG4gICAgLy8gICAgIGNvbnN0IG5ld0xlZnQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xyXG4gICAgLy8gICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpITtcclxuICAgIC8vICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcclxuICAgIC8vICAgICBpZiAoZGVsdGFYICE9PSAwKSB7XHJcbiAgICAvLyAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSc7XHJcbiAgICAvLyAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xyXG4gICAgLy8gICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtkZWx0YVh9cHgpYDtcclxuICAgIC8vICAgICAgIHZvaWQgZWwub2Zmc2V0V2lkdGg7XHJcbiAgICAvLyAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJztcclxuICAgIC8vICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcclxuXHJcbiAgICAvLyAgICAgICBjb25zdCBoYW5kbGUgPSAoKSA9PiB7XHJcbiAgICAvLyAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcclxuICAgIC8vICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XHJcbiAgICAvLyAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAnJztcclxuICAgIC8vICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAvLyAgICAgICB9O1xyXG4gICAgLy8gICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KTtcclxuICAgIC8vIH0pO1xyXG5cclxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgYWxsRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWZpZWxkPVwiJHtmaWVsZH1cIl1gKVxyXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcclxuXHJcbiAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBvbGRMZWZ0ID0gZmlyc3RQb3NpdGlvbnMuZ2V0KGVsKTtcclxuICAgICAgICAgIGlmIChvbGRMZWZ0ID09IG51bGwpIHJldHVybjsgLy8gc2FmZXR5IGNoZWNrXHJcblxyXG4gICAgICAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XHJcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcclxuXHJcbiAgICAgICAgICBpZiAoZGVsdGFYICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtkZWx0YVh9cHgpYDtcclxuXHJcbiAgICAgICAgICAgIC8vIEZvcmNlIHJlZmxvd1xyXG4gICAgICAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSc7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICcnO1xyXG4gICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBjb25zb2xlLmdyb3VwKCdHcm91cDogJywgZ3JvdXApO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uQ2hpbGREcm9wbGlzdERyb3BlZChjZGtEcmFnRHJvcGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMik7XHJcbiAgfVxyXG5cclxuICAvLyBSb3dzIEdyb3VwaW5nIExvZ2ljIEdvZXMgSGVyZVxyXG5cclxuICBncm91cERhdGEoZGF0YTogYW55W10sIGdyb3VwRmllbGRzOiBzdHJpbmdbXSk6IGFueVtdIHtcclxuICAgIGxldCBkYXRhU2V0ID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xyXG4gICAgaWYgKCFncm91cEZpZWxkcy5sZW5ndGgpIHJldHVybiBkYXRhO1xyXG4gICAgY29uc3QgW2N1cnJlbnRGaWVsZCwgLi4ucmVzdEZpZWxkc10gPSBncm91cEZpZWxkcztcclxuICAgIGNvbnN0IGdyb3VwZWRNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YVNldCkge1xyXG4gICAgICBsZXQga2V5VmFsdWUgPSBjdXJyZW50RmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwgaykgPT4gb2JqPy5ba10sIGl0ZW0pO1xyXG4gICAgICBsZXQgZ3JvdXBLZXk6IHN0cmluZztcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5VmFsdWUpKSB7XHJcbiAgICAgICAgaWYgKGtleVZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSBcIl9CbGFua1wiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGtleVZhbHVlWzBdID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICBncm91cEtleSA9IGtleVZhbHVlXHJcbiAgICAgICAgICAgIC5tYXAob2JqID0+IChvYmo/LmRlcGFydG1lbnRfbmFtZSB8fCBvYmoucm9sZU5hbWUgfHwgb2JqPy5mdWxsX25hbWUpID8/IFwiX0JsYW5rXCIpXHJcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSBrZXlWYWx1ZVxyXG4gICAgICAgICAgICAubWFwKHZhbCA9PiB2YWwgPz8gXCJfQmxhbmtcIilcclxuICAgICAgICAgICAgLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBncm91cEtleSA9IGtleVZhbHVlID8ga2V5VmFsdWUgOiBcIl9CbGFua1wiOztcclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZW9mIGtleVZhbHVlID09PSAnc3RyaW5nJyAmJiAhaXNOYU4oRGF0ZS5wYXJzZShrZXlWYWx1ZSkpKSB7XHJcbiAgICAgICAgICBjb25zdCBkYXRlT2JqID0gbmV3IERhdGUoa2V5VmFsdWUpO1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSB0aGlzLmNvbW1vblNldmljZS5mb3JtYXREYXRlVmFsdWUoZGF0ZU9iaiwgdGhpcy5kYXRlRm9ybWF0IHx8ICdNTS9kZC95eXl5Jyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghZ3JvdXBlZE1hcC5oYXMoZ3JvdXBLZXkpKSBncm91cGVkTWFwLnNldChncm91cEtleSwgW10pO1xyXG4gICAgICBncm91cGVkTWFwLmdldChncm91cEtleSkhLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShncm91cGVkTWFwLmVudHJpZXMoKSkubWFwKChbZ3JvdXBWYWx1ZSwgZ3JvdXBJdGVtc10pID0+ICh7XHJcbiAgICAgIGlzR3JvdXA6IHRydWUsXHJcbiAgICAgIGdyb3VwRmllbGQ6IGN1cnJlbnRGaWVsZCxcclxuICAgICAgZ3JvdXBWYWx1ZSxcclxuICAgICAgY2hpbGRyZW46IHRoaXMuZ3JvdXBEYXRhKGdyb3VwSXRlbXMsIHJlc3RGaWVsZHMpLFxyXG4gICAgICBpc0V4cGFuZDogZmFsc2UsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgY291bnRMZWFmUm93cyhncm91cDogYW55KTogbnVtYmVyIHtcclxuICAgIGlmICghZ3JvdXAuY2hpbGRyZW4gfHwgIWdyb3VwLmNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuIDA7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwLmNoaWxkcmVuLnJlZHVjZSgoY291bnQ6IG51bWJlciwgY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gY291bnQgKyAoY2hpbGQuaXNHcm91cCA/IHRoaXMuY291bnRMZWFmUm93cyhjaGlsZCkgOiAxKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgdG9nZ2xlQWN0aXZlRmlsdGVyKCkge1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSAhdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW47XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBY3Rpb25zKHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHR5cGUgPT09IHRoaXMuYWN0aXZlVG9wQnV0dG9uKSB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9IHR5cGU7XHJcbiAgICBlbHNlIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gdHlwZTtcclxuICAgIHRoaXMuYWN0aXZlU3ViQnV0dG9uID0gJyc7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlU3ViQnV0dG9uID0gJyc7XHJcbiAgdG9nZ2xlU3ViQWN0aW9ucyh0eXBlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0eXBlID09PSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbikgdGhpcy5hY3RpdmVTdWJCdXR0b24gPSAnJztcclxuICAgIGVsc2UgdGhpcy5hY3RpdmVTdWJCdXR0b24gPSB0eXBlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWN0aW9uc0Ryb3Bkb3duKCkge1xyXG4gICAgdGhpcy5zaG93QWN0aW9uc0Ryb3BEb3duID0gIXRoaXMuc2hvd0FjdGlvbnNEcm9wRG93bjtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgYXN5bmMgY2hhbmdlVGFibGVMYXlvdXQoZXZlbnQ6IEV2ZW50LCBsYXlvdXRUeXBlOiBzdHJpbmcpIHtcclxuICAgIGxldCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgICBpZiAodGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gbGF5b3V0VHlwZTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUxheW91dChsYXlvdXRUeXBlKVxyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG9wKTtcclxuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcclxuICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uRm9udENoYW5nZSgpXHJcbiAgfVxyXG5cclxuICBzZXRUYWJsZUxheW91dChsYXlvdXRUeXBlOiBzdHJpbmcpIHtcclxuICAgIGlmKCFsYXlvdXRUeXBlKSByZXR1cm47XHJcbiAgICBpZiAobGF5b3V0VHlwZSA9PT0gJ3NtYWxsJykge1xyXG4gICAgICB0aGlzLnJvd0hlaWdodCA9IDM2O1xyXG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDQwO1xyXG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTA7XHJcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IDEwO1xyXG5cclxuICAgIH0gZWxzZSBpZiAobGF5b3V0VHlwZSA9PT0gJ21lZGl1bScpIHtcclxuICAgICAgdGhpcy5yb3dIZWlnaHQgPSA0NDtcclxuICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgPSA0NDtcclxuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IDE0O1xyXG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSAxNDtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvd0hlaWdodCA9IDYwO1xyXG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDUyO1xyXG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTY7XHJcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IDE2O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXJ0SW5kZXhEYXRhKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZEluZGV4KCkge1xyXG4gICAgcmV0dXJuIE1hdGgubWluKHRoaXMuc3RhcnRJbmRleCArIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmlzaWJsZVBhZ2VzKCk6IChudW1iZXIgfCBzdHJpbmcpW10ge1xyXG4gICAgY29uc3QgcGFnZXM6IChudW1iZXIgfCBzdHJpbmcpW10gPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMgPD0gNykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlczsgaSsrKSB7XHJcbiAgICAgICAgcGFnZXMucHVzaChpKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFnZXMucHVzaCgxKTtcclxuICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID4gMykge1xyXG4gICAgICAgIHBhZ2VzLnB1c2goJy4uLicpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBzdGFydCA9IE1hdGgubWF4KDIsIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSk7XHJcbiAgICAgIGxldCBlbmQgPSBNYXRoLm1pbih0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyAtIDEsIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlICsgMSk7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcclxuICAgICAgICBwYWdlcy5wdXNoKGkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPCB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyAtIDIpIHtcclxuICAgICAgICBwYWdlcy5wdXNoKCcuLi4nKTtcclxuICAgICAgfVxyXG4gICAgICBwYWdlcy5wdXNoKHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFnZXM7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duID0gJyc7XHJcbiAgdG9nZ2xlQ29sdW1uSW5GaWx0ZXJEcm9wZG93bihjb2w6IGFueSkge1xyXG5cclxuICB9XHJcblxyXG4gIHJlbW92ZUNvbHVtbkZyb21GaWx0ZXIob3B0aW9uOiBhbnkpIHtcclxuXHJcbiAgfVxyXG5cclxuICBoYW5kbGVCYWNrc3BhY2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAvLyBJZiBzZWFyY2ggaXMgZW1wdHksIHJlbW92ZSBsYXN0IHRhZ1xyXG4gICAgaWYgKCF0aGlzLnNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93biAmJiB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgbGFzdCA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zW3RoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLmxlbmd0aCAtIDFdO1xyXG4gICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKGxhc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsdGVyTWVudWVTZWFyY2hJbnB1dCcpIGZpbHRlck1lbnVlU2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+XHJcbiAgQFZpZXdDaGlsZCgnZmlsdGVyTWVudWVUZXh0Y2hJbnB1dCcpIGZpbHRlck1lbnVlVGV4dGNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+XHJcblxyXG4gIG9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNvbDogYW55KSB7XHJcbiAgICBpZiAoY29sLnR5cGUgPT0gJ2ltYWdlJyB8fCAhY29sPy50eXBlKSByZXR1cm47XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyID0gY29sO1xyXG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSB0cnVlO1xyXG4gICAgdGhpcy5hZGRGaWx0ZXJDb2x1bW5JbnB1dCA9ICcnO1xyXG4gICAgaWYgKGNvbC50eXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XHJcbiAgICAgIGNvbnN0IHNhdmVkSWRzID0gY29sPy5xdWVyeT8uX2lkcyB8fCBbXTtcclxuICAgICAgc2F2ZWRJZHMuZm9yRWFjaCgoaWQ6IHN0cmluZykgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuYWRkKGlkKSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8uZmlsdGVyKFxyXG4gICAgICAgIChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uKVxyXG4gICAgICApO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJNZW51ZVNlYXJjaElucHV0KSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlck1lbnVlU2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2wudHlwZSkpIHtcclxuICAgICAgdGhpcy5maXJzdENvbmRpdGlvbiA9IGNvbC5xdWVyeS5maXJzdF9jb25kaXRpb24gPyBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uIDogKGNvbC50eXBlID09ICdkYXRlJyA/ICdlcXVhbCcgOiAnY29udGFpbicpO1xyXG4gICAgICB0aGlzLmZpcnN0VmFsdWUgPSBjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSB8fCAnJztcclxuICAgICAgdGhpcy5jb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5jb25kaXRpb24gfHwgJ25vbmUnO1xyXG4gICAgICB0aGlzLnNlY29uZENvbmRpdGlvbiA9IGNvbC5xdWVyeS5maXJzdF9jb25kaXRpb24gPyBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uIDogKGNvbC50eXBlID09ICdkYXRlJyA/ICdlcXVhbCcgOiAnY29udGFpbicpO1xyXG4gICAgICB0aGlzLnNlY29uZFZhbHVlID0gY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlIHx8ICcnO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlck1lbnVlVGV4dGNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgaXNGaWx0ZXJPcGVuID0gZmFsc2VcclxuICBzZWxlY3RlZENvbHVtbkZvckZpbHRlcjogYW55O1xyXG4gIHNob3dGaWx0ZXJzID0gdGhpcy5zaG93U2lkZU1lbnUgPyBmYWxzZSA6IGZhbHNlO1xyXG5cclxuXHJcbiAgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sOiBhbnkpIHtcclxuICAgIGlmIChjb2wudHlwZSAhPT0gJ2Ryb3Bkb3duJykgcmV0dXJuO1xyXG4gICAgdGhpcy5vcGVuRmlsdGVyKGNvbCk7XHJcbiAgfVxyXG5cclxuICBvcGVuRmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBjb2w7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGxcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duID0gJyc7XHJcbiAgICB0aGlzLmFkZEZpbHRlckNvbHVtbklucHV0ID0gJyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyID0gY29sO1xyXG5cclxuICAgIGlmIChjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xyXG4gICAgICBjb25zdCBzYXZlZElkcyA9IGNvbD8ucXVlcnk/Ll9pZHMgfHwgW107XHJcbiAgICAgIHNhdmVkSWRzLmZvckVhY2goKGlkOiBzdHJpbmcpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmFkZChpZCkpO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/LmZpbHRlcihcclxuICAgICAgICAob3B0aW9uOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2wudHlwZSkpIHtcclxuICAgICAgdGhpcy5maXJzdENvbmRpdGlvbiA9IGNvbD8ucXVlcnk/LmZpcnN0X2NvbmRpdGlvbiB8fCAnY29udGFpbic7XHJcbiAgICAgIHRoaXMuZmlyc3RWYWx1ZSA9IGNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlIHx8ICcnO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvbiA9IGNvbD8ucXVlcnk/LmNvbmRpdGlvbiB8fCAnbm9uZSc7XHJcbiAgICAgIHRoaXMuc2Vjb25kQ29uZGl0aW9uID0gY29sPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbiB8fCAnY29udGFpbic7XHJcbiAgICAgIHRoaXMuc2Vjb25kVmFsdWUgPSBjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUgfHwgJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZmlyc3RWYWx1ZTogYW55ID0gJyc7XHJcbiAgZmlyc3RDb25kaXRpb24gPSAnJztcclxuICBzZWNvbmRWYWx1ZTogYW55ID0gJyc7XHJcbiAgc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcclxuICBjb25kaXRpb24gPSAnJztcclxuXHJcbiAgcmVzZXRUZXh0RmlsdGVyQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSAnY29udGFpbic7XHJcbiAgICB0aGlzLmZpcnN0VmFsdWUgPSAnJztcclxuICAgIHRoaXMuY29uZGl0aW9uID0gJ25vbmUnO1xyXG4gICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBudWxsO1xyXG4gICAgdGhpcy5zZWNvbmRWYWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsVmFsdXNTZWxlY3Rpb25JbkRyb3Bkb3duRmlsdGVyKGNvbHVtbjogYW55KSB7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdGVkRmlsdGVyT3B0aW9uczogYW55W10gPSBbXVxyXG5cclxuICBjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgdG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uOiBhbnkpIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBjb25zdCBpZCA9IG9wdGlvbi5pZCB8fCBvcHRpb24uX2lkIHx8IG9wdGlvbjtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMoaWQpKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmRlbGV0ZShpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWUuZmlsdGVyKChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbi5pZCB8fCBvcHRpb24uX2lkIHx8IG9wdGlvbikpXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICByZXNldEZpbHRlckNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zIS5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICAvLyBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwiRmlsdGVyZWQgQ29sdW1ucyBBcmU6IFwiLCBmaWx0ZXJlZENvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlEcm9wZG93bkZpbHRlcigpIHtcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgY29uc3QgZmluZENvbHVtbiA9IChjb2x1bW5zOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IGFueSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkgcmV0dXJuIGNvbDtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IGZvdW5kID0gZmluZENvbHVtbihjb2wuY2hpbGRyZW4sIGZpZWxkKTtcclxuICAgICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY29sdW1uID0gZmluZENvbHVtbih0aGlzLmNvbHVtbnMsIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuZmllbGQpO1xyXG4gICAgaWYgKGNvbHVtbikge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgICBjb2x1bW4ucXVlcnkgPSBjb2x1bW4ucXVlcnkgfHwge307XHJcbiAgICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBjb2x1bW4ucXVlcnkuX2lkcyB8fCBbXTtcclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIHN0YWxlIElEcyAobm90IHByZXNlbnQgaW4gU2V0KVxyXG4gICAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gY29sdW1uLnF1ZXJ5Ll9pZHMuZmlsdGVyKFxyXG4gICAgICAgICAgKGlkOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhpZCkgICAvLyA8LS0gdXNlIC5oYXMoKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIEFkZCBuZXcgb25lcyBpZiBtaXNzaW5nXHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgICAgICBpZiAoIWNvbHVtbi5xdWVyeS5faWRzLmluY2x1ZGVzKGlkKSkge1xyXG4gICAgICAgICAgICBjb2x1bW4ucXVlcnkuX2lkcy5wdXNoKGlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcclxuICAgICAgICBjb2x1bW4ucXVlcnkgPSB7XHJcbiAgICAgICAgICBmaXJzdF9jb25kaXRpb246IHRoaXMuZmlyc3RDb25kaXRpb24gfHwgJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IHRoaXMuZmlyc3RWYWx1ZSB8fCBudWxsLFxyXG4gICAgICAgICAgY29uZGl0aW9uOiB0aGlzLnNlY29uZFZhbHVlID8gdGhpcy5jb25kaXRpb246ICdub25lJyxcclxuICAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICB0aGlzLnNlY29uZFZhbHVlID8gdGhpcy5zZWNvbmRDb25kaXRpb24gOiBudWxsLFxyXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiB0aGlzLnNlY29uZFZhbHVlIHx8IG51bGwsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAgICAgc2VhcmNoOiBjb2x1bW4uc2VhcmNoLFxyXG4gICAgICBxdWVyeTogY29sdW1uLnF1ZXJ5LFxyXG4gICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAgICAgX2lkczogY29sdW1uLl9pZHNcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG5cclxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWdbZXhpc3RpbmdJbmRleF0gPSBmaWx0ZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcnMpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIC8vIGFwcGx5RmlsdGVyRnJvbUZpbHRlclJvdyhjb2x1bW46IGFueSkge1xyXG4gIC8vICAgY29uc3QgZmlsdGVyID0ge1xyXG4gIC8vICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxyXG4gIC8vICAgICBzZWFyY2g6IGNvbHVtbi5zZWFyY2gsXHJcbiAgLy8gICAgIHF1ZXJ5OiBjb2x1bW4ucXVlcnksXHJcbiAgLy8gICAgIHR5cGU6IGNvbHVtbi50eXBlLFxyXG4gIC8vICAgICBfaWRzOiBjb2x1bW4uX2lkc1xyXG4gIC8vICAgfTtcclxuICAvLyAgIHRoaXMuZmlsdGVyc0NvbmZpZy5wdXNoKGZpbHRlcik7XHJcbiAgLy8gICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAvLyAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgLy8gICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gIC8vICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAvLyAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgLy8gICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xyXG4gIC8vIH1cclxuXHJcbiAgaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sdW1uOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnNDb25maWcuc29tZShjb2wgPT4gY29sLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2lkZSBGaWx0ZXJzIExvZ2ljIGlzIGhlcmVcclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sOiBhbnksIGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IChldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy5jaGVja2VkO1xyXG5cclxuICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lm1hcChcclxuICAgICAgICAob3B0OiBhbnkpID0+IG9wdC5pZCB8fCBvcHQuX2lkIHx8IG9wdFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcyA9IG5ldyBTZXQ8c3RyaW5nPihjb2wucXVlcnkuX2lkcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcyA9IFtdO1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGlzQWxsU2lkZUZpbHRlck9wdGlvbnNTZWxlY3RlZChjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFjb2w/LnF1ZXJ5Py5faWRzIHx8ICFBcnJheS5pc0FycmF5KGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID09PSBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIG9uT3B0aW9uVG9nZ2xlKGNvbDogYW55LCBvcHRpb246IGFueSkge1xyXG4gICAgY29uc3Qgb3B0aW9uSWQgPSBvcHRpb24uaWQgfHwgb3B0aW9uLl9pZCB8fCBvcHRpb247XHJcbiAgICBpZiAoIWNvbC5xdWVyeS5faWRzKSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBpZHggPSBjb2wucXVlcnkuX2lkcy5pbmRleE9mKG9wdGlvbklkKTtcclxuICAgIGlmIChpZHggPiAtMSkge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcy5zcGxpY2UoaWR4LCAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzLnB1c2gob3B0aW9uSWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgcmVzZXRTaWRlRmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICBjb25zdCByZXNldENvbHVtblJlY3Vyc2l2ZWx5ID0gKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sdW1uLmZpZWxkID09PSBjb2wuZmllbGQpIHtcclxuICAgICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcclxuICAgICAgICAgICAgX2lkczogW10sXHJcbiAgICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbj8uY2hpbGRyZW4pICYmIGNvbHVtbj8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgaWYgKHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkoY29sdW1uLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVycyk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsZWFyQWxsRmlsdGVycygpIHtcclxuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcclxuICAgIGNvbnN0IHJlc2V0QWxsUmVjdXJzaXZlbHkgPSAoY29sdW1uczogYW55W10pID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2x1bW4ucXVlcnkpIHtcclxuICAgICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcclxuICAgICAgICAgICAgX2lkczogW10sXHJcbiAgICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW4/LmNoaWxkcmVuKSAmJiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXNldEFsbFJlY3Vyc2l2ZWx5KGNvbHVtbi5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmVzZXRBbGxSZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcclxuICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IFtdO1xyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvbnRGYWltbHkgPSAnSW50ZXInO1xyXG4gICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSAnbWVkaXVtZCc7XHJcbiAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICB0aGlzLmdsb2JhbFNlYXJjaFRleHQgPSAnJztcclxuICAgIGNvbnN0IGV2ZW50ID0geyBldmVudFR5cGU6ICdyZXNldCcsIGRhdGE6IHsgdGFibGVUeXBlOiB0aGlzLnRhYmxlVHlwZSB9IH07XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogW10sXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpO1xyXG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAgIH0sIDMwMCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXBwbHlTaWRlRmlsdGVyKGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbi5xdWVyeS5maXJzdF92YWx1ZSAmJiAhY29sdW1uPy5xdWVyeT8uX2lkcy5sZW5ndGgpIHJldHVybjtcclxuICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAgICAgc2VhcmNoOiBjb2x1bW4uc2VhcmNoLFxyXG4gICAgICBxdWVyeTogY29sdW1uLnF1ZXJ5LFxyXG4gICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAgICAgX2lkczogY29sdW1uLl9pZHMgfHwgW11cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG5cclxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICAvLyBSZXBsYWNlIHRoZSBleGlzdGluZyBmaWx0ZXJcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnW2V4aXN0aW5nSW5kZXhdID0gZmlsdGVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gQWRkIG5ldyBmaWx0ZXJcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnB1c2goZmlsdGVyKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgICAgLi4ucmVzdCxcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVtb3ZlU2lkZUZpbHRlcihjb2x1bW46IGFueSkge1xyXG4gICAgaWYgKCFjb2x1bW4ucXVlcnkuZmlyc3RfdmFsdWUgJiYgIWNvbHVtbj8ucXVlcnk/Ll9pZHMubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoZXhpc3RpbmdJbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgY29sbGFwc2VBbGxFeHBhbmRlZENlbGxzKCkge1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRDZWxscz8uc2l6ZSA+IDApIHtcclxuICAgICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgdHJhY2tCeUZpZWxkKGluZGV4OiBudW1iZXIsIGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBjb2w/LmZpZWxkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2ZUZpbHRlcmVkQ29sdW1ucygpOiBhbnlbXSB7XHJcbiAgICBjb25zdCBjb2xsZWN0RmlsdGVyZWQgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG4gICAgICBjb2x1bW5zLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoY29sbGVjdEZpbHRlcmVkKGNvbC5jaGlsZHJlbikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXNJbkZpbHRlcnNDb25maWcgPSB0aGlzLmZpbHRlcnNDb25maWcuc29tZShmID0+IGYuZmllbGQgPT09IGNvbC5maWVsZCk7XHJcbiAgICAgICAgaWYgKGlzSW5GaWx0ZXJzQ29uZmlnKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChjb2wpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gY29sbGVjdEZpbHRlcmVkKHRoaXMuY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICB0b2dnbGVPcGVuRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zaG93RmlsdGVycyA9ICF0aGlzLnNob3dGaWx0ZXJzO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgLy8gQ2VsbCBFZGl0aW5nIFdvcmsgc3RhcnQgaGVyZVxyXG5cclxuICBlZGl0aW5nS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBhY3RpdmVDZWxsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgc2V0QWN0aXZlQ2VsbChyb3c6IGFueSwgY29sdW1uOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlQ2VsbCA9ICgocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgY29sdW1uLmZpZWxkKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGlzQWN0aXZlQ2VsbChyb3c6IGFueSwgY29sOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZUNlbGwgPT09ICgocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgY29sLmZpZWxkKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RleHRBcmVhZElucHV0JykgdGV4dEFyZWFkSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+O1xyXG4gIGVuYWJsZUVkaXQocm93OiBhbnksIGNvbHVtbjogYW55LCBjbGlja2VkRnJvbURldGFpbHNCb3ggPSBmYWxzZSwgY2VsbENvbnRhaW5lcj86IEhUTUxFbGVtZW50KSB7XHJcbiAgICB0aGlzLmVkaXRpbkRyb3Bkb3duU2VhcmNoID0gJyc7XHJcbiAgICBpZiAocm93Py5fX3ZpcnR1YWxJbmRleCA9PSAwKSByZXR1cm47XHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT0gJ2ltYWdlJyB8fCAhY29sdW1uPy5pc19lZGl0YWJsZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5lZGl0aW5nS2V5ID0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2x1bW4uZmllbGQpO1xyXG5cclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBkcm9wZG93bk1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY2VsbC1lZGl0aW5nLWRyb3Bkb3duLW1lbnUnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBpZiAoZHJvcGRvd25NZW51KSB7XHJcbiAgICAgICAgICBjb25zdCByZWN0ID0gZHJvcGRvd25NZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgICAgICAgaWYgKHJlY3QuYm90dG9tID4gd2luZG93SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIGRyb3Bkb3duTWVudS5zdHlsZS50b3AgPSBgLSR7cmVjdC5oZWlnaHR9cHhgO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZHJvcGRvd25NZW51LnN0eWxlLnRvcCA9ICcxMDAlJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghY2xpY2tlZEZyb21EZXRhaWxzQm94ICYmIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2x1bW4uZmllbGQpPy5sZW5ndGggPiA1MCkge1xyXG4gICAgICB0aGlzLnRvZ2dsZUV4cGFuZE9mTG9uZ0NlbGxUZXh0KHJvdywgY29sdW1uLCB0aGlzLmNvbHVtbnMsIGZhbHNlKVxyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghY2VsbENvbnRhaW5lcikgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgZm9jdXNhYmxlID0gY2VsbENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICdpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nXHJcbiAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xyXG5cclxuICAgICAgaWYgKGZvY3VzYWJsZSkge1xyXG4gICAgICAgIChmb2N1c2FibGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmZvbnRTaXplID0gJzE2cHgnO1xyXG4gICAgICAgIGZvY3VzYWJsZS5mb2N1cygpO1xyXG5cclxuICAgICAgICBpZiAoZm9jdXNhYmxlIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCBmb2N1c2FibGUgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSB7XHJcbiAgICAgICAgICBmb2N1c2FibGUuc2VsZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZGlzYWJsZUVkaXQocm93OiBhbnksIGNvbHVtbjogYW55LCBjb250cm9sPzogYW55KSB7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgaWYgKCF0aGlzLmVkaXRpbmdLZXkpIHJldHVyblxyXG4gICAgdGhpcy5jaGVja1Jvd0VkaXRBbmRFbWl0VmFsdWUocm93LCBjb2x1bW4sIHJvd1tjb2x1bW4uZmllbGRdKVxyXG4gICAgdGhpcy5lZGl0aW5nS2V5ID0gbnVsbDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uPy5maWVsZCk7XHJcbiAgICBpZiAoIWN1cnJlbnQgfHwgKGNvbHVtbi50eXBlID09ICdlbWFpbCcgJiYgIXRoaXMudmFsaWRhdGVFbWFpbChjdXJyZW50KSkpIHtcclxuICAgICAgY29uc3Qgb3JpZ2luYWxSb3cgPSB0aGlzLm9yaWdpbmFsRGF0YVNldC5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PSByb3cuaWQgfHwgaXRlbS5pZCA9PSByb3cuX2lkKTtcclxuICAgICAgY29uc3Qgb3JpZ2luYWwgPSB0aGlzLmdldE5lc3RlZFZhbHVlKG9yaWdpbmFsUm93LCBjb2x1bW4/LmZpZWxkKTtcclxuICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyb3csIGNvbHVtbiwgb3JpZ2luYWwpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbWFpbFJlZ2V4ID0gL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSQvO1xyXG4gIHZhbGlkYXRlRW1haWwodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZW1haWxSZWdleC50ZXN0KHZhbHVlKTtcclxuICB9XHJcbiAgYWxsb3dPbmx5TnVtYmVycyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgY2hhckNvZGUgPSBldmVudC53aGljaCA/IGV2ZW50LndoaWNoIDogZXZlbnQua2V5Q29kZTtcclxuICAgIGlmIChjaGFyQ29kZSA8IDQ4IHx8IGNoYXJDb2RlID4gNTcpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShyb3c6IGFueSwgY29sdW1uOiBhbnksIHZhbHVlPzogYW55KSB7XHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIGNvbnN0IG9yaWdpbmFsUm93ID0gdGhpcy5vcmlnaW5hbERhdGFTZXQ/LmZpbmQoXHJcbiAgICAgIChyOiBhbnkpID0+IHIuaWQgPT09IHJvdy5pZCB8fCByLl9pZCA9PT0gcm93Ll9pZFxyXG4gICAgKTtcclxuICAgIGlmICghb3JpZ2luYWxSb3cpIHJldHVybjtcclxuICAgIC8vIGNvbnN0IGNsZWFuID0gKG9iajogYW55KSA9PiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgLy8gY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbHVtbi5maWVsZCk7XHJcbiAgICAvLyBjb25zdCBvcmlnaW5hbFZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShvcmlnaW5hbFJvdywgY29sdW1uLmZpZWxkKTtcclxuICAgIGNvbnN0IG9yaWdpblZhbHVlID0gdGhpcy5kYXRhU2V0LmZpbmQoKHI6IGFueSkgPT4gci5pZCA9PT0gcm93LmlkKTtcclxuICAgIGNvbnN0IGNoYW5nZWRWYWx1ZSA9IG9yaWdpblZhbHVlLnZlcmlmaWVkID09IHZhbHVlO1xyXG4gICAgLy8gaWYgKGNoYW5nZWRWYWx1ZSkgcmV0dXJuO1xyXG4gICAgLy8gY29uc3QgaGFzQ2hhbmdlZCA9IHRoaXMuY29tbW9uU2V2aWNlLmhhc0ZpZWxkQ2hhbmdlZChjdXJyZW50VmFsdWUsIG9yaWdpbmFsVmFsdWUsIGNvbHVtbi50eXBlKTtcclxuICAgIC8vIGlmICghaGFzQ2hhbmdlZCkgcmV0dXJuO1xyXG4gICAgLy8gdGhpcy5zZXROZXN0ZWRWYWx1ZShvcmlnaW5hbFJvdywgY29sdW1uLCB2YWx1ZSk7XHJcblxyXG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcclxuICAgICAgZGF0YTogeyAuLi5vcmlnaW5WYWx1ZSB9LFxyXG4gICAgICBldmVudFR5cGU6ICdvbkNlbGxFZGl0JyxcclxuICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICBjb2x1bW46IGNvbHVtblxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHNlbmRPYmopXHJcbiAgICAvLyB9LCAxMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIGlzRWRpdGluZyhyb3c6IGFueSwgY29sOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRpbmdLZXkgPT09ICgocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgY29sLmZpZWxkKTtcclxuICB9XHJcblxyXG4gIHNldE5lc3RlZFZhbHVlKG9iajogYW55LCBjb2x1bW46IGFueSwgb3B0aW9uOiBhbnksIGNhbGxlZEZyb21JbnB1dCA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXRoID0gY29sdW1uLmZpZWxkO1xyXG4gICAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoJy4nKTtcclxuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzLnBvcCgpO1xyXG4gICAgY29uc3QgcGFyZW50ID0ga2V5cy5yZWR1Y2UoKGFjYzogeyBbeDogc3RyaW5nXToge307IH0sIGtleTogc3RyaW5nIHwgbnVtYmVyKSA9PiBhY2Nba2V5XSA/Pz0ge30sIG9iaik7XHJcblxyXG4gICAgaWYgKHBhcmVudCAmJiBsYXN0S2V5KSB7XHJcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiBvcHRpb24gIT09IG51bGwpIHtcclxuICAgICAgICAvLyBjYXNlOiBkcm9wZG93biBvYmplY3Qge2lkLCB2YWx1ZX1cclxuICAgICAgICBwYXJlbnQuaWQgPSBvcHRpb24uaWQ7XHJcbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0gb3B0aW9uLnZhbHVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGNhc2U6IHBsYWluIHN0cmluZyBvciBudW1iZXJcclxuICAgICAgICBwYXJlbnRbbGFzdEtleV0gPSBvcHRpb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZW5kT2JqID0ge1xyXG4gICAgICBkYXRhOiB7IC4uLm9iaiB9LFxyXG4gICAgICBldmVudFR5cGU6ICdvbkNlbGxFZGl0JyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGNhbGxlZEZyb21JbnB1dCkge1xyXG4gICAgICB0aGlzLmNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShvYmosIGNvbHVtbiwgb3B0aW9uKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgZ29Ub1BhZ2UocGFnZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnPy5wYWdlID09IHBhZ2UpIHJldHVybjtcclxuICAgIGlmIChwYWdlIDwgMSB8fCBwYWdlID4gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMpIHJldHVybjtcclxuICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID0gcGFnZTtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICBsaW1pdDogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LFxyXG4gICAgICAgIHBhZ2U6IHBhZ2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ3BhZ2VDaGFuZ2UnLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPSAxO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZykubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgICBpZiAocXVlcnkpIHtcclxuICAgICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcXVlcnksXHJcbiAgICAgICAgICAuLi5yZXN0LFxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgICAgb2JqOiB7XHJcbiAgICAgICAgICBsaW1pdDogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LFxyXG4gICAgICAgICAgcGFnZTogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBldmVudFR5cGU6ICdwYWdlQ2hhbmdlJyxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuICAgIH0sIDcwMCk7XHJcbiAgfVxyXG5cclxuICBhY3Rpb25QcmVzZXQoZGF0YTogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGRhdGEuY29sdW1ucyA9IGRhdGEuY29sdW1ucy5tYXAoKHsgX2lkLCBmaWx0ZXJWYWx1ZSwgc2VhcmNoLCBjb2x1bW5fZHJvcGRvd25fdmFsdWUsIHF1ZXJ5LCBfX3R5cGVuYW1lLCAuLi5yZXN0IH06IGFueSkgPT4gcmVzdCk7XHJcbiAgICB0aGlzLnRhYmxlVmlldz8uZm9yRWFjaCgoZWxlKSA9PiB7IGVsZS5pc190ZW1wID0gZmFsc2UgfSk7XHJcblxyXG4gICAge1xyXG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuYm9keVRleHRGb250c1NpemUsXHJcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gZGF0YS5jb25maWcuZm9udEZhaW1seSxcclxuICAgICAgICBkYXRhLmZpbHRlcnMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5fX3R5cGVuYW1lO1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQucXVlcnkpIHtcclxuICAgICAgICAgICAgZGVsZXRlIGVsZW1lbnQucXVlcnkuX190eXBlbmFtZTtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHR5cGVvZiBlbGVtZW50LnF1ZXJ5ID09PSAnb2JqZWN0JyAmJlxyXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgIT09IG51bGwgJiZcclxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhlbGVtZW50LnF1ZXJ5KS5sZW5ndGggPT09IDBcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuaGVhZGVyVGV4dEZvbnRzU2l6ZSxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSBkYXRhLmNvbmZpZy5zZWxlY3RlZFRhYmxlTGF5b3V0LFxyXG4gICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZGF0YS5jb25maWcuc2hvd1ZlcnRpY2FsQm9yZGVyLFxyXG4gICAgICAgIHRoaXMuY3VycmVudElkRm9yVXBkYXRlUHJlc2V0ID0gZGF0YS5pZDtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnID0gZGF0YS5maWx0ZXJzO1xyXG4gICAgfVxyXG4gICAgZGVsZXRlIGRhdGE/Ll9fdHlwZW5hbWU7XHJcbiAgICBkZWxldGUgZGF0YT8uaXNfdGVtcDtcclxuICAgIGRlbGV0ZSBkYXRhPy5jb25maWcuX190eXBlbmFtZTtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICBkYXRhOiBkYXRhXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogdHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuICB9XHJcblxyXG4gIGN1cnJlbnRJZEZvclVwZGF0ZVByZXNldCA9ICcnO1xyXG4gIGN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZTogYW55O1xyXG4gIHRlbXBfc3RhdGUgPSB7XHJcbiAgICBpZDogJycsXHJcbiAgICBpc190ZW1wOiBmYWxzZVxyXG4gIH1cclxuICBhc3luYyBzZWxlY3RGaWx0ZXIoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnRlbXBfc3RhdGUgPSB7XHJcbiAgICAgIGlkOiBkYXRhLmlkLFxyXG4gICAgICBpc190ZW1wOiB0cnVlXHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlVmlldz8uZm9yRWFjaCgoZWxlKSA9PiB7IGVsZS5pc190ZW1wID0gZmFsc2UgfSk7XHJcbiAgICB0aGlzLnRhYmxlVmlldyA9IHRoaXMudGFibGVWaWV3Lm1hcChpdGVtID0+ICh7XHJcbiAgICAgIC4uLml0ZW0sXHJcbiAgICAgIGlzX3RlbXA6IGl0ZW0uaWQgPT0gZGF0YT8uaWRcclxuICAgIH0pKTtcclxuICAgIHRoaXMuY29sdW1ucyA9IGRhdGEuY29sdW1ucztcclxuICAgIHtcclxuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplLFxyXG4gICAgICAgIHRoaXMuZm9udEZhaW1seSA9IGRhdGEuY29uZmlnLmZvbnRGYWltbHksXHJcbiAgICAgICAgZGF0YS5maWx0ZXJzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuX190eXBlbmFtZTtcclxuXHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5xdWVyeSkge1xyXG4gICAgICAgICAgICBkZWxldGUgZWxlbWVudC5xdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgdHlwZW9mIGVsZW1lbnQucXVlcnkgPT09ICdvYmplY3QnICYmXHJcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKGVsZW1lbnQucXVlcnkpLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnF1ZXJ5ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gdGhpcy5nbG9iYWxTZWFyY2ggPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcclxuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuaGVhZGVyVGV4dEZvbnRzU2l6ZSxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSBkYXRhLmNvbmZpZy5zZWxlY3RlZFRhYmxlTGF5b3V0LFxyXG4gICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZGF0YS5jb25maWcuc2hvd1ZlcnRpY2FsQm9yZGVyLFxyXG4gICAgICAgIHRoaXMuY3VycmVudElkRm9yVXBkYXRlUHJlc2V0ID0gZGF0YS5pZDtcclxuICAgICAgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUgPSBzdHJ1Y3R1cmVkQ2xvbmUoZGF0YSk7XHJcbiAgICAgIHRoaXMucHJlc2V0TmFtZSA9IGRhdGE/Lm5hbWU7XHJcbiAgICAgIHRoaXMucHJlc2V0RmlsdGVyID0gZGF0YT8uYWN0aXZlRmlsdGVycyB8fCBmYWxzZTtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnID0gZGF0YS5maWx0ZXJzO1xyXG4gICAgICBhd2FpdCB0aGlzLmFwcGx5RmlsdGVyb3B0aW9uTGlzdCgpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgZGF0YS5jb2x1bW5zID0gdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgICAgZGVsZXRlIGRhdGE/Ll9fdHlwZW5hbWU7XHJcbiAgICAgIGRlbGV0ZSBkYXRhPy5pc190ZW1wO1xyXG4gICAgICBkZWxldGUgZGF0YT8uY29uZmlnLl9fdHlwZW5hbWU7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YT8uaXNfZGVhZnVsdCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5hY3Rpb25QcmVzZXQoZGF0YSwgJ3NldFByZXNldCcpXHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgZGF0YTogZGF0YVxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6ICdzZWxlY3QnXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgc2F2ZVByZXNldChjb250cm9sPzogYW55KSB7XHJcbiAgICBpZiAoY29udHJvbD8uaW52YWxpZCkge1xyXG4gICAgICBjb250cm9sPy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRGaWx0ZXJIZWFkZXJzKHRoaXMuZmlsdGVyc0NvbmZpZywgdGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMucHJlc2V0RmlsdGVyID0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCA/IHRydWUgOiB0aGlzLnByZXNldEZpbHRlcjtcclxuICAgIGxldCBzZWxlY3RlZERhdGE6IGFueSA9IHRoaXMudGFibGVWaWV3LmZpbmQoKGVsZSkgPT4gZWxlLmlkID09IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpO1xyXG4gICAgbGV0IGNvbmZpZyA9IHtcclxuICAgICAgZm9udEZhaW1seTogdGhpcy5mb250RmFpbWx5LFxyXG4gICAgICBib2R5VGV4dEZvbnRzU2l6ZTogKyh0aGlzLmJvZHlUZXh0Rm9udHNTaXplIHx8IDE0KSxcclxuICAgICAgaGVhZGVyVGV4dEZvbnRzU2l6ZTogKyh0aGlzLmhlYWRlclRleHRGb250c1NpemUgfHwgMTQpLFxyXG4gICAgICBvZGRSb3dzQmFja2dyb3VuZENvbG9yOiB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID8gdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yIDogdW5kZWZpbmVkLFxyXG4gICAgICBzaG93VmVydGljYWxCb3JkZXI6IHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyLFxyXG4gICAgICBzZWxlY3RlZFRhYmxlTGF5b3V0OiB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQsXHJcbiAgICAgIGdsb2JhbFNlYXJjaDogdGhpcy50YWJsZVNlYXJjaCxcclxuICAgICAgZmlsdGVyTmFtZXM6IG5hbWVzLFxyXG4gICAgICB0b3RhbENvdW50OiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzLFxyXG4gICAgICByb3dTaGFkaW5nRW5hYmxlZDogdGhpcy5yb3dTaGFkaW5nRW5hYmxlZFxyXG5cclxuICAgIH1cclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICBuYW1lOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkID8gc2VsZWN0ZWREYXRhPy5uYW1lIDogdGhpcy5wcmVzZXROYW1lLFxyXG4gICAgICAgIGFjdGl2ZUZpbHRlcnM6IHRoaXMucHJlc2V0RmlsdGVyLFxyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5wcmVzZXRGaWx0ZXJcclxuICAgICAgICAgID8gdGhpcy5maWx0ZXJzQ29uZmlnPy5tYXAoKHsgX190eXBlbmFtZSwgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IF9fdHlwZW5hbWU6IF9faW5uZXIsIC4uLmNsZWFuUXVlcnkgfSA9IHF1ZXJ5IHx8IHt9O1xyXG4gICAgICAgICAgICByZXR1cm4geyAuLi5yZXN0LCBxdWVyeTogY2xlYW5RdWVyeSB9O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIDogW10sXHJcbiAgICAgICAgY29uZmlnOiBjb25maWcsXHJcbiAgICAgICAgaWQ6IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgfHwgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU/LmlkLFxyXG4gICAgICAgIGxvYWRpbmdDYWxsOiBjb250cm9sID09ICdtb3VzZVVwJyA/IGZhbHNlIDogdHJ1ZSxcclxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZVxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgfHwgIXRoaXMuaXNUYWJsZVByZXNldE5vdENoYW5nZWQgPyAndXBkYXRlUHJlc2V0JyA6ICdjcmVhdGVQcmVzZXQnXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBxdWVyeSxcclxuICAgICAgICAuLi5yZXN0LFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEZpbHRlckhlYWRlcnMoZmlsdGVyczogYW55W10sIGNvbHVtbnM6IGFueVtdKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1hdGNoZWRIZWFkZXJzID0gZmlsdGVyc1xyXG4gICAgICAubWFwKGYgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZChjID0+IGMuZmllbGQgPT09IGYuZmllbGQpO1xyXG4gICAgICAgIHJldHVybiBjb2x1bW4gPyBjb2x1bW4uaGVhZGVyIDogbnVsbDtcclxuICAgICAgfSlcclxuICAgICAgLmZpbHRlcihoZWFkZXIgPT4gISFoZWFkZXIpO1xyXG5cclxuICAgIHJldHVybiBtYXRjaGVkSGVhZGVycy5qb2luKCcsICcpO1xyXG4gIH1cclxuXHJcblxyXG4gIHRvZ2dsZVJvd1NoYWRpbmcoKSB7XHJcbiAgICB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID8gJyNmMWYxZjEnIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5vbkZvbnRDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlUYWJsZShpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcbiAgYWN0aXZlUm93OiBhbnlcclxuICBhY3RpdmVSb3dDb2w6IGFueTtcclxuXHJcbiAgLy8gVHJhY2sgZXhwYW5kZWQgY2VsbHMgYXMgYSBTZXQgb2YgdW5pcXVlIHJvdytjb2wgaWRlbnRpZmllcnNcclxuXHJcbiAgZ2V0Q2VsbEtleShyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke3RoaXMuZ2V0Um93SWQocm93KX1fJHtjb2w/LmZpZWxkfWA7XHJcbiAgfVxyXG5cclxuICBleHBhbmRlZENlbGxzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcclxuICBwcml2YXRlIHpDb3VudGVyID0gMjE7XHJcblxyXG4gIHNob3dEZXRhaWxzQm94ID0gZmFsc2U7XHJcblxyXG4gIHRvZ2dsZUV4cGFuZE9mTG9uZ0NlbGxUZXh0KFxyXG4gICAgcm93OiBhbnksXHJcbiAgICBjb2w6IGFueSxcclxuICAgIGNvbHVtbnM6IGFueVtdLFxyXG4gICAgZXhwYW5kV2hvbGVSb3cgPSBmYWxzZVxyXG4gICkge1xyXG4gICAgY29uc3QgZXhwYW5kQ2VsbHMgPSAodGFyZ2V0Um93OiBhbnkpID0+IHtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdpbWFnZScpIHJldHVybjtcclxuICAgICAgICBjb25zdCB0ZXh0ID0gdGFyZ2V0Um93W2MuZmllbGRdO1xyXG5cclxuICAgICAgICBpZiAoKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0Lmxlbmd0aCA+IDUwKSB8fCAoQXJyYXkuaXNBcnJheSh0ZXh0KSAmJiB0ZXh0Py5sZW5ndGggPiAxKSkge1xyXG4gICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRSb3dJZCh0YXJnZXRSb3cpICsgJy0nICsgYy5maWVsZDtcclxuICAgICAgICAgIHRoaXMuekNvdW50ZXIrKztcclxuICAgICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5zZXQoa2V5LCB0aGlzLnpDb3VudGVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgY29uc3QgY29sbGVjdEtleXNGb3JSb3cgPSAodGFyZ2V0Um93OiBhbnkpID0+IHtcclxuICAgICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdpbWFnZScpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgdGV4dCA9IHRhcmdldFJvd1tjLmZpZWxkXTtcclxuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQubGVuZ3RoID4gNTAgfHwgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dD8ubGVuZ3RoID4gMSkpIHtcclxuICAgICAgICAgIGtleXMucHVzaCh0aGlzLmdldFJvd0lkKHRhcmdldFJvdykgKyAnLScgKyBjLmZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4ga2V5cztcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGV4cGFuZFdob2xlUm93KSB7XHJcbiAgICAgIGxldCByb3dLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBjb25zdCB0ZXh0ID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbD8uZmllbGQpO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0ZXh0KSAmJiB0ZXh0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICByb3dLZXlzID0gY29sbGVjdEtleXNGb3JSb3cocm93KTtcclxuICAgICAgICByb3c/LmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByb3dLZXlzLnB1c2goLi4uY29sbGVjdEtleXNGb3JSb3coY2hpbGQpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByb3dLZXlzID0gY29sbGVjdEtleXNGb3JSb3cocm93KTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBhbGxFeHBhbmRlZCA9IHJvd0tleXMuZXZlcnkoayA9PiB0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKGspKTtcclxuICAgICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XHJcbiAgICAgIGlmICghYWxsRXhwYW5kZWQpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3cuY2hpbGRyZW4pICYmIHJvdy5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBleHBhbmRDZWxscyhyb3cpO1xyXG4gICAgICAgICAgcm93Py5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gZXhwYW5kQ2VsbHMoY2hpbGQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZXhwYW5kQ2VsbHMocm93KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Um93SWQocm93KSArICctJyArIGNvbC5maWVsZDtcclxuICAgICAgaWYgKGNvbC50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XHJcblxyXG4gICAgICBpZiAoIXRoaXMuZXhwYW5kZWRDZWxscy5oYXMoa2V5KSkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMuekNvdW50ZXIrKztcclxuICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuc2V0KGtleSwgdGhpcy56Q291bnRlcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZENlbGxzLmRlbGV0ZShrZXkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93RGV0YWlsc0JveCA9IGZhbHNlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNPcGVuVG9Ub3Aocm93KVxyXG4gICAgfSwgMCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBpc09wZW5Ub1RvcChyb3c6IGFueSkge1xyXG4gICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kYXRhLWdyaWQtYm9keS13cmFwcGVyJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xyXG4gICAgaWYgKCF3cmFwcGVyKSByZXR1cm4gZmFsc2U7XHJcbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaWQgPSAocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgKGNvbC5pZCB8fCBjb2wuX2lkKTtcclxuICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgICBpZiAoIWJveCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjb25zdCBib3hSZWN0ID0gYm94LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIGNvbnN0IGlzT3ZlcmZsb3dpbmdCb3R0b20gPSBib3hSZWN0LmJvdHRvbSA+IHdyYXBwZXJSZWN0LmJvdHRvbTtcclxuICAgICAgY29uc3QgaXNPdmVyZmxvd2luZ1RvcCA9IGJveFJlY3QudG9wIDwgd3JhcHBlclJlY3QudG9wO1xyXG4gICAgICBpZiAoaXNPdmVyZmxvd2luZ0JvdHRvbSAmJiAhaXNPdmVyZmxvd2luZ1RvcCkge1xyXG4gICAgICAgIGNvbnN0IGJveEhlaWdodCA9IGJveC5vZmZzZXRIZWlnaHQgfHwgMDtcclxuICAgICAgICBjb25zdCBvZmZzZXQgPSBib3hIZWlnaHQgKyA0O1xyXG4gICAgICAgIGJveC5zdHlsZS50b3AgPSBgJHstb2Zmc2V0fXB4YDtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYm94LnN0eWxlLmJvdHRvbSA9IGBhdXRvYDtcclxuICAgICAgICBib3guc3R5bGUudG9wID0gYDEwMCVgO1xyXG4gICAgICAgIGJveC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgwKWA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSlcclxuICAgIHRoaXMuc2hvd0RldGFpbHNCb3ggPSB0cnVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGlzRXhwYW5kZWQocm93OiBhbnksIGNvbDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZENlbGxzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0WkluZGV4KHJvdzogYW55LCBjb2w6IGFueSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZENlbGxzLmdldCh0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQpID8/IDIxO1xyXG4gIH1cclxuXHJcbiAgaXNPdmVyZmxvd2luZyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIGlmICghZWxlbWVudCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIGVsZW1lbnQuc2Nyb2xsV2lkdGggPiBlbGVtZW50LmNsaWVudFdpZHRoO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIFBpY3R1cmUgY2VsbCBMb2dpY1xyXG4gIGNvbG9yQ29tYmluYXRpb24gPSBbJ3BpYy1jb21iMScsICdwaWMtY29tYjInLCAncGljLWNvbWI0J107XHJcbiAgZ2V0RHluYW1pY0NsYXNzKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIW5hbWUpIHJldHVybiB0aGlzLmNvbG9yQ29tYmluYXRpb25bMF07XHJcbiAgICBjb25zdCBoYXNoID0gQXJyYXkuZnJvbShuYW1lKS5yZWR1Y2UoKGFjYywgY2hhcikgPT4gYWNjICsgY2hhci5jaGFyQ29kZUF0KDApLCAwKTtcclxuICAgIGNvbnN0IGluZGV4ID0gaGFzaCAlIHRoaXMuY29sb3JDb21iaW5hdGlvbj8ubGVuZ3RoO1xyXG4gICAgcmV0dXJuIHRoaXMuY29sb3JDb21iaW5hdGlvbltpbmRleF07XHJcbiAgfVxyXG5cclxuICBnZXRJbml0aWFscyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJ05BJztcclxuICAgIGNvbnN0IHBhcnRzID0gbmFtZS50cmltKCkuc3BsaXQoJyAnKTtcclxuICAgIHJldHVybiAocGFydHNbMF1bMF0gKyAocGFydHNbMV0/LlswXSB8fCAnJykpLnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYWN0aW9uSGlkZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgeFBvcyA9IDA7XHJcbiAgeVBvcyA9IDA7XHJcbiAgaXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgZGVhdGlsc0xpc3Q6IGFueTtcclxuICBvcGVuRXhwZW5kSW5kZXg6IGFueTtcclxuICBwb3NpdGlvbmVkWWV0ID0gZmFsc2U7XHJcblxyXG4gIG9uUmlnaHRDbGljayhldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQgfCBhbnksIGRlYXRpbHNMaXN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChkZWF0aWxzTGlzdD8uYWN0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9ucyA9IGRlYXRpbHNMaXN0LmFjdGlvbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoIShldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZGVhdGlsc0xpc3QuX192aXJ0dWFsSW5kZXggPT0gMCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMueFBvcyA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WCA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcclxuICAgIHRoaXMueVBvcyA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WSA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTtcclxuICAgIC8vIHRoaXMueFBvcyA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICAvLyB0aGlzLnlQb3MgPSBldmVudC5jbGllbnRZO1xyXG4gICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgdGhpcy5wb3NpdGlvbmVkWWV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmRlYXRpbHNMaXN0ID0gZGVhdGlsc0xpc3Q7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgbWVudUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGV4dC1tZW51JykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghbWVudUVsZW1lbnQpIHJldHVybjtcclxuICAgICAgY29uc3QgbWVudVdpZHRoID0gbWVudUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51RWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICAgIGxldCB4ID0gKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkgPyBldmVudC5jbGllbnRYIDogZXZlbnQudG91Y2hlc1swXS5jbGllbnRYOyAvL2V2ZW50LmNsaWVudFg7XHJcbiAgICAgIGxldCB5ID0gKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkgPyBldmVudC5jbGllbnRZIDogZXZlbnQudG91Y2hlc1swXS5jbGllbnRZOyAvL2V2ZW50LmNsaWVudFk7XHJcbiAgICAgIGlmICh4ICsgbWVudVdpZHRoID4gdmlld3BvcnRXaWR0aCkge1xyXG4gICAgICAgIHggPSB2aWV3cG9ydFdpZHRoIC0gbWVudVdpZHRoIC0gMTA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHkgKyBtZW51SGVpZ2h0ID4gdmlld3BvcnRIZWlnaHQpIHtcclxuICAgICAgICB5ID0gdmlld3BvcnRIZWlnaHQgLSBtZW51SGVpZ2h0IC0gMTA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy54UG9zID0geDtcclxuICAgICAgdGhpcy55UG9zID0geTtcclxuICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbmVkWWV0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHNlbmRPYmogPSB7XHJcbiAgICAgIG9iajogdGhpcy5kZWF0aWxzTGlzdCxcclxuICAgICAgZXZlbnRUeXBlOiBhY3Rpb24sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5wb3NpdGlvbmVkWWV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHNlbmRPYmopO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uVmVyaWZ5Q2xpY2sodHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0ZXh0ID0gdHlwZT8udG9Mb3dlckNhc2UoKTtcclxuICAgIGlmKHRleHQgPT0gJ2FyY2hpdmUnIHx8IHRleHQgPT0gJ3VuYXJjaGl2ZSdcclxuICAgICAgLy8gfHwgdGV4dCA9PSAnZGVsZXRlJyB8fCB0ZXh0ID09ICdyZXN0b3JlJyB8fCB0ZXh0ID09ICdyZW1vdmUnIHx8IHRleHQgPT0gJ2RlYWN0aXZhdGUnIHx8IHRleHQgPT0gJ2FjdGl2YXRlJyB8fCB0ZXh0ID09ICdibG9jaycgfHwgdGV4dCA9PSAndW5ibG9jaydcclxuICAgICAgLy8gfHwgdGV4dCA9PSAnZW5hYmxlJyB8fCB0ZXh0ID09ICdkaXNhYmxlJyB8fCB0ZXh0ID09ICdhcHByb3ZlJyB8fCB0ZXh0ID09ICdyZWplY3QnIHx8IHRleHQgPT0gJ3B1Ymxpc2gnIHx8IHRleHQgPT0gJ3VucHVibGlzaCcgfHwgdGV4dCA9PSAnbG9jaycgfHwgdGV4dCA9PSAndW5sb2NrJyB8fCB0ZXh0ID09ICdjb21wbGV0ZScgfHwgdGV4dCA9PSAnaW5jb21wbGV0ZSdcclxuICAgICAgLy8gfHwgdGV4dCA9PSAnc2VuZCB0byByZXZpZXcnIHx8IHRleHQgPT0gJ21hcmsgYXMgcGFpZCcgfHwgdGV4dCA9PSAnbWFyayBhcyB1bnBhaWQnIHx8IHRleHQgPT0gJ2Z1bGZpbGwnIHx8IHRleHQgPT0gJ3VuZnVsZmlsbCcgfHwgdGV4dCA9PSAncmVmdW5kJyB8fCB0ZXh0ID09ICdjYW5jZWwnIHx8IHRleHQgPT0gJ3Jlc2VuZCcgfHwgdGV4dCA9PSAnY2hhcmdlYmFjaydcclxuICAgICAgLy8gfHwgdGV4dCA9PSAnZGlzcHV0ZScgfHwgdGV4dCA9PSAnZXNjYWxhdGUnIHx8IHRleHQgPT0gJ2RlZXNjYWxhdGUnIHx8IHRleHQgPT0gJ2ZsYWcnIHx8IHRleHQgPT0gJ3VuZmxhZycgfHwgdGV4dCA9PSAndmVyaWZ5JyB8fCB0ZXh0ID09ICd1bnZlcmlmeScgfHwgdGV4dCA9PSAnc3Vic2NyaWJlJyB8fCB0ZXh0ID09ICd1bnN1YnNjcmliZScgfHwgdGV4dCA9PSAnZm9sbG93JyB8fCB0ZXh0ID09ICd1bmZvbGxvdydcclxuICAgICAgLy8gfHwgdGV4dCA9PSAnbGlrZScgfHwgdGV4dCA9PSAndW5saWtlJyB8fCB0ZXh0ID09ICdzaGFyZScgfHwgdGV4dCA9PSAndW5zaGFyZScgfHwgdGV4dCA9PSAnY29tbWVudCcgfHwgdGV4dCA9PSAndW5jb21tZW50JyB8fCB0ZXh0ID09ICd0YWcnIHx8IHRleHQgPT0gJ3VudGFnJyB8fCB0ZXh0ID09ICdhc3NpZ24nIHx8IHRleHQgPT0gJ3VuYXNzaWduJyB8fCB0ZXh0ID09ICdsaW5rJyB8fCB0ZXh0ID09ICd1bmxpbmsnXHJcbiAgICAgIC8vIHx8IHRleHQgPT0gJ3N5bmMnIHx8IHRleHQgPT0gJ3Vuc3luYycgfHwgdGV4dCA9PSAnYmFja3VwJyB8fCB0ZXh0ID09ICdyZXN0b3JlIGJhY2t1cCcgfHwgdGV4dCA9PSAnbWlncmF0ZScgfHwgdGV4dCA9PSAnaW1wb3J0JyB8fCB0ZXh0ID09ICdleHBvcnQnIHx8IHRleHQgPT0gJ2dlbmVyYXRlIHJlcG9ydCcgfHwgdGV4dCA9PSAnZG93bmxvYWQgcmVwb3J0JyB8fCB0ZXh0ID09ICd2aWV3IGRldGFpbHMnXHJcbiAgICAgIC8vIHx8IHRleHQgPT0gJ2VkaXQgZGV0YWlscycgfHwgdGV4dCA9PSAndXBkYXRlIGRldGFpbHMnIHx8IHRleHQgPT0gJ2NoYW5nZSBzdGF0dXMnIHx8IHRleHQgPT0gJ3Jlc2V0IHBhc3N3b3JkJyB8fCB0ZXh0ID09ICdzZW5kIG5vdGlmaWNhdGlvbicgfHwgdGV4dCA9PSAnc2NoZWR1bGUnIHx8IHRleHQgPT0gJ3Jlc2NoZWR1bGUnIHx8IHRleHQgPT0gJ2NhbmNlbCBzY2hlZHVsZScgfHwgdGV4dCA9PSAnc3RhcnQnIHx8IHRleHQgPT0gJ3N0b3AnIHx8IHRleHQgPT0gJ3BhdXNlJyB8fCB0ZXh0ID09ICdyZXN1bWUnXHJcbiAgICApe1xyXG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uU3RhdGUodGhpcy50YWJsZVR5cGUpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5jbGVhcigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaWRzQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIGNvbnN0IGFycmF5T2ZPYmplY3RzV2l0aFRhYmxlVHlwZTogYW55W10gPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICBhcnJheU9mT2JqZWN0c1dpdGhUYWJsZVR5cGUucHVzaCh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG9iajogaWRzQXJyYXksXHJcbiAgICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZSxcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiB0eXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoc2VuZE9iailcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0Q2VsbENsYXNzZXMoY29sdW1uOiBhbnksIHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSB8fCAhY29sdW1uPy5maWVsZCB8fCBjb2x1bW4/LmNlbGxSZW5kZXJlcikgcmV0dXJuICcnO1xyXG5cclxuICAgIGxldCB2YWw6IGFueSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB2YWx1ZT8udmFsdWUgPz8gdmFsdWUgOiB2YWx1ZTtcclxuICAgIGNvbnN0IGZpZWxkID0gY29sdW1uLmZpZWxkLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgaWYgKGZpZWxkID09PSAnZHVlX2RhdGUnKSB7XHJcbiAgICAgIGNvbnN0IGR1ZURhdGUgPSBuZXcgRGF0ZSh2YWwpO1xyXG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IHRvZGF5VVRDID0gRGF0ZS5VVEModG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgdG9kYXkuZ2V0RGF0ZSgpKTtcclxuICAgICAgY29uc3QgZHVlVVRDID0gRGF0ZS5VVEMoZHVlRGF0ZS5nZXRGdWxsWWVhcigpLCBkdWVEYXRlLmdldE1vbnRoKCksIGR1ZURhdGUuZ2V0RGF0ZSgpKTtcclxuXHJcbiAgICAgIGlmIChkdWVVVEMgPCB0b2RheVVUQykge1xyXG4gICAgICAgIHJldHVybiAndGV4dC1kYW5nZXInO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2UgaWYoZHVlVVRDID09PSB0b2RheVVUQyl7XHJcbiAgICAgIC8vICAgcmV0dXJuICd0ZXh0LXdhcm5pbmcnO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbnN0IHN0YXR1cyA9IHZhbD8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKFxyXG4gICAgICBmaWVsZCA9PT0gJ3N0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdhY2NvdW50X3N0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdhdmFpbHN0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdpc19jdXN0b21fZ3JhZGUnXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIFNUQVRVU0VTX0JBREdFX01BUFtzdGF0dXNdIHx8ICdiYWRnZSBiYWRnZS1zZWNvbmRhcnknO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxuICByZW1vdmVDb2x1bW5GaWx0ZXJGcm9tQ29sdW1uKGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbikgcmV0dXJuXHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcclxuICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xyXG4gICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgIHNlY29uZF9jb25kaXRpb246IG51bGwsXHJcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KChmOiBhbnkpID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XHJcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcXVlcnksXHJcbiAgICAgICAgLi4ucmVzdCxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMsXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gY2xlYW5lZEZpbHRlcmVkQ29sdW1ucztcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBvblNpZGVNZW51Q29sdW1uc1Zpc2liaWxpdHlDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgfVxyXG5cclxuICBjbGVhbkZpbHRlcmRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBxdWVyeSxcclxuICAgICAgICAuLi5yZXN0LFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRDc3YodHlwZTogJ2NzdicgfCAneGxzeCcpIHtcclxuICAgIGNvbnN0IGNvbmZpZzogYW55ID0ge1xyXG4gICAgICBoZWFkZXJCZ0NvbG9yOiB0aGlzLmhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgaGVhZGVyVGV4dENvbG9yOiB0aGlzLmhlYWRlclRleHRDb2xvcixcclxuICAgICAgYm9keVRleHRDb2xvcjogJyMwMDAwMDAnLFxyXG4gICAgICBmb250RmFtaWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxyXG4gICAgICB6b29tU2NhbGU6IDEyNSxcclxuICAgICAgaGVhZGVyUm93SGVpZ2h0OiAzMFxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW5hYmxlRXhwb3J0KSB7XHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IGRkID0gU3RyaW5nKG5vdy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIGNvbnN0IG1tID0gU3RyaW5nKG5vdy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgeXl5eSA9IG5vdy5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBjb25zdCBISCA9IFN0cmluZyhub3cuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgTU0gPSBTdHJpbmcobm93LmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkID1cclxuICAgICAgICBgJHt0aGlzLnRhYmxlVHlwZX1fJHtkZH0tJHttbX0tJHt5eXl5fV8ke0hIfS0ke01NfWA7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhmb3JtYXR0ZWQpO1xyXG5cclxuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydERhdGEodGhpcy5jb2x1bW5zLCB0aGlzLmRhdGFTZXQsIGZvcm1hdHRlZCwgdHlwZSwgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMsIGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGZpbHRlcnM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ2Rvd25sb2FkQ3N2J1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT0gJ3hsc3gnKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuXHJcbiAgfVxyXG5cclxuICBvbkZvbnRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplO1xyXG4gICAgY29uc3QgY29uZmlnID0ge1xyXG4gICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiB0aGlzLmJvZHlUZXh0Rm9udHNTaXplLFxyXG4gICAgICBoZWFkZXJUZXh0Rm9udHNTaXplOiB0aGlzLmhlYWRlclRleHRGb250c1NpemUsXHJcbiAgICAgIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQsXHJcbiAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIsXHJcbiAgICAgIHNlbGVjdGVkVGFibGVMYXlvdXQ6IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCxcclxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoXHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgZGF0YTogY29uZmlnXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ2NvbmZpZydcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBvbkdsb2JhbFNlYXJjaCgpIHtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICB0YWJsZVNlYXJjaDogdGhpcy50YWJsZVNlYXJjaFxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6ICdzZWFyY2gnXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcclxuICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaElucHV0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ1NlYXJjaCB2YWx1ZTonLCB2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHZhbHVlID09PSAnJykge1xyXG4gICAgICB0aGlzLnRhYmxlU2VhcmNoID0gJyc7XHJcbiAgICAgIHRoaXMub25HbG9iYWxTZWFyY2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpOiBhbnkge1xyXG4gICAgaWYgKCF0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSByZXR1cm4gdHJ1ZVxyXG4gICAgY29uc3QgZmluZERlZmF1bHRGaWx0ZXIgPSB0aGlzLnRhYmxlVmlldz8uZmluZCgoZWxlOiBhbnkpID0+IGVsZT8uaWQgPT0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCk7XHJcbiAgICBjb25zdCBub3JtYWxpemVGaWx0ZXJzID0gKGZpbHRlcnM6IGFueVtdIHwgdW5kZWZpbmVkKTogYW55W10gPT4ge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHJldHVybiBbXTtcclxuICAgICAgY29uc3QgY2xvbmVkID0gZmlsdGVycy5tYXAoZiA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZiA/PyB7fSkpO1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLl9pZHMpKSBpdGVtLl9pZHMgPSBbXTtcclxuICAgICAgICBpdGVtLl9pZHMgPSBpdGVtLl9pZHMuc2xpY2UoKS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBhID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYiA9PT0gJ251bWJlcicpIHJldHVybiBhIC0gYjtcclxuICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLnF1ZXJ5ID09PSBudWxsKSB7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbS5xdWVyeSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLnF1ZXJ5Ll9pZHMpKSBpdGVtLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgICAgICAgIGl0ZW0ucXVlcnkuX2lkcyA9IGl0ZW0ucXVlcnkuX2lkcy5zbGljZSgpLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGIgPT09ICdudW1iZXInKSByZXR1cm4gYSAtIGI7XHJcbiAgICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICB9KTtcclxuICAgICAgY2xvbmVkLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmEgPSAoYS5maWVsZCB8fCAnJykgKyAnfCcgKyAoYS50eXBlIHx8ICcnKTtcclxuICAgICAgICBjb25zdCBmYiA9IChiLmZpZWxkIHx8ICcnKSArICd8JyArIChiLnR5cGUgfHwgJycpO1xyXG4gICAgICAgIHJldHVybiBmYS5sb2NhbGVDb21wYXJlKGZiKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gY2xvbmVkO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBkZWVwRXF1YWwgPSAoYTogYW55LCBiOiBhbnkpOiBib29sZWFuID0+IHtcclxuICAgICAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCBhID09PSBudWxsIHx8IHR5cGVvZiBiICE9PSAnb2JqZWN0JyB8fCBiID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpICE9PSBBcnJheS5pc0FycmF5KGIpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xyXG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICghZGVlcEVxdWFsKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xyXG4gICAgICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xyXG4gICAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXNBKSB7XHJcbiAgICAgICAgaWYgKCFrZXlzQi5pbmNsdWRlcyhrZXkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZEEgPSBub3JtYWxpemVGaWx0ZXJzKGZpbmREZWZhdWx0RmlsdGVyPy5maWx0ZXJzKTtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWRCID0gbm9ybWFsaXplRmlsdGVycyh0aGlzLmZpbHRlcnNDb25maWcpO1xyXG4gICAgY29uc3QgaXNTYW1lID0gZGVlcEVxdWFsKG5vcm1hbGl6ZWRBLCBub3JtYWxpemVkQik7XHJcbiAgICByZXR1cm4gaXNTYW1lO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gQ2VsbCBTZWxlY3Rpb24gSW1wbGVtZW50ZWQgSGVyZSBJbXBsZW1lbnRlZCBIZXJlXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICBzZWxlY3RlZENlbGxzOiBhbnlbXSA9IFtdO1xyXG4gIHNlbGVjdGVkS2V5czogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XHJcbiAgc2VsZWN0aW9uU3RhcnQ6IGFueSA9IG51bGw7XHJcbiAgaXNTZWxlY3RpbmcgPSBmYWxzZTtcclxuICBzdGFydFNlbGVjdGlvbihcclxuICAgIHJvd0luZGV4OiBudW1iZXIsXHJcbiAgICBjb2xJbmRleDogbnVtYmVyLFxyXG4gICAgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsXHJcbiAgICBmaWVsZDogc3RyaW5nLFxyXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQsXHJcbiAgICBzZWN0aW9uOiBzdHJpbmdcclxuICApIHtcclxuICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzYWZlU3VifS0ke2ZpZWxkfWA7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHsgcm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleDogc2FmZVN1YiwgZmllbGQsIGtleSB9O1xyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEtleXMuYWRkKGtleSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2VsbHMgPSBbdGhpcy5zZWxlY3Rpb25TdGFydF07XHJcbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5lbmRTZWxlY3Rpb24oKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIH07XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKClcclxuICB9XHJcblxyXG5cclxuICBleHRlbmRTZWxlY3Rpb24oXHJcbiAgICByb3dJbmRleDogbnVtYmVyLFxyXG4gICAgY29sSW5kZXg6IG51bWJlcixcclxuICAgIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgZmllbGQ6IHN0cmluZyxcclxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxyXG4gICAgc2VjdGlvbjogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTZWxlY3RpbmcgfHwgIXRoaXMuc2VsZWN0aW9uU3RhcnQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICBjb25zdCB0YXJnZXRTdWJDb2xJbmRleCA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBuZXdLZXlzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcclxuICAgIGNvbnN0IG5ld0NlbGxzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgbWluUm93ID0gTWF0aC5taW4oc3RhcnQucm93SW5kZXgsIHJvd0luZGV4KTtcclxuICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KHN0YXJ0LnJvd0luZGV4LCByb3dJbmRleCk7XHJcbiAgICBjb25zdCBjb2x1bW5zVG9TZWxlY3QgPSB0aGlzLmdldENvbHVtblNlbGVjdGlvblJhbmdlKHN0YXJ0LmNvbEluZGV4LCBjb2xJbmRleCwgc3RhcnQuc3ViQ29sSW5kZXgsIHRhcmdldFN1YkNvbEluZGV4KTtcclxuXHJcbiAgICBmb3IgKGxldCByID0gbWluUm93OyByIDw9IG1heFJvdzsgcisrKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sSW5mbyBvZiBjb2x1bW5zVG9TZWxlY3QpIHtcclxuICAgICAgICBjb25zdCBrID0gYCR7cn0tJHtjb2xJbmZvLmNvbEluZGV4fS0ke2NvbEluZm8uc3ViQ29sSW5kZXh9LSR7c2VjdGlvbn1gO1xyXG4gICAgICAgIG5ld0tleXMuYWRkKGspO1xyXG4gICAgICAgIG5ld0NlbGxzLnB1c2goe1xyXG4gICAgICAgICAgcm93SW5kZXg6IHIsXHJcbiAgICAgICAgICBjb2xJbmRleDogY29sSW5mby5jb2xJbmRleCxcclxuICAgICAgICAgIHN1YkNvbEluZGV4OiBjb2xJbmZvLnN1YkNvbEluZGV4LFxyXG4gICAgICAgICAgZmllbGQsXHJcbiAgICAgICAgICBrZXk6IGtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRLZXlzID0gbmV3S2V5cztcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxscyA9IG5ld0NlbGxzO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgLy8gQWRkIGF1dG8tc2Nyb2xsaW5nIGxvZ2ljXHJcbiAgICB0aGlzLmhhbmRsZUNlbGxBdXRvU2Nyb2xsKGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIGdldENvbHVtblNlbGVjdGlvblJhbmdlKFxyXG4gICAgc3RhcnRDb2w6IG51bWJlcixcclxuICAgIGVuZENvbDogbnVtYmVyLFxyXG4gICAgc3RhcnRTdWI6IG51bWJlcixcclxuICAgIGVuZFN1YjogbnVtYmVyXHJcbiAgKTogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH1bXSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9W10gPSBbXTtcclxuICAgIGNvbnN0IG1pbkNvbCA9IE1hdGgubWluKHN0YXJ0Q29sLCBlbmRDb2wpO1xyXG4gICAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnRDb2wsIGVuZENvbCk7XHJcblxyXG4gICAgY29uc3QgaXNMZWZ0VG9SaWdodCA9IHN0YXJ0Q29sIDw9IGVuZENvbDtcclxuICAgIGZvciAobGV0IGMgPSBtaW5Db2w7IGMgPD0gbWF4Q29sOyBjKyspIHtcclxuICAgICAgY29uc3Qgc3ViQ29sQ291bnQgPSB0aGlzLmdldFN1YkNvbHVtbkNvdW50KGMpO1xyXG5cclxuICAgICAgaWYgKGMgPT09IHN0YXJ0Q29sICYmIGMgPT09IGVuZENvbCkge1xyXG4gICAgICAgIGNvbnN0IG1pblN1YiA9IE1hdGgubWluKHN0YXJ0U3ViLCBlbmRTdWIpO1xyXG4gICAgICAgIGNvbnN0IG1heFN1YiA9IE1hdGgubWF4KHN0YXJ0U3ViLCBlbmRTdWIpO1xyXG4gICAgICAgIGZvciAobGV0IHMgPSBtaW5TdWI7IHMgPD0gbWF4U3ViICYmIHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYyA9PT0gc3RhcnRDb2wpIHtcclxuICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgcyA9IHN0YXJ0U3ViOyBzIDwgc3ViQ29sQ291bnQ7IHMrKykge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPD0gc3RhcnRTdWIgJiYgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGMgPT09IGVuZENvbCkge1xyXG4gICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0KSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8PSBlbmRTdWIgJiYgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IHMgPSBlbmRTdWI7IHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBnZXRTdWJDb2x1bW5Db3VudChjb2xJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGlmICghdGhpcy5jb2x1bW5zIHx8IGNvbEluZGV4IDwgMCB8fCBjb2xJbmRleCA+PSB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zW2NvbEluZGV4XTtcclxuICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDE7XHJcbiAgfVxyXG4gIGlzR3JvdXBDb2x1bW4oY29sSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3ViQ29sdW1uQ291bnQoY29sSW5kZXgpID4gMTtcclxuICB9XHJcbiAgZW5kU2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdG9wQXV0b1Njcm9sbCgpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKCk7XHJcbiAgfVxyXG4gIGlzU2VsZWN0ZWQoXHJcbiAgICByb3dJbmRleDogbnVtYmVyLFxyXG4gICAgY29sSW5kZXg6IG51bWJlcixcclxuICAgIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgZmllbGQ6IHN0cmluZyxcclxuICAgIHNlY3Rpb246IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzYWZlU3VifS0ke3NlY3Rpb259YDtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoa2V5KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHNlbGVjdGlvbkJvdW5kczoge1xyXG4gICAgdG9wOiBudW1iZXIgfCBudWxsO1xyXG4gICAgYm90dG9tOiBudW1iZXIgfCBudWxsO1xyXG4gICAgbGVmdDogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH0gfCBudWxsO1xyXG4gICAgcmlnaHQ6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9IHwgbnVsbDtcclxuICB9ID0geyB0b3A6IG51bGwsIGJvdHRvbTogbnVsbCwgbGVmdDogbnVsbCwgcmlnaHQ6IG51bGwgfTtcclxuXHJcbiAgdXBkYXRlU2VsZWN0aW9uQm91bmRhcmllcygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uQm91bmRzID0geyB0b3A6IG51bGwsIGJvdHRvbTogbnVsbCwgbGVmdDogbnVsbCwgcmlnaHQ6IG51bGwgfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBhbGwgdW5pcXVlIHJvdyBpbmRpY2VzIGFuZCBmaW5kIG1pbi9tYXhcclxuICAgIGNvbnN0IHJvd0luZGljZXMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkQ2VsbHMubWFwKGNlbGwgPT4gY2VsbC5yb3dJbmRleCkpXTtcclxuICAgIHRoaXMuc2VsZWN0aW9uQm91bmRzLnRvcCA9IE1hdGgubWluKC4uLnJvd0luZGljZXMpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Cb3VuZHMuYm90dG9tID0gTWF0aC5tYXgoLi4ucm93SW5kaWNlcyk7XHJcblxyXG4gICAgLy8gRm9yIGxlZnQvcmlnaHQgYm91bmRhcmllcywgd2UgbmVlZCB0byBjb25zaWRlciBib3RoIGNvbEluZGV4IGFuZCBzdWJDb2xJbmRleFxyXG4gICAgY29uc3QgbGVmdE1vc3QgPSB0aGlzLmZpbmRMZWZ0TW9zdENlbGwoKTtcclxuICAgIGNvbnN0IHJpZ2h0TW9zdCA9IHRoaXMuZmluZFJpZ2h0TW9zdENlbGwoKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcy5sZWZ0ID0gbGVmdE1vc3Q7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcy5yaWdodCA9IHJpZ2h0TW9zdDtcclxuICB9XHJcbiAgZmluZExlZnRNb3N0Q2VsbCgpOiB7IGNvbEluZGV4OiBudW1iZXI7IHN1YkNvbEluZGV4OiBudW1iZXIgfSB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDZWxscy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IG1pbkNvbEluZGV4ID0gTWF0aC5taW4oLi4udGhpcy5zZWxlY3RlZENlbGxzLm1hcChjZWxsID0+IGNlbGwuY29sSW5kZXgpKTtcclxuICAgIGNvbnN0IGxlZnRDb2xDZWxscyA9IHRoaXMuc2VsZWN0ZWRDZWxscy5maWx0ZXIoY2VsbCA9PiBjZWxsLmNvbEluZGV4ID09PSBtaW5Db2xJbmRleCk7XHJcbiAgICBjb25zdCBtaW5TdWJDb2xJbmRleCA9IE1hdGgubWluKC4uLmxlZnRDb2xDZWxscy5tYXAoY2VsbCA9PiBjZWxsLnN1YkNvbEluZGV4KSk7XHJcblxyXG4gICAgcmV0dXJuIHsgY29sSW5kZXg6IG1pbkNvbEluZGV4LCBzdWJDb2xJbmRleDogbWluU3ViQ29sSW5kZXggfTtcclxuICB9XHJcbiAgZmluZFJpZ2h0TW9zdENlbGwoKTogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH0gfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBtYXhDb2xJbmRleCA9IE1hdGgubWF4KC4uLnRoaXMuc2VsZWN0ZWRDZWxscy5tYXAoY2VsbCA9PiBjZWxsLmNvbEluZGV4KSk7XHJcbiAgICBjb25zdCByaWdodENvbENlbGxzID0gdGhpcy5zZWxlY3RlZENlbGxzLmZpbHRlcihjZWxsID0+IGNlbGwuY29sSW5kZXggPT09IG1heENvbEluZGV4KTtcclxuICAgIGNvbnN0IG1heFN1YkNvbEluZGV4ID0gTWF0aC5tYXgoLi4ucmlnaHRDb2xDZWxscy5tYXAoY2VsbCA9PiBjZWxsLnN1YkNvbEluZGV4KSk7XHJcblxyXG4gICAgcmV0dXJuIHsgY29sSW5kZXg6IG1heENvbEluZGV4LCBzdWJDb2xJbmRleDogbWF4U3ViQ29sSW5kZXggfTtcclxuICB9XHJcbiAgaXNUb3BCb3JkZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEtleXMuaGFzKGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3NhZmVTdWJ9LSR7c2VjdGlvbn1gKTtcclxuICAgIHJldHVybiBpc1NlbGVjdGVkICYmIHRoaXMuc2VsZWN0aW9uQm91bmRzLnRvcCAhPT0gbnVsbCAmJiByb3dJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMudG9wO1xyXG4gIH1cclxuICBpc0JvdHRvbUJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMuYm90dG9tICE9PSBudWxsICYmIHJvd0luZGV4ID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5ib3R0b207XHJcbiAgfVxyXG4gIGlzTGVmdEJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdCAhPT0gbnVsbCAmJlxyXG4gICAgICBjb2xJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdC5jb2xJbmRleCAmJlxyXG4gICAgICBzYWZlU3ViID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5sZWZ0LnN1YkNvbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgaXNSaWdodEJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMucmlnaHQgIT09IG51bGwgJiZcclxuICAgICAgY29sSW5kZXggPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLnJpZ2h0LmNvbEluZGV4ICYmXHJcbiAgICAgIHNhZmVTdWIgPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLnJpZ2h0LnN1YkNvbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgaXNUb3BMZWZ0Q29ybmVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzVG9wQm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pICYmIHRoaXMuaXNMZWZ0Qm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaXNUb3BSaWdodENvcm5lcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1RvcEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKSAmJiB0aGlzLmlzUmlnaHRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbik7XHJcbiAgfVxyXG5cclxuICBpc0JvdHRvbUxlZnRDb3JuZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNCb3R0b21Cb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbikgJiYgdGhpcy5pc0xlZnRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbik7XHJcbiAgfVxyXG5cclxuICBpc0JvdHRvbVJpZ2h0Q29ybmVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzQm90dG9tQm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pICYmIHRoaXMuaXNSaWdodEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKTtcclxuICB9XHJcblxyXG5cclxuICBjZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgc2Nyb2xsU3BlZWQgPSAxNTA7XHJcbiAgcHJpdmF0ZSBzY3JvbGxNYXJnaW4gPSAzMDtcclxuICBoYW5kbGVDZWxsQXV0b1Njcm9sbChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCk7XHJcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBob3Jpem9udGFsQ29udGFpbmVyID0gdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgdmVydGljYWxDb250YWluZXIgPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghaG9yaXpvbnRhbENvbnRhaW5lciB8fCAhdmVydGljYWxDb250YWluZXIpIHJldHVybjtcclxuICAgIGNvbnN0IGhvcml6b250YWxSZWN0ID0gaG9yaXpvbnRhbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG1vdXNlWCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICBjb25zdCB2ZXJ0aWNhbFJlY3QgPSB2ZXJ0aWNhbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG1vdXNlWSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICBjb25zdCBuZWFyVG9wID0gbW91c2VZIC0gdmVydGljYWxSZWN0LnRvcCA8IHRoaXMuc2Nyb2xsTWFyZ2luO1xyXG4gICAgY29uc3QgbmVhckJvdHRvbSA9IHZlcnRpY2FsUmVjdC5ib3R0b20gLSBtb3VzZVkgPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGNvbnN0IG5lYXJMZWZ0ID0gbW91c2VYIC0gaG9yaXpvbnRhbFJlY3QubGVmdCA8IHRoaXMuc2Nyb2xsTWFyZ2luO1xyXG4gICAgY29uc3QgbmVhclJpZ2h0ID0gaG9yaXpvbnRhbFJlY3QucmlnaHQgLSBtb3VzZVggPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGxldCBzY3JvbGxYID0gMDtcclxuICAgIGxldCBzY3JvbGxZID0gMDtcclxuICAgIGlmIChuZWFyVG9wKSBzY3JvbGxZID0gLXRoaXMuc2Nyb2xsU3BlZWQ7XHJcbiAgICBpZiAobmVhckJvdHRvbSkgc2Nyb2xsWSA9IHRoaXMuc2Nyb2xsU3BlZWQ7XHJcbiAgICBpZiAobmVhckxlZnQpIHNjcm9sbFggPSAtdGhpcy5zY3JvbGxTcGVlZDtcclxuICAgIGlmIChuZWFyUmlnaHQpIHNjcm9sbFggPSB0aGlzLnNjcm9sbFNwZWVkO1xyXG4gICAgaWYgKHNjcm9sbFggIT09IDAgfHwgc2Nyb2xsWSAhPT0gMCkge1xyXG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25BdXRvU2Nyb2xsSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHNjcm9sbFggIT09IDApIHtcclxuICAgICAgICAgIGhvcml6b250YWxDb250YWluZXIuc2Nyb2xsQnkoc2Nyb2xsWCwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzY3JvbGxZICE9PSAwKSB7XHJcbiAgICAgICAgICB2ZXJ0aWNhbENvbnRhaW5lci5zY3JvbGxCeSgwLCBzY3JvbGxZKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcEF1dG9TY3JvbGwoKSB7XHJcbiAgICBpZiAodGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsKTtcclxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyBSb3cgU2VsZWN0aW9uIGZyb20gdGhlIEluZGV4aW5nIEltcGxlbWVudGVkIEhlcmVcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gIHJvd1NlbGVjdGVkSW5kZXhlczogU2V0PG51bWJlcj4gPSBuZXcgU2V0KCk7XHJcbiAgcm93U2VsZWN0aW5nID0gZmFsc2U7XHJcbiAgcm93U2VsZWN0aW9uU3RhcnRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgYXV0b1Njcm9sbEludGVydmFsOiBhbnkgPSBudWxsO1xyXG5cclxuICBnZXQgZmlyc3RTZWxlY3RlZFJvdygpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplID09PSAwKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBNYXRoLm1pbiguLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyk7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdFNlbGVjdGVkUm93KCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemUgPT09IDApIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLnRoaXMucm93U2VsZWN0ZWRJbmRleGVzKTtcclxuICB9XHJcblxyXG5cclxuICBvblJvd01vdXNlRG93bihpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMucm93U2VsZWN0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5hZGQoaW5kZXgpO1xyXG4gICAgdGhpcy5hY3RpdmVDZWxsID0gJyc7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgY29uc3QgbW91c2VNb3ZlSGFuZGxlciA9IChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLmhhbmRsZUF1dG9TY3JvbGwoZSk7XHJcbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5vblJvd01vdXNlVXAoKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XHJcbiAgICAgIGlmICh0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKTtcclxuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dNb3VzZU92ZXIoaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5yb3dTZWxlY3RpbmcgfHwgdGhpcy5yb3dTZWxlY3Rpb25TdGFydEluZGV4ID09PSBudWxsKSByZXR1cm47XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbih0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcclxuICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCwgaW5kZXgpO1xyXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmFkZChpKTtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKFsuLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlc10pO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dNb3VzZVVwKCkge1xyXG4gICAgdGhpcy5yb3dTZWxlY3RpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCA9IG51bGw7XHJcbiAgfVxyXG4gIGhhbmRsZUF1dG9TY3JvbGwoZTogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCFjb250YWluZXIpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgZWRnZVNpemUgPSA0MFxyXG4gICAgbGV0IHNjcm9sbEFtb3VudCA9IDA7XHJcblxyXG4gICAgaWYgKGUuY2xpZW50WSA8IHJlY3QudG9wICsgZWRnZVNpemUpIHtcclxuICAgICAgc2Nyb2xsQW1vdW50ID0gLTE1MDtcclxuICAgIH0gZWxzZSBpZiAoZS5jbGllbnRZID4gcmVjdC5ib3R0b20gLSBlZGdlU2l6ZSkge1xyXG4gICAgICBzY3JvbGxBbW91bnQgPSAxNTA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNjcm9sbEFtb3VudCAhPT0gMCkge1xyXG4gICAgICBpZiAoIXRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgICAgY29uc3Qgc3RlcCA9ICgpID0+IHtcclxuICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgKz0gc2Nyb2xsQW1vdW50O1xyXG4gICAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpO1xyXG4gICAgICAgIHRoaXMuYXV0b1Njcm9sbEludGVydmFsID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTogYW55W11bXSB7XHJcbiAgLy8gICBjb25zdCBjb3BpZWRSb3dzOiBhbnlbXVtdID0gW107XHJcbiAgLy8gICBjb25zdCBmaW5kUm93QnlWaXJ0dWFsSW5kZXggPSAodkluZGV4OiBudW1iZXIpID0+XHJcbiAgLy8gICAgIHRoaXMuZGF0YVNldC5maW5kKChyOiBhbnkpID0+IHIuX192aXJ0dWFsSW5kZXggPT09IHZJbmRleCk7XHJcbiAgLy8gICBpZiAodGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMgJiYgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZSA+IDApIHtcclxuICAvLyAgICAgY29uc3Qgc29ydGVkSW5kZXhlcyA9IFsuLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlc10uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xyXG4gIC8vICAgICBmb3IgKGNvbnN0IHZJbmRleCBvZiBzb3J0ZWRJbmRleGVzKSB7XHJcbiAgLy8gICAgICAgY29uc3Qgcm93ID0gZmluZFJvd0J5VmlydHVhbEluZGV4KHZJbmRleCk7XHJcbiAgLy8gICAgICAgaWYgKCFyb3cpIGNvbnRpbnVlO1xyXG4gIC8vICAgICAgIGNvbnN0IHJvd1ZhbHVlcyA9IHRoaXMuY29sdW1ucy5mbGF0TWFwKGNvbCA9PlxyXG4gIC8vICAgICAgICAgY29sLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKVxyXG4gIC8vICAgICAgICAgICA/IGNvbC5jaGlsZHJlbi5tYXAoKGM6IHsgZmllbGQ6IHN0cmluZyB9KSA9PlxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGMuZmllbGQpID8/ICcnXHJcbiAgLy8gICAgICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgICA6IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID8/ICcnXHJcbiAgLy8gICAgICAgKTtcclxuICAvLyAgICAgICBjb3BpZWRSb3dzLnB1c2gocm93VmFsdWVzKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMgJiYgdGhpcy5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgY29uc3Qgcm93c01hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnlbXT4oKTtcclxuICAvLyAgICAgZm9yIChjb25zdCBjZWxsIG9mIHRoaXMuc2VsZWN0ZWRDZWxscykge1xyXG4gIC8vICAgICAgIGNvbnN0IHJvdyA9IGZpbmRSb3dCeVZpcnR1YWxJbmRleChjZWxsLnJvd0luZGV4KTtcclxuICAvLyAgICAgICBpZiAoIXJvdykgY29udGludWU7XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uc1tjZWxsLmNvbEluZGV4XTtcclxuICAvLyAgICAgICBsZXQgZmllbGROYW1lID0gY29sPy5maWVsZDtcclxuICAvLyAgICAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW5bY2VsbC5zdWJDb2xJbmRleF0pIHtcclxuICAvLyAgICAgICAgIGZpZWxkTmFtZSA9IGNvbC5jaGlsZHJlbltjZWxsLnN1YkNvbEluZGV4XS5maWVsZDtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgZmllbGROYW1lKSA/PyAnJztcclxuXHJcbiAgLy8gICAgICAgaWYgKCFyb3dzTWFwLmhhcyhjZWxsLnJvd0luZGV4KSkgcm93c01hcC5zZXQoY2VsbC5yb3dJbmRleCwgW10pO1xyXG4gIC8vICAgICAgIHJvd3NNYXAuZ2V0KGNlbGwucm93SW5kZXgpIS5wdXNoKHZhbHVlKTtcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgY29uc3Qgc29ydGVkQ2VsbHMgPSBbLi4ucm93c01hcC5lbnRyaWVzKCldXHJcbiAgLy8gICAgICAgLnNvcnQoKFthXSwgW2JdKSA9PiBhIC0gYilcclxuICAvLyAgICAgICAubWFwKChbXywgdl0pID0+IHYpO1xyXG5cclxuICAvLyAgICAgY29waWVkUm93cy5wdXNoKC4uLnNvcnRlZENlbGxzKTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBpZiAoY29waWVkUm93cy5sZW5ndGggPT09IDApIHtcclxuICAvLyAgICAgY29uc3QgYWN0aXZlQ2VsbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUtY2VsbCcpO1xyXG4gIC8vICAgICBpZiAoYWN0aXZlQ2VsbCkgcmV0dXJuIFtbYWN0aXZlQ2VsbC50ZXh0Q29udGVudD8udHJpbSgpIHx8ICcnXV07XHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zdCBtYXhDb2xzID0gY29waWVkUm93cy5yZWR1Y2UoKG1heCwgcm93KSA9PiBNYXRoLm1heChtYXgsIHJvdy5sZW5ndGgpLCAwKTtcclxuICAvLyAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBjb3BpZWRSb3dzLm1hcChyb3cgPT4ge1xyXG4gIC8vICAgICBjb25zdCBuZXdSb3cgPSBbLi4ucm93XTtcclxuICAvLyAgICAgd2hpbGUgKG5ld1Jvdy5sZW5ndGggPCBtYXhDb2xzKSBuZXdSb3cucHVzaCgnJyk7IFxyXG4gIC8vICAgICByZXR1cm4gbmV3Um93O1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICByZXR1cm4gbm9ybWFsaXplZDtcclxuICAvLyB9XHJcblxyXG5cclxuICB1bmRvU3RhY2s6IGFueVtdW10gPSBbXTtcclxuICByZWRvU3RhY2s6IGFueVtdW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBjbG9uZURhdGEoZGF0YTogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgfVxyXG5cclxuICBwZXJmb3JtQ3V0KHNlbGVjdGVkRGF0YTogYW55W11bXSkge1xyXG4gICAgLy8gU2F2ZSBjdXJyZW50IHN0YXRlIGZvciB1bmRvXHJcbiAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgIHRoaXMucmVkb1N0YWNrID0gW107IC8vIENsZWFyIHJlZG8gc3RhY2sgb24gbmV3IGFjdGlvblxyXG5cclxuICAgIC8vIFBlcmZvcm0gY3V0XHJcbiAgICB0aGlzLmNvcHlTZXJ2aWNlLmN1dFdpdGhBbmltYXRpb24oc2VsZWN0ZWREYXRhKTtcclxuICAgIGNvbnN0IHsgdXBkYXRlZFJvd3MgfSA9IHRoaXMuY29weVNlcnZpY2UuY3V0U2VsZWN0ZWRTZWxlY3RlZERhdGEoXHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MsXHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMsXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZS5iaW5kKHRoaXMpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCdVcGRhdGVkIFJvd3M6ICcsIHVwZGF0ZWRSb3dzKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0U2VsZWN0ZWREYXRhRm9yQ29weSgpOiBhbnlbXVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvcHlTZXJ2aWNlLmdldFNlbGVjdGVkRGF0YUZvckNvcHkoXHJcbiAgICAgIHRoaXMuZGF0YVNldCxcclxuICAgICAgdGhpcy5jb2x1bW5zLFxyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyxcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxzLFxyXG4gICAgICB0aGlzLmdldE5lc3RlZFZhbHVlLmJpbmQodGhpcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGlzRm9ybUZpZWxkID1cclxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcclxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScgfHxcclxuICAgICAgdGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlO1xyXG4gICAgaWYgKGlzRm9ybUZpZWxkKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGFibGVDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHktd3JhcHBlcicpO1xyXG4gICAgaWYgKHRhYmxlQ29udGFpbmVyICYmICF0YWJsZUNvbnRhaW5lci5jb250YWlucyh0YXJnZXQpKSByZXR1cm47XHJcbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjJykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoICYmICF0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplKSByZXR1cm5cclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XHJcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuY29weVNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKHNlbGVjdGVkRGF0YSk7XHJcblxyXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3gnKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGggfHwgIXRoaXMuZW5hYmxlQ3V0KSByZXR1cm5cclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XHJcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMucGVyZm9ybUN1dChzZWxlY3RlZERhdGEpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd6Jykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cclxuICAgICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy51bmRvKCk7XHJcblxyXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGgpIHJldHVyblxyXG4gICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnJlZG8oKTtcclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5ID09PSAnYScpIHtcclxuICAgICAgLy8g4pyFIFNlbGVjdCBhbGwgY2VsbHNcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5zZWxlY3RBbGxDZWxscygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdEFsbENlbGxzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENlbGxzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuXHJcbiAgICAvLyBTZXQgc2VsZWN0aW9uIHN0YXJ0IGxpa2Ugc2luZ2xlIHNlbGVjdGlvbiAoZmlyc3QgY2VsbClcclxuICAgIGlmICh0aGlzLmRhdGFTZXQubGVuZ3RoICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgZmlyc3RGaWVsZCA9IHRoaXMuY29sdW1uc1swXS5maWVsZCB8fCB0aGlzLmNvbHVtbnNbMF0ubmFtZTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHtcclxuICAgICAgICByb3dJbmRleDogMCxcclxuICAgICAgICBjb2xJbmRleDogMCxcclxuICAgICAgICBzdWJDb2xJbmRleDogMCxcclxuICAgICAgICBmaWVsZDogZmlyc3RGaWVsZCxcclxuICAgICAgICBrZXk6IGAwLTAtMC0ke2ZpcnN0RmllbGR9YCxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzU2VsZWN0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDw9IHRoaXMuZGF0YVNldD8ubGVuZ3RoOyByb3dJbmRleCsrKSB7XHJcbiAgICAgIGlmICghcm93SW5kZXgpIGNvbnRpbnVlO1xyXG4gICAgICBjb25zdCByb3cgPSB0aGlzLmRhdGFTZXRbcm93SW5kZXhdO1xyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5hZGQocm93SW5kZXgpO1xyXG5cclxuICAgICAgLy8gZm9yIChsZXQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGNvbEluZGV4KyspIHtcclxuICAgICAgLy8gICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbnNbY29sSW5kZXhdO1xyXG4gICAgICAvLyAgIGNvbnN0IGZpZWxkID0gY29sLmZpZWxkIHx8IGNvbC5uYW1lO1xyXG4gICAgICAvLyAgIGlmKCFjb2wuaXNfdmlzaWJsZSkgY29udGludWU7XHJcblxyXG4gICAgICAvLyAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAvLyAgICAgY29sLmNoaWxkcmVuLmZvckVhY2goKHN1YjogYW55LCBzdWJDb2xJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIC8vICAgICAgIGNvbnN0IGtleSA9IGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3N1YkNvbEluZGV4fS0ke2ZpZWxkfWA7XHJcbiAgICAgIC8vICAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmFkZChrZXkpO1xyXG4gICAgICAvLyAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMucHVzaCh7XHJcbiAgICAgIC8vICAgICAgICAgcm93SW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgY29sSW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgc3ViQ29sSW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgZmllbGQsXHJcbiAgICAgIC8vICAgICAgICAga2V5LFxyXG4gICAgICAvLyAgICAgICB9KTtcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tMC0ke2ZpZWxkfWA7XHJcbiAgICAgIC8vICAgICB0aGlzLnNlbGVjdGVkS2V5cy5hZGQoa2V5KTtcclxuICAgICAgLy8gICAgIHRoaXMuc2VsZWN0ZWRDZWxscy5wdXNoKHtcclxuICAgICAgLy8gICAgICAgcm93SW5kZXgsXHJcbiAgICAgIC8vICAgICAgIGNvbEluZGV4LFxyXG4gICAgICAvLyAgICAgICBzdWJDb2xJbmRleDogMCxcclxuICAgICAgLy8gICAgICAgZmllbGQsXHJcbiAgICAgIC8vICAgICAgIGtleSxcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBoaWdobGlnaHRpbmcgYW5kIFVJXHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbkJvdW5kYXJpZXMoKTtcclxuXHJcbiAgICAvLyBTdG9wIFwic2VsZWN0aW5nXCIgbW9kZSBzaW5jZSBpdCdzIGEgb25lLXRpbWUgc2VsZWN0LWFsbFxyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB1bmRvKCkge1xyXG4gICAgaWYgKHRoaXMudW5kb1N0YWNrLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy51bmRvU3RhY2sucG9wKCkhO1xyXG4gICAgICB0aGlzLnJlZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKHByZXZTdGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWRvKCkge1xyXG4gICAgaWYgKHRoaXMucmVkb1N0YWNrLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5yZWRvU3RhY2sucG9wKCkhO1xyXG4gICAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKG5leHRTdGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnBhc3RlJywgWyckZXZlbnQnXSlcclxuICBhc3luYyBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgdGFnID0gdGFyZ2V0Py50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYScgfHwgdGFyZ2V0Py5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpID09PSAndHJ1ZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGggfHwgIXRoaXMuYWN0aXZlQ2VsbCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0Jyk7XHJcbiAgICBpZiAoIXRleHQpIHJldHVybjtcclxuICAgIGNvbnN0IHVzZXJDb25maXJtZWQgPSBhd2FpdCB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbChcclxuICAgICAgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwYXN0ZSB0aGUgY29waWVkIGRhdGE/J1xyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXVzZXJDb25maXJtZWQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0YXJ0Q2VsbCA9IHRoaXMuc2VsZWN0ZWRDZWxscz8uWzBdO1xyXG4gICAgaWYgKCFzdGFydENlbGwpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVkUm93cyA9IGF3YWl0IHRoaXMuY29weVNlcnZpY2UucGFzdGVGcm9tQ2xpcGJvYXJkVGV4dChcclxuICAgICAgdGV4dCxcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyxcclxuICAgICAgdGhpcy5jb2x1bW5zLFxyXG4gICAgICBzdGFydENlbGwucm93SW5kZXgsXHJcbiAgICAgIHN0YXJ0Q2VsbC5jb2xJbmRleCxcclxuICAgICAgc3RhcnRDZWxsLnN1YkNvbEluZGV4XHJcbiAgICApO1xyXG5cclxuICAgIGlmICh1cGRhdGVkUm93cz8udXBkYXRlUm93cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoe1xyXG4gICAgICAgIGRhdGE6IHVwZGF0ZWRSb3dzPy51cGRhdGVSb3dzLFxyXG4gICAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxyXG4gICAgICAgIGNvbHVtbjogdXBkYXRlZFJvd3M/LmN1cnJlbnRDb2x1bXNcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0NvbmZpcm1hdGlvbk1vZGFsKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICBjb25zdCBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIG92ZXJsYXkuY2xhc3NMaXN0LmFkZCgnY3VzdG9tLW92ZXJsYXktd3JhcHBlcicpO1xyXG4gICAgICBvdmVybGF5LmlubmVySFRNTCA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1vdmVybGF5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwibW9kYWwtbWVzc2FnZVwiPiR7bWVzc2FnZX08L3A+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jb25maXJtXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgYDtcclxuXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XHJcbiAgICAgIGNvbnN0IGNvbmZpcm1CdG4gPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoJy5idG4tY29uZmlybScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBjb25zdCBjYW5jZWxCdG4gPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoJy5idG4tY2FuY2VsJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChvdmVybGF5KTtcclxuICAgICAgfTtcclxuICAgICAgY29uZmlybUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjYW5jZWxCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgY2xlYW51cCgpO1xyXG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGlzRGF0ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIWlzTmFOKG5ldyBEYXRlKHZhbHVlKT8uZ2V0VGltZSgpKTtcclxuICB9XHJcblxyXG5cclxuICAvLyBIb2xkIGV4cGFuZGVkIElEcyAoYXJyYXkgZm9yIG11bHRpcGxlLCBzaW5nbGUgdmFsdWUgZm9yIHNpbmdsZSlcclxuICBleHBhbmRlZGVkRGV0YWlsUm93czogKHN0cmluZyB8IG51bWJlcilbXSB8IHN0cmluZyB8IG51bWJlciA9ICcnO1xyXG5cclxuICB0b2dnbGVEZXRhaWxSb3dFeHBhbmQocm93OiBhbnkpIHtcclxuICAgIGNvbnN0IGlkID0gcm93Py5pZCB8fCByb3c/Ll9pZDtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSAnQXNzZXRzJyAmJiByb3c/LmRldGFpbD8uY29sdW1ucykge1xyXG4gICAgICByb3cuZGV0YWlsLmNvbHVtbnMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS53aWR0aCA9IGl0ZW0/LndpZHRoIHx8ICh0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLyByb3cuZGV0YWlsLmNvbHVtbnM/Lmxlbmd0aClcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucHJldmlld05lc3RlZENvbHMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnMocm93LmRldGFpbC5jb2x1bW5zKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cykpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gW107XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzIGFzIChzdHJpbmcgfCBudW1iZXIpW107XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gZXhwYW5kZWQuaW5kZXhPZihpZCk7XHJcblxyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIGV4cGFuZGVkLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXhwYW5kZWQucHVzaChpZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID09PSBpZCkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPSAnJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdm9pZCB0aGlzLnJpZ2h0UGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNlbnRlclBpbm5lZEJvZHk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAzMDApXHJcbiAgfVxyXG5cclxuICBpc0RldGFpbHNFeHBhbmRlZChyb3c6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaWQgPSByb3c/LmlkIHx8IHJvdz8uX2lkO1xyXG5cclxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xyXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzKSAmJlxyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MuaW5jbHVkZXMoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPT09IGlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsdGVyVmFsdWUob3B0aW9uOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uO1xyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5JbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgdG9nZ2xlTWVudShpOiBudW1iZXIsIGV2ZW50PzogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50KSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9XHJcbiAgICB0aGlzLm9wZW5JbmRleCA9IHRoaXMub3BlbkluZGV4ID09PSBpID8gbnVsbCA6IGk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCduZXN0ZWRUYWJsZScpXHJcbiAgbmVzdGVkVGFibGUhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBnZXQgaGFzVmVydGljYWxTY3JvbGwoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMubmVzdGVkVGFibGUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLm5lc3RlZFRhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICB9XHJcblxyXG4gIGdldCBoYXNIb3Jpem9udGFsU2Nyb2xsKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLm5lc3RlZFRhYmxlKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMubmVzdGVkVGFibGUubmF0aXZlRWxlbWVudDtcclxuICAgIHJldHVybiBlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFRvdGFsQW1vdW50KGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbj8uaXNfYW1vdW50KSByZXR1cm47XHJcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LnJlZHVjZSgoc3VtLCByb3cpID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSByb3dbY29sdW1uLmZpZWxkXSB8fCAwO1xyXG4gICAgICByZXR1cm4gc3VtICsgdmFsdWU7XHJcbiAgICB9LCAwKTtcclxuICAgIGlmKCF0b3RhbCkgcmV0dXJuIGAke3RoaXMuY3VycmVuY3lTeW1ib2x9IDAuMDBgXHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXJyZW5jeVN5bWJvbH0gJHt0aGlzLmZvcm1hdEN1cnJlbmN5LnRyYW5zZm9ybSh0b3RhbCwgdGhpcy5jdXJyZW5jeUZvcm1hdCl9YDtcclxuICB9XHJcblxyXG4gIGRyb3BDb2x1bW4oZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPiwgcm93OiBhbnkpIHtcclxuICAgIC8vIFJlb3JkZXIgdGhlIGNvbHVtbnMgYXJyYXlcclxuICAgIG1vdmVJdGVtSW5BcnJheShyb3cuZGV0YWlsLmNvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50U3ViU29ydENvbHVtbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIGFjdGl2ZSBjb2x1bW5cclxuICBjdXJyZW50U29ydERpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJzsgLy8gYWN0aXZlIGRpcmVjdGlvblxyXG5cclxuICBzb3J0TmVzdGVkQ29sKGNvbDogYW55LCByb3c6IGFueSkge1xyXG4gICAgY29uc3QgZGF0YVNldCA9IHJvdz8uZGV0YWlsPy5yZXN1bHQ7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9PT0gY29sLmZpZWxkKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9IGNvbC5maWVsZDtcclxuICAgICAgdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9ICdhc2MnO1xyXG4gICAgfVxyXG4gICAgY29sLm9yZGVyX2J5ID0gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbjtcclxuXHJcbiAgICAvLyBTb3J0IGNvcHkgaW5zdGVhZCBvZiBtdXRhdGluZ1xyXG4gICAgY29uc3Qgc29ydGVkID0gWy4uLmRhdGFTZXRdLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgbGV0IGFWYWwgPSBhW2NvbC5maWVsZF07XHJcbiAgICAgIGxldCBiVmFsID0gYltjb2wuZmllbGRdO1xyXG4gICAgICBhVmFsID0gYVZhbCA9PSBudWxsID8gJycgOiBhVmFsO1xyXG4gICAgICBiVmFsID0gYlZhbCA9PSBudWxsID8gJycgOiBiVmFsO1xyXG5cclxuICAgICAgaWYgKGNvbC50eXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgICBhVmFsID0gbmV3IERhdGUoYVZhbCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGJWYWwgPSBuZXcgRGF0ZShiVmFsKS5nZXRUaW1lKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFOdW0gPSBwYXJzZUZsb2F0KGFWYWwpO1xyXG4gICAgICBjb25zdCBiTnVtID0gcGFyc2VGbG9hdChiVmFsKTtcclxuICAgICAgY29uc3QgYm90aE51bWJlcnMgPSAhaXNOYU4oYU51bSkgJiYgIWlzTmFOKGJOdW0pO1xyXG5cclxuICAgICAgaWYgKGJvdGhOdW1iZXJzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gYU51bSAtIGJOdW0gOiBiTnVtIC0gYU51bTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBjb21wID0gU3RyaW5nKGFWYWwpLmxvY2FsZUNvbXBhcmUoU3RyaW5nKGJWYWwpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyBjb21wIDogLWNvbXA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJvdy5kZXRhaWwucmVzdWx0ID0gc29ydGVkO1xyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRDb2x1bW5XaWR0aFB4KHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLndpZHRoKSByZXR1cm4gY29sLndpZHRoICsgJ3B4JztcclxuICAgIGNvbnN0IHBpeGVscyA9IHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoIC8gcm93LmRldGFpbD8uY29sdW1ucy5sZW5ndGg7XHJcbiAgICByZXR1cm4gcGl4ZWxzICsgJ3B4JztcclxuICB9XHJcblxyXG4gIGZ1bGxzY3JlZW5JbWFnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAvLyBBc3Nlc3RzIE5lc3RlZCBUYWJsZSBXb3JrIEltcGxlbWVudGVkIEhlcmVcclxuXHJcbiAgcGluVW5waW5Db2x1bShjb2w6IGFueSwgdmFsdWU6ICdsZWZ0JyB8ICdyaWdodCcgfCBudWxsLCBjb2x1bW5zOiBhbnlbXSkge1xyXG4gICAgY29sLnBpbm5lZCA9IHZhbHVlO1xyXG4gICAgY29uc3QgbGVmdCA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XHJcbiAgICBjb25zdCBtaWRkbGUgPSBjb2x1bW5zLmZpbHRlcihjID0+ICFjLnBpbm5lZCB8fCBjLnBpbm5lZCA9PT0gbnVsbCk7XHJcbiAgICBjb25zdCByaWdodCA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpO1xyXG4gICAgY29sdW1ucy5sZW5ndGggPSAwO1xyXG4gICAgY29sdW1ucy5wdXNoKC4uLmxlZnQsIC4uLm1pZGRsZSwgLi4ucmlnaHQpO1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGVmdFBpbm5lZENvdW50KGNvbHVtbnM6IGFueVtdKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldFJpZ2h0UGlubmVkQ291bnQoY29sdW1uczogYW55W10pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldFN0aWNreUxlZnQoY29sdW1uczogYW55W10sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxlZnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRleDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHByZXZDb2wgPSBjb2x1bW5zW2ldO1xyXG4gICAgICBpZiAocHJldkNvbC5waW5uZWQgPT09ICdsZWZ0Jykge1xyXG4gICAgICAgIGxlZnQgKz0gcHJldkNvbC53aWR0aCB8fCAxMDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBgJHtsZWZ0fXB4YDtcclxuICB9XHJcblxyXG4gIHByZXZpZXdOZXN0ZWRDb2xzOiBhbnlbXSA9IFtdO1xyXG4gIG9uTmVzdGVkQ29sU29ydChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnlbXT4sIGNvbHVtbnM6IGFueVtdKTogdm9pZCB7XHJcbiAgICBpZiAoIWV2ZW50IHx8ICFjb2x1bW5zKSByZXR1cm47XHJcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbENlbGxzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1maWVsZD1cIiR7Y29sLmZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdO1xyXG4gICAgICBjb2xDZWxscy5mb3JFYWNoKChlbCkgPT4gZmlyc3RQb3NpdGlvbnMuc2V0KGVsLCBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KSk7XHJcbiAgICB9KTtcclxuICAgIG1vdmVJdGVtSW5BcnJheShjb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W107XHJcbiAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgICAgICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpID8/IG5ld0xlZnQ7XHJcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcclxuXHJcbiAgICAgICAgICBpZiAoZGVsdGFYICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XHJcbiAgICAgICAgICAgIHZvaWQgZWwub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDI1MG1zIGVhc2UnO1xyXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgwKSc7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xyXG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xyXG4gICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBjbGVhbnVwKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNsZWFudXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHNhdmVTZWxlY3Rpb24oc2VsZWN0ZWRJZHM6IHN0cmluZ1tdLCB0YWJsZVR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKCF0YWJsZVR5cGUpIHJldHVybjtcclxuICAgIGNvbnN0IHN0b3JlZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGF0YWJsZVNlbGVjdGlvbnMnKSB8fCAne1wic2VsZWN0ZWRSb3dzXCI6IHt9fScpO1xyXG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBzdG9yZWQuc2VsZWN0ZWRSb3dzIHx8IHt9O1xyXG4gICAgYWxsU2VsZWN0ZWRbdGFibGVUeXBlXSA9IHNlbGVjdGVkSWRzO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICdkYXRhdGFibGVTZWxlY3Rpb25zJyxcclxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIHNlbGVjdGVkUm93czogYWxsU2VsZWN0ZWQsXHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRhYmxlVHlwZVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICByZXN0b3JlU2VsZWN0aW9uKHRhYmxlVHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhdGFibGVTZWxlY3Rpb25zJykgfHwgJ3t9Jyk7XHJcbiAgICBjb25zdCBpZHMgPSBzdG9yZWQuc2VsZWN0ZWRSb3dzPy5bdGFibGVUeXBlXSB8fCBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gbmV3IFNldChpZHMpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBpc091dHNpZGVDb250YWluZXIgPSBmYWxzZTtcclxuICBwcml2YXRlIGNvbnRhaW5lclJlY3Q6IERPTVJlY3QgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIG9uRHJhZ1N0YXJ0ZWQoY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uID0gY29sO1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGEtZ3JpZC1tYWluLWNvbnRhaW5lcicpO1xyXG4gICAgdGhpcy5jb250YWluZXJSZWN0ID0gY29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyUmVjdCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHsgeCwgeSB9ID0gZXZlbnQucG9pbnRlclBvc2l0aW9uO1xyXG4gICAgY29uc3QgaXNPdXRzaWRlID1cclxuICAgICAgeCA8IHRoaXMuY29udGFpbmVyUmVjdC5sZWZ0IHx8XHJcbiAgICAgIHggPiB0aGlzLmNvbnRhaW5lclJlY3QucmlnaHQgfHxcclxuICAgICAgeSA8IHRoaXMuY29udGFpbmVyUmVjdC50b3AgfHxcclxuICAgICAgeSA+IHRoaXMuY29udGFpbmVyUmVjdC5ib3R0b207XHJcblxyXG4gICAgLy8gaWYgKGlzT3V0c2lkZSAhPT0gdGhpcy5pc091dHNpZGVDb250YWluZXIpIHtcclxuICAgIC8vICAgdGhpcy5pc091dHNpZGVDb250YWluZXIgPSBpc091dHNpZGU7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBvbkRyYWdFbmRlZCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyBpZiAodGhpcy5pc091dHNpZGVDb250YWluZXIgJiYgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4pIHtcclxuICAgICAgLy8gICB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbiEuaXNfdmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlzT3V0c2lkZUNvbnRhaW5lciA9IGZhbHNlO1xyXG4gICAgICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgLy8gfVxyXG4gICAgfSwgMTAwKTtcclxuICAgIHRoaXMuY29udGFpbmVyUmVjdCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRTdGFydEluZGV4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyA9PT0gMFxyXG4gICAgICA/IDBcclxuICAgICAgOiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKSAqIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfHwgMDtcclxuICB9XHJcblxyXG4gIGhhc0FueURlZmF1bHRWaWV3KCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVWaWV3Py5zb21lKCh4KSA9PiB4LmlzX2RlZmF1bHQgfHwgeC5pc190ZW1wKTtcclxuICB9XHJcblxyXG5cclxuICBnZXQgaXNUYWJsZVByZXNldE5vdENoYW5nZWQoKSB7XHJcbiAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgY3VyclByZXNldCA9IHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRQcmVzZXRDb2x1bW5zID0gY3VyclByZXNldD8uY29sdW1ucz8ubWFwKChjb2w6IHsgZmllbGQ6IGFueTsgd2lkdGg6IGFueTsgcGlubmVkOiBhbnk7IH0pID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxyXG4gICAgICAgIHdpZHRoOiBjb2wud2lkdGgsXHJcbiAgICAgICAgcGlubmVkOiBjb2wucGlubmVkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuY29sdW1ucz8ubWFwKGNvbCA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZmllbGQ6IGNvbC5maWVsZCxcclxuICAgICAgICB3aWR0aDogY29sLndpZHRoLFxyXG4gICAgICAgIHBpbm5lZDogY29sLnBpbm5lZFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBzdHJpbmdzQ3VycmVudFByZXN0Q29scyA9IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRQcmVzZXRDb2x1bW5zKTtcclxuICAgIGNvbnN0IHN0cmluZ0NvbHVtbnMgPSBKU09OLnN0cmluZ2lmeShjb2x1bW5zKTtcclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRlcnNDb25maWcubWFwKChmaWx0ZXIpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWxlZDogZmlsdGVyLmZpZWxkLFxyXG4gICAgICAgIHF1ZXJ5OiB7XHJcbiAgICAgICAgICBjb25kaXRpb246IGZpbHRlcj8ucXVlcnk/LmNvbmRpdGlvbixcclxuICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogZmlsdGVyPy5xdWVyeT8uZmlyc3RfY29uZGl0aW9uLFxyXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IGZpbHRlcj8ucXVlcnk/LmZpcnN0X3ZhbHVlLFxyXG4gICAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogZmlsdGVyPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbixcclxuICAgICAgICAgIHNlY29uZF92YWx1ZTogZmlsdGVyPy5xdWVyeT8uc2Vjb25kX3ZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX2lkczogZmlsdGVyPy5faWRzXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgY3VycmVudFByZXNldEZpbHRlcnMgPSBjdXJyUHJlc2V0Py5maWx0ZXJzPy5tYXAoKGZpbHRlcjogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZmlsZWQ6IGZpbHRlci5maWVsZCxcclxuICAgICAgICBxdWVyeTogZmlsdGVyLnF1ZXJ5LFxyXG4gICAgICAgIF9pZHM6IGZpbHRlcj8uX2lkc1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcImZpbHRlciBjb25naWc6IFwiLCBmaWx0ZXJzKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwiY3VycmVudCBwcmVzZXQgZmlsdGVyczogXCIsIGN1cnJlbnRQcmVzZXRGaWx0ZXJzKTtcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZygnaXNFcXVhbCcsIHN0cmluZ3NDdXJyZW50UHJlc3RDb2xzID09IHN0cmluZ0NvbHVtbnMpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ0N1cnJlbnQgVGVtcCBQcmVzZXQgOiAnLCBjdXJyUHJlc2V0KVxyXG4gICAgLy8gY29uc29sZS5sb2coJ0N1cnJlbnQgVGVtcCBQcmVzZXQgQ29scyBjb2x1bW5zOiAnLCBjdXJyZW50UHJlc2V0Q29sdW1ucylcclxuICAgIC8vIGNvbnNvbGUubG9nKCdDdXJyZW50IGNvbHVtbnM6ICcsIGNvbHVtbnMpO1xyXG5cclxuICAgIGlmICghY3VycmVudFByZXNldENvbHVtbnMpIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIChjdXJyZW50UHJlc2V0Q29sdW1ucyAmJiAoc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPT0gc3RyaW5nQ29sdW1ucykgJiYgKEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpID09IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRQcmVzZXRGaWx0ZXJzKSkgJiYgKHRoaXMuZm9udEZhaW1seSA9PSBjdXJyUHJlc2V0LmNvbmZpZy5mb250RmFpbWx5KVxyXG4gICAgICAmJiAodGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9PSBjdXJyUHJlc2V0LmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSkgJiZcclxuICAgICAgKHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9PSB0aGlzLmhlYWRlclRleHRGb250c1NpemUpXHJcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIgPT0gdGhpcy5zaG93VmVydGljYWxCb3JkZXJcclxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLmZvbnRGYWltbHkgPT0gdGhpcy5mb250RmFpbWx5XHJcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5zZWxlY3RlZFRhYmxlTGF5b3V0ID09IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dFxyXG4gICAgICAmJiB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZS5jb25maWcuYm9keVRleHRGb250c1NpemUgPT0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZVxyXG4gICAgICAmJiB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZS5jb25maWcucm93U2hhZGluZ0VuYWJsZWQgPT0gdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCk7XHJcblxyXG4gICAgLy8gcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkJ1dHRvbkNsaWNrKGJ1dHRvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0ZXh0ID0gYnV0dG9uPy50b0xvY2FsZUxvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHRleHQgPT0gJ2FjdGl2ZSBkYXRhJyB8fCB0ZXh0ID09ICdhY3RpdmUnIHx8IHRleHQgPT0gJ2RhdGEgYWN0aXZlJyB8fCB0ZXh0ID09ICd1bmFyY2hpdmVkIGRhdGEnIHx8IHRleHQgPT0gJ3VuYXJjaGl2ZSBkYXRhJykgdGhpcy5jbGVhclNlbGVjdGlvblN0YXRlKHRoaXMudGFibGVUeXBlKTtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgb2JqOiBidXR0b25cclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiBcIm9uQWN0aW9uQnV0dG9uQ2xpY2tcIixcclxuICAgIH07XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuICBzZXRBY3RpdmVUYWIodGFiOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcclxuICAgIGNvbnN0IGFsbFRhYnMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhY3RpdmVUYWJzJykgfHwgJ3t9Jyk7XHJcbiAgICBhbGxUYWJzW3RoaXMudGFibGVUeXBlXSA9IHRhYjtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhY3RpdmVUYWJzJywgSlNPTi5zdHJpbmdpZnkoYWxsVGFicykpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0YWJsZVR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICAgIG9iajogdGFiXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ29uVGFiQ2hhbmdlJyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93OiBhbnksIGlzRXZlbjogYm9vbGVhbiwgc2VjdGlvbjogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICh0aGlzLmhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3dIb3ZlckNvbG9yO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNSb3dTZWxlY3RlZChyb3cpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrZWRSb3dCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICB9XHJcbiAgICBsZXQgYmFzZUNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgaWYgKHRoaXMucm93U2hhZGluZ0VuYWJsZWQpIHtcclxuICAgICAgYmFzZUNvbG9yID0gaXNFdmVuID8gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvciA6IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGJhc2VDb2xvciA9IHRoaXMuZXZlblJvd3NCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICB9XHJcbiAgICBpZiAoIWJhc2VDb2xvcikge1xyXG4gICAgICBpZiAoc2VjdGlvbiA9PT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgYmFzZUNvbG9yID0gdGhpcy5sZWZ0UGlubmVkQmFja2dyb3VuZENvbG9yO1xyXG4gICAgICB9IGVsc2UgaWYgKHNlY3Rpb24gPT09ICdyaWdodCcpIHtcclxuICAgICAgICBiYXNlQ29sb3IgPSB0aGlzLnJpZ2h0UGlubmVkQmFja2dyb3VuZENvbG9yO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJhc2VDb2xvciA9IHRoaXMuYm9keUJhY2tncm91bmRDb2xvcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJhc2VDb2xvcjtcclxuICB9XHJcblxyXG4gIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuY2VudGVyUGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50KSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gZWwuc2Nyb2xsV2lkdGggPiBlbC5jbGllbnRXaWR0aDtcclxuICB9XHJcblxyXG5cclxuICBnZXRTYWZlQ29tbWVudChkZXNjcmlwdGlvbjogc3RyaW5nKTogU2FmZUh0bWwge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xlYW5FZGl0b3JDb250ZW50KGRlc2NyaXB0aW9uKTtcclxuICB9XHJcbiAgY2xlYW5FZGl0b3JDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIGlmICghY29udGVudCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICAvLyAxLiBEZWNvZGUgSFRNTCBlbnRpdGllc1xyXG4gICAgY29uc3QgdGV4dGFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xyXG4gICAgdGV4dGFyZWEuaW5uZXJIVE1MID0gY29udGVudDtcclxuICAgIGxldCBkZWNvZGVkID0gdGV4dGFyZWEudmFsdWU7XHJcblxyXG4gICAgZGVjb2RlZCA9IGRlY29kZWRcclxuICAgICAgLnJlcGxhY2UoLzxcXC8/KHNwYW58cHx0aGVhZHx0Ym9keXx0Zm9vdClbXj5dKj4vZywgJycpXHJcbiAgICAgIC5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKTtcclxuXHJcbiAgICAvLyBFbnN1cmUgY2xlYW4gdGFibGUgc3RydWN0dXJlXHJcbiAgICBkZWNvZGVkID0gZGVjb2RlZFxyXG4gICAgICAucmVwbGFjZSgvPHRhYmxlW14+XSo+L2csICc8dGFibGU+JylcclxuICAgICAgLnJlcGxhY2UoLzx0cltePl0qPi9nLCAnPHRyPicpXHJcbiAgICAgIC5yZXBsYWNlKC88dGhbXj5dKj4vZywgJzx0aD4nKVxyXG4gICAgICAucmVwbGFjZSgvPHRkW14+XSo+L2csICc8dGQ+Jyk7ICAvLyBSZW1vdmUgPHRoZWFkPiBhbmQgPHRib2R5PiB0YWdzXHJcblxyXG4gICAgLy8gNC4gQWRkIGlubGluZSBzdHlsZXNcclxuICAgIGRlY29kZWQgPSBkZWNvZGVkXHJcbiAgICAgIC8vIEFkZCBpbmxpbmUgc3R5bGVzIHRvIDx0YWJsZT5cclxuICAgICAgLnJlcGxhY2UoLzx0YWJsZShbXj5dKik+L2csIGA8dGFibGUgc3R5bGU9XCJ3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgcGFkZGluZzogMjBweDsgZm9udC1zaXplOiAxNHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1wiJDE+YClcclxuICAgICAgLy8gQWRkIGlubGluZSBzdHlsZXMgdG8gPHRyPlxyXG4gICAgICAucmVwbGFjZSgvPHRyKFtePl0qKT4vZywgYDx0ciBzdHlsZT1cImJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1wiJDE+YClcclxuICAgICAgLy8gQWRkIGlubGluZSBzdHlsZXMgdG8gPHRoPlxyXG4gICAgICAucmVwbGFjZSgvPHRoKFtePl0qKT4vZywgYDx0aCBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTZweDsgY29sb3I6ICMyQTFGNzM7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDEycHggMjBweDsgdGV4dC1hbGlnbjogbGVmdDtcIiQxPmApXHJcbiAgICAgIC8vIEFkZCBpbmxpbmUgc3R5bGVzIHRvIDx0ZD5cclxuICAgICAgLnJlcGxhY2UoLzx0ZChbXj5dKik+L2csIGA8dGQgc3R5bGU9XCJtaW4td2lkdGg6MTIwcHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDEycHggMjBweDsgdGV4dC1hbGlnbjogbGVmdDtcIiQxPmApO1xyXG4gICAgZGVjb2RlZCA9IGRlY29kZWQucmVwbGFjZSgvPGltZyhbXj5dKik+L2csIChtYXRjaCwgZ3JvdXAxKSA9PiB7XHJcbiAgICAgIC8vIEFkZCBzdHlsZSB0byA8aW1nPiBpZiBub3QgYWxyZWFkeSBzcGVjaWZpZWRcclxuICAgICAgaWYgKC9zdHlsZT0vLnRlc3QoZ3JvdXAxKSkge1xyXG4gICAgICAgIHJldHVybiBtYXRjaDsgIC8vIElmIHN0eWxlIGFscmVhZHkgZXhpc3RzLCBrZWVwIGl0XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGA8aW1nIHN0eWxlPVwid2lkdGg6IDMwJTsgaGVpZ2h0OiAzMCU7Ym9yZGVyLXJhZGl1czogMTZweDsgcGFkZGluZy10b3A6IDE1cHg7cGFkZGluZy1ib3R0b206IDEwcHg7XCIke2dyb3VwMX0+YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyA1LiBSZXR1cm4gc2FmZSBIVE1MXHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZGVjb2RlZCk7XHJcbiAgfVxyXG5cclxuICBnZXRFeHRlbnRpb24odXJsOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh1cmwgIT09ICctJykge1xyXG4gICAgICBpZiAodHlwZW9mICh1cmwpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHVybC5zcGxpdCgnLicpLnBvcCgpXHJcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh1cmwpKSB7XHJcbiAgICAgICAgcmV0dXJuIHVybFswXS5zcGxpdCgnLicpLnBvcCgpXHJcbiAgICAgIH0gZWxzZSByZXR1cm4gJy0nXHJcbiAgICB9XHJcbiAgICBlbHNlIHJldHVybiAnLSdcclxuICB9XHJcblxyXG4gIGRvd25sb2FkQXR0Y2htZW50KHVybDogYW55LCBmaWxlPzogYW55KSB7XHJcbiAgICAvLyB0aGlzLm9uRXZlbnQuZW1pdCh7XHJcbiAgICAvLyAgIGRvd25sb2FkOiB0cnVlLFxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGRhdGEpXHJcbiAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuaHJlZiA9IHVybDtcclxuICAgIGxpbmsuZG93bmxvYWQgPSAnJztcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG5cclxuICB9XHJcbiAgZnVsbEltYWdlU3JjOiBzdHJpbmcgfCBudWxsID0gJyc7XHJcbiAgb3BlbkZ1bGxJbWFnZShldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHtcclxuICAgICAgdGhpcy5mdWxsSW1hZ2VTcmMgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCdzcmMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFN0eWxlc1RvSW1hZ2VzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW1hZ2VzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNvbW1lbnQtY29udGVudCBpbWcnKTtcclxuICAgIGltYWdlcy5mb3JFYWNoKChpbWcpID0+IHtcclxuICAgICAgLy8gQXBwbHkgaW5saW5lIHN0eWxlcyBkaXJlY3RseVxyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ3dpZHRoJywgJzcwcHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWcsICdib3JkZXItcmFkaXVzJywgJzE2cHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWcsICdtYXJnaW4nLCAnOHB4Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnY3Vyc29yJywgJ3BvaW50ZXInKTtcclxuXHJcbiAgICAgIC8vIEFkZCBjbGljayBsaXN0ZW5lciB0byBzaG93IGZ1bGxzY3JlZW4gaW1hZ2Ugb24gY2xpY2tcclxuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW1nLCAnY2xpY2snLCAoKSA9PiB0aGlzLm9uSW1hZ2VDbGljaygoaW1nIGFzIEhUTUxJbWFnZUVsZW1lbnQpLnNyYykpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkltYWdlQ2xpY2soc3JjOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZnVsbHNjcmVlbkltYWdlID0gc3JjO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZnVsbHNjcmVlbkltYWdlVGVtcGxhdGUnKSBmdWxsc2NyZWVuSW1hZ2VUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgcHJpdmF0ZSBmdWxsc2NyZWVuVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgaWNvbk1hcDogUmVjb3JkPHN0cmluZywgKHJvdzogYW55LCBjb2w6IGFueSkgPT4gc3RyaW5nPiA9IHtcclxuICAgIGF0dGFjaG1lbnRzX2NvdW50OiAoKSA9PiB0aGlzLnNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2F0dGFjaG1lbnRzLnN2ZycsXHJcbiAgICBjb21tZW50X2NvdW50OiAoKSA9PiB0aGlzLnNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NvbW1lbnRzLnN2ZycsXHJcbiAgICBwcmlvcml0eTogKHJvdywgY29sKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbCA9XHJcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTtcclxuXHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgdGhpcy5zaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAnZGF0YS1ncmlkL2ljb25zLycgK1xyXG4gICAgICAgICh2YWwgPz8gJ2RlZmF1bHQnKSArXHJcbiAgICAgICAgJy5zdmcnXHJcbiAgICAgICk7XHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIHRvZ2dsZUZ1bGxzY3JlZW4oKSB7XHJcbiAgICB0aGlzLmlzRnVsbFNjcmVlbiA9ICF0aGlzLmlzRnVsbFNjcmVlbjtcclxuICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgYXMgYW55O1xyXG4gICAgaWYgKCFkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCkge1xyXG4gICAgICBpZiAoZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XHJcbiAgICAgICAgZWxlbS5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChkb2N1bWVudC5leGl0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50IGFzIGFueSkubW96Q2FuY2VsRnVsbFNjcmVlbikge1xyXG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLm1vekNhbmNlbEZ1bGxTY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS53ZWJraXRFeGl0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50IGFzIGFueSkubXNFeGl0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLm1zRXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DZWxsRXZlbnQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXN0b21DZWxsRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZsYXR0ZW5Hcm91cChyb3c6IGFueSk6IGFueVtdIHtcclxuICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHRyYXZlcnNlID0gKG5vZGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIW5vZGUpIHJldHVybjtcclxuICAgICAgaWYgKG5vZGUuaXNHcm91cCkge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4/LmZvckVhY2goKGNoaWxkOiBhbnkpID0+IHRyYXZlcnNlKGNoaWxkKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0cmF2ZXJzZShyb3cpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHNlbGVjdEdyb3VwUm93KGU6IEV2ZW50LCByb3c6IGFueSkge1xyXG4gICAgY29uc3QgY2hlY2tib3ggPSBlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgaXNDaGVja2VkID0gY2hlY2tib3guY2hlY2tlZDtcclxuICAgIC8vIEdldCBhbGwgZGVlcCBkYXRhIHJvd3MgKGxlYWYgcm93cylcclxuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5mbGF0dGVuR3JvdXAocm93KTtcclxuICAgIGlmIChpc0NoZWNrZWQpIHtcclxuICAgICAgbGVhZlJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICBjb25zdCBpZCA9IHIuX2lkIHx8IHIuaWQ7XHJcbiAgICAgICAgaWYgKGlkKSB0aGlzLnNlbGVjdGVkUm93cy5hZGQoaWQpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgY29uc3QgaWQgPSByLl9pZCB8fCByLmlkO1xyXG4gICAgICAgIGlmIChpZCkgdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKGlkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgb2JqOiBpZHNcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiBcIm9uU2VsZWN0Um93XCIsXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldEdyb3VwQ2hlY2tlZFN0YXRlKHJvdzogYW55KTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIXJvdy5pc0dyb3VwKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBsZWFmUm93cyA9IHRoaXMuZmxhdHRlbkdyb3VwKHJvdyk7XHJcbiAgICBsZXQgY2hlY2tlZENvdW50ID0gMDtcclxuICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGNvbnN0IGlkID0gci5faWQgfHwgci5pZDtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZCkpIGNoZWNrZWRDb3VudCsrO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoY2hlY2tlZENvdW50ID09PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAoY2hlY2tlZENvdW50ID09PSBsZWFmUm93cy5sZW5ndGgpIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGdldENlbGxUaXRsZShyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdmFsID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZCkpIHtcclxuICAgICAgaWYgKGNvbC50eXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZm9ybWF0RGF0ZVZhbHVlKHZhbCwgdGhpcy5kYXRlRm9ybWF0KTtcclxuICAgICAgfSBlbHNlIGlmIChjb2w/LmlzX2Ftb3VudCkge1xyXG4gICAgICAgIGlmKCF2YWwpIHJldHVybiBgMC4wMGBcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRDdXJyZW5jeS50cmFuc2Zvcm0odmFsLCB0aGlzLmN1cnJlbmN5Rm9ybWF0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB2YWw/LnZhbHVlID8/XHJcbiAgICAgICAgdmFsPy5uYW1lID8/XHJcbiAgICAgICAgdmFsID8/XHJcbiAgICAgICAgKGNvbC5pc19hbW91bnQgPyAnMCcgOiAnLScpXHJcbiAgICAgICkgKyAnJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaXJzdCA9IHZhbD8uWzBdO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIGZpcnN0Py5kZXBhcnRtZW50X25hbWUgPz9cclxuICAgICAgZmlyc3Q/LnJvbGVOYW1lID8/XHJcbiAgICAgIGZpcnN0Py5mdWxsX25hbWUgPz9cclxuICAgICAgJy0nXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbmlzaEVkaXQoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2NlbGwgZWRpdGVkZGRkZGRkZGRkZGRkZGQ6ICcsIGV2ZW50KVxyXG4gIH1cclxuXHJcblxyXG5cclxufSIsIjxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBoLTEwMFwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTIgYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIiAqbmdJZj1cInRydWVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmF2IG5hdi10YWJzXCIgaWQ9XCJuYXYtdGFiXCIgcm9sZT1cInRhYmxpc3RcIj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVUYWIodGFiKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PSB0YWJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyB0YWIgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtc2VhcmNoXCIgW3N0eWxlLndpZHRoLnB4XT1cIjM1MFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdJZj1cImVuYWJsZUdsb2JhbFNlYXJjaFwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICpuZ0lmPVwiZW5hYmxlR2xvYmFsU2VhcmNoXCJcclxuICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzNnB4XCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSB0byBzZWFyY2gsIHRoZW4gcHJlc3MgRW50ZXJcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWJsZVNlYXJjaFwiXHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkdsb2JhbFNlYXJjaCgpXCJcclxuICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaElucHV0KCRldmVudClcIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyIHRhYmxlLXJpZ2h0LXRvcC1hY3Rpb25zXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGFjdGlvbi1idXR0b25zLXJvd1wiXHJcbiAgICAgICAgICAqbmdJZj1cImJ1dHRvbj8uaGFzX3Blcm1pc3Npb25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb25CdXR0b25DbGljayhidXR0b24ubmFtZSlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJvcmRlciBib3JkZXItcHJpbWFyeSBidG4tYWN0aXZlLXByaW1hcnkgbWUtMiBwLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHB4LTNcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYnV0dG9uLmlzX3Nob3dJY29uXCJcclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvJyArIGJ1dHRvbi5pY29uICsgJy5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5tcy0wXT1cImJ1dHRvbi5pc19zaG93SWNvblwiXHJcbiAgICAgICAgICAgICAgPnt7IGJ1dHRvbj8ubmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCIhc2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBhY3Rpb24tYnV0dG9ucy1yb3dcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuRmlsdGVyKClcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2hvd0ZpbHRlcnNcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IG1lLTIgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIj5GaWx0ZXJzPC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJlZENvbHVtbnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBzdHlsZT1cIlxyXG4gICAgICAgICAgICB3aWR0aDogN3B4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDdweDtcclxuICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzAwMjJmZjtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDYwLCAyNTUpO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIHJpZ2h0OiAxNnB4O1xyXG4gICAgICAgICAgICB0b3A6IDEwcHg7XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWJsb2NrXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZC1ub25lXCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnYWR2YW5jZS1maWx0ZXInKVwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUb3BCdXR0b24gPT09ICdhZHZhbmNlLWZpbHRlcidcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvem9vbS1jaGFyZ2Uuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiB0b3AtaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYWN0aW9uLWJ1dHRvbnMtcm93XCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxyXG4gICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAnc2V0dGluZycgfHxcclxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLWxheW91dCcgfHxcclxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLXByZXNldHMnIHx8XHJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICdzaG93LWhpZGUtY29sdW1ucydcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPCEtLSA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZXR0aW5ncy0yLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gdG9wLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IG1lLTIgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NldHRpbmdzLTIuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMlwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1oaWRkZW4gdGV4dC13aGl0ZVwiPlNldHRpbmc8L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3NldHRpbmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xIGFjdGlvbnMtZHJvcGRvd24tc2V0dGluZ1wiXHJcbiAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnVcIj5cclxuICAgICAgICAgICAgPCEtLSBUYWJsZSBMYXlvdXQgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLWxheW91dCcpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICA+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy90YWJsZS0yLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgVGFibGUgTGF5b3V0PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCd0YWJsZS1wcmVzZXRzJylcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICA+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9saXN0LWRldGFpbHMuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICBUYWJsZSBQcmVzZXRzPC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICA8IS0tIENvbHVtbnMgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd1NpZGVNZW51XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3Nob3ctaGlkZS1jb2x1bW5zJylcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICA+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIENvbHVtbnM8L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdXRlZC10ZXh0XCI+e3sgY29sdW1uc0NvdW50IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBGaWx0ZXIgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3BlbkZpbHRlcigpOyBhY3RpdmVUb3BCdXR0b24gPSAnJztcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIG10LTEgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgRmlsdGVyXHJcbiAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRG93bmxvYWQgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDc3YoJ2NzdicpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kb3dubG9hZC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICBDU1YgRXhwb3J0XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAqbmdJZj1cImVuYWJsZUV4cG9ydFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDc3YoJ3hsc3gnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZG93bmxvYWQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgRXhjZWwgRXhwb3J0XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPCEtLSBGb250IEZhbWlseSAmIEZvbnQgU2l6ZSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcGItMiBwdC0yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBGb250IEZhbWlseSAtLT5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9udEZhaW1seVwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Gb250Q2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmb250IG9mIGZvbnRGYW1pbGllc1wiIFt2YWx1ZV09XCJmb250XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZm9udCB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRm9udCBTaXplIC0tPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcclxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYm9keVRleHRGb250c1NpemVcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIGZvbnRTaXplc1wiIFt2YWx1ZV09XCJzaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgc2l6ZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFRhYmxlIExheW91dCAtLT5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLWxheW91dCdcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUxheW91dFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIFRhYmxlIFByZXNldHMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLXByZXNldHMnXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVQcmVzZXRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBUYWJsZSBQcmVzZXRzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdzaG93LWhpZGUtY29sdW1ucydcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93SGlkZUNvbHVtbnNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMtcm93XCIgKm5nSWY9XCJzaG93RnVsbFNjcmVlbkJ1dHRvblwiPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICAqbmdJZj1cIiFpc0Z1bGxTY3JlZW5cIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IGV4cGVuZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZ1bGxzY3JlZW4oKVwiXHJcbiAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cInRvb2x0aXBcIlxyXG4gICAgICAgICAgZGF0YS1icy1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG4gICAgICAgICAgdGl0bGU9XCJNaW5pbWlzZVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IG1pbkFycm93OiAhaXNGdWxsU2NyZWVuLCBtYXhBcnJvdzogaXNGdWxsU2NyZWVuIH1cIlxyXG4gICAgICAgICAgc3R5bGU9XCJ0cmFuc2l0aW9uOiBjb2xvciAwLjJzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V4cGVuZC5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIG1iLTFcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgICpuZ0lmPVwiaXNGdWxsU2NyZWVuXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBleHBlbmQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIlxyXG4gICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJcclxuICAgICAgICAgIGRhdGEtYnMtcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgIHRpdGxlPVwiTWF4aW1pc2VcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBtaW5BcnJvdzogIWlzRnVsbFNjcmVlbiwgbWF4QXJyb3c6IGlzRnVsbFNjcmVlbiB9XCJcclxuICAgICAgICAgIHN0eWxlPVwidHJhbnNpdGlvbjogY29sb3IgMC4yc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9taW5pbWl6ZS5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIG1iLTFcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDwhLS0gRXhhbXBsZSBzaW5nbGUgZGFuZ2VyIGJ1dHRvbiAtLT5cclxuXHJcbiAgICAgICAgPCEtLSA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkLWZsZXggZ2FwLTIgYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnYWN0aW9ucycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBBY3Rpb25cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvVmVjdG9yLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnYWN0aW9ucydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNob3dcIj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5BY3Rpb248L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+QW5vdGhlciBhY3Rpb248L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+U29tZXRoaW5nIGVsc2UgaGVyZTwvYT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5TZXBhcmF0ZWQgbGluazwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJzaG93RmlsdGVycyAmJiAhc2hvd0ZpbHRlclJvd1wiXHJcbiAgICBjbGFzcz1cInRvcC1maWx0ZXItcm93IGJvcmRlci10b3AgcHktMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwidG9wRmlsdGVyUm93SGVpZ2h0XCJcclxuICA+XHJcbiAgICA8IS0tIExFRlQgU0lERSAoRmlsdGVyIHRhZ3MgKyBGaWx0ZXIgYnV0dG9uKSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBhY3RpdmVGaWx0ZXJlZENvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZpbHRlci10YWdzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9ICdmaWx0ZXItY29sdW1ucyc7XHJcbiAgICAgICAgICAgICAgb3BlbkZpbHRlcihjb2wpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG11dGVkLXRleHQgYWRkLWZpbHRlci1idXR0b24gYWN0aXZlLWZpbHRlcnNcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXBcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxyXG4gICAgICAgICAgICAgIGNvbD8uZmllbGQgPT0gc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmZpZWxkICYmXHJcbiAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXJPcGVuICYmXHJcbiAgICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09ICdmaWx0ZXItY29sdW1ucydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGFnIG10LTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVDb2x1bW5GaWx0ZXJGcm9tQ29sdW1uKGNvbClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jcm9zcy1wcmltYXJ5LnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBjcm9zcy1zZWNvbmRhcnkgbXMtMiBtYi0xXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAnZmlsdGVyLWNvbHVtbnMnICYmXHJcbiAgICAgICAgICAgICAgY29sPy5maWVsZCA9PSBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uZmllbGQgJiZcclxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW5cclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyQ29sdW1uczsgY29udGV4dDogeyBjb2x1bW46IGNvbCB9XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwhLS0gRmlsdGVyIEJ1dHRvbiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImFkZC1maWx0ZXItYnV0dG9uLW1lbnVcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnZmlsdGVyLWNvbHVtbnMnKTsgaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2VcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXV0ZWQtdGV4dCBhZGQtZmlsdGVyLWJ1dHRvbiBidXR0b24tZmlsdGVyXCJcclxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDcwcHhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGx1cy5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtZS0yIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgRmlsdGVyXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnZmlsdGVyLWNvbHVtbnMnICYmICFpc0FjdGl2ZUZpbHRlck9wZW5cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJDb2x1bW5zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUklHSFQgU0lERSAoVXBkYXRlICsgUmVzZXQpIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIChjbGljayk9XCJzYXZlUHJlc2V0KClcIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGN1cnNvci1wb2ludGVyIGFsbC1maWx0ZXJzLXJlc2V0LWJ1dHRvblwiXHJcbiAgICAgICAgKm5nSWY9XCIhY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgVXBkYXRlIFZpZXdcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgY3Vyc29yLXBvaW50ZXIgYWxsLWZpbHRlcnMtcmVzZXQtYnV0dG9uXCJcclxuICAgICAgICAqbmdJZj1cIiF0YWJsZUZpbHRlclZpZXdJZCAmJiBhY3RpdmVGaWx0ZXJlZENvbHVtbnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsRmlsdGVycygpXCJcclxuICAgICAgPlxyXG4gICAgICAgIFJlc2V0XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgIFtzdHlsZS5oZWlnaHRdPVwiXHJcbiAgICAgIHNob3dGaWx0ZXJzID8gJ2NhbGMoMTAwJSAtICcgKyB0b3BGaWx0ZXJSb3dIZWlnaHQgKyAncHgpJyA6ICcxMDAlJ1xyXG4gICAgXCJcclxuICAgIGNka0Ryb3BMaXN0R3JvdXBcclxuICAgIGNsYXNzPVwiZGF0YS1ncmlkLXRhYmxlLXdyYXBwZXIgb3ZlcmZsb3ctaGlkZGVuXCJcclxuICAgICNkYXRhR3JpZENvbnRhaW5lclxyXG4gICAgW3N0eWxlLmZvbnRGYW1pbHldPVwiZm9udEZhaW1seVwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgaWQ9XCJkYXRhLWdyaWQtbWFpbi1jb250YWluZXJcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJzaG93Um93c0dyb3VwaW5nXCJcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNvbHVtbnNcIlxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxyXG4gICAgICAgIHRvcEdyb3VwZWRCYWRnZXNCYWNrZ3JvdW5kQ29sb3IgfHwgaGVhZGVyQmFja2dyb3VuZENvbG9yXHJcbiAgICAgIFwiXHJcbiAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiZW50ZXJUb1RvcFJvd0dyb3VwaW5nKCRldmVudClcIlxyXG4gICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiZXhpdGVkRnJvbVRoZVRvcFJvdygkZXZlbnQpXCJcclxuICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BUb3BHcm91cCgkZXZlbnQpXCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiY2FuRW50ZXJUb1Jvd3NHcm91cGluZ1wiXHJcbiAgICAgIGlkPVwicm93cy1ncm91cGluZy10b3AtY29udGFpbmVyXCJcclxuICAgICAgY2xhc3M9XCJib3JkZXItYmVsb3cgZC1mbGV4IHB4LTQgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cImhlYWRlclRleHRDb2xvclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9qdXN0aWZ5LnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYSAmJiAhZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgRHJhZyBoZXJlIHRvIHNldCByb3cgZ3JvdXBzXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Hcm91cFJlb3JkZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICAgIFtjZGtEcmFnTG9ja0F4aXNdPVwiJ3gnXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGdyb3VwZWRDb2x1bW5zO1xyXG4gICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZENvbHVtbnMubGVuZ3RoID4gMSAmJiBpICE9IGdyb3VwZWRDb2x1bW5zLmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+e3sgY2hpbGQuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggb3ZlcmZsb3ctaGlkZGVuXCJcclxuICAgICAgW3N0eWxlLmhlaWdodF09XCJcclxuICAgICAgICAnY2FsYygxMDAlIC0gJyArXHJcbiAgICAgICAgKHNob3dSb3dzR3JvdXBpbmdcclxuICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICsgZm9vdGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICA6IGZvb3RlclJvd0hlaWdodCkgK1xyXG4gICAgICAgICdweCknXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImgtMTAwXCJcclxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiXHJcbiAgICAgICAgICAhc2hvd1NpZGVNZW51XHJcbiAgICAgICAgICAgID8gJzEwMCUnXHJcbiAgICAgICAgICAgIDogc2lkZU1lbnVWaXNpYmxlXHJcbiAgICAgICAgICAgID8gJ2NhbGMoMTAwJSAtIDI4MHB4KSdcclxuICAgICAgICAgICAgOiAnY2FsYygxMDAlIC0gMzBweCknXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCB0cmFuc2l0aW9uIHBvc2l0aW9uLXJlbGF0aXZlIHctMTAwXCI+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tIERhdGEgR3JpZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXItd3JhcHBlciB3LTEwMFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJUZXh0Q29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwiaGVhZGVyVGV4dEZvbnRzU2l6ZVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1iZWxvd109XCIhaGFzQW55VmlzaWJsZUNvbHVtblwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcclxuICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcclxuICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSBEYXRhIEdyaWQgTGVmdCBQaW5uZWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgbGVmdC1waW5uZWRcIlxyXG4gICAgICAgICAgICAgICNsZWZ0UGlubmVkSGVhZGVyXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dTZXJpYWxOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcclxuICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBTLk5vXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAqbmdJZj1cInNob3dDaGVja2JveGVzXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbCBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcclxuICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlU3RhdGUoZGF0YVNldClcIlxyXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkKGRhdGFTZXQpXCJcclxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoZGF0YVNldClcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgICAgICAgaWQ9XCJsZWZ0LXBpbm5lZC1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJsZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIm9uRHJvcExpc3RFbnRlcigkZXZlbnQsICdsZWZ0JylcIlxyXG4gICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIlxyXG4gICAgICAgICAgICAgICAgICBvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMnKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoKVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMXB4XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ2FibGUtaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbCBvZiBsZWZ0UGlubmVkQ29sdW1ucztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucydcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IGNvbC5jaGlsZHJlbi5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIENlbnRlciBQaW5uZWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgY2VudGVyLXNjcm9sbGFibGVcIlxyXG4gICAgICAgICAgICAgICNjZW50ZXJQaW5uZWRIZWFkZXJcclxuICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBpZD1cImNlbnRlci1waW5uZWQtaGVhZGVyXCJcclxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlxyXG4gICAgICAgICAgICAgICAgc2hvd1Jvd3NHcm91cGluZyA/IFsncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ10gOiBbXVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjZW50ZXJDb2x1bW5zXCJcclxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgJiYgZHJhZ2dpbmdJbkdyb3VwQXJlYVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJvbkRyb3BMaXN0RW50ZXIoJGV2ZW50LCAnY2VudGVyJylcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3Q2VudGVyQ29sdW1ucycpXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKClcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aF09XCJcclxuICAgICAgICAgICAgICAgICdjYWxjKDEwMCUgLSAnICtcclxuICAgICAgICAgICAgICAgIChyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCArIGxlZnRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGgpICtcclxuICAgICAgICAgICAgICAgICdweCknXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgI2NvbHVtbnNHcm91cGVkQm94XHJcbiAgICAgICAgICAgICAgICBpZD1cImdyb3VwQm94SGVhZGVyRGl2XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHctMTAwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dGaWx0ZXJSb3cgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcy0zXCI+R3JvdXA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgJ2dyb3VwJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlc2l6ZUdyb3VwQm94KCRldmVudClcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IC0ycHhcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAzMHB4OyBoZWlnaHQ6IDEwMCVcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncmlkVHlwZSA9PT0gJ0Fzc2V0cycgfHwgZ3JpZFR5cGUgPT09ICdUYXNrcydcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnYWJsZS1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cIlxyXG4gICAgICAgICAgICAgICAgICBjaGVja0NvbHVtbkdyb3VwaW5nU3RhdHVzKGNvbCk7XHJcbiAgICAgICAgICAgICAgICAgIGRyYWdTdGFydE9uR3JvdXAoY29sKTtcclxuICAgICAgICAgICAgICAgICAgb25EcmFnU3RhcnRlZChjb2wpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNka0RyYWdNb3ZlZCk9XCJvbkRyYWdNb3ZlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcmFnRW5kZWQpPVwib25EcmFnRW5kZWQoKVwiXHJcbiAgICAgICAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgY29sIG9mIGNlbnRlckNvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3ByZXZpZXdDZW50ZXJDb2x1bW5zJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNPdXRzaWRlQ29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ2dpbmdJbkdyb3VwQXJlYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzT3V0c2lkZUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLWNyb3NzLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXJDb2x1bW5zJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWlzT3V0c2lkZUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQ/LmlzX2dyb3VwYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gY29sLmNoaWxkcmVuLmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uaXNfZ3JvdXBhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSBEYXRhIEdyaWQgUmlnaHQgUGlubmVkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICAgICAgaWQ9XCJyaWdodC1waW5uZWQtaGVhZGVyXCJcclxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcclxuICAgICAgICAgICAgICAgIHNob3dSb3dzR3JvdXBpbmcgPyBbJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lciddIDogW11cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgcmlnaHQtcGlubmVkXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwiXHJcbiAgICAgICAgICAgICAgICBvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zJylcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwib25Ecm9wTGlzdEVudGVyKCRldmVudCwgJ3JpZ2h0JylcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoKVwiXHJcbiAgICAgICAgICAgICAgI3JpZ2h0UGlubmVkSGVhZGVyXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyaWdodC1waW5uZWQtaGVhZGVyIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDAuMnB4XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ2FibGUtaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjb2xcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBjb2wgb2YgcmlnaHRQaW5uZWRDb2x1bW5zO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRSaWdodDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIHNpbmdsZUNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IGNvbC5jaGlsZHJlbi5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tIERhdGEgR3JpZCBCb2R5IHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiaC0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhZGF0YVNldD8ubGVuZ3RoICYmICFsb2FkaW5nICYmICFkYXRhU2V0TG9hZGluZ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3JlY29yZC1ub3QtZm91bmQuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPjwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGRpdj5ObyBSZWNvcmQgRm91bmQ8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbG9hZGluZy1vdmVybGF5XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nIHx8IGRhdGFTZXRMb2FkaW5nXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICB6LWluZGV4OiA5OTk7XHJcbiAgICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDFweCk7XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImxvYWRlclwiPjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtYm9keS13cmFwcGVyIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYm9keVdyYXBwZXJIZWlnaHRcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGF1dG87IG92ZXJmbG93LXg6IGhpZGRlblwiXHJcbiAgICAgICAgICAgICNtYWluU2Nyb2xsXHJcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25NYWluU2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwidmVydGljYWxTY3JvbGxiYXJXaWR0aFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gTEVGVCBQSU5ORUQgLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgIWdyb3VwZWRDb2x1bW5zLmxlbmd0aCA/IG9yaWdpbmFsRGF0YVNldC5sZW5ndGggKiByb3dIZWlnaHQgOiAwXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDwgOFwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgbGVmdC1waW5uZWQtYm9keSB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cImhhc0xlZnRQaW5uZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy50cmFuc3BhcmVudC1ib3JkZXItcmlnaHRdPVwiIWhhc0xlZnRQaW5uZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVkoJyArIHRyYW5zbGF0ZVkgKyAncHgpJ1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmgtMTAwXT1cIm9yaWdpbmFsRGF0YVNldC5sZW5ndGggPCA4XCJcclxuICAgICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZyAmJiAhZGF0YVNldExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiXHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IChzdGFydEluZGV4ICsgaSkgJSAyICE9PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xlZnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdsZWZ0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0xlZnRQaW5uZWRDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdsZWZ0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQ0VOVEVSIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNlbnRlclBpbm5lZEhlYWRlci5jbGllbnRXaWR0aFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgY2VudGVyLXNjcm9sbGFibGVcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmgtMTAwXT1cIm9yaWdpbmFsRGF0YVNldC5sZW5ndGggPCA4XCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogaGlkZGVuOyBvdmVyZmxvdy14OiBhdXRvXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVkoJyArIHRyYW5zbGF0ZVkgKyAncHgpJ1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgI2NlbnRlclNjcm9sbGFibGVCb2R5XHJcbiAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3hTaGFkb3ddPVwibGVmdFBpbm5lZEJveHNoYWRvd1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWRhdGFTZXRMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3cgb2YgdmlzaWJsZVJvd3M7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHJvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0NlbnRlckNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogKHN0YXJ0SW5kZXggKyBpKSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0NlbnRlckNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFJJR0hUIFBJTk5FRCAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmlnaHQtcGlubmVkLWJvZHktd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSaWdodFBpbm5lZENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDwgOFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgaXNTY3JvbGxiYXJWaXNpYmxlXHJcbiAgICAgICAgICAgICAgICAgID8gcmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxNVxyXG4gICAgICAgICAgICAgICAgICA6IHJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInJpZ2h0UGlubmVkQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgcmlnaHQtcGlubmVkLWJvZHkgdy0xMDAgaC0xMDBcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWSgnICsgdHJhbnNsYXRlWSArICdweCknXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3hTaGFkb3ddPVwicmlnaHRQaW5uZWRCb3hzaGFkb3dcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJyaWdodFBpbm5lZEJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nICYmICFkYXRhU2V0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICBbQHJvd0R5bmFtaWNdPVwicm93QW5pbWF0aW9uXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3cgb2YgdmlzaWJsZVJvd3M7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHJvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IChzdGFydEluZGV4ICsgaSkgJSAyICE9PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3RhbEFtb3VudFJvdyAmJiBvcmlnaW5hbERhdGFTZXQ/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBfX3ZpcnR1YWxJbmRleDogMCB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IGF1dG87IGxlZnQ6IGF1dG9cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5JbWFnZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICBkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRIZWlnaHQgLSAoZm9vdGVyUm93SGVpZ2h0ICsgMTAwKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpbWFnZS1tb2RhbCBmdWxsLWltYWdlLW1vZGFsXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImZ1bGxzY3JlZW5JbWFnZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZnVsbHNjcmVlbkltYWdlXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIkZ1bGxzY3JlZW4gSW1hZ2VcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFJvd3Muc2l6ZSA+IDAgJiYgc2hvd1Rhc2tiYXJcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidGFza2JhciB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvdHRvbS5weF09XCI4NVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtcm93cy1hY3Rpb24tYmFyXCIgW0BzbGlkZVVwXT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtY291bnRcIj5cclxuICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRSb3dzLnNpemUgfX0gc2VsZWN0ZWQgb2ZcclxuICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnPy5wYWdpbmF0aW9uUGFyYW1zPy50b3RhbEl0ZW1zXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIFRvdGFsXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB0YXNrYmFyQWN0aW9uczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uPy5oYXNfcGVybWlzc2lvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIHZlcmlmaWVkIGJ0biB7eyBhY3Rpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25WZXJpZnlDbGljayhhY3Rpb24/LmFjdGlvbk5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGFjdGlvbj8uYWN0aW9uTmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrYmFyQWN0aW9ucy5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPT0gdGFza2JhckFjdGlvbnMubGVuZ3RoIC0gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tiYXJBY3Rpb25zW2kgKyAxXT8uaGFzX3Blcm1pc3Npb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+fDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXJTZWxlY3Rpb25TdGF0ZSh0YWJsZVR5cGUpO3NlbGVjdGVkUm93cy5jbGVhcigpO1wiIGNsYXNzPVwiY2xlYXItYnRuIG1zLTIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmkteC1jaXJjbGVcIj48L2k+IENsZWFyIFNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSBWZXJ0aWNhbCBGYWtlIHNjcm9sbCBCYXIgLS0+XHJcbiAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvbk1haW5GYWtlU2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZha2Utc2Nyb2xsYmFyIGZha2Utc2Nyb2xsYmFyLXZlcnRpY2FsIGQtbm9uZVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJ2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoXCJcclxuICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJcclxuICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogM1xyXG4gICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxyXG4gICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJib2R5V3JhcHBlckhlaWdodFwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDE3cHg7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGYxZjJmMztcclxuICAgICAgICAgICAgICB6LWluZGV4OiAxMDtcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAqIGRhdGFTZXRMZW5ndGhcIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBIb3JpemludGFsIEZha2UgU2Nyb2xsYmFycyAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgICAqbmdJZj1cImhhc1Njcm9sbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwiaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLWhvcml6aW50YWwtc2Nyb2xsYmFyXCJcclxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcclxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImxlZnRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXg6IHNjcm9sbFwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJob3JpemludGFsU2Nyb2xsYmFyV2lkdGhcIlxyXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLWhvcml6aW50YWwtc2Nyb2xsYmFyXCJcclxuICAgICAgICAgICAgI2hvcml6aW50YWxGYWtlU2Nyb2xsXHJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGggLSAxMFwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJob3JpemludGFsU2Nyb2xsYmFyV2lkdGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxyXG4gICAgICAgICAgICAjZmFrZVNjcm9sbFxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXg6IHNjcm9sbFwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTaWRlIE1lbnUgSW1wbGVtZW50ZWQgSGVyZSAtLT5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwic2hvd1NpZGVNZW51XCJcclxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwic2lkZU1lbnVWaXNpYmxlID8gMjgwIDogMzBcIlxyXG4gICAgICAgIGNsYXNzPVwicmlnaHQtbWVudSBoLTEwMFwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJzaWRlbWVudUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgZC1mbGV4IGZsZXgtcm93LXJldmVyc2VcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMzBweFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItc3RhcnRdPVwic2lkZU1lbnVWaXNpYmxlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaWRlTWVudSgnY29scycpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYmctZmZmXT1cIlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnY29scycgJiYgc2lkZU1lbnVWaXNpYmxlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cInNpZGVNZW51VmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW5zLWJ1dHRvbiBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3VpLWNoZWNrcy1ncmlkLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbWVudWUtdGV4dFwiPkNvbHVtbnM8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNpZGVNZW51KCdmaWx0cnMnKVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLWZmZl09XCJcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2ZpbHRycycgJiYgc2lkZU1lbnVWaXNpYmxlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cIlxyXG4gICAgICAgICAgICAgICAgc2lkZU1lbnVWaXNpYmxlICYmIGN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2ZpbHRycydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1ucy1idXR0b24gZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW1lbnVlLXRleHRcIj5GaWx0ZXI8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJoLTEwMFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2lkZU1lbnVWaXNpYmxlXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyB3aWR0aDogc2lkZU1lbnVWaXNpYmxlID8gJzI1MHB4JyA6ICcnIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2NvbHMnICYmIHNpZGVNZW51VmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbm5lbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDb2x1bW4gSXRlbXMgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWJvZHkgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGhyIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbWVudS1yb3ctZ3JvdXBzXCIgc3R5bGU9XCJoZWlnaHQ6IDMwJVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlTWVudVJvd0dyb3Vwc1wiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnZmlsdHJzJyAmJiBzaWRlTWVudVZpc2libGVcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlRmlsdGVyc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImZvb3RlclJvd0hlaWdodFwiXHJcbiAgICAgIGNsYXNzPVwiYm9yZGVyLXRvcFwiXHJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZm9vdGVyUm93QmFja2dyb3VuZENvbG9yXCJcclxuICAgID5cclxuICAgICAgPCEtLSBSb3dzOiA8c3BhbiBjbGFzcz1cImZ3LTUwMCBtcy0xXCI+e3sgZGF0YVNldC5sZW5ndGggfX08L3NwYW4+IC0tPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZm9vdGVyUm93SGVpZ2h0XCJcclxuICAgICAgICBbc3R5bGUucGFkZGluZy5weF09XCJmb290ZXJQYWRkaW5nXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLXNpemVcIj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIHBhZ2VTaXplT3B0aW9uc1wiIFt2YWx1ZV09XCJzaXplXCI+XHJcbiAgICAgICAgICAgICAge3sgc2l6ZSB9fVxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZXBhcmF0b3JcIj4gcGVyIHBhZ2UgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1pbmZvXCI+XHJcbiAgICAgICAgICBSZXN1bHRzOlxyXG4gICAgICAgICAge3sgKHBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfX0te3tcclxuICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5wYWdlICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdCA8XHJcbiAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzXHJcbiAgICAgICAgICAgICAgPyBwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKiBwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XHJcbiAgICAgICAgICAgICAgOiBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0c1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIG9mXHJcbiAgICAgICAgICB7eyBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1idXR0b25zXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPT09IDFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDigLlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgdmlzaWJsZVBhZ2VzXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cInBhZ2UgIT09ICcuLi4nXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnZSlcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicGFnZSA9PT0gcGFnaW5hdGlvbkNvbmZpZy5wYWdlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IHBhZ2UgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGFnZSA9PT0gJy4uLidcIj4uLi48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKyAxKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPT09IHBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg4oC6XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbjwhLS0gSGVhZGVyIENlbGwgVGVtcGxhdGUgLS0+XHJcbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICNoZWFkZXJDZWxsXHJcbiAgbGV0LWNvbFxyXG4gIGxldC1waW5uZWRSaWdodD1cInBpbm5lZFJpZ2h0XCJcclxuICBsZXQtaT1cImluZGV4XCJcclxuICBsZXQtc2VjdGlvbnM9XCJzZWN0aW9uXCJcclxuICBsZXQtY2FsbGVkRnJvbU5lc3RlZFBsYWNlaG9sZGVyPVwiY2FsbGVkRnJvbU5lc3RlZFBsYWNlaG9sZGVyXCJcclxuPlxyXG4gIDxkaXY+XHJcbiAgICA8IS0tIEdyb3VwIEhlYWRlciAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aCA+IDA7IGVsc2UgZmxhdEhlYWRlclwiPlxyXG4gICAgICA8ZGl2IGNka0Ryb3BsaXN0R3JvdXAgY2xhc3M9XCJncm91cC1jb2x1bW4td3JhcHBlclwiPlxyXG4gICAgICAgIDwhLS0gUGFyZW50IEhlYWRlciAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInNob3VsZFRoZUdyb3VwSGVhZGVyU2hvdyhjb2wpXCJcclxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZ3JvdXAtaGVhZGVyXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgICAgICAgW3N0eWxlLmdyaWRDb2x1bW5dPVwiJ3NwYW4gJyArIGNvbC5jaGlsZHJlbi5sZW5ndGhcIlxyXG4gICAgICAgICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXHJcbiAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LWVuZF09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAxXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtaGVhZGVyLWNvbnRlbnRcIlxyXG4gICAgICAgICAgICBbdGl0bGVdPVwiY29sLmhlYWRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5tcy0yXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXHJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihjb2wuY2hpbGRyZW4pXCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uUmVzaXplR3JvdXAoJGV2ZW50LCBjb2wsIHBpbm5lZFJpZ2h0KVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBDaGlsZCBIZWFkZXJzIGFuZCBGaWx0ZXJzIC0tPlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjb2wuY2hpbGRyZW5cIlxyXG4gICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIm9uQ2hpbGREcm9wbGlzdFNvcnRlZCgkZXZlbnQsIHNlY3Rpb25zKVwiXHJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uQ2hpbGREcm9wbGlzdERyb3BlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcclxuICAgICAgICAgICAgc2hvd1Jvd3NHcm91cGluZyA/IFsncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ10gOiBbXVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNoaWxkXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gQ2hpbGQgSGVhZGVyIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQuaXNfdmlzaWJsZSAmJiAhY2hpbGRbJ2lzUm93R3JvdXBlZCddXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxscyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWZpZWxkXT1cImNoaWxkLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjaGlsZC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAyXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5maWx0ZXItYXBwbGllZC1vbi10ZXh0XT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sLmhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mudy0xMDBdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVkaXRhYmxlLWhlYWRlcl09XCJjaGlsZD8uaXNfZWRpdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY2hpbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoaWxkLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZC5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBPbmx5IHNob3cgbWVudSBpZiB0aGlzIGNvbHVtbiBpcyBhY3RpdmUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbCA9PT0gY2hpbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogLTUwJTsgei1pbmRleDogMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAtKCFjaGlsZD8ucGlubmVkID8gY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnQgOiAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzaG93RmlsdGVyUm93IHx8IHNob3dDb2x1bW5zR3JvdXBpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIC0gMTBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHQgLSAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTWVudTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY2hpbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjaGlsZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEZpbHRlciBDZWxsIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmllbGRdPVwiY2hpbGQuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAzXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hpbGQuZmlsdGVyVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHBhc3RlKT1cIm9uRmlsdGVyQ2hhbmdlKGNoaWxkKTsgYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNoaWxkPy50eXBlID09ICdpbWFnZSdcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZC1zZWFyY2gtaW5wdXRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNoaWxkPy50eXBlID09ICdpbWFnZSdcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWx0ZXJGcm9tRGlzYWJsZWRTZWFyY2hlZElucHV0KGNoaWxkKVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuRmlsdGVyKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkXT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiY2hpbGQ/LnR5cGUgPT0gJ2ltYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogN3B4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDdweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzc0ODZmZjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAgMTYzIDIzMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDRweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAxMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJDZWxsPy5maWVsZCA9PSBjaGlsZD8uZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAxMDAlOyByaWdodDogMDsgei1pbmRleDogOTlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnBpbm5lZCA/IDAgOiAtY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnRcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJNZW51OyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XHJcbiAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICFkcmFnZ2luZ0luR3JvdXBBcmVhIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKGNoaWxkLmlzX2dyb3VwYWJsZSAmJiBkcmFnZ2luZ0luR3JvdXBBcmVhKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYSAmJiAhY2hpbGQuaXNfZ3JvdXBhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Jhbi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLmhlYWRlciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgY2hpbGRIZWFkZXJQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IHNlY3Rpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgY2hpbGQ/LmlzX2dyb3VwYWJsZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGlubmVkUmlnaHQ6IHBpbm5lZFJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IHNlY3Rpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEZsYXQgSGVhZGVyIHx8IFNpbmdsZSBIZWFkZXIgQ2VsbC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlICNmbGF0SGVhZGVyPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJncm91cC1jb2x1bW4td3JhcHBlclwiXHJcbiAgICAgICAgKm5nSWY9XCJjb2wuaXNfdmlzaWJsZSAmJiAhY29sWydpc1Jvd0dyb3VwZWQnXVwiXHJcbiAgICAgID5cclxuICAgICAgICA8IS0tIEZ1bGwtaGVpZ2h0IEhlYWRlciBDZWxsIChzcGFucyAyIHJvd3MgdmlzdWFsbHkpIC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgb25lLXJvdy1oZWFkZXItY2VsbHNcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyA/IGhlYWRlclJvd0hlaWdodCAqIDIgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtzdHlsZS5mb250V2VpZ2h0XT1cImhlYWRlckZvbnRXZWlnaHRcIlxyXG4gICAgICAgICAgc3R5bGU9XCJncmlkLXJvdzogMSAvIHNwYW4gMlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sLmhlYWRlclwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZWRpdGFibGUtaGVhZGVyXT1cImNvbD8uaXNfZWRpdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWQtb24tdGV4dF09XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY29sKTtcclxuICAgICAgICAgICAgICAgICAgICBvcGVuRmlsdGVyb25UaHJlZURvdHNDbGljayhjb2wpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWUtMl09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cImNvbC5vcmRlcl9ieVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic29ydGluZ0NvbmZpZz8uZmllbGQgPT0gY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBBc2NlbmRpbmcgU29ydCBJY29uIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT0gJ2FzYydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWFzYy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREZXNjKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdhc2MnXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gRGVzY2VuZGluZyBTb3J0IEljb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnZGVzYydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWRlc2Muc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTEgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0QXNjKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdkZXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHJlZS1kb3RzIHAtMVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBPbmx5IHNob3cgbWVudSBpZiB0aGlzIGNvbHVtbiBpcyBhY3RpdmUgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbCA9PT0gY29sXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IC01MCU7IHotaW5kZXg6IDIxXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLSghY29sPy5waW5uZWQgPyBjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdCA6IDApXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IHNob3dGaWx0ZXJSb3cgfHwgc2hvd0NvbHVtbnNHcm91cGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDIgLSAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodCAtIDEwXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IDBcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5NZW51O1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3Mudy0xMDBdPVwiY29sLnBpbm5lZCA9PSAncmlnaHQnXCJcclxuICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cImF1dG9zaXplQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjb2wpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEZpbHRlciBDZWxsIC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcclxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgIFthdHRyLmRhdGEtZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5maWx0ZXJWYWx1ZVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKGNvbClcIlxyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZSdcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWQtc2VhcmNoLWlucHV0XT1cIlxyXG4gICAgICAgICAgICAgIGNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlSW5GaWx0ZXJSb3dTZWFyY2goJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlcihjb2wpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkXT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiXHJcbiAgICAgICAgICAgID48c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogN3B4O1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDNweCAjNzQ4NmZmO1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAgMTYzIDIzMyk7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICByaWdodDogNHB4O1xyXG4gICAgICAgICAgICAgICAgdG9wOiAxMnB4O1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWJsb2NrXCJcclxuICAgICAgICAgICAgPjwvc3BhblxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlclwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyQ2VsbCA9PT0gY29sXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IHJpZ2h0OiAwOyB6LWluZGV4OiA5OVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImNvbD8ucGlubmVkID8gMCA6IC1jZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIEJvZHkgQ2VsbCBUZW1wbGF0ZSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICNyb3dDZWxsXHJcbiAgbGV0LXJvd1xyXG4gIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgbGV0LWlzRXZlbj1cImlzRXZlblwiXHJcbiAgbGV0LWlzT2RkPVwiaXNPZGRcIlxyXG4gIGxldC1pc0xlZnRTZWN0aW9uPVwiaXNMZWZ0XCJcclxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxyXG4gIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcclxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxyXG4+XHJcbiAgPCEtLSBDaGVjayBpZiByb3cgaXMgYSBncm91cCAtLT5cclxuICA8bmctY29udGFpbmVyXHJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwUm93VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3csIGRlcHRoOiAwIH1cIlxyXG4gID48L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2dyb3VwUm93VGVtcGxhdGUgbGV0LXJvdyBsZXQtZGVwdGg9XCJkZXB0aFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5pc0dyb3VwOyBlbHNlIHJlZ3VsYXJSb3dcIj5cclxuICAgICAgPCEtLSBHcm91cCBIZWFkZXIgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImdyb3VwLWhlYWRlci1yb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwic2VjdGlvbiAhPT0gJ2NlbnRlcidcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJcclxuICAgICAgICAgIHNlY3Rpb24gPT09ICdjZW50ZXInXHJcbiAgICAgICAgICAgID8gKGNlbnRlclNjcm9sbGFibGVCb2R5Py5zY3JvbGxXaWR0aCA/PyAwKSArICdweCdcclxuICAgICAgICAgICAgOiAnMTAwJSdcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJzZWN0aW9uID09ICdsZWZ0J1wiXHJcbiAgICAgICAgICBjbGFzcz1cImgtMTAwIGQtZmxleFwiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibGVmdFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCAtIDFcIlxyXG4gICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93U2VyaWFsTnVtYmVyXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNTBweFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBoLTEwMCBib3JkZXItcmlnaHQganVzdGlmeS1jb250ZW50LWVuZCBwZS0yIHMtbm9cIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY3Vyc29yXT1cIlxyXG4gICAgICAgICAgICAgICd1cmwoJyArXHJcbiAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1yaWdodC5zdmcpLCBhdXRvJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUm93TW91c2VEb3duKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChtb3VzZW92ZXIpPVwib25Sb3dNb3VzZU92ZXIocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGdldFN0YXJ0SW5kZXgoKSArIChyb3cuX192aXJ0dWFsSW5kZXggLSAxKSB8fCBcIlwiIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2hvd0NoZWNrYm94ZXNcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA1MHB4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxyXG4gICAgICAgICAgICAgIHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHhcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93KSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93KSA9PT0gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEdyb3VwUm93KCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAnY2VudGVyJ1wiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbFdpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBzLTIgaC0xMDAgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxyXG4gICAgICAgICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiZGVwdGggPiAwID8gZGVwdGggKiAzMCA6IDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgZmlsdGVyLWljb24td3JhcHBlclwiIChjbGljayk9XCJ0b2dnbGVFeHBhbmQocm93KVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBhbGlnbi1pdGVtcy1jZW50ZXIgZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJvdy5pc0V4cGFuZFxyXG4gICAgICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZChyb3cpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgIHt7IHJvdy5ncm91cFZhbHVlIH19ICh7eyBjb3VudExlYWZSb3dzKHJvdykgfX0pXHJcbiAgICAgICAgICAgIDwvc3Ryb25nPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAncmlnaHQnXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFwiXHJcbiAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgID48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFJlY3Vyc2l2ZSBDaGlsZHJlbiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWNoaWxkcmVuXCIgKm5nSWY9XCJyb3cuaXNFeHBhbmRcIiBbQHNsaWRlVG9nZ2xlXT5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2Ygcm93LmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SWRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZC5pc0dyb3VwOyBlbHNlIGRhdGFSb3dcIj5cclxuICAgICAgICAgICAgPCEtLSBSZWN1cnNpdmUgY2FsbCBmb3IgbmVzdGVkIGdyb3VwIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgIGdyb3VwUm93VGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogY2hpbGQsIGRlcHRoOiBkZXB0aCArIDEgfVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0YVJvdz5cclxuICAgICAgICAgICAgPCEtLSBSZWd1bGFyIGRhdGEgcm93IC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgIGlzRXZlbjogaSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgIGlzT2RkOiBpICUgMiAhPT0gMCxcclxuICAgICAgICAgICAgICAgICAgaXNMZWZ0OiBpc0xlZnRTZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBpc1RvdGFsUm93XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8IS0tIFJlZ3VsYXIgcm93IChub3QgYSBncm91cCkgLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNyZWd1bGFyUm93PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMzBweDsgaGVpZ2h0OiAxMDAlXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiAoZ3JpZFR5cGUgPT09ICdBc3NldHMnIHx8IGdyaWRUeXBlID09PSAnVGFza3MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgIDogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbFJvd0V4cGFuZChyb3cpXCJcclxuICAgICAgICAgICpuZ0lmPVwicm93Py5kZXRhaWw/LnJlc3VsdD8ubGVuZ3RoIHx8IGdyaWRUeXBlID09PSAnVGFza3MnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGZpbHRlci1pY29uLXdyYXBwZXJcIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgaXNEZXRhaWxzRXhwYW5kZWQocm93KVxyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cIlxyXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiBncm91cGVkQ29sdW1ucz8ubGVuZ3RoID8gZ3JvdXBCb3hQYWRkaW5nIDogMFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCByb3cpXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtcm93IGgtMTAwXCJcclxuICAgICAgICBbY2xhc3MuZXZlbi1yb3ddPVwiaXNFdmVuXCJcclxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXHJcbiAgICAgICAgW2NsYXNzLmhvdmVyZWQtcm93XT1cImhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Sb3dIb3Zlcihyb3cpXCJcclxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgID48L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCByb3cpXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtcm93XCJcclxuICAgICAgICBbY2xhc3MuZXZlbi1yb3ddPVwiaXNFdmVuXCJcclxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXHJcbiAgICAgICAgW2NsYXNzLmhvdmVyZWQtcm93XT1cImhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Sb3dIb3Zlcihyb3cpXCJcclxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsIGp1c3RpZnktY29udGVudC1lbmQgcGUtMiBzLW5vXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCI1NVwiXHJcbiAgICAgICAgICAqbmdJZj1cImlzTGVmdFNlY3Rpb24gJiYgc2hvd1NlcmlhbE51bWJlclwiXHJcbiAgICAgICAgICBbc3R5bGUuY3Vyc29yXT1cIlxyXG4gICAgICAgICAgICAndXJsKCcgK1xyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1yaWdodC5zdmcpLCBhdXRvJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIChtb3VzZWRvd24pPVwib25Sb3dNb3VzZURvd24ocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgIChtb3VzZW92ZXIpPVwib25Sb3dNb3VzZU92ZXIocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFN0YXJ0SW5kZXgoKSArIChyb3cuX192aXJ0dWFsSW5kZXggLSAxKSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxyXG4gICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgICAgICA/IHNlbGVjdGVkUm93c0JhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgICAgIDogY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsXCJcclxuICAgICAgICAgICpuZ0lmPVwiaXNMZWZ0U2VjdGlvbiAmJiBzaG93Q2hlY2tib3hlc1wiXHJcbiAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxyXG4gICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxXCJcclxuICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uXCJcclxuICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKHJvdylcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBSZW5kZXIgYWxsIGNvbHVtbnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucztcclxuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkO1xyXG4gICAgICAgICAgICBsZXQgY29sSW5kZXggPSBpbmRleFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGggPiAwOyBlbHNlIGZsYXRDb2x1bW5cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcclxuICAgICAgICAgICAgICAgIGxldCBzdWJDb2xJbmRleCA9IGluZGV4XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZD8uaXNfdmlzaWJsZSAmJiAhY2hpbGQ/LmlzUm93R3JvdXBlZFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogcm93SW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xJbmRleDogY29sSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogc3ViQ29sSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXRDb2x1bW4+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmlzX3Zpc2libGUgJiYgIWNvbD8uaXNSb3dHcm91cGVkXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbEluZGV4OiBjb2xJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIFtAc2xpZGVUb2dnbGVdXHJcbiAgICAgICpuZ0lmPVwic2VjdGlvbiA9PT0gJ2xlZnQnICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxyXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzXCJcclxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzNTBweDsgb3ZlcmZsb3c6IGhpZGRlblwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiaGFzSG9yaXpvbnRhbFNjcm9sbCA/IDMzOSA6IDM0MVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgbGVmdFJpZ2h0TmVzdGVkUGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbQHNsaWRlVG9nZ2xlXVxyXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdjZW50ZXInICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxyXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzIGNlbnRlci1zZWN0aW9uXCJcclxuICAgICAgc3R5bGU9XCJcclxuICAgICAgICBtYXgtaGVpZ2h0OiAzNTBweDtcclxuICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XHJcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcclxuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XHJcbiAgICAgIFwiXHJcbiAgICAgICNuZXN0ZWRUYWJsZVxyXG4gICAgICBbc3R5bGUud2lkdGhdPVwiXHJcbiAgICAgICAgaGFzUmlnaHRQaW5uZWRDb2x1bW5zXHJcbiAgICAgICAgICA/ICcxMDAlJ1xyXG4gICAgICAgICAgOiBoYXNWZXJ0aWNhbFNjcm9sbFxyXG4gICAgICAgICAgPyAnY2FsYygxMDAlIC0gMTJweCknXHJcbiAgICAgICAgICA6ICcxMDAlJ1xyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5lc3RlZFRhYmxlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyaWRUeXBlID09ICdUYXNrcydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICB0YXNrTWFuYWdlbWVudFRlbXBsYXRlO1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7IHRhc2tEZXRhaWxzOiByb3cgfVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbQHNsaWRlVG9nZ2xlXVxyXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdyaWdodCcgJiYgaXNEZXRhaWxzRXhwYW5kZWQocm93KVwiXHJcbiAgICAgIGNsYXNzPVwiYWNjb3JkaW9uLWRldGFpbHNcIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDM1MHB4OyBvdmVyZmxvdzogaGlkZGVuXCJcclxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJoYXNIb3Jpem9udGFsU2Nyb2xsID8gMzM5IDogMzQxXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICBsZWZ0UmlnaHROZXN0ZWRQbGFjZWhvbGRlcjtcclxuICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBBY3R1YWwgQ2VsbCBpcyBIZXJlIC0tPlxyXG48bmctdGVtcGxhdGVcclxuICAjY2VsbFRlbXBsYXRlXHJcbiAgbGV0LWNvbD1cImNvbFwiXHJcbiAgbGV0LXJvdz1cInJvd1wiXHJcbiAgbGV0LXNlY3Rpb249XCJzZWN0aW9uXCJcclxuICBsZXQtc3ViQ29sSW5kZXg9XCJzdWJDb2xJbmRleFwiXHJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxyXG4gIGxldC1jb2xJbmRleD1cImNvbEluZGV4XCJcclxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgI2NlbGxDb250YWluZXJcclxuICAgIChjbGljayk9XCJcclxuICAgICAgZWRpdGluZ0tleSA9ICcnOyBzZXRBY3RpdmVDZWxsKHJvdywgY29sKTsgY29sbGFwc2VBbGxFeHBhbmRlZENlbGxzKClcclxuICAgIFwiXHJcbiAgICBbc3R5bGUuZm9udFdlaWdodF09XCJib2R5Rm9udFdlaWdodFwiXHJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICBjbGFzcz1cImNlbGwgb3ZlcmZsb3ctdmlzaWJsZSBwb3NpdGlvbi1yZWxhdGl2ZSBkYXRhLWdyaWQtY2VsbFwiXHJcbiAgICBbYXR0ci5kYXRhLWZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXHJcbiAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICBbY2xhc3MuYWN0aXZlLWNlbGxdPVwiXHJcbiAgICAgIGlzQWN0aXZlQ2VsbChyb3csIGNvbCkgJiYgIWlzRWRpdGluZyhyb3csIGNvbCkgJiYgc2VsZWN0ZWRLZXlzLnNpemUgPT0gMVxyXG4gICAgXCJcclxuICAgIChkYmxjbGljayk9XCJcclxuICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZW5hYmxlRWRpdChyb3csIGNvbCwgZmFsc2UsIGNlbGxDb250YWluZXIpXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3c/Ll9fdmlydHVhbEluZGV4XCJcclxuICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdz8uX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZW5hYmxlRWRpdChyb3csIGNvbClcIlxyXG4gICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgc3RhcnRTZWxlY3Rpb24oXHJcbiAgICAgICAgcm93Ll9fdmlydHVhbEluZGV4LFxyXG4gICAgICAgIGNvbEluZGV4LFxyXG4gICAgICAgIHN1YkNvbEluZGV4ID8/IDAsXHJcbiAgICAgICAgY29sLmZpZWxkLFxyXG4gICAgICAgICRldmVudCxcclxuICAgICAgICBzZWN0aW9uXHJcbiAgICAgIClcclxuICAgIFwiXHJcbiAgICAobW91c2VlbnRlcik9XCJcclxuICAgICAgZXh0ZW5kU2VsZWN0aW9uKFxyXG4gICAgICAgIHJvdy5fX3ZpcnR1YWxJbmRleCxcclxuICAgICAgICBjb2xJbmRleCxcclxuICAgICAgICBzdWJDb2xJbmRleCA/PyAwLFxyXG4gICAgICAgIGNvbC5maWVsZCxcclxuICAgICAgICAkZXZlbnQsXHJcbiAgICAgICAgc2VjdGlvblxyXG4gICAgICApXHJcbiAgICBcIlxyXG4gICAgKG1vdXNldXApPVwiZW5kU2VsZWN0aW9uKClcIlxyXG4gICAgW2NsYXNzLnNlbGVjdGVkLWNlbGxdPVwiXHJcbiAgICAgIGlzU2VsZWN0ZWQoXHJcbiAgICAgICAgcm93Ll9fdmlydHVhbEluZGV4LFxyXG4gICAgICAgIGNvbEluZGV4LFxyXG4gICAgICAgIHN1YkNvbEluZGV4ID8/IDAsXHJcbiAgICAgICAgY29sLmZpZWxkLFxyXG4gICAgICAgIHNlY3Rpb25cclxuICAgICAgKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy50b3AtYm9yZGVyXT1cIlxyXG4gICAgICBpc1RvcEJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgICBbY2xhc3MuYm90dG9tLWJvcmRlcl09XCJcclxuICAgICAgaXNCb3R0b21Cb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLmxlZnQtYm9yZGVyXT1cIlxyXG4gICAgICBpc0xlZnRCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLnJpZ2h0LWJvcmRlcl09XCJcclxuICAgICAgaXNSaWdodEJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgICBbY2xhc3MudG9wLWxlZnQtY29ybmVyXT1cIlxyXG4gICAgICBpc1RvcExlZnRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLnRvcC1yaWdodC1jb3JuZXJdPVwiXHJcbiAgICAgIGlzVG9wUmlnaHRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLmJvdHRvbS1sZWZ0LWNvcm5lcl09XCJcclxuICAgICAgaXNCb3R0b21MZWZ0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5ib3R0b20tcmlnaHQtY29ybmVyXT1cIlxyXG4gICAgICBpc0JvdHRvbVJpZ2h0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8IS0tICAobW91c2Vkb3duKT1cInN0YXJ0U2VsZWN0aW9uKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZCwgJGV2ZW50KVwiXHJcbiAgKG1vdXNlZW50ZXIpPVwiZXh0ZW5kU2VsZWN0aW9uKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZCwgJGV2ZW50KVwiXHJcbiAgKG1vdXNldXApPVwiZW5kU2VsZWN0aW9uKClcIlxyXG4gIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cImlzU2VsZWN0ZWQocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZClcIiAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ0YWJsZS1jZWxsXCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZS1mb3ItZWRpdGluZ109XCJcclxuICAgICAgICBpc0VkaXRpbmcocm93LCBjb2wpICYmXHJcbiAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoIDw9IDUwKVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGlzRWRpdGluZyhyb3csIGNvbCkgJiZcclxuICAgICAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgICAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPD0gNTAgJiZcclxuICAgICAgICAgICAgICAgICFleHBhbmRlZENlbGxzLnNpemUpKTtcclxuICAgICAgICAgIGVsc2Ugdmlld01vZGVcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcblxyXG4gICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jZWxsRWRpdG9yOyBlbHNlIGJ1aWx0SW5FZGl0b3JzXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgW2NlbGxFZGl0b3JdPVwiY29sLmNlbGxFZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93XCJcclxuICAgICAgICAgICAgICAgIFtjb2xEYXRhXT1cImNvbFwiXHJcbiAgICAgICAgICAgICAgICBbY2VsbFZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAoZWRpdG9yRXZlbnQpPVwiZmluaXNoRWRpdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2J1aWx0SW5FZGl0b3JzPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbC50eXBlXCI+XHJcbiAgICAgICAgICA8IS0tIFRleHQgSW5wdXQgLS0+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaW5wdXQnXCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPCEtLSBOdW1iZXIgSW5wdXQgLS0+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcclxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCJcclxuICAgICAgICAgICAgI251bWJlcklucHV0PVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICNudW1iZXJSZWZcclxuICAgICAgICAgICAgKGtleXByZXNzKT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm51bWJlclJlZi5ibHVyKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBudW1iZXJJbnB1dC5pbnZhbGlkXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgIDwhLS0gRGF0ZSBJbnB1dCAtLT5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCJcclxuICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICNkYXRlSW5wdXQ9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZGF0ZUlucHV0LmludmFsaWRcclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPCEtLSBEcm9wZG93biAtLT5cclxuICAgICAgICAgIDwhLS0gbmctc2VsZWN0IGxpa2UgZHJvcGRvd24gLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93biB3LTEwMFwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gVHJpZ2dlciAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gdGV4dC1zdGFydCB3LTEwMCB0ZXh0LWVsbGlwc2lzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcclxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICAgIGRhdGEtYnMtZGlzcGxheT1cInN0YXRpY1wiXHJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj4gU2VsZWN0IG9wdGlvbnMuLi4gPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8IS0tIE1lbnUgLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgdy0xMDAgcC0wIGNlbGwtZWRpdGluZy1kcm9wZG93bi1tZW51IHJvdW5kZWQtM1wiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLnNob3ddPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8IS0tIFNlYXJjaCAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBweS0xIGVkaXRpbmctZHJvcGRvd24tc2VhcmNoLWlucHV0XCIgKm5nSWY9XCJjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoID4gNVwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbkRyb3Bkb3duU2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzVcIiBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXZpZXdwb3J0XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMTIwcHhcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT0gb3B0aW9uPy52YWx1ZSB8fCBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT0gb3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMiBweS0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZHJvcGRvd24taXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXIgOiBlZGl0aW5Ecm9wZG93blNlYXJjaCA6ICd2YWx1ZSdcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0TmVzdGVkVmFsdWUocm93LCBjb2wsIG9wdGlvbiwgdHJ1ZSk7IGVkaXRpbmdLZXkgPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cImNvbC5maWVsZCArICctJyArIChvcHRpb24udmFsdWUgfHwgb3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi52YWx1ZSB8fCBvcHRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZW1haWwnXCJcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICAjZW1haWxNb2RlbD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAjZW1haWxJbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgbmFtZT1cInt7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIHBhdHRlcm49XCJeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGVtYWlsTW9kZWwpXCJcclxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiXHJcbiAgICAgICAgICAgICAgZW1haWxNb2RlbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTsgZW1haWxJbnB1dC5ibHVyKClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGVtYWlsTW9kZWwuaW52YWxpZFxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDwhLS0gRGVmYXVsdCBmYWxsYmFjayAtLT5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hEZWZhdWx0XHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgICAgI3RleHRNb2RlbD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAjdGV4dElucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgdGV4dE1vZGVsKVwiXHJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIlxyXG4gICAgICAgICAgICAgIHRleHRNb2RlbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTsgdGV4dElucHV0LmJsdXIoKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBhdXRvZm9jdXNcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWRcclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gRGlzcGxheSBtb2RlIC0tPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3ZpZXdNb2RlPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMCBvdmVyZmxvdy1oaWRkZW5cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzZXMoY29sLCBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8IS0tIEZpZWxkIGljb24gKGZvciBUYXNrcyBncmlkKSAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nSWY9XCJncmlkVHlwZSA9PT0gJ1Rhc2tzJyAmJiBpY29uTWFwW2NvbC5maWVsZF0gJiYgIWlzVG90YWxSb3dcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbWUtMlwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiaWNvbk1hcFtjb2wuZmllbGRdKHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8IS0tIOKchSBDdXN0b20gY2VsbCByZW5kZXJlciBzdXBwb3J0IC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jZWxsUmVuZGVyZXI7IGVsc2UgZGVmYXVsdENlbGxcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgIFtjZWxsUmVuZGVySW5pdF09XCJjb2wuY2VsbFJlbmRlcmVyXCJcclxuICAgICAgICAgICAgICBbcm93RGF0YV09XCJyb3dcIlxyXG4gICAgICAgICAgICAgIFtjb2xEYXRhXT1cImNvbFwiXHJcbiAgICAgICAgICAgICAgW2NlbGxWYWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbD8uZmllbGQpXCJcclxuICAgICAgICAgICAgICAoY2VsbEV2ZW50KT1cIm9uQ2VsbEV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPCEtLSDwn6e+IERlZmF1bHQgdGV4dC1iYXNlZCBjZWxsIHJlbmRlcmluZyAtLT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENlbGw+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAjY2VsbFRleHRcclxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJnZXRDZWxsVGl0bGUocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwhLS0gTm9ybWFsIGNlbGwgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgY29sLnR5cGUgIT09ICdpbWFnZScgJiZcclxuICAgICAgICAgICAgICAgICAgY29sLmZpZWxkICE9ICdpbWFnZScgJiZcclxuICAgICAgICAgICAgICAgICAgY29sLmZpZWxkICE9ICdpbnZvaWNlLmludm9pY2VfaW1hZ2UnICYmXHJcbiAgICAgICAgICAgICAgICAgICFpc1RvdGFsUm93XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuaXNfYW1vdW50XCI+e3tcclxuICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2xcclxuICAgICAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB7e2dldENlbGxUaXRsZShyb3csIGNvbCl9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFRvdGFsIHJvdyAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUb3RhbFJvd1wiPlxyXG4gICAgICAgICAgICAgICAge3sgZ2V0VG90YWxBbW91bnQoY29sKSB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEludm9pY2UgSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5maWVsZCA9PSAnaW52b2ljZS5pbnZvaWNlX2ltYWdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHpvb206IDAuN1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpIHx8ICdBdHRhY2htZW50JyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvZG9jdW1lbnQtaWNvbnMvJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXRFeHRlbnRpb24oZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAnLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gSW1hZ2UgY2VsbCAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gJ2ltYWdlJyAmJiAhaXNUb3RhbFJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRJbWFnZVBsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgcm93OiByb3csIGNvbDogY29sIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgKCFjb2w/LmNlbGxSZW5kZXJlciAmJiBzaG93Q2VsbERldGFpbHNCb3ggJiZcclxuICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID4gNTAgJiYgY29sLnR5cGUgIT09ICdpbWFnZScpIHx8XHJcbiAgICAgICAgICAgICAgKGlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZCkgJiZcclxuICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID4gMSlcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbXMtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgaXNFeHBhbmRlZChyb3csIGNvbClcclxuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5kT2ZMb25nQ2VsbFRleHQocm93LCBjb2wsIGNvbHVtbnMsIHRydWUpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPCEtLSBFeHBhbmQgLyBDb2xsYXBzZSBpY29uIC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEV4cGFuZGVkIHRleHQgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBleHBhbmRlZC1ib3hcIlxyXG4gICAgICAgICAgKm5nSWY9XCJpc0V4cGFuZGVkKHJvdywgY29sKVwiXHJcbiAgICAgICAgICBbc3R5bGUuekluZGV4XT1cImdldFpJbmRleChyb3csIGNvbClcIlxyXG4gICAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IGxlZnQ6IDBcIlxyXG4gICAgICAgICAgW2F0dHIuaWRdPVwiKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIChjb2wuaWQgfHwgY29sLl9pZClcIlxyXG4gICAgICAgICAgW2NsYXNzLmludmlzaWJsZV09XCIhc2hvd0RldGFpbHNCb3hcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICBmdWxsVGV4dFRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgIHJvdzogcm93LFxyXG4gICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICBpc0FycmF5OiBpc05lc3RlZFZhbHVlQXJyYXkocm93LCBjb2wuZmllbGQpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEhlYWRlcnMgQWN0aW9uIExpc3QgT24gY2xpY2tpbmcgdGhyZWUgZG90cyAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICNjb2x1bW5NZW51XHJcbiAgbGV0LWNvbD1cImNvbFwiXHJcbiAgbGV0LWlzTmVzdGVkVGFibGU9XCJpc05lc3RlZFRhYmxlXCJcclxuICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxyXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImNvbHVtbi1tZW51IHRocmVlLWRvdHMtY29sLW1lbnVcIlxyXG4gICAgW2NsYXNzLnZpc3VhbGx5LWhpZGRlbl09XCJpc01lbnVlSGlkZGVuXCJcclxuICAgICpuZ0lmPVwiYWN0aXZlQ29sICYmICFpc1RocmVlRG90c0ZpbHRlck9wZW5cIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICBbc3R5bGUuY29sb3JdPVwiaGVhZGVyVGV4dENvbG9yXCJcclxuICA+XHJcbiAgICA8IS0tIFNvcnQgQXNjZW5kaW5nIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJvcmRlci1iZWxvdyBwYi0yXCIgW2NsYXNzLmRpc2FibGUtc29ydGluZ109XCIhY29sLmlzX3NvcnRhYmxlXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXV0ZWQtdGV4dCBmcy03XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTJweFwiPlNvcnQ8L3NwYW4+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0FzY2VuZGluZyAmJlxyXG4gICAgICAgICAgKHNvcnRpbmdDb25maWc/LmZpZWxkICE9IGNvbC5maWVsZCB8fFxyXG4gICAgICAgICAgICBzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnZGVzYycpXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJzb3J0QXNjKGFjdGl2ZUNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctdXAuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIFNvcnQgQXNjZW5kaW5nXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTb3J0IERlc2NlbmRpbmcgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0Rlc2NlbmRpbmcgJiZcclxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcclxuICAgICAgICAgICAgc29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT0gJ2FzYycpXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJzb3J0RGVzYyhhY3RpdmVDb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWRvd24uc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIFNvcnQgRGVzY2VuZGluZ1xyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc29ydGluZ0NvbmZpZz8uZmllbGQgPT09IGNvbC5maWVsZCAmJlxyXG4gICAgICAgICAgKHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnYXNjJyB8fFxyXG4gICAgICAgICAgICBzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2Rlc2MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwicmVzZXRTb3J0KGFjdGl2ZUNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWNvdW50ZXJjbG9ja3dpc2Uuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgUmVzZXQgU29ydFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInB5LTIgYm9yZGVyLWJlbG93IHRocmVlLWRvdHMtZmlsdGVyXCIgW2NsYXNzLmRpc2FibGUtc29ydGluZ109XCJjb2wudHlwZSA9PSAnaW1hZ2UnXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dGaWx0ZXJcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbSB0aHJlZS1kb3RzLWZpbHRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIEZpbHRlclxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvd1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm11dGVkLXRleHQgZnMtN1wiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEycHhcIj5QaW48L3NwYW4+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5sZWZ0ICYmIGNvbD8ucGlubmVkICE9PSAnbGVmdCdcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxyXG4gICAgICAgICAgICBhY3RpdmVDb2wsXHJcbiAgICAgICAgICAgICdsZWZ0JyxcclxuICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZSxcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tbGVmdC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgICA+UGluIExlZnRcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5yaWdodCAmJiBjb2w/LnBpbm5lZCAhPT0gJ3JpZ2h0J1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXHJcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcclxuICAgICAgICAgICAgJ3JpZ2h0JyxcclxuICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZSxcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tcmlnaHQuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3BhblxyXG4gICAgICAgID5QaW4gUmlnaHRcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXHJcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcclxuICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZSxcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvbGF5b3V0LXRocmVlLWNvbHVtbnMuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgICA+VW5waW5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0F1dG9zaXplVGhpc0NvbHVtblwiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihhY3RpdmVDb2wpXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLWV4cGFuZC12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICBBdXRvc2l6ZSBUaGlzIENvbHVtblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBBdXRvc2l6ZSBBbGwgQ29sdW1ucyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93QXV0b3NpemVBbGxDb2x1bW5zXCJcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgKGNsaWNrKT1cImF1dG9zaXplQWxsQ29sdW1ucygpXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLWFuZ2xlLWV4cGFuZC5zdmcnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3BhblxyXG4gICAgICA+QXV0b3NpemUgQWxsIENvbHVtbnNcclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gR3JvdXAgQnkgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwic2hvd1Jvd3NHcm91cGluZ1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJncm91cEJ5KGFjdGl2ZUNvbClcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZS1zb3J0aW5nXT1cIiFjb2wuaXNfZ3JvdXBhYmxlXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2RpYWdyYW0tMy5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgR3JvdXAgYnkge3sgY29sLmhlYWRlciB9fVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBDaG9vc2UgQ29sdW1ucyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93Q2hvc2VDb2x1bW5zXCJcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgKGNsaWNrKT1cImNob29zZUNvbHVtbnMoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy91aS1jaGVja3MtZ3JpZC5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgQ2hvb3NlIENvbHVtbnNcclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUmVzZXQgQ29sdW1ucyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UmVzZXRDb2x1bW5zXCJcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgKGNsaWNrKT1cInJlc2V0Q29sdW1ucygpXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctY291bnRlcmNsb2Nrd2lzZS5zdmcnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3BhblxyXG4gICAgICA+UmVzZXQgQ29sdW1uc1xyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgQHNsaWRlVG9nZ2xlXHJcbiAgICAqbmdJZj1cImlzVGhyZWVEb3RzRmlsdGVyT3BlblwiXHJcbiAgICBjbGFzcz1cInRocmVlLWRvdHMtY29sLW1lbnUgcG9zaXRpb24tcmVsYXRpdmVcIlxyXG4gICAgW3N0eWxlLnJpZ2h0LnB4XT1cInNlY3Rpb24gPT0gJ3JpZ2h0JyA/IG51bGwgOiBjb2wud2lkdGggLSA0NVwiXHJcbiAgICBbY2xhc3MudmlzdWFsbHktaGlkZGVuXT1cImlzTWVudWVIaWRkZW5cIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJNZW51OyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBGaWx0ZXIgTWVudWUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZmlsdGVyTWVudSBsZXQtY29sPVwiY29sXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmaWx0ZXItbWVudS1jb250YWluZXIgZmlsdGVyLW1lbnVcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gID5cclxuICAgIDwhLS0gRHJvcGRvd24gVHlwZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJzsgZWxzZSB0ZXh0RmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItZHJvcGRvd24tc2VjdGlvbiBwLTFcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiYWRkRmlsdGVyQ29sdW1uSW5wdXRcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXQtMiBtcy0xIHNlbGVjdC1hbGwtZmlsdGVyXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTaWRlRmlsdGVyT3B0aW9uc1NlbGVjdGVkKGNvbClcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbF97eyBjb2wuZmllbGQgfX1cIj5cclxuICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyBwcy0xXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgICAgICB8IGZpbHRlciA6IGFkZEZpbHRlckNvbHVtbklucHV0IDogJ3ZhbHVlJztcclxuICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWQ7XHJcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgW2lkXT1cImlcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvbilcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIiBbZm9yXT1cImlcIj5cclxuICAgICAgICAgICAgICB7eyBvcHRpb24/LnZhbHVlID8/IG9wdGlvbj8ubmFtZSA/PyBvcHRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICAgICAgICAgaXRlbVNpemU9XCIzMlwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItdmlld3BvcnRcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMjBweFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xXCJcclxuICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBvcHRpb24gb2Ygc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAndmFsdWUnO1xyXG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpZF09XCJvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uPy5pZCA/PyBvcHRpb24/Ll9pZCA/PyBvcHRpb24pXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbZm9yXT1cIm9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgb3B0aW9uPy52YWx1ZSA/PyBvcHRpb24/Lm5hbWUgPz8gb3B0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBUZXh0IEZpbHRlciBTZWN0aW9uIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0RmlsdGVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXRleHQtc2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdENvbmRpdGlvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIFt0eXBlXT1cImNvbC50eXBlID09ICdzdHJpbmcnID8gJ3RleHQnIDogY29sLnR5cGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJWYWx1ZVwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0VmFsdWVcIlxyXG4gICAgICAgICAgI2ZpbHRlck1lbnVlVGV4dGNoSW5wdXRcclxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMyBkLWZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwiYW5kXCJcclxuICAgICAgICAgICAgICBpZD1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgPkFORDwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIm9yXCJcclxuICAgICAgICAgICAgICBpZD1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5PUjwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgIGlkPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5Ob25lPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IEBzbGlkZVRvZ2dsZSAqbmdJZj1cImZpcnN0VmFsdWUgJiYgY29uZGl0aW9uICE9ICdub25lJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMlwiPlxyXG4gICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0XCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZENvbmRpdGlvblwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIFt0eXBlXT1cImNvbC50eXBlID09ICdzdHJpbmcnID8gJ3RleHQnIDogY29sLnR5cGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2Vjb25kIFZhbHVlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRWYWx1ZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPCEtLSBBY3Rpb25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBtdC0yXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzBweFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgID5cclxuICAgICAgICBBcHBseVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMwcHhcIlxyXG4gICAgICAgIChjbGljayk9XCJyZXNldFNpZGVGaWx0ZXIoY29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICBSZXNldFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBTaWRlIE1lbnVlIC0tPlxyXG5cclxuPCEtLSBDb2x1bW4gUGFubmVsIC8gUGl2b3QgTW9kZSAvIFNlYXJjaGluZyAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29sdW1uUGFubmVsPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tcGFuZWwtaGVhZGVyXCI+XHJcbiAgICA8IS0tIFBpdm90IFRvZ2dsZSAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMiBwaXZvdC1tb2RlIHB4LTUgbXMtMiBkLW5vbmVcIlxyXG4gICAgPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXHJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICBpZD1cInBpdm90VG9nZ2xlXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInBpdm90TW9kZVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJwaXZvdFRvZ2dsZVwiPlBpdm90IE1vZGU8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTZWxlY3QgQWxsICYgU2VhcmNoIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMiBweC0zIG10LTNcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIiAqbmdJZj1cInNob3dDb2x1bW5zR3JvdXBpbmdcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgYWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnXHJcbiAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLWRvd24uc3ZnJ1xyXG4gICAgICAgICAgICAgIDogYWNjb3JkaW9uU3RhdGUgPT09ICdzb21lJ1xyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGFzaC5zdmcnXHJcbiAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsQWNjb3JkaW9ucygpXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxyXG4gICAgICAvPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBjb2x1bW5zLi4uXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbHVtblNlYXJjaFwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFNlcGFyYXRvciAtLT5cclxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBSaWdodCBDb2x1bW5zIE1lbnVlIC0tPlxyXG5cclxuPCEtLSBDb2x1bW4gUGFuZWwgSXRlbSBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNjb2x1bW5QYW5lbEl0ZW0gbGV0LWNvbD1cImNvbFwiPlxyXG4gIDwhLS0gR3JvdXAgQ29sdW1uIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbi1ncm91cCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW2NsYXNzLnJvdGF0ZV09XCJjb2wuZXhwYW5kZWRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZCA9ICFjb2wuZXhwYW5kZWRcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXHJcbiAgICAgICAgW2lkXT1cIidncm91cF8nICsgY29sLmhlYWRlclwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwiaXNDb2x1bW5WaXNpYmxlKGNvbClcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlR3JvdXBWaXNpYmlsaXR5KGNvbClcIlxyXG4gICAgICAvPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZ3JpZC0zeDItZ2FwLnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxyXG4gICAgICAgIFtmb3JdPVwiJ2dyb3VwXycgKyBjb2wuaGVhZGVyXCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiY29sLmV4cGFuZGVkXCIgY2xhc3M9XCJwcy00XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjaGlsZCB9XCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gTGVhZiBDb2x1bW4gLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1lLTJcIiBzdHlsZT1cIndpZHRoOiAxLjVyZW1cIj48L3NwYW4+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgIFtpZF09XCInY29sXycgKyBjb2wuZmllbGRcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwib25TaWRlTWVudUNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlKClcIlxyXG4gICAgICAvPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZ3JpZC0zeDItZ2FwLnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxyXG4gICAgICAgIFtmb3JdPVwiJ2NvbF8nICsgY29sLmZpZWxkXCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIENvbHVtbnMgU2lkZSBGaWx0ZXIgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjc2lkZUZpbHRlcnM+XHJcbiAgPGRpdiBjbGFzcz1cInB5LTMgcHgtMiBwZS0zIGgtMTAwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCIgKm5nSWY9XCJzaG93Q29sdW1uc0dyb3VwaW5nXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIGZpbHRlckFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICA6IGZpbHRlckFjY29yZGlvblN0YXRlID09PSAnc29tZSdcclxuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xyXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEZpbHRlckFjY29yZGlvbnMoKVwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5TZWFyY2hcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwib3ZlcmZsb3ctYXV0byBzaWRlLWZpbHRlci1jb2x1bW5zLXdyYXBwZXJcIlxyXG4gICAgICBzdHlsZT1cImhlaWdodDogY2FsYygxMDAlIC0gNzBweCk7IHNjcm9sbGJhci13aWR0aDogdGhpblwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IGNvbHVtblNlYXJjaCA6ICdoZWFkZXInO1xyXG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyUGFubmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpbHRlclBhbm5lbEl0ZW0gbGV0LWNvbD1cImNvbFwiPlxyXG4gIDwhLS0gR3JvdXAgQ29sdW1uIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNvbHVtbi1ncm91cCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIlxyXG4gICAgICAqbmdJZj1cImNvbC50eXBlICE9PSAnaW1hZ2UnXCJcclxuICAgID5cclxuICAgICAgPCEtLSBDaGV2cm9uIHRvZ2dsZSAtLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW2NsYXNzLnJvdGF0ZV09XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZEZpbHRlciA9ICFjb2wuZXhwYW5kZWRGaWx0ZXJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgIDwhLS0gR3JvdXAgbGFiZWwgdG9nZ2xlIC0tPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCB3LTEwMFwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCB0ZXh0LXRydW5jYXRlXCJcclxuICAgICAgICAgID57eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBtcy0xXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGggfHwgY29sPy5xdWVyeT8uX2ZpcnN0X3ZhbHVlXCJcclxuICAgICAgICAgICAgPio8L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIENoaWxkcmVuIGNvbHVtbnMgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiY29sLmV4cGFuZGVkRmlsdGVyXCIgY2xhc3M9XCJwcy00XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJQYW5uZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIExlYWYgQ29sdW1uIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIiAqbmdJZj1cImNvbC50eXBlICE9PSAnaW1hZ2UnXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJtZS0yIGZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZEZpbHRlciA9ICFjb2wuZXhwYW5kZWRGaWx0ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCB3LTEwMFwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZSBmdy1ib2xkXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2hvdyBmaWx0ZXIgd2hlbiBleHBhbmRlZCAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIiBjbGFzcz1cInBzLTQgcGUtM1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlTmVzdGVkRmlsdGVyOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gU2lkZSBOZXN0ZWQgRmlsdGVycyAtLT5cclxuPG5nLXRlbXBsYXRlICNzaWRlTmVzdGVkRmlsdGVyIGxldC1jb2w9XCJjb2xcIj5cclxuICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICA8IS0tIERyb3Bkb3duIFR5cGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT09ICdkcm9wZG93bic7IGVsc2UgdGV4dEZpbHRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItMlwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNpZGVOZXN0ZWRGaWx0ZXJTZWFyY2hcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDwhLS0gU2VsZWN0IEFsbCAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTEgc2VsZWN0LWFsbC1maWx0ZXJcIj5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICBjb2wucXVlcnk/Ll9pZHM/Lmxlbmd0aCA9PSBjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgaWQ9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiPlxyXG4gICAgICAgICAgICBTZWxlY3QgQWxsXHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIE9wdGlvbnMgLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tb3B0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZVxyXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXIgOiBzaWRlTmVzdGVkRmlsdGVyU2VhcmNoIDogJ3ZhbHVlJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICAgICAgICBjb2wucXVlcnk/Ll9pZHM/LmluY2x1ZGVzKG9wdGlvbj8uX2lkIHx8IG9wdGlvbj8uaWQgfHwgb3B0aW9uKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk9wdGlvblRvZ2dsZShjb2wsIG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgIGlkPVwib3B0aW9uX3t7IGNvbC5maWVsZCB9fV97e1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb25cclxuICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgW2Zvcl09XCJcclxuICAgICAgICAgICAgICAgICdvcHRpb25fJyArXHJcbiAgICAgICAgICAgICAgICBjb2wuZmllbGQgK1xyXG4gICAgICAgICAgICAgICAgJ18nICtcclxuICAgICAgICAgICAgICAgIChvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgb3B0aW9uLnZhbHVlIHx8IG9wdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgICAgICAgICAgaXRlbVNpemU9XCIzMlwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdmlld3BvcnRcIlxyXG4gICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMTIwcHhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXMtMVwiXHJcbiAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCBvcHRpb24gb2YgY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgICAgICAgfCBmaWx0ZXIgOiBzaWRlTmVzdGVkRmlsdGVyU2VhcmNoIDogJ3ZhbHVlJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICAgICAgY29sLnF1ZXJ5Py5faWRzPy5pbmNsdWRlcyhvcHRpb24/Ll9pZCB8fCBvcHRpb24/LmlkIHx8IG9wdGlvbilcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uT3B0aW9uVG9nZ2xlKGNvbCwgb3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICBpZD1cIm9wdGlvbl97eyBjb2wuZmllbGQgfX1fe3tcclxuICAgICAgICAgICAgICAgICAgb3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb25cclxuICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbZm9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAnb3B0aW9uXycgK1xyXG4gICAgICAgICAgICAgICAgICBjb2wuZmllbGQgK1xyXG4gICAgICAgICAgICAgICAgICAnXycgK1xyXG4gICAgICAgICAgICAgICAgICAob3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb24pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi52YWx1ZSB8fCBvcHRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG5cclxuXHJcbiAgICAgICAgPCEtLSBBY3Rpb25zIC0tPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBtdC0yXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMjJweDtcIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseVNpZGVGaWx0ZXIoY29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICBBcHBseVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiIFxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAyMnB4O1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0U2lkZUZpbHRlcihjb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIFJlc2V0XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gVGV4dCBGaWx0ZXIgU2VjdGlvbiAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEZpbHRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci10ZXh0LXNlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0yXCI+XHJcbiAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5xdWVyeS5maXJzdF9jb25kaXRpb25cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgIT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgW3R5cGVdPVwiY29sLnR5cGUgPT0gJ2RhdGUnID8gJ2RhdGUnIDogJ3RleHQnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVmFsdWVcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5IS5maXJzdF92YWx1ZVwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTMgZC1mbGV4IGZsZXgtcm93IG11dGVkXCJcclxuICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5jb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwiYW5kXCJcclxuICAgICAgICAgICAgICBpZD1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5BTkQ8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIm9yXCJcclxuICAgICAgICAgICAgICBpZD1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwib3Jfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+T1I8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgIGlkPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICBjbGFzcz1cIm5ub25lbS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIlxyXG4gICAgICAgICAgICAgIGZvcj1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCJjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSAmJiBjb2w/LnF1ZXJ5Py5jb25kaXRpb24gIT09ICdub25lJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMlwiPlxyXG4gICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LnNlY29uZF9jb25kaXRpb25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+U3RhcnRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbdHlwZV09XCJjb2wudHlwZSA9PSAnZGF0ZScgPyAnZGF0ZScgOiAndGV4dCdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2Vjb25kIFZhbHVlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LnNlY29uZF92YWx1ZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDIycHg7XCIgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiPmFwcGx5PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiaGVpZ2h0OiAyMnB4O1wiIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIj5yZXNldDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMiBib3JkZXItdG9wXCJcclxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IDM4cHhcIlxyXG4gICAgPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMHB4XCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLWxpZ2h0IGJvcmRlciB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMSBidG4tbGlnaHRcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZVNpZGVGaWx0ZXIoY29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3Bhbj5DbGVhcjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDMwcHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoY29sPy5xdWVyeS5jb25kaXRpb24gIT09ICdub25lJyAmJiAhY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlKVwiXHJcbiAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiKGNvbCE/LnF1ZXJ5LmNvbmRpdGlvbiAhPT0gJ25vbmUnICYmICFjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTFweFwiPkFwcGx5PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBDZW50ciBPdmVybGF5IGZvciBzaG93aW5nIHRoZSBjaG9zZSBjb2x1bW5zIC0tPlxyXG5cclxuPGRpdiAqbmdJZj1cInNob3dDb2x1bW5QYW5lbFwiIGNsYXNzPVwiY3VzdG9tLW1vZGFsLW92ZXJsYXlcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImN1c3RvbS1tb2RhbC1jb250ZW50XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZHJvcGRvd25zQmFja2dyb3VuZENvbG9yXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RhbENvbHVtblBhbm5lbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gVGhlIGV4aXN0aW5nIG5nLXRlbXBsYXRlIHlvdSBwcm92aWRlZCAtLT5cclxuPG5nLXRlbXBsYXRlICNtb2RhbENvbHVtblBhbm5lbD5cclxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWhlYWRlclwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiBwcy0zIHJvdW5kZWQtdG9wLTIgbW9kYS1oZWFkZXJcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIjQ4XCJcclxuICAgID5cclxuICAgICAgQ2hvb3NlIENvbHVtbnNcclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCIgKGNsaWNrKT1cImNsb3NlTW9kYWxDb2x1bW5QYW5lbCgpXCJcclxuICAgICAgICA+PHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMveC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3BhblxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aHIgY2xhc3M9XCJteS0wXCIgLz5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHB4LTIgcGUtM1wiIFtzdHlsZS5oZWlnaHQucHhdPVwiNDhcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIGFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xyXG4gICAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLWRvd24uc3ZnJ1xyXG4gICAgICAgICAgICAgICAgOiBhY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXHJcbiAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xyXG4gICAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEFjY29yZGlvbnMoKVwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXHJcbiAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1ucy4uLlwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNob3NlQ29sdW1uc1NlYXJjaFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8aHIgY2xhc3M9XCJtdC0wIG1iLTFcIiAvPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHgtMiBvdmVybGF5LXNjcm9sbGFibGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogY2hvc2VDb2x1bW5zU2VhcmNoIDogJ2hlYWRlcic7XHJcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzaWRlTWVudVJvd0dyb3Vwcz5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGgtMTAwIGQtbm9uZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTMgaC0xMDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBtYi00XCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj5Sb3cgR3JvdXBzPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImgtNTBcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInB4LTMgcHktMiBib3JkZXItZGFzaGVkIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgRHJhZyBoZXJlIHRvIHNldCByb3cgR3JvdXBzXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGhyIGNsYXNzPVwibXQtNFwiIC8+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTMgaC0xMDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBtYi00XCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj5WYWx1ZXM8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC01MCBkLWZsZXhcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInB4LTMgcHktMiBib3JkZXItZGFzaGVkIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgRHJhZyBoZXJlIGFnZ3JlZ2F0ZVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPCEtLSBEcmFnIFByZXZpZXcgVGVtcGxhdGUgLS0+XHJcbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPG5nLXRlbXBsYXRlICNkcmFnUHJldmlldyBsZXQtY29sPlxyXG4gIDxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEcmFnIFBsYWNlaG9sZGVyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGVcclxuICAjZHJhZ1BsYWNlaG9sZGVyXHJcbiAgbGV0LWNvbFxyXG4gIGxldC1pPVwiaW5kZXhcIlxyXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXHJcbiAgbGV0LWRyYWdnaW5nSW5Hcm91cEFyZWE9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuPlxyXG4gIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbCwgaW5kZXg6IGksIHNlY3Rpb246IHNlY3Rpb24gfVxyXG4gICAgICBcIlxyXG4gICAgPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCI+TmV3IFBsYWNlaG9sZGVyPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRvcCBHcm91cCBSb3cgUGxhY2Vob2xkZXIgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlciBsZXQtY29sIGxldC1zaG93Q2hldnJvbj1cInNob3dDaGV2cm9uXCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiB0b3Atcm93LWdyb3VwaW5nLXBsYWNlaG9sZGVyXCJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJ0b3BHcm91cGVkQmFkZ2VzQmFja2dyb3VuZENvbG9yXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjZGtEcmFnSGFuZGxlXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlkLTN4Mi1nYXAuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgPHNwYW4+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICAoY2xpY2spPVwidW5ncm91cENvbHVtbihjb2wpXCJcclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3guc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93Q2hldnJvblwiIHN0eWxlPVwib3BhY2l0eTogMC42OyBmb250LXNpemU6IDE0cHhcIj5cclxuICAgIDxzcGFuXHJcbiAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXCJcclxuICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgID48L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICAjY2hpbGRIZWFkZXJQbGFjZWhvbGRlclxyXG4gIGxldC1jb2xcclxuICBsZXQtcGlubmVkUmlnaHQ9XCJwaW5uZWRSaWdodFwiXHJcbiAgbGV0LWk9XCJpbmRleFwiXHJcbiAgbGV0LXNlY3Rpb25zPVwic2VjdGlvbnNcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxsc1wiXHJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxyXG4gICAgICAgICAgW2NsYXNzLnctMTAwXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplLWhhbmRsZVwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInNob3dGaWx0ZXJSb3dcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXHJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgc3R5bGU9XCJncmlkLXJvdzogM1wiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5maWx0ZXJWYWx1ZVwiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cImNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnXCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWQtc2VhcmNoLWlucHV0XT1cIlxyXG4gICAgICAgICAgY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZSdcclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUZpbHRlckNlbGwgPSBjb2w7IGFjdGl2ZUNvbCA9IG51bGxcIlxyXG4gICAgICAgID48c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3BhblxyXG4gICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyQ2VsbCA9PT0gY29sXCJcclxuICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDEwOyBsZWZ0OiAwXCJcclxuICAgICAgPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RhYmxlTGF5b3V0PlxyXG4gIDxkaXZcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJwLTMgc2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dFwiXHJcbiAgICBzdHlsZT1cIndpZHRoOiAzMjBweFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxoNiBjbGFzcz1cIm1iLTAgbXMtMlwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMFwiPlRhYmxlIExheW91dDwvaDY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwIG1iLTMgZC1mbGV4XCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXHJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxyXG4gICAgICAgIGlkPVwic21hbGxcIlxyXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdzbWFsbCcpXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdzbWFsbCdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImJvcmRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxyXG4gICAgICAgIGZvcj1cInNtYWxsXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnc21hbGwnID8gJyMwMDAnIDogJyM3MjcyNzInXHJcbiAgICAgICAgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogOHB4XCI+PC9kaXY+XHJcbiAgICAgICAgU21hbGxcclxuICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXHJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxyXG4gICAgICAgIGlkPVwibWVkaXVtXCJcclxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ21lZGl1bSdcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGFibGVMYXlvdXQoJGV2ZW50LCAnbWVkaXVtJylcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImJvcmRlciBteC0zIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgbGF5b3V0LWJ1dHRvblwiXHJcbiAgICAgICAgZm9yPVwibWVkaXVtXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbWVkaXVtJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDEycHhcIj48L2Rpdj5cclxuICAgICAgICBNZWRpdW1cclxuICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXHJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxyXG4gICAgICAgIGlkPVwibGFyZ2VcIlxyXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdsYXJnZScpXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdsYXJnZSdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImJvcmRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxyXG4gICAgICAgIGZvcj1cImxhcmdlXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbGFyZ2UnID8gJyMwMDAnIDogJyM3MjcyNzInXHJcbiAgICAgICAgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogMTZweFwiPjwvZGl2PlxyXG4gICAgICAgIExhcmdlXHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4+U2hvdyBzZXBhcmF0b3JzPC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJzZXBhcmF0b3JzXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwib25Gb250Q2hhbmdlKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8c3Bhbj5Sb3cgc2hhZGluZzwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbS0wXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dTaGFkaW5nRW5hYmxlZFwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVJvd1NoYWRpbmcoKVwiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuPlNob3cgU2lkZSBNZW51PC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dTaWRlTWVudVwiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3Bhbj5TaG93IEZpbHRlciBSb3c8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGFibGVQcmVzZXQ+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJhY3RpdmVTdWJCdXR0b24gIT09ICdzYXZlLXByZXNldCdcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICBjbGFzcz1cInAtMyBzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIGRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0XCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4XCJcclxuICA+XHJcbiAgICA8IS0tIEhlYWRlciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEwcHhcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgbXMtMlwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMFwiPlRhYmxlIFByZXNldHM8L2g2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBTYXZlIFByZXNldCBCdXR0b24gd2l0aCBEcm9wZG93biAtLT5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8YVxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXByaW1hcnlcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBpZD1cInNhdmVQcmVzZXREcm9wZG93blwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVTdWJBY3Rpb25zKCdzYXZlLXByZXNldCcpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/IFwiU2F2ZSBwcmVzZXRcIiA6IFwiVXBkYXRlIFByZXNldFwiIH19XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2VhcmNoIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFByZXNldFRhYmxlXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQcmVzZXQgTGlzdCAtLT5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICB0YWJsZVZpZXcgfCBmaWx0ZXIgOiBzZWFyY2hUZXh0UHJlc2V0VGFibGUgOiAnbmFtZScgYXMgZmlsdGVyZWRMaXN0XHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDwhLS0gSWYgZmlsdGVyZWRMaXN0IGV4aXN0cyBhbmQgbm9uZSBpcyBkZWZhdWx0IC0+IHNob3cgZmFsbGJhY2sgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIiBwYi01IG92ZXJmbG93LWF1dG9cIlxyXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gMjUwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICBjbGVhckFsbEZpbHRlcnMoKTtcclxuICAgICAgICAgICAgb3BlbkluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgdGVtcF9zdGF0ZS5pZCA9ICcnO1xyXG4gICAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgICAgICAgICAgY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlID0gbnVsbFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5EZWZhdWx0IFZpZXc8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhcmtcIj5DcmVhdGVkIGJ5IHN5c3RlbTwvc21hbGw+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdJZj1cIiF0YWJsZUZpbHRlclZpZXdJZCAmJiAhaGFzQW55RGVmYXVsdFZpZXcoKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1wcmltYXJ5IG1zLTJcIlxyXG4gICAgICAgICAgICA+RGVmYXVsdDwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgIWhhc0FueURlZmF1bHRWaWV3KClcIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZWNrLWJsdWUuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUZpbHRlclZpZXdJZFwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gVGhlIGxpc3Q6IHJlbmRlciBlYWNoIHRhYmxlIGZyb20gZmlsdGVyZWRMaXN0IC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcclxuICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICBsZXQgdGFibGUgb2YgZmlsdGVyZWRMaXN0O1xyXG4gICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5VGFibGVcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSBJdGVtIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuSW5kZXggPSBudWxsOyBhY3RpdmVUb3BCdXR0b24gPSAnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3RGaWx0ZXIodGFibGUpOyBvcGVuSW5kZXggPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIHt7IHRhYmxlPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8IS0tIHt7dGFibGU/LmlzX3RlbXB9fSAtLT5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHRhYmxlPy5pc190ZW1wICYmICF0ZW1wX3N0YXRlLmlkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBfc3RhdGUuaWQgPT0gdGFibGUuaWRcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGVjay1ibHVlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlPy5pc19kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LXByaW1hcnkgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgID5EZWZhdWx0PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYXJrXCIgKm5nSWY9XCJ0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lc1wiIFt0aXRsZV09XCJ0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lc1wiPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgdGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXM/Lmxlbmd0aCA+IDI1IFxyXG4gICAgICAgICAgICAgID8gKHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzIHwgc2xpY2U6MDoyNSkgKyAnLi4uJ1xyXG4gICAgICAgICAgICAgIDogdGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICh7eyB0YWJsZT8uY29uZmlnPy50b3RhbENvdW50IH19KVxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYXJrXCIgKm5nSWY9XCIhdGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIj57eyB0YWJsZT8uY3JlYXRlZEF0IHwgZGF0ZSA6IFwiTU1NIGQsIHlcIiB9fTwvc21hbGw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZT8uaXNfZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGVjay1ibHVlLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiICpuZ0lmPVwiIXRhYmxlPy5pc19kZWZhdWx0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24td3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taWNvbiBtdXRlZC10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudShpLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuSW5kZXggPT09IGlcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2hvcml6b250YWwtZG90cy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gbWVudSAtLT5cclxuICAgICAgICAgICAgICAgICA8dWxcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wZW5JbmRleCA9PT0gaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tZHJvcGRvd24tbWVudSBwb3NpdGlvbi1maXhlZCB0b3AtYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5yaWdodC5weF09XCInYXV0bydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldFdpZHRoIC0gMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogdW5zZXQ7IHJpZ2h0OiB1bnNldFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblByZXNldCh0YWJsZSwgJ3NldFByZXNldCcpOyB0ZW1wX3N0YXRlLmlkID0gJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc3Rhci5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXMgZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJub25lXCIgKm5nSWY9XCIhdGFibGUuY29uZmlybURlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gdGV4dC1kYW5nZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLTRweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90cmFzaC1yZWQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGUuY29uZmlybURlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbmZpcm0tYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB5LTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDxiciAvPjxiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+4oCce3sgdGFibGU/Lm5hbWUgfX3igJ08L2JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uUHJlc2V0KHRhYmxlLCAnZGVsZXRlUHJlc2V0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAqbmdJZj1cImFjdGl2ZVN1YkJ1dHRvbiA9PSAnc2F2ZS1wcmVzZXQnXCJcclxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBwLTMgYmFkZ2UgbXQtNCBzYXZlLXByZXNldC1kcm9wZG93biBtdC0xXCJcclxuICAgIGFyaWEtbGFiZWxsZWRieT1cInNhdmVQcmVzZXREcm9wZG93blwiXHJcbiAgICBzdHlsZT1cIm1pbi13aWR0aDogMjUwcHhcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGZzLTE0cHggbWItMlwiPlxyXG4gICAgICB7eyBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/IFwiU2F2ZSBwcmVzZXRcIiA6IFwiVXBkYXRlIFByZXNldFwiIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcy0xNHB4IG1iLTJcIiBzdHlsZT1cImxpbmUtaGVpZ2h0OiAyMHB4XCI+XHJcbiAgICAgIFRoaXMgd2lsbCBzYXZlIHRoZSBjdXJyZW50IHRhYmxlIGFkanVzdG1lbnRzIGFzIGEgcHJlc2V0LlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIElucHV0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgPGxhYmVsIGZvcj1cInByZXNldE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgZnMtMTJweCBmdy1ib2xkXCJcclxuICAgICAgICA+UHJlc2V0IE5hbWU8L2xhYmVsXHJcbiAgICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAjcHJlc2V0TmFtZUN0cmw9XCJuZ01vZGVsXCJcclxuICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByZXNldE5hbWVcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnaXMtaW52YWxpZCc6XHJcbiAgICAgICAgICAgICAgcHJlc2V0TmFtZUN0cmwuaW52YWxpZCAmJlxyXG4gICAgICAgICAgICAgIChwcmVzZXROYW1lQ3RybC5kaXJ0eSB8fCBwcmVzZXROYW1lQ3RybC50b3VjaGVkKVxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcHMtMlwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByZXNldCBuYW1lXCJcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXRGaWx0ZXJcIlxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgaWQ9XCJzYXZlRmlsdGVyc1wiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXQtMVwiIGZvcj1cInNhdmVGaWx0ZXJzXCI+XHJcbiAgICAgICAgU2F2ZSBhY3RpdmUgZmlsdGVyc1xyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTYXZlIEJ1dHRvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYm9yZGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBidG4tbGlnaHRcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLXByZXNldHMnKVwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAtMnB4XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBbZGlzYWJsZWRdPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNhdmVQcmVzZXQocHJlc2V0TmFtZUN0cmwpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiICpuZ0lmPVwiaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXHJcbiAgICAgICAgICAgID5TYXZlPC9uZy1jb250YWluZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjbG9zZURyb3Bkb3duLnByZXNldC5sb2FkaW5nXCJcclxuICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIj48L3NwYW5cclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwXCIgKm5nSWY9XCIhaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIlxyXG4gICAgICAgICAgPlVwZGF0ZSBQcmVzZXQ8L3NwYW5cclxuICAgICAgICA+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nob3dIaWRlQ29sdW1ucz5cclxuICA8ZGl2XHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHhcIlxyXG4gID5cclxuICAgIDwhLS0gSGVhZGVyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg2IGNsYXNzPVwibWItMCBtcy0yXCIgc3R5bGU9XCJmb250LXdlaWdodDogNTAwXCI+Q29sdW1uczwvaDY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YVxyXG4gICAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXHJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1kZWNvcmF0aW9uLW5vbmUgZC1ub25lXCJcclxuICAgICAgICA+UmVzZXQ8L2FcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cIm14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1uXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0b3BTaG93SGlkZUNvbHVtbnNcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIFByZXNldCBMaXN0IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXHJcbiAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IHNjcm9sbGJhci13aWR0aDogdGhpblwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gMjIwXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiPlxyXG4gICAgICAgIFNob3cgaW4gdGFibGVcclxuICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaGlkZV9hbGxcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgZm9yPVwiaGlkZV9hbGxcIj5cclxuICAgICAgICAgICAgICBTaG93L0hpZGUgQWxsIFxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIEl0ZW0gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IHRvcFNob3dIaWRlQ29sdW1ucyA6ICdoZWFkZXInO1xyXG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaXAtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmICFjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBbY2xhc3Mub3BhY2l0eS01MF09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiXHJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uICYmIGhhc0FueUluVmlzaWJsZUNvbHVtblwiXHJcbiAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlJblZpc2libGVDb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgSGlkZSBpbiB0YWJsZVxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBpZD1cInNob3dfYWxsXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1zZW1pYm9sZFwiIGZvcj1cInNob3dfYWxsXCI+XHJcbiAgICAgICAgICAgICAgU2hvdy9IaWRlIEFsbCBcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCIhY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBib3JkZXItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlwLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gY3Vyc29yLWdyYXBcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGN1cnNvci1ncmFwXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbHVtblZpc2liaWxpdHkoY29sLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLWNyb3NzLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJDb2x1bW5zIGxldC1jb2w9XCJjb2x1bW5cIj5cclxuICA8ZGl2XHJcbiAgICBAc2xpZGVUb2dnbGVcclxuICAgICpuZ0lmPVwiIWlzRmlsdGVyT3BlbiAmJiBhY3RpdmVUb3BCdXR0b24gPT0gJ2ZpbHRlci1jb2x1bW5zJ1wiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwic2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXQgZmlsdGVyLWNvbHVtbnNcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHg7IHJpZ2h0OiB1bnNldDsgbWF4LXdpZHRoOiAyMzBweFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0yIHB4LTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGJ5XCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJhZGRGaWx0ZXJDb2x1bW5JbnB1dFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA1MDBweCk7IG92ZXJmbG93OiBhdXRvXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAnaGVhZGVyJztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkZpbHRlcihjb2wpXCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIGNvbC5pc192aXNpYmxlICYmXHJcbiAgICAgICAgICAgICFjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSAmJlxyXG4gICAgICAgICAgICAhY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoICYmIGNvbC50eXBlICE9PSAnaW1hZ2UnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC0zcHhcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIERyb3Bkb3duIC0tPlxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJpc0ZpbHRlck9wZW4gJiYgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnZHJvcGRvd24nXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBteS0yIGJvcmRlci1iZWxvdyBweS0xIHBiLTIgbWItMyBkLWZsZXggcHMtMVwiPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICA+PC9zcGFuXHJcbiAgICAgID48Yj57eyBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uaGVhZGVyIH19PC9iPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMiBweC0zXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlciByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIHB4LTIgZmlsdGVyLXNlcmFjaC1pbnB0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWQgb2Ygc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXCJcclxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBtZS0xIG1iLTEgdG9wLXJvdy1maWx0ZXItZHJvcGRvd25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHNlbGVjdGVkPy52YWx1ZSA/IHNlbGVjdGVkLnZhbHVlIDogc2VsZWN0ZWQgfX1cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihzZWxlY3RlZClcIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Nyb3NzLXByaW1hcnkuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gYm9yZGVyLTAgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZEZpbHRlck9wdGlvbnM/Lmxlbmd0aCA/ICcnIDogJ0ZpbHRlciBieSdcIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93blwiXHJcbiAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiaGFuZGxlQmFja3NwYWNlKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcclxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjAwcHgpOyBvdmVyZmxvdzogYXV0b1wiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2Ygc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgIHwgZmlsdGVyIDogc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duIDogJ3ZhbHVlJztcclxuICAgICAgICAgIGxldCBpID0gaW5kZXhcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBbaWRdPVwiaVwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhjb2wuaWQgfHwgY29sLl9pZCB8fCBjb2wpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKGNvbClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgW2Zvcl09XCJpXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sPy52YWx1ZSB8fCBjb2w/Lm5hbWUgfHwgY29sIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMiBweC0yIGJvcmRlci10b3BcIlxyXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldEZpbHRlckNoYW5nZXMoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPlNhdmU8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gRm9yIFRleHQgZmllbGRzIGFuZCBudW1iZXIgZmllbGRzLS0+XHJcblxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgaXNGaWx0ZXJPcGVuICYmXHJcbiAgICAgIChzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdzdHJpbmcnIHx8XHJcbiAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnbnVtYmVyJyB8fFxyXG4gICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnKVxyXG4gICAgXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDIxMHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBib3JkZXItYmVsb3cgcHktMSBwYi0yIGQtZmxleCBwcy0xXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPjxiPnt7IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5oZWFkZXIgfX08L2I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcG9zaXRpb24tcmVsYXRpdmUgcC0yIHRleHQtZmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0IGJvcmRlclwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0Q29uZGl0aW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cclxuICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBmaXJzdCB2YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgIFt0eXBlXT1cIlxyXG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgICAgPyAndGV4dCdcclxuICAgICAgICAgICAgICA6IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGVcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0VmFsdWVcIlxyXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG15LTMgZC1mbGV4IGZsZXgtcm93XCIgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbEFuZFwiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhbmRcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJsb2dpY2FsQW5kXCJcclxuICAgICAgICAgICAgICA+QU5EPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBjb2wtNCBtLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBpZD1cImxvZ2ljYWxPclwiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxPclwiPk9SPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbE5vbmVcIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJsb2dpY2FsT3BlcmF0b3JcIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxOb25lXCJcclxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25kaXRpb24gIT09ICdub25lJyAmJiBmaXJzdFZhbHVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBtdC0zXCI+XHJcbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIGNvbmRpdGlvbiBzZWxlY3QgLS0+XHJcbiAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGJvcmRlclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgIT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIHZhbHVlIGlucHV0IC0tPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBbdHlwZV09XCJcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICAgICAgPyAndGV4dCdcclxuICAgICAgICAgICAgICAgICAgOiBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgc2Vjb25kIHZhbHVlXCJcclxuICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZFZhbHVlXCJcclxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB4LTIgYm9yZGVyLXRvcFwiXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplICYmICFmaXJzdFZhbHVlXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldFRleHRGaWx0ZXJDaGFuZ2VzKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4+Q2FuY2VsPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID09PSAwICYmICFmaXJzdFZhbHVlKSB8fCAoY29uZGl0aW9uICE9PSAnbm9uZScgJiYgIXNlY29uZFZhbHVlKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPkFwcGx5PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBFZGl0IGRyb3Bkb3duIGhlcmUgLS0+XHJcbjxuZy10ZW1wbGF0ZSBsZXQtY29sPlxyXG4gIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tZWRpdFwiPjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2Z1bGxUZXh0VGVtcGxhdGVcclxuICBsZXQtcm93PVwicm93XCJcclxuICBsZXQtY29sPVwiY29sXCJcclxuICBsZXQtaXNBcnJheT1cImlzQXJyYXlcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmdWxsLXRleHQtYm94XCJcclxuICAgIChkYmxjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC8gMlwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmcocm93LCBjb2wpXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIiFpc0FycmF5XCJcclxuICAgICAgICBjbGFzcz1cImZ1bGwtdGV4dC1jb250ZW50XCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAvIDJcIlxyXG4gICAgICAgIChkYmxjbGljayk9XCJcclxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgZW5hYmxlRWRpdChyb3csIGNvbCwgdHJ1ZSlcclxuICAgICAgICBcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7XHJcbiAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubmFtZSB8fFxyXG4gICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcclxuICAgICAgICB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImlzQXJyYXlcIj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cImkgIT09IDBcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgaXRlbT8uZGVwYXJ0bWVudF9uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ucm9sZU5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5mdWxsX25hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBcIi1cIlxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiPlxyXG4gICAgICA8dGV4dGFyZWFcclxuICAgICAgICAoZGJsY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIHRydWUpXHJcbiAgICAgICAgXCJcclxuICAgICAgICAjdGV4dE1vZGVsPVwibmdNb2RlbFwiXHJcbiAgICAgICAgcm93cz1cIjRcIlxyXG4gICAgICAgICN0ZXh0QXJlYWRJbnB1dFxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbC5maWVsZF1cIlxyXG4gICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIHRleHRNb2RlbClcIlxyXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInRleHRBcmVhZElucHV0LmJsdXIoKVwiXHJcbiAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWRcclxuICAgICAgICB9XCJcclxuICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgID48L3RleHRhcmVhPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJbWFnZVBsYWNlaG9sZGVyIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgPHNwYW5cclxuICAgIGNsYXNzPVwicHgtMiBkLWZsZXggdy0xMDAgY2VsbC1jb250ZW50IGltYWdlLXBsYWNlaG9sZGVyXCJcclxuICAgIFt0aXRsZV09XCJyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUgfHwgJ04vQSdcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICByb3c/LmxvZ28gfHxcclxuICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxyXG4gICAgICAgICAgcm93Py5pbnZvaWNlPy5pbnZvaWNlX2ltYWdlIHx8XHJcbiAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2U7XHJcbiAgICAgICAgZWxzZSBwbGFjZWhvbGRlclxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIChjbGljayk9XCJmdWxsc2NyZWVuSW1hZ2UgPSByb3c/LnByb2ZpbGVfcGljdHVyZXM/Lls0XT8ucGF0aCB8fFxyXG4gICAgICAgICAgICByb3c/LmxvZ28gfHxcclxuICAgICAgICAgICAgcm93Py5hc3NldEltYWdlIHx8XHJcbiAgICAgICAgICAgIHJvdz8uaW52b2ljZV9pbWFnZVwiXHJcbiAgICAgICAgY2xhc3M9XCJwaWNcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgW2NsYXNzLmFzc2V0cy1waWNdPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgW3dpZHRoXT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgIFtoZWlnaHRdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgW3NyY109XCJcclxuICAgICAgICAgICAgcm93Py5wcm9maWxlX3BpY3R1cmVzPy5bNF0/LnBhdGggfHxcclxuICAgICAgICAgICAgcm93Py5sb2dvIHx8XHJcbiAgICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxyXG4gICAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2VcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBhbHQ9XCJpY29uXCJcclxuICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWljb25cIlxyXG4gICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZnVsbHNjcmVlbi1vdmVybGF5XCJcclxuICAgICAgKm5nSWY9XCJmdWxsc2NyZWVuSW1hZ2VcIlxyXG4gICAgICAoY2xpY2spPVwiZnVsbHNjcmVlbkltYWdlID0gbnVsbFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWcgW3NyY109XCJmdWxsc2NyZWVuSW1hZ2VcIiBjbGFzcz1cImZ1bGxzY3JlZW4taW1nXCIgLz5cclxuICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldER5bmFtaWNDbGFzcyhyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUpXCJcclxuICAgICAgICBjbGFzcz1cInBpYyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHJvdW5kZWQtY2lyY2xlXCJcclxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJyb3dIZWlnaHQgLyAzXCJcclxuICAgICAgICBbY2xhc3MuYXNzZXRzLXBpY109XCJncmlkVHlwZSA9PSAnQXNzZXRzJ1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRJbml0aWFscyhyb3c/LmZ1bGxfbmFtZSkgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFJpZ2h0IENsaWNrIE1lbnVlIC0tPlxyXG48ZGl2XHJcbiAgW2NsYXNzLmludmlzaWJsZV09XCIhcG9zaXRpb25lZFlldFwiXHJcbiAgY2xhc3M9XCJjb250ZXh0LW1lbnUgcC0yXCJcclxuICAqbmdJZj1cImFjdGlvbkhpZGUgJiYgYWN0aW9ucz8ubGVuZ3RoXCJcclxuICBbbmdTdHlsZV09XCJ7ICd0b3AucHgnOiB5UG9zLCAnbGVmdC5weCc6IHhQb3MgfVwiXHJcbiAgW2NsYXNzLnNob3ddPVwiaXNWaXNpYmxlXCJcclxuICBhcHBlbmRUbz1cImJvZHlcIlxyXG4+XHJcbiAgPHVsPlxyXG4gICAgPGxpXHJcbiAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiXHJcbiAgICAgIGNsYXNzPVwicm91bmRlZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy8nICsgYWN0aW9uICsgJy5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiByaWdodC1jbGljay1tZW51LWljb25zIG1lLTJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBmdy01MDBcIj57eyBhY3Rpb24gfX08L3NwYW4+XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBEZXRhaWxzIFRvZ2dsZSBmcm9tIGJvdHRvbSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbmVzdGVkVGFibGVUZW1wbGF0ZSBsZXQtcm93PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwibmVzdGVkLXRhYmxlIHRhYmxlIHRhYmxlLXNtIHctMTAwIG1iLTAgY2VudGVyLW5lc3RlZC10YWJsZSB3LTEwMFwiXHJcbiAgICBzdHlsZT1cInRhYmxlLWxheW91dDogZml4ZWQgIWltcG9ydGFudFwiXHJcbiAgICAjbmVzdGVkVGFibGVDb250YWluZXJcclxuICA+XHJcbiAgICA8dGhlYWRcclxuICAgICAgI25lc3RlZEhlYWRlclxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJyb3c/LmRldGFpbC5jb2x1bW5zXCJcclxuICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wQ29sdW1uKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIm9uTmVzdGVkQ29sU29ydCgkZXZlbnQsIHByZXZpZXdOZXN0ZWRDb2xzKVwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggdHIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93LmRldGFpbC5jb2x1bW5zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgIGNsYXNzPVwicHgtNCB0aFwiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLWZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGgtMTAwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHBvc2l0aW9uLXJlbGF0aXZlIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzXCIgKGNsaWNrKT1cInNvcnROZXN0ZWRDb2woY29sLCByb3cpXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRTdWJTb3J0Q29sdW1uID09IGNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgKGNvbD8ub3JkZXJfYnkgPT0gJ2Rlc2MnXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnZGF0YS1ncmlkL2ljb25zL3NvcnQtZGVzYy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnZGF0YS1ncmlkL2ljb25zL3NvcnQtYXNjLnN2ZycpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG1zLTIgc3RhcnQtNTBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjb2xcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IC01MCU7IHotaW5kZXg6IDIxOyBsZWZ0OiAwXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uTWVudTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgIGlzTmVzdGVkVGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiByb3c/LmRldGFpbC5jb2x1bW5zXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICBvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGNvbCk7XHJcbiAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlldz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGhlYWQ+XHJcbiAgICA8ZGl2XHJcbiAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxMFwiXHJcbiAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJuZXN0ZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxMFwiXHJcbiAgICA+XHJcbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgICAgICBbaXRlbVNpemVdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxyXG4gICAgICAgIGNsYXNzPVwidmlld3BvcnRcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAocm93Py5kZXRhaWw/LnJlc3VsdD8ubGVuZ3RoIDwgNVxyXG4gICAgICAgICAgICA/IG5lc3RlZFRhYmxlcm93SGVpZ2h0ICogcm93Py5kZXRhaWw/LnJlc3VsdD8ubGVuZ3RoICsgNDBcclxuICAgICAgICAgICAgOiAzMDApICsgKGhhc0hvcml6b250YWxTY3JvbGwgPyAtMTIgOiAxKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcclxuICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBib3JkZXItYmVsb3cgZC1mbGV4IHRyXCJcclxuICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IGQgb2Ygcm93Py5kZXRhaWw/LnJlc3VsdDsgdHJhY2tCeTogdHJhY2tCeUlkXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm5lc3RlZEhlYWRlcj8ub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlcj8ub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCBkKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInB4LTQgcHktMCB0ZFwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgcHJldmlld05lc3RlZENvbHM7IGxldCBqID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwibmVzdGVkVGFibGVyb3dGb250c2l6ZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHQgLSAxXCJcclxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImNvbD8ud2lkdGhcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8IS0tIHt7IGRbY29sLmZpZWxkXSB8fCAoY29sLmlzX2Ftb3VudCA/IDAgOiBcIi1cIikgfX0gLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgI2NlbGxUZXh0XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxyXG4gICAgICAgICAgICAgICAgICBjb2wudHlwZSA9PT0gJ2RhdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgPyAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8IGRhdGUgOiBkYXRlRm9ybWF0KVxyXG4gICAgICAgICAgICAgICAgICAgIDogZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8fCAnLSdcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlICE9PSAnaW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuaXNfYW1vdW50XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbFxyXG4gICAgICAgICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFpc05lc3RlZFZhbHVlQXJyYXkoZCwgY29sLmZpZWxkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb2wudHlwZSA9PT0gJ2RhdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKGlzRGF0ZShnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8IGRhdGU6IGRhdGVGb3JtYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy52YWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy5uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8udmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy5uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2wuaXNfYW1vdW50ID8gMDogJy0nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/LlswXT8uZGVwYXJ0bWVudF9uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/LlswXT8ucm9sZU5hbWUgfHwgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8uWzBdPy5mdWxsX25hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0nKVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAge3sgZ2V0VG90YWxBbW91bnQoY29sKSB9fVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gJ2ltYWdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRJbWFnZVBsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3c6IGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsZWZ0UmlnaHROZXN0ZWRQbGFjZWhvbGRlciBsZXQtcm93PlxyXG4gIDx0YWJsZVxyXG4gICAgY2xhc3M9XCJuZXN0ZWQtdGFibGUgdGFibGUgdGFibGUtc20gdy0xMDAgbWItMFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcclxuICAgICAgICA/IChuZXN0ZWRUYWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ID8/IDApICsgMTJcclxuICAgICAgICA6ICh0YXNrTWFuYWdlbWVudENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ID8/IDApXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRoZWFkXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInRyIGQtZmxleCBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVIZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiICpuZ0Zvcj1cImxldCBfIG9mIFsxLCAyLCAzLCA0LCA1XVwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRib2R5XCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInRyIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IF8gb2Ygcm93Py5kZXRhaWw/LnJlc3VsdFwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRkXCIgKm5nRm9yPVwibGV0IF9fIG9mIFsxLCAyLCAzLCA0LCA1XVwiIGNsYXNzPVwicHktMFwiPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgPC90YWJsZT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGFza01hbmFnZW1lbnRUZW1wbGF0ZSBsZXQtdGFza0RldGFpbHM9XCJ0YXNrRGV0YWlsc1wiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwicC00XCJcclxuICAgICN0YXNrTWFuYWdlbWVudENvbnRhaW5lclxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICBbc3R5bGUuZm9udEZhaW1seV09XCJmb250RmFpbWx5XCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+RGVzY3JpcHRpb248L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnQgZmlyc3REaXZcIj5cclxuICAgICAgICB7eyB0YXNrRGV0YWlscy5kZXNjcmlwdGlvbiB9fVxyXG4gICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgIFtzdHlsZS5mb250U2l6ZV09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cIml0ZW0tY29udGVudCBmaXJzdERpdiB0YXNrRGVzY3JpcHRpb24gcGUtNFwiXHJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldFNhZmVDb21tZW50KHRhc2tEZXRhaWxzPy5lZGl0b3JfZGVzY3JpcHRpb24pXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuRnVsbEltYWdlKCRldmVudClcIlxyXG4gICAgICAgID48L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPkF0dGFjaG1lbnRzPC9kaXY+XHJcbiAgICAgICAgPGg1ICpuZ0lmPVwidGFza0RldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgTm8gQXR0YWNobWVudHMgZm91bmRcclxuICAgICAgICA8L2g1PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwidGFza0RldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJpdGVtLWNvbnRlbnQgZC1mbGV4IGZsZXgtd3JhcFwiXHJcbiAgICAgICAgICBzdHlsZT1cImdhcDogMTBweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGFcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGF0dGFjaGVtZW50IG9mIHRhc2tEZXRhaWxzPy5hdHRhY2htZW50czsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic3ltYm9sLWxhYmVsIGZzLTIgZnctc2VtaWJvbGQgdGV4dC1zdWNjZXNzIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHRhc2tEZXRhaWxzPy5hdHRhY2htZW50c19uYW1lW2ldIHx8ICdBdHRhY2htZW50JyB9fVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGF0dGFjaGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9kb2N1bWVudC1pY29ucy8nICtcclxuICAgICAgICAgICAgICAgIGdldEV4dGVudGlvbihhdHRhY2hlbWVudCkgK1xyXG4gICAgICAgICAgICAgICAgJy5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPlxyXG4gICAgICAgICAgQ29tbWVudHMgKHt7IHRhc2tEZXRhaWxzPy5jb21tZW50cz8ubGVuZ3RoIH19KVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxoNSAqbmdJZj1cInRhc2tEZXRhaWxzPy5jb21tZW50cz8ubGVuZ3RoID09IDBcIj5ObyBDb21tZW50cyBmb3VuZDwvaDU+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInRhc2tEZXRhaWxzPy5jb21tZW50cz8ubGVuZ3RoXCIgY2xhc3M9XCJpdGVtLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgdGFza0RldGFpbHMuY29tbWVudHNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcGUtM1wiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGljIGltYWdlLWlucHV0LXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwie3sgY29tbWVudD8uY29tbWVudF9ieS5sb2dvIH19XCJcclxuICAgICAgICAgICAgICAgIGFsdD1cInt7IGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUgfX1cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPCEtLSA8YXBwLWRlZmF1bHQtaW1hZ2UtcGxhY2Vob2xkZXIgKm5nSWY9XCIhY29tbWVudD8uY29tbWVudF9ieS5sb2dvXCIgdGl0bGU9XCJ7eyBjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XCIgW25hbWVdPVwiY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZVwiPjwvYXBwLWRlZmF1bHQtaW1hZ2UtcGxhY2Vob2xkZXI+IC0tPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0RHluYW1pY0NsYXNzKGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGljIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcm91bmRlZC1jaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cInJvd0hlaWdodCAvIDNcIlxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRJbml0aWFscyhjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYXV0aG9yIGZzLTE0cHhcIj5cclxuICAgICAgICAgICAgICAgIHt7IGNvbW1lbnQ/LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb21tZW50LWNvbnRlbnQgZm9yQ29tbWVudEltZ1wiXHJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldFNhZmVDb21tZW50KGNvbW1lbnQuY29tbWVudClcIlxyXG4gICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC10aW1lc3RhbXBcIj5cclxuICAgICAgICAgICAgICAgIHt7IGNvbW1lbnQuY29tbWVudF9kYXRlIHwgZGF0ZSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LXRpbWVzdGFtcFwiPlxyXG4gICAgICAgICAgICAgICAgUmVwbGllczogKHt7IGNvbW1lbnQucmVwbGllcy5sZW5ndGggfX0pXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
5413
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1ncmlkL3NyYy9saWIvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBSU4sU0FBUyxFQUVULFlBQVksRUFFWixZQUFZLEVBTVosdUJBQXVCLEVBRXZCLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFVTCxlQUFlLEdBQ2hCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1AsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUc1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVdyRSxNQUFNLENBQU4sSUFBWSxnQkFRWDtBQVJELFdBQVksZ0JBQWdCO0lBQzFCLGlDQUFhLENBQUE7SUFDYiw4Q0FBMEIsQ0FBQTtJQUMxQiw4Q0FBMEIsQ0FBQTtJQUMxQixpREFBNkIsQ0FBQTtJQUM3QiwwQ0FBc0IsQ0FBQTtJQUN0QiwwQ0FBc0IsQ0FBQTtJQUN0QixpREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBUlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQVEzQjtBQUdE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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBFbGVtZW50UmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgTmdab25lLFxyXG4gIFJlbmRlcmVyMixcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIEVtYmVkZGVkVmlld1JlZixcclxuICBUZW1wbGF0ZVJlZixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBRdWVyeUxpc3QsXHJcbiAgVmlld0NoaWxkcmVuLFxyXG4gIGluamVjdCxcclxuICBJbmplY3RvclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTcGxpdENvbHVtbnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3BsaXQtY29sdW1ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBDZGtEcmFnLFxyXG4gIENka0RyYWdEcm9wLFxyXG4gIENka0RyYWdFbmQsXHJcbiAgQ2RrRHJhZ0VudGVyLFxyXG4gIENka0RyYWdFeGl0LFxyXG4gIENka0RyYWdNb3ZlLFxyXG4gIENka0RyYWdTb3J0RXZlbnQsXHJcbiAgQ2RrRHJhZ1N0YXJ0LFxyXG4gIERyYWdEcm9wLFxyXG4gIG1vdmVJdGVtSW5BcnJheSxcclxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHtcclxuICB0cmlnZ2VyLFxyXG4gIHN0YXRlLFxyXG4gIHN0eWxlLFxyXG4gIHRyYW5zaXRpb24sXHJcbiAgYW5pbWF0ZSxcclxuICBxdWVyeSxcclxuICBzdGFnZ2VyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBDZGtEcm9wTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBTVEFUVVNFU19CQURHRV9NQVAgfSBmcm9tICcuL3N0YXR1c2VzJztcclxuaW1wb3J0IHsgQ29weVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29weS1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgdGFrZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9leHBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IENlbGxIb3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9jZWxsSG9zdC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1hdEN1cnJlbmN5UGlwZSB9IGZyb20gJy4uL3BpcGVzL2Zvcm1hdC1jdXJyZW5jeS5waXBlJztcclxuXHJcbmludGVyZmFjZSBDZWxsUG9zaXRpb24ge1xyXG4gIHJvd0luZGV4OiBudW1iZXI7XHJcbiAgY29sSW5kZXg6IG51bWJlcjtcclxuICBzdWJDb2xJbmRleDogbnVtYmVyO1xyXG4gIGZpZWxkOiBzdHJpbmc7XHJcbiAga2V5OiBzdHJpbmc7XHJcbn1cclxuZXhwb3J0IGVudW0gUm93QW5pbWF0aW9uVHlwZSB7XHJcbiAgTm9uZSA9ICdub25lJyxcclxuICBTcHJlYWQgPSAnc3ByZWFkQW5pbWF0aW9uJyxcclxuICBCb3VuY2UgPSAnYm91bmNlQW5pbWF0aW9uJyxcclxuICBTbGlkZVVwID0gJ3NsaWRlVXBGcm9tQm90dG9tJyxcclxuICBGbGlwID0gJ2ZsaXBBbmltYXRpb24nLFxyXG4gIFNrZXcgPSAnc2tld0FuaW1hdGlvbicsXHJcbiAgU2xpZGVSaWdodCA9ICdzbGlkZUZyb21SaWdodCcsXHJcbn1cclxuXHJcblxyXG5leHBvcnQgY29uc3Qgc29ydGluZ0FuaW1hdGlvbiA9IHRyaWdnZXIoJ2xpc3RTb3J0JywgW1xyXG4gIHRyYW5zaXRpb24oJyogPT4gKicsIFtcclxuICAgIC8vIFF1ZXJ5IGFsbCBlbGVtZW50cyBlbnRlcmluZyBvciBsZWF2aW5nXHJcbiAgICBxdWVyeSgnOmVudGVyLCA6bGVhdmUnLCBzdHlsZSh7IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCB3aWR0aDogJzEwMCUnIH0pLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgIC8vIEFuaW1hdGUgbGVhdmluZyBlbGVtZW50cyB1cHdhcmQgd2l0aCBmYWRlIG91dFxyXG4gICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMjBweCknLCBvcGFjaXR5OiAwIH0pKVxyXG4gICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAvLyBTdGFnZ2VyIHRoZSBlbnRlcmluZyBlbGVtZW50cyBmb3IgYSBzbW9vdGhlciBlZmZlY3RcclxuICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXHJcbiAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgyMHB4KScsIG9wYWNpdHk6IDAgfSksXHJcbiAgICAgIHN0YWdnZXIoNTAsIFtcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsIG9wYWNpdHk6IDEgfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgXSlcclxuXSk7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZGF0YS1ncmlkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YS1ncmlkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRhLWdyaWQuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdhY2NvcmRpb25Ub2dnbGUnLCBbXHJcbiAgICAgIHN0YXRlKFxyXG4gICAgICAgICdjb2xsYXBzZWQnLFxyXG4gICAgICAgIHN0eWxlKHsgaGVpZ2h0OiAnMHB4Jywgb3ZlcmZsb3c6ICd1bnNldCcgfSlcclxuICAgICAgKSxcclxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3ZlcmZsb3c6ICd1bnNldCcgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdjb2xsYXBzZWQgPD0+IGV4cGFuZGVkJywgYW5pbWF0ZSgnMzAwbXMgZWFzZS1pbicpKSxcclxuICAgIF0pLFxyXG4gICAgdHJpZ2dlcignc2xpZGVUb2dnbGUnLCBbXHJcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcclxuICAgICAgICBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAsIG92ZXJmbG93OiAnaGlkZGVuJyB9KSxcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicsIG9wYWNpdHk6IDEgfSkpXHJcbiAgICAgIF0pLFxyXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICAgICAgc3R5bGUoeyBoZWlnaHQ6ICcqJywgb3BhY2l0eTogMSwgb3ZlcmZsb3c6ICdoaWRkZW4nIH0pLFxyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IGhlaWdodDogJzBweCcsIG9wYWNpdHk6IDAgfSkpXHJcbiAgICAgIF0pXHJcbiAgICBdKSxcclxuICAgIHRyaWdnZXIoJ3NsaWRlVXAnLCBbXHJcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwMCUpJywgb3BhY2l0eTogMCB9KSksXHJcbiAgICAgIHN0YXRlKCcqJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJywgb3BhY2l0eTogMSB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gKicsIGFuaW1hdGUoJzMwMG1zIGVhc2Utb3V0JykpLFxyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHZvaWQnLCBhbmltYXRlKCczMDBtcyBlYXNlLWluJykpLFxyXG4gICAgXSksXHJcbiAgICB0cmlnZ2VyKCdyb3dEeW5hbWljJywgW1xyXG5cclxuICAgICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1BSRUFEIC0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc3ByZWFkQW5pbWF0aW9uJywgW1xyXG4gICAgICAgIHF1ZXJ5KCc6ZW50ZXInLCBbXHJcbiAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NjYWxlWCgwLjcpJyB9KSxcclxuICAgICAgICAgIHN0YWdnZXIoNjAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMzUwbXMgZWFzZS1vdXQnLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2NhbGVYKDEpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzIyMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2NhbGVYKDAuNyknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcbiAgICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEJPVU5DRSAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IGJvdW5jZUFuaW1hdGlvbicsIFtcclxuICAgICAgICBxdWVyeSgnOmVudGVyJywgW1xyXG4gICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKC0xMHB4KScgfSksXHJcbiAgICAgICAgICBzdGFnZ2VyKDQ1LCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoXHJcbiAgICAgICAgICAgICAgJzUwMG1zIGN1YmljLWJlemllciguNjgsLTAuNTUsLjI3LDEuNTUpJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KSxcclxuXHJcbiAgICAgICAgcXVlcnkoJzpsZWF2ZScsIFtcclxuICAgICAgICAgIHN0YWdnZXIoNDAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMjAwbXMgZWFzZS1pbicsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwcHgpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgICAgXSksXHJcblxyXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMTogRkxJUCAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IGZsaXBBbmltYXRpb24nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAncm90YXRlWCgtODBkZWcpJyB9KSxcclxuICAgICAgICAgIHN0YWdnZXIoNzAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnNDUwbXMgZWFzZS1vdXQnLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAncm90YXRlWCgwKScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICAgICAgc3RhZ2dlcig1MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCcyNTBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3JvdGF0ZVgoODBkZWcpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgICAgXSksXHJcblxyXG4gICAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSBORVcgMjogU0tFVyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gICAgICB0cmFuc2l0aW9uKCcqID0+IHNrZXdBbmltYXRpb24nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAnc2tld1koNmRlZykgdHJhbnNsYXRlWSg4cHgpJyB9KSxcclxuICAgICAgICAgIHN0YWdnZXIoNjAsIFtcclxuICAgICAgICAgICAgYW5pbWF0ZSgnMzIwbXMgZWFzZS1vdXQnLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAnc2tld1koMGRlZykgdHJhbnNsYXRlWSgwKScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pLFxyXG5cclxuICAgICAgICBxdWVyeSgnOmxlYXZlJywgW1xyXG4gICAgICAgICAgc3RhZ2dlcig0MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCcyMjBtcyBlYXNlLWluJyxcclxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3NrZXdZKC02ZGVnKSB0cmFuc2xhdGVZKC04cHgpJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSlcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVVcEZyb21Cb3R0b20nLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgxMDB2aCknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCc1MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDApJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtNTBweCknIH0pXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgXSwgeyBvcHRpb25hbDogdHJ1ZSB9KVxyXG4gICAgICBdKSxcclxuXHJcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gc2xpZGVGcm9tUmlnaHQnLCBbXHJcbiAgICAgICAgcXVlcnkoJzplbnRlcicsIFtcclxuICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgxMDB2dyknIH0pLFxyXG4gICAgICAgICAgc3RhZ2dlcig2MCwgW1xyXG4gICAgICAgICAgICBhbmltYXRlKCc1MDBtcyBjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXHJcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIF0sIHsgb3B0aW9uYWw6IHRydWUgfSksXHJcblxyXG4gICAgICAgIHF1ZXJ5KCc6bGVhdmUnLCBbXHJcbiAgICAgICAgICBzdGFnZ2VyKDQwLCBbXHJcbiAgICAgICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4nLFxyXG4gICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCg1MHB4KScgfSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXSlcclxuICAgICAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXHJcbiAgICAgIF0pLFxyXG5cclxuXHJcblxyXG4gICAgXSlcclxuXHJcblxyXG4gIF0sXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YUdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuICAvLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xyXG4gIC8vICoqKioqKioqKiogIElucHV0IEdvZXMgSGVyZSAqKioqKioqKioqKiAvL1xyXG4gIC8vICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXHJcbiAgLy8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cclxuXHJcblxyXG4gIEBJbnB1dCgpIHJvd0FuaW1hdGlvbjogUm93QW5pbWF0aW9uVHlwZSA9IFJvd0FuaW1hdGlvblR5cGUuTm9uZTtcclxuXHJcbiAgLy8gUGFnaW5hdGlvbiBDb25maWcgU3RvcmUgSGVyZVxyXG4gIEBJbnB1dCgpIHBhZ2luYXRpb25Db25maWc6IGFueSA9IHt9O1xyXG5cclxuICAvLyBUaGUgZGF0YXNldCBzdG9yZSBoZXJlO1xyXG4gIEBJbnB1dCgpIGRhdGFTZXQ6IGFueVtdID0gW107XHJcblxyXG4gIC8vIFRoZSBjb2x1bW5zIFN0b3JlIEhlcmVcclxuICBASW5wdXQoKSBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICAvLyBSb3cgSGVpZ2h0O1xyXG4gIEBJbnB1dCgpIHJvd0hlaWdodDogbnVtYmVyID0gNDQ7XHJcblxyXG4gIC8vIEhlYWRlciBSb3cgSGVpZ2h0O1xyXG4gIEBJbnB1dCgpIGhlYWRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XHJcblxyXG4gIC8vIFNob3cgVmVydGljYWwgQm9yZGVycztcclxuICBASW5wdXQoKSBzaG93VmVydGljYWxCb3JkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gRXZlbiBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgZXZlblJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG5cclxuICAvLyBFdmVuIFJvd3MgQmFja2dyb3VuZCBDb2xvcjtcclxuICBASW5wdXQoKSBvZGRSb3dzQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnI2YyZjJmMic7XHJcblxyXG4gIC8vIEhlYWRlciBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgaGVhZGVyQmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2Y2ZjhmZic7XHJcblxyXG4gIC8vIEhlYWRlciBSb3dzIEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgY2hlY2tib3hlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nID0gJyNmNmY4ZmYnO1xyXG5cclxuICAvLyBTaG93IENvbHVtbnMgR3JvdXBpbmc7XHJcbiAgQElucHV0KCkgc2hvd0NvbHVtbnNHcm91cGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBSb3cgSG92ZXJlZCBCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIHJvd0hvdmVyQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICdyZ2JhKDAsIDEyMywgMjU1LCAwLjEpJztcclxuXHJcbiAgLy8gTGVmdCBQaW5uZWRCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIGxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gQm9keSBCYWNrZ3JvdW5kIGNvbG9yO1xyXG4gIEBJbnB1dCgpIGJvZHlCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gUmlnaHQgUGlubmVkIEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgcmlnaHRQaW5uZWRCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gU2lkZSBNZW51IEJhY2tncm91bmQgY29sb3I7XHJcbiAgQElucHV0KCkgc2lkZW1lbnVCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjZjZmOGZmJztcclxuXHJcbiAgLy8gQm9keSB0ZXh0IGNvbG9yO1xyXG4gIEBJbnB1dCgpIGJvZHlUZXh0Q29sb3I6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcjMGMxMTJiJztcclxuXHJcbiAgLy8gSGVhZGVyIHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgaGVhZGVyVGV4dENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnIzJhMWY3Myc7XHJcblxyXG4gIC8vIEhlYWRlciB0ZXh0IGNvbG9yO1xyXG4gIEBJbnB1dCgpIGNoZWNrYm94ZXNDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyMyYTFmNzMnO1xyXG5cclxuICAvLyBIZWFkZXIgdGV4dCBzaXplO1xyXG4gIEBJbnB1dCgpIGhlYWRlclRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xyXG5cclxuICAvLyBCb2R5IHRleHQgY29sb3I7XHJcbiAgQElucHV0KCkgYm9keVRleHRGb250c1NpemU6IG51bWJlciB8IHVuZGVmaW5lZCA9IDE0O1xyXG5cclxuICAvLyBIZWFkZXIgZm9udCB3ZWlnaHQ7XHJcbiAgQElucHV0KCkgaGVhZGVyRm9udFdlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkID0gNTAwO1xyXG5cclxuICAvLyBCb2R5IEZvbnQgV2VpZ2h0O1xyXG4gIEBJbnB1dCgpIGJvZHlGb250V2VpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQgPSA0MDA7XHJcblxyXG4gIC8vIENoZWNrZWQgUm93IEJhY2tncm91bmQgQ29sb3I7XHJcbiAgQElucHV0KCkgY2hlY2tlZFJvd0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJ2FsaWNlYmx1ZSc7XHJcblxyXG4gIC8vIGRyb3Bkb3ducyBCYWNrZ3JvdW5kIENvbG9yO1xyXG4gIEBJbnB1dCgpIGRyb3Bkb3duc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyNmNmY4ZjgnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZm9vdGVyUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcclxuXHJcbiAgLy8gRm9vdGVyIHJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgZm9vdGVyUm93SGVpZ2h0OiBudW1iZXIgPSA0NjtcclxuXHJcbiAgLy8gRm9vdGVyIHJvdyBIZWlnaHQ7XHJcbiAgQElucHV0KCkgdG9wR3JvdXBlZEJhZGdlc0JhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XHJcblxyXG4gIC8vIFNob3cgUm93IHdpc2UgZ3JvdXBpbmc7XHJcbiAgQElucHV0KCkgc2hvd1Jvd3NHcm91cGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xyXG5cclxuICAvLyBTaG93IFJvdyB3aXNlIGdyb3VwaW5nO1xyXG4gIEBJbnB1dCgpIHNob3dGaWx0ZXJSb3c6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcclxuXHJcbiAgLy8gU2hvdyBSb3cgd2lzZSBncm91cGluZztcclxuICBASW5wdXQoKSBmb250RmFpbWx5OiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnc2Fucy1zZXJpZic7XHJcblxyXG4gIC8vIFNob3cgU2lkZUNvbHVtbjtcclxuICBASW5wdXQoKSBzaG93U2lkZU1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gRm9vdGVyIFBhZGRpbmdcclxuICBASW5wdXQoKSBmb290ZXJQYWRkaW5nOiBudW1iZXIgPSAzXHJcblxyXG5cclxuICAvLyBGb290ZXIgUGFkZGluZ1xyXG4gIEBJbnB1dCgpIHRvcEZpbHRlclJvd0hlaWdodDogbnVtYmVyID0gNTA7XHJcblxyXG4gIC8vIFNob3cgUm93cyBzaGFkaW5nXHJcbiAgQElucHV0KCkgcm93U2hhZGluZ0VuYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gU2hvdyBSb3dzIHNoYWRpbmdcclxuICBASW5wdXQoKSBzaG93U2VyaWFsTnVtYmVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIFNpbmdsZSBTcGEgVXJsIEF0dGFjaCB0byBpY29uc1xyXG4gIEBJbnB1dCgpIHNpbmdsZVNwYUFzc2V0c1BhdGg6IHN0cmluZyA9ICdhc3NldHMvJztcclxuXHJcblxyXG4gIC8vIEFwcGxpZWQgRmlsdGVyc1xyXG4gIEBJbnB1dCgpIGZpbHRlcnNDb25maWc6IGFueVtdID0gW107XHJcblxyXG5cclxuICAvLyBBcHBsaWVkIEZpbHRlcnNcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vVmVydGljYWwgU2Nyb2xsYmFyIHN0eWxlXHJcbiAgQElucHV0KCkgdmVydGljYWxTY3JvbGxiYXJXaWR0aDogJ2F1dG8nIHwgJ3RoaW4nID0gJ2F1dG8nO1xyXG5cclxuICAvL0hvcml6aW50YWwgU2Nyb2xsYmFyIHN0eWxlXHJcbiAgQElucHV0KCkgaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoOiAnYXV0bycgfCAndGhpbicgPSAnYXV0byc7XHJcblxyXG4gIC8vIFNob3cgQ2VsbCBkZXRhaWxzIGJveFxyXG4gIEBJbnB1dCgpIHNob3dDZWxsRGV0YWlsc0JveDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvL0RhdGUgZm9ybWF0XHJcblxyXG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICcnXHJcblxyXG4gIC8vRGF0ZSBmb3JtYXRcclxuICBASW5wdXQoKSB0YWJsZVNlYXJjaDogc3RyaW5nID0gJyc7XHJcblxyXG5cclxuICAvL0RhdGUgZm9ybWF0XHJcbiAgQElucHV0KCkgYWN0aW9uczogYW55W10gPSBbJ2VkaXQnLCAnZGVsZXRlJ107XHJcblxyXG5cclxuICAvLyBUYWJsZSBDb25maWcgZm9yIHBhZ2luYXRpb25zIGlzIGhlcmVcclxuICBASW5wdXQoKSBjb25maWc6IGFueTtcclxuXHJcblxyXG4gIC8vIFNlbGVjdGlvbiB0YXNrIGJhclxyXG4gIEBJbnB1dCgpIHNob3dUYXNrYmFyID0gZmFsc2VcclxuXHJcbiAgLy8gVGFibGUgTmFtZSBmb3Igc3RhdGUgbWFuYWdlXHJcbiAgQElucHV0KCkgdGFibGVOYW1lID0gdHJ1ZVxyXG5cclxuXHJcbiAgLy8gTGlzdGluZyB0eXBlXHJcbiAgQElucHV0KCkgbGlzdGluZ1R5cGU6IHN0cmluZyB8IGJvb2xlYW4gPSAnJztcclxuXHJcbiAgLy8gTGlzdGluZyB0eXBlXHJcblxyXG4gIEBJbnB1dCgpIGNoZWNrYm94U3RhdGU6IHsgcmVzZXQ6IGJvb2xlYW4gfSA9IHtcclxuICAgIHJlc2V0OiB0cnVlXHJcbiAgfVxyXG5cclxuICAvLyBUYXNrYmFyIGFjdGlvbnNcclxuICBASW5wdXQoKSB0YXNrYmFyQWN0aW9uczogYW55W10gPSBbXVxyXG5cclxuXHJcbiAgLy8gU29ydGluZyBDb25maWcgdG8gc2hvdyBzb3J0IGljb25zXHJcbiAgQElucHV0KCkgc29ydGluZ0NvbmZpZzogeyBmaWVsZDogc3RyaW5nLCBvcmRlcl9ieTogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlRmlsdGVyVmlld0lkOiBhbnkgPSAnJztcclxuXHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVGFibGVMYXlvdXQ6IGFueSA9ICdtZWRpdW0nXHJcblxyXG4gIEBJbnB1dCgpIGNsb3NlRHJvcGRvd246IHsgcHJlc2V0OiB7IGNsb3NlZDogYm9vbGVhbiwgbG9hZGluZzogYm9vbGVhbiB9IH0gPSB7IHByZXNldDogeyBjbG9zZWQ6IGZhbHNlLCBsb2FkaW5nOiBmYWxzZSB9IH07XHJcblxyXG4gIC8vIFRhYmxlIFZpZXdcclxuXHJcbiAgLy8gR2xvYmFsU2VhcmNoXHJcbiAgQElucHV0KCkgZ2xvYmFsU2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8vIE5lc3RlZCBUYWJsZSBSb3cgRm9udHNpemVcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZXJvd0ZvbnRzaXplID0gMTQ7XHJcblxyXG4gIC8vIE5lc3RlZCB0YWJsZSByb3cgSGVhZGVyIHJvdyBIZWlnaHRcclxuICBASW5wdXQoKSBuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodCA9IDQwO1xyXG5cclxuICAvLyBOZXN0ZWQgVGFibGUgcm93IGhlaWdodFxyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlcm93SGVpZ2h0ID0gNDU7XHJcblxyXG5cclxuICBASW5wdXQoKSBncmlkVHlwZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIGN1cnJlbmN5U3ltYm9sOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgY3VycmVuY3lGb3JtYXQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBASW5wdXQoKSBsZWZ0UGlubmVkQm94c2hhZG93OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgcmlnaHRQaW5uZWRCb3hzaGFkb3c6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvLyBHbG9iYWxTZWFyY2hcclxuICBASW5wdXQoKSBzZWxlY3RlZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjOGFjNWZmJztcclxuXHJcbiAgLy8gR2xvYmFsU2VhcmNoXHJcbiAgQElucHV0KCkgbmVzdGVkVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZyA9ICcjZjZmOGZmJztcclxuXHJcblxyXG4gIEBJbnB1dCgpIG5lc3RlZFRhYmxlUm93QmFja2dyb3VuZENvbG9yOiBzdHJpbmcgPSAnI2VhZWFlYSc7XHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlVmlldzogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgYnV0dG9uczogeyBuYW1lOiBzdHJpbmc7IGlzX3Nob3dJY29uOiBib29sZWFuOyBpY29uOiBzdHJpbmcsIGhhc19wZXJtaXNzaW9uOiBib29sZWFuIH1bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBrZWVwTXVsdGlwbGVFeHBhbmRlZERldGFpbHMgPSBmYWxzZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHNob3dUb3RhbEFtb3VudFJvdyA9IGZhbHNlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlR2xvYmFsU2VhcmNoID0gdHJ1ZTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHRhYmxlVHlwZSA9ICcnO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlRXhwb3J0ID0gZmFsc2U7XHJcblxyXG5cclxuICBASW5wdXQoKSBzaG93RnVsbFNjcmVlbkJ1dHRvbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgQElucHV0KCkgZW5hYmxlQ3V0ID0gZmFsc2U7XHJcblxyXG5cclxuICBASW5wdXQoKSB0YWJzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBzaG93Q2hlY2tib3hlcyA9IHRydWU7XHJcblxyXG5cclxuICBASW5wdXQoKSBwYWdlU2l6ZU9wdGlvbnMgPSBbMTAsIDI1LCA1MCwgNzUsIDEwMCwgMTUwLCAyMDAsIDI1MCwgMzAwLCA1MDBdO1xyXG5cclxuXHJcbiAgQElucHV0KCkgcmVzZXRBbGxGaWx0ZXJzID0geyByZXNldEFsbDogZmFsc2UgfTtcclxuXHJcblxyXG4gIEBJbnB1dCgpIGNvbHVtblRocmVlZG90c011bnVDb25maWcgPSB7XHJcbiAgICBzaG93UGlubGVmdDogdHJ1ZSxcclxuICAgIHNob3dQaW5yaWdodDogdHJ1ZSxcclxuICAgIHNob3dBc2NlbmRpbmc6IHRydWUsXHJcbiAgICBzaG93RGVzY2VuZGluZzogdHJ1ZSxcclxuICAgIHNob3dGaWx0ZXI6IHRydWUsXHJcbiAgICBzaG93Um93c0dyb3VwaW5nOiB0aGlzLnNob3dSb3dzR3JvdXBpbmcsXHJcbiAgICBzaG93QXV0b3NpemVBbGxDb2x1bW5zOiB0cnVlLFxyXG4gICAgc2hvd0F1dG9zaXplVGhpc0NvbHVtbjogZmFsc2UsXHJcbiAgICBzaG93Q2hvc2VDb2x1bW5zOiBmYWxzZSxcclxuICAgIHNob3dSZXNldENvbHVtbnM6IGZhbHNlLFxyXG4gIH07XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vICAgICAgICAgICAgICAgICAgICAgICAgIE91dCBQdXQgRXZlbnRzXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuXHJcblxyXG5cclxuICAvL0NoYW5nZSBUYWJsZSBMYXlvdXRcclxuICBAVmlld0NoaWxkcmVuKENlbGxIb3N0RGlyZWN0aXZlKSBjZWxsSG9zdHMhOiBRdWVyeUxpc3Q8Q2VsbEhvc3REaXJlY3RpdmU+O1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZUxheW91dCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGN1c3RvbUNlbGxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvLyBGaWx0ZXIgQXBwbHkgZXZlbnQ7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBmaWx0ZXJPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBnZW5lcmljRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgdGFibGVQcmVzZXRDb25maWc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgc29ydGluZ09yZGVyT3B0aW9uczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpIGNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3Rpbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGlzRnVsbFNjcmVlbiA9IGZhbHNlO1xyXG4gIGFjdGl2ZVRhYjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgZ3JvdXBlZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgYWN0aXZlQ29sOiBhbnkgPSBudWxsO1xyXG4gIGFjdGl2ZUZpbHRlckNlbGw6IGFueSA9IG51bGw7XHJcbiAgc2hvd0FjdGlvbnNEcm9wRG93biA9IGZhbHNlO1xyXG4gIHNpZGVNZW51VmlzaWJsZSA9IGZhbHNlO1xyXG4gIHBpdm90TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbHVtblNlYXJjaDogc3RyaW5nID0gJyc7XHJcbiAgZXhwYW5kQWxsQWNjb3JkaWFucyA9IHRydWU7XHJcbiAgY3VycmVudE9wZW5lZFNpZGVNZW51ZTogJ2NvbHMnIHwgJ2ZpbHRycycgfCBudWxsID0gbnVsbDtcclxuICBvcmlnaW5hbENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgb3JpZ2luYWxEYXRhU2V0OiBhbnlbXSA9IFtdO1xyXG4gIGFjdGl2ZVRvcEJ1dHRvbjogc3RyaW5nIHwgbnVsbCA9ICcnO1xyXG4gIGZpbHRlckNvbHVtbnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIGdyb3VwQm94UGFkZGluZyA9IDIwMDtcclxuICBwcmVzZXROYW1lOiBzdHJpbmcgPSAnJztcclxuICBwcmVzZXRGaWx0ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzZWFyY2hUZXh0UHJlc2V0VGFibGUgPSAnJztcclxuICBhZGRGaWx0ZXJDb2x1bW5JbnB1dCA9ICcnO1xyXG4gIHNlYXJjaEluRHJvcGRvd24gPSAnJztcclxuICBwcml2YXRlIHNlY3JldEtleSA9ICd0Yi1zdXBlci1hZG1pbidcclxuICBhZGRGaWx0ZXJEcm9wZG93blNlYXJjaCA9ICcnXHJcbiAgdG9wU2hvd0hpZGVDb2x1bW5zID0gJyc7XHJcbiAgY2hvc2VDb2x1bW5zU2VhcmNoID0gJydcclxuICBzaWRlTmVzdGVkRmlsdGVyU2VhcmNoID0gJydcclxuICBlZGl0aW5Ecm9wZG93blNlYXJjaCA9ICcnO1xyXG4gIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIGNvbmZpcm1EZWxldGUgPSBmYWxzZTtcclxuICBmb250RmFtaWxpZXM6IHN0cmluZ1tdID0gW1xyXG4gICAgLy8gQ29tbW9uIEV4Y2VsIGZvbnRzXHJcbiAgICAnQXJpYWwnLFxyXG4gICAgJ0FyaWFsIEJsYWNrJyxcclxuICAgICdCYWhuc2NocmlmdCcsXHJcbiAgICAnQ2FsaWJyaScsXHJcbiAgICAnQ2FtYnJpYScsXHJcbiAgICAnQ2FtYnJpYSBNYXRoJyxcclxuICAgICdtYXRoJyxcclxuICAgICdDYW5kYXJhJyxcclxuICAgICdDb21pYyBTYW5zIE1TJyxcclxuICAgICdDb25zb2xhcycsXHJcbiAgICAnQ29uc3RhbnRpYScsXHJcbiAgICAnQ29yYmVsJyxcclxuICAgICdDb3VyaWVyIE5ldycsXHJcbiAgICAnRWJyaW1hJyxcclxuICAgICdGcmFua2xpbiBHb3RoaWMgTWVkaXVtJyxcclxuICAgICdHYWJyaW9sYScsXHJcbiAgICAnR2FkdWdpJyxcclxuICAgICdHZW9yZ2lhJyxcclxuICAgICdJbXBhY3QnLFxyXG4gICAgJ0luayBGcmVlJyxcclxuICAgICdKYXZhbmVzZSBUZXh0JyxcclxuICAgICdMZWVsYXdhZGVlIFVJJyxcclxuICAgICdMdWNpZGEgQ29uc29sZScsXHJcbiAgICAnTHVjaWRhIFNhbnMgVW5pY29kZScsXHJcbiAgICAnTWFsZ3VuIEdvdGhpYycsXHJcbiAgICAnTWljcm9zb2Z0IEhpbWFsYXlhJyxcclxuICAgICdNaWNyb3NvZnQgSmhlbmdIZWknLFxyXG4gICAgJ01pY3Jvc29mdCBOZXcgVGFpIEx1ZScsXHJcbiAgICAnTWljcm9zb2Z0IFBoYWdzUGEnLFxyXG4gICAgJ01pY3Jvc29mdCBTYW5zIFNlcmlmJyxcclxuICAgICdNaWNyb3NvZnQgVGFpIExlJyxcclxuICAgICdNaWNyb3NvZnQgWWFIZWknLFxyXG4gICAgJ01pY3Jvc29mdCBZaSBCYWl0aScsXHJcbiAgICAnTW9uZ29saWFuIEJhaXRpJyxcclxuICAgICdNUyBHb3RoaWMnLFxyXG4gICAgJ01TIFBHb3RoaWMnLFxyXG4gICAgJ01TIFVJIEdvdGhpYycsXHJcbiAgICAnTVYgQm9saScsXHJcbiAgICAnTmlybWFsYSBVSScsXHJcbiAgICAnUGFsYXRpbm8gTGlub3R5cGUnLFxyXG4gICAgJ1NlZ29lIFByaW50JyxcclxuICAgICdTZWdvZSBTY3JpcHQnLFxyXG4gICAgJ1NlZ29lIFVJJyxcclxuICAgICdTZWdvZSBVSSBIaXN0b3JpYycsXHJcbiAgICAnU2Vnb2UgVUkgRW1vamknLFxyXG4gICAgJ1NlZ29lIFVJIFN5bWJvbCcsXHJcbiAgICAnU2ltU3VuJyxcclxuICAgICdTaXRrYSBTbWFsbCcsXHJcbiAgICAnU3lsZmFlbicsXHJcbiAgICAnU3ltYm9sJyxcclxuICAgICdUYWhvbWEnLFxyXG4gICAgJ1RpbWVzIE5ldyBSb21hbicsXHJcbiAgICAnVHJlYnVjaGV0IE1TJyxcclxuICAgICdWZXJkYW5hJyxcclxuICAgICdXZWJkaW5ncycsXHJcbiAgICAnV2luZ2RpbmdzJyxcclxuICAgICdZdSBHb3RoaWMnLFxyXG4gICAgJ3NhbnMtc2VyaWYnLFxyXG4gICAgJ3NlcmlmJyxcclxuICAgICdtb25vc3BhY2UnLFxyXG4gICAgJ0ludGVyJ1xyXG4gIF07XHJcblxyXG4gIGZvbnRTaXplczogc3RyaW5nW10gPSBbXHJcbiAgICAnOCcsICc5JywgJzEwJywgJzExJywgJzEyJywgJzE0JywgJzE2JywgJzE4JywgJzIwJywgJzI0JywgJzI4JywgJzMyJ1xyXG4gIF07XHJcblxyXG4gIGhhc1Njcm9sbCA9IGZhbHNlO1xyXG5cclxuXHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY29sdW1uU2VydmljZTogU3BsaXRDb2x1bW5zU2VydmljZSxcclxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGNvbW1vblNldmljZTogQ29tbW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIGNvcHlTZXJ2aWNlOiBDb3B5U2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsXHJcbiAgICBwcml2YXRlIGZvcm1hdEN1cnJlbmN5OiBGb3JtYXRDdXJyZW5jeVBpcGUsXHJcblxyXG4gICkgeyB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NlbGxUZXh0JywgeyBzdGF0aWM6IGZhbHNlIH0pIGNlbGxUZXh0ITogYW55O1xyXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZEhlYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBuZXN0ZWRIZWFkZXIhOiBFbGVtZW50UmVmO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMubmdab25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcclxuICAgICAgYXdhaXQgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgIHRoaXMuY29tcHV0ZVZpZXdwb3J0Um93cygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY2VsbFRleHQpIHtcclxuICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmNlbGxUZXh0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVuZGVyQ3VzdG9tQ2VsbHMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xyXG5cclxuICBjcmVhdGVDZWxsSW5qZWN0b3Iocm93OiBhbnksIGNvbDogYW55KTogSW5qZWN0b3Ige1xyXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogJ3Jvd0RhdGEnLCB1c2VWYWx1ZTogcm93IH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiAnY29sRGF0YScsIHVzZVZhbHVlOiBjb2wgfVxyXG4gICAgICBdLFxyXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3JcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgcmVuZGVyQ3VzdG9tQ2VsbHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBob3N0cyA9IHRoaXMuY2VsbEhvc3RzLnRvQXJyYXkoKTtcclxuICAgIGxldCBob3N0SW5kZXggPSAwO1xyXG5cclxuICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMudmlzaWJsZVJvd3MpIHtcclxuICAgICAgZm9yIChjb25zdCBjb2wgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgY29uc3QgaG9zdCA9IGhvc3RzW2hvc3RJbmRleCsrXTtcclxuICAgICAgICBpZiAoIWhvc3QgfHwgIWNvbC5jZWxsUmVuZGVyZXIpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBjb25zdCB2aWV3Q29udGFpbmVyID0gaG9zdC52aWV3Q29udGFpbmVyUmVmO1xyXG4gICAgICAgIHZpZXdDb250YWluZXIuY2xlYXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgY29tcFJlZiA9IHZpZXdDb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbC5jZWxsUmVuZGVyZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICByb3csXHJcbiAgICAgICAgICBjb2wsXHJcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCksXHJcbiAgICAgICAgICBhcGk6IHRoaXMsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaWYgKChjb21wUmVmLmluc3RhbmNlIGFzIGFueSkuZ3JpZEluaXQpIHtcclxuICAgICAgICAgIChjb21wUmVmLmluc3RhbmNlIGFzIGFueSkuZ3JpZEluaXQocGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYWRkU3R5bGVzVG9JbWFnZXMoKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIC8vICBpZiAodGhpcy50YWJzPy5sZW5ndGgpIHtcclxuICAgIC8vICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYnNbMF07XHJcbiAgICAvLyB9XHJcbiAgICAvLyB0aGlzLmF1dG9zaXplQWxsQ29sdW1ucygpO1xyXG4gICAgaWYgKCF0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkge1xyXG4gICAgICB0aGlzLmF1dG9zaXplQWxsQ29sdW1ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvbnN0IHVzZXIgPSB0aGlzLmdldERlY3J5cHQoJ3VzZXInKTtcclxuICAgIC8vIHRoaXMuY3VycmVuY3lGb3JtYXQgPSB1c2VyPy5jdXJyZW5jeV9mb3JtYXQ7XHJcbiAgICAvLyB0aGlzLmN1cnJlbmN5U3ltYm9sID0gdXNlcj8uY3VycmVuY3lfc3ltYm9sO1xyXG4gICAgLy8gdGhpcy5kYXRlRm9ybWF0ID0gdXNlcj8uZGF0ZV9mb3JtYXQ7XHJcbiAgICBpZiAoIXRoaXMuZGF0ZUZvcm1hdCkge1xyXG4gICAgICBjb25zdCBzdG9yZWREYXRlRm9ybWF0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGVmb3JtYXQnKTtcclxuICAgICAgaWYoc3RvcmVkRGF0ZUZvcm1hdCl7XHJcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0ID0gc3RvcmVkRGF0ZUZvcm1hdCA/IEpTT04ucGFyc2Uoc3RvcmVkRGF0ZUZvcm1hdCkgOiAnZGQvTU0veXl5eSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuY3VycmVuY3lGb3JtYXQpIHtcclxuICAgICAgY29uc3Qgc3RvcmVkQ3VycmVuY3lGb3JtYXQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVuY3lGb3JtYXQnKTtcclxuICAgICAgaWYoc3RvcmVkQ3VycmVuY3lGb3JtYXQpe1xyXG4gICAgICAgIHRoaXMuY3VycmVuY3lGb3JtYXQgPSBzdG9yZWRDdXJyZW5jeUZvcm1hdCA/IEpTT04ucGFyc2Uoc3RvcmVkQ3VycmVuY3lGb3JtYXQpIDogJzEsMjM0LDU2Ny44OSc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMuY3VycmVuY3lTeW1ib2wpIHtcclxuICAgICAgY29uc3Qgc3RvcmVkQ3VycmVuY3lTeW1ib2wgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVuY3lTeW1ib2wnKTtcclxuICAgICAgaWYgKHN0b3JlZEN1cnJlbmN5U3ltYm9sKXtcclxuICAgICAgICB0aGlzLmN1cnJlbmN5U3ltYm9sID0gc3RvcmVkQ3VycmVuY3lTeW1ib2wgPyBKU09OLnBhcnNlKHN0b3JlZEN1cnJlbmN5U3ltYm9sKSA6ICckJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgZ2V0RGVjcnlwdChrZXk6c3RyaW5nKXtcclxuICAvLyAgICAgY29uc3QgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpXHJcbiAgLy8gICAgIHRyeSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIEpTT04ucGFyc2UoQ3J5cHRvSlMuQUVTLmRlY3J5cHQodmFsdWUgYXMgc3RyaW5nLCB0aGlzLnNlY3JldEtleSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpKVxyXG4gIC8vICAgICB9IGNhdGNoIChlKSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIG51bGw7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH1cclxuXHJcbiAgZGF0YVNldExvYWRpbmcgPSBmYWxzZTtcclxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2V0Q29sdW1uc0NvbHVtbkRyb3Bkb3duVmFsdXMoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3RhYnMnXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1sndGFicyddKSB7XHJcbiAgICAgICAgY29uc3QgYWxsVGFicyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2FjdGl2ZVRhYnMnKSB8fCAne30nKTtcclxuICAgICAgICBjb25zdCBzYXZlZFRhYiA9IGFsbFRhYnNbdGhpcy50YWJsZVR5cGVdO1xyXG4gICAgICAgIGlmKHRoaXMudGFicy5pbmNsdWRlcygnQ3VycmVudCBQb2xpY3knKSl7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHRoaXMudGFicz8uWzFdIHx8ICdDdXJyZW50IFBvbGljeSc7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2ZVRhYiA9IHNhdmVkVGFiIHx8IHRoaXMudGFicz8uWzBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gaWYgKHRoaXMudGFibGVUeXBlKSB7XHJcbiAgICAgICAgLy8gICB0aGlzLnNldEFjdGl2ZVRhYih0aGlzLmFjdGl2ZVRhYik7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVyc0NvbmZpZyddKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbHVtbnMnXT8uY3VycmVudFZhbHVlPy5sZW5ndGgpIHtcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJvcHRpb25MaXN0KCk7XHJcblxyXG4gICAgICB0aGlzLm9yaWdpbmFsQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoY29sID0+ICh7XHJcbiAgICAgICAgLi4uY29sLFxyXG4gICAgICAgIHF1ZXJ5OiBjb2wucXVlcnkgPyB7IC4uLmNvbC5xdWVyeSB9IDogbnVsbCxcclxuICAgICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXHJcbiAgICAgICAgICA6IFtdLFxyXG4gICAgICB9KSk7XHJcblxyXG5cclxuICAgICAgaWYgKHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICAgIHRoaXMuc2V0U2VjdGlvbnNXaWR0aCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snZGF0YVNldCddKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNldCA9IHRoaXMuZGF0YVNldD8ubWFwKChyb3csIGkpID0+ICh7XHJcbiAgICAgICAgLi4ucm93LFxyXG4gICAgICAgIF9fdmlydHVhbEluZGV4OiBpICsgMSxcclxuICAgICAgfSkpO1xyXG4gICAgICB0aGlzLm9yaWdpbmFsRGF0YVNldCA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTZXQpO1xyXG4gICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb21wdXRlVmlld3BvcnRSb3dzKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcclxuXHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmNlbnRlclBpbm5lZEhlYWRlcj8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgIHZvaWQgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICAgICAgdGhpcy5kYXRhU2V0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keT8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9XHJcbiAgICAgICAgICAgICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kYXRhU2V0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sIDUwMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XHJcbiAgICAgICAgdGhpcy5kYXRhU2V0ID0gYXdhaXQgdGhpcy5ncm91cERhdGFBc3luYyh0aGlzLm9yaWdpbmFsRGF0YVNldCwgZmllbGRzKTtcclxuXHJcbiAgICAgICAgdGhpcy5uZ1pvbmUub25TdGFibGUucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBCb3hQYWRkaW5nID0gdGhpcy5jb2x1bW5zR3JvdXBlZEJveD8ubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzWydjaGVja2JveFN0YXRlJ10/LmN1cnJlbnRWYWx1ZT8ucmVzZXQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuY2xlYXIoKTtcclxuICAgICAgdGhpcy5jbGVhclNlbGVjdGlvblN0YXRlKHRoaXMudGFibGVUeXBlKTtcclxuXHJcbiAgICAgIGNvbnN0IGlkcyA9IEFycmF5LmZyb20odGhpcy5zZWxlY3RlZFJvd3MpO1xyXG4gICAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgICAgIG9iajogaWRzLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXZlbnRUeXBlOiAnb25TZWxlY3RSb3cnLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2hhbmdlc1snY2xvc2VEcm9wZG93biddICYmIHRoaXMuY2xvc2VEcm9wZG93bi5wcmVzZXQuY2xvc2VkKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gbnVsbDtcclxuICAgICAgdGhpcy5wcmVzZXRGaWx0ZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy5wcmVzZXROYW1lID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaWYgKGNoYW5nZXNbJ29kZFJvd3NCYWNrZ3JvdW5kQ29sb3InXSkge1xyXG4gICAgLy8gICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gISF0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3Jlc2V0QWxsRmlsdGVycyddICYmIHRoaXMucmVzZXRBbGxGaWx0ZXJzLnJlc2V0QWxsKSB7XHJcbiAgICAgIHRoaXMuY2xlYXJBbGxGaWx0ZXJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ3RhYmxlVmlldyddKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZpZXdWYWx1ZSA9IHRoaXMudGFibGVWaWV3O1xyXG4gICAgICAgIGxldCB0ZW1wcm9yeVNlbGVjdGVkID0gQXJyYXkuaXNBcnJheSh2aWV3VmFsdWUpXHJcbiAgICAgICAgICA/IHZpZXdWYWx1ZS5maW5kKGl0ZW0gPT4gaXRlbS5pc190ZW1wKVxyXG4gICAgICAgICAgOiBudWxsO1xyXG5cclxuICAgICAgICBpZiAoIXRlbXByb3J5U2VsZWN0ZWQpIHtcclxuICAgICAgICAgIHRlbXByb3J5U2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHZpZXdWYWx1ZSlcclxuICAgICAgICAgICAgPyB2aWV3VmFsdWUuZmluZChpdGVtID0+IGl0ZW0uaXNfZGVmYXVsdClcclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUgPSB0ZW1wcm9yeVNlbGVjdGVkIHx8IG51bGw7XHJcbiAgICAgICAgdGhpcy5wcmVzZXROYW1lID0gdGVtcHJvcnlTZWxlY3RlZD8ubmFtZSB8fCAnJztcclxuICAgICAgICB0aGlzLnByZXNldEZpbHRlciA9IHRlbXByb3J5U2VsZWN0ZWQ/LmFjdGl2ZUZpbHRlcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlKSB7XHJcbiAgICAgICAgICB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcucm93U2hhZGluZ0VuYWJsZWQ7XHJcbiAgICAgICAgICB0aGlzLnNob3dWZXJ0aWNhbEJvcmRlciA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLnNob3dWZXJ0aWNhbEJvcmRlcjtcclxuICAgICAgICAgIHRoaXMuZm9udEZhaW1seSA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmZvbnRGYWltbHk7XHJcbiAgICAgICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5oZWFkZXJUZXh0Rm9udHNTaXplO1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gdGVtcHJvcnlTZWxlY3RlZC5jb25maWcuc2VsZWN0ZWRUYWJsZUxheW91dDtcclxuICAgICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSB0ZW1wcm9yeVNlbGVjdGVkLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZTtcclxuICAgICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9IHRlbXByb3J5U2VsZWN0ZWQuY29uZmlnLmdsb2JhbFNlYXJjaDtcclxuICAgICAgICAgIHRoaXMuc2V0VGFibGVMYXlvdXQodGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0KTtcclxuICAgICAgICAgIHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvciA9IHRlbXByb3J5U2VsZWN0ZWQ/LmNvbmZpZz8ub2RkUm93c0JhY2tncm91bmRDb2xvciB8fCAnI2YxZjFmMSc7XHJcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmZvbnRGYWltbHkgPSAnSW50ZXInO1xyXG4gICAgICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSAnbWVkaXVtJztcclxuICAgICAgICAgIHRoaXMuYm9keVRleHRGb250c1NpemUgPSAxNDtcclxuICAgICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoVGV4dCA9ICcnO1xyXG4gICAgICAgICAgdGhpcy5hdXRvc2l6ZUFsbENvbHVtbnMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBhc3luYyBzZXRDb2x1bW5zQ29sdW1uRHJvcGRvd25WYWx1cygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5jb2x1bW5zKSByZXR1cm47XHJcbiAgICAvLyBKdXN0IHJlbW92ZWQgdGVtcG9yYXJ5IGZvciBzdXBlciBhZG1pbiB3aWxsIHNldCBpdCBhZ2FpblxyXG4gICAgaWYodGhpcy5jb2x1bW5zPy5sZW5ndGgpe1xyXG4gICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM/LmZpbHRlcihjID0+IGM/LmZpZWxkPy50cmltKCkgIT09ICdpc19kZWxldGVkJylcclxuICAgIH1cclxuICAgIHRoaXMuY29sdW1ucyA9IGF3YWl0IHRoaXMuY29tbW9uU2V2aWNlLmNvcHlEcm9wZG93bkRhdGFSZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgYXBwbHlSb3dzU2VsZWN0aW9uU3RhdGUoKSB7XHJcbiAgICBjb25zdCBzZWxlY3RlZElkc0Zyb21TdGF0ZSA9IHRoaXMucmVzdG9yZVNlbGVjdGlvbih0aGlzLnRhYmxlVHlwZSk7XHJcbiAgICBpZiAoc2VsZWN0ZWRJZHNGcm9tU3RhdGUuc2l6ZSA+IDApIHtcclxuICAgICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcbiAgICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICAgICAgb2JqOiBpZHNcclxuICAgICAgICB9LFxyXG4gICAgICAgIGV2ZW50VHlwZTogXCJvblNlbGVjdFJvd1wiLFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xlYXJTZWxlY3Rpb25TdGF0ZSh0YWJsZVR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3Qgc3RvcmVkID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGF0YXRhYmxlU2VsZWN0aW9ucycpIHx8ICd7XCJzZWxlY3RlZFJvd3NcIjoge319Jyk7XHJcbiAgICBpZiAoc3RvcmVkLnNlbGVjdGVkUm93cyAmJiBzdG9yZWQuc2VsZWN0ZWRSb3dzW3RhYmxlVHlwZV0pIHtcclxuICAgICAgZGVsZXRlIHN0b3JlZC5zZWxlY3RlZFJvd3NbdGFibGVUeXBlXTtcclxuICAgIH1cclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxyXG4gICAgICAnZGF0YXRhYmxlU2VsZWN0aW9ucycsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KHN0b3JlZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIGFwcGx5RmlsdGVyb3B0aW9uTGlzdCgpIHtcclxuICAgIGNvbnN0IHVwZGF0ZWRDb2x1bW5zID0gYXdhaXQgdGhpcy5jb21tb25TZXZpY2UuYXBwbHlGaWx0ZXJzVG9Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIHRoaXMuY29sdW1ucyA9IFsuLi51cGRhdGVkQ29sdW1uc107XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGxlZnRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG4gIGNlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcmlnaHRQaW5uZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld0NlbnRlckNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgcHJldmlld1JpZ2h0UGlubmVkQ29sdW1uczogYW55W10gPSBbXTtcclxuXHJcbiAgLy8gTWFpbiBDb250YWluZXIgVGVtcGxhdGUgUmVmZXJlbmNlc1xyXG4gIEBWaWV3Q2hpbGQoJ2RhdGFHcmlkQ29udGFpbmVyJylcclxuICBkYXRhR3JpZENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ3Rhc2tNYW5hZ2VtZW50Q29udGFpbmVyJylcclxuICB0YXNrTWFuYWdlbWVudENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ25lc3RlZFRhYmxlQ29udGFpbmVyJylcclxuICBuZXN0ZWRUYWJsZUNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBCb2R5IFRlbXBsYXRlIFJlZmVyZW5jZXNcclxuICBAVmlld0NoaWxkKCdsZWZ0UGlubmVkQm9keScpXHJcbiAgbGVmdFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdjZW50ZXJQaW5uZWRCb2R5JylcclxuICBjZW50ZXJQaW5uZWRCb2R5ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRCb2R5JylcclxuICByaWdodFBpbm5lZEJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgLy8gSGVhZGVycyBUZW1wbGF0ZSBSZWZlcmVuY2VzXHJcbiAgQFZpZXdDaGlsZCgnbGVmdFBpbm5lZEhlYWRlcicpXHJcbiAgbGVmdFBpbm5lZEhlYWRlciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIEBWaWV3Q2hpbGQoJ2NlbnRlclBpbm5lZEhlYWRlcicpXHJcbiAgY2VudGVyUGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgncmlnaHRQaW5uZWRIZWFkZXInKVxyXG4gIHJpZ2h0UGlubmVkSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbHVtbnNHcm91cGVkQm94JylcclxuICBjb2x1bW5zR3JvdXBlZEJveCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAvLyBDZW50ZXIgRmFrZSBzY3JvbGxiYXJkXHJcbiAgQFZpZXdDaGlsZCgnY2VudGVyRmFrZVNjcm9sbGJhcicpXHJcbiAgY2VudGVyRmFrZVNjcm9sbGJhciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG4gIGFzeW5jIHVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3Vwcyhjb2x1bW5zOiBhbnkgPSBudWxsKSB7XHJcbiAgICBpZiAoIXRoaXMuZGF0YUdyaWRDb250YWluZXIpIHJldHVybjtcclxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XHJcbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XHJcbiAgICAvLyBXcmFwIGluIGEgcHJvbWlzZSBzbyB3ZSBjYW4gYXdhaXRcclxuICAgIGNvbnN0IHsgbGVmdCwgY2VudGVyLCByaWdodCB9OiBhbnkgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgY29uc3QgcHJlcGFyZWQgPSB0aGlzLmNvbHVtblNlcnZpY2UucHJlcGFyZUNvbHVtbnMoXHJcbiAgICAgICAgY29sdW1ucyA/IGNvbHVtbnMgOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICAgKTtcclxuICAgICAgcmVzb2x2ZShwcmVwYXJlZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gbGVmdDtcclxuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucmlnaHRQaW5uZWRDb2x1bW5zID0gcmlnaHQ7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyID0+IHNldFRpbWVvdXQociwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVmcmVzaFByZXZpZXdDb2x1bW5zKGNvbHVtbnM6IGFueSA9IG51bGwpIHtcclxuICAgIGlmICghdGhpcy5kYXRhR3JpZENvbnRhaW5lcikgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIC8vIFdyYXAgcHJlcGFyZUNvbHVtbnMgaW4gYSBQcm9taXNlIHRvIG1ha2UgaXQgYXdhaXRhYmxlXHJcbiAgICBjb25zdCB7IGxlZnQsIGNlbnRlciwgcmlnaHQgfTogYW55ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgIGNvbnN0IHByZXBhcmVkID0gdGhpcy5jb2x1bW5TZXJ2aWNlLnByZXBhcmVDb2x1bW5zKFxyXG4gICAgICAgIGNvbHVtbnMgPyBjb2x1bW5zIDogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGNvbnRhaW5lcldpZHRoXHJcbiAgICAgICk7XHJcbiAgICAgIHJlc29sdmUocHJlcGFyZWQpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5wcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMgPSBsZWZ0O1xyXG4gICAgdGhpcy5wcmV2aWV3Q2VudGVyQ29sdW1ucyA9IGNlbnRlcjtcclxuICAgIHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyA9IHJpZ2h0O1xyXG4gICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDEwKSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgU2V0Q29sdW1uc0RlZmF1bHRXaWR0aCgpIHtcclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gdGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IHZpc2libGVDb3VudCA9IHZpc2libGVDb2x1bW5zLmxlbmd0aDtcclxuXHJcbiAgICBpZiAodmlzaWJsZUNvdW50ID09PSAwKSByZXR1cm47XHJcblxyXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cclxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcclxuICAgIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIC8vIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICAvLyBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIC8vIGlmICh0aGlzLnNob3dTZXJpYWxOdW1iZXIpIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgLy8gaWYgKHRoaXMuc2hvd1NpZGVNZW51KSBjb250YWluZXJXaWR0aCAtPSAyOTtcclxuICAgIC8vIGlmICh0aGlzLmdyaWRUeXBlID09ICdBc3NldHMnIHx8IHRoaXMuZ3JpZFR5cGUgPT0gJ1Rhc2tzJykgY29udGFpbmVyV2lkdGggLT0gMzA7XHJcbiAgICAvLyBjb250YWluZXJXaWR0aCAtPSA1O1xyXG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5jb2x1bW5TZXJ2aWNlLmFzc2lnbkRlZmF1bHRXaWR0aHMoXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgY29udGFpbmVyV2lkdGhcclxuICAgICk7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNldFNlY3Rpb25zV2lkdGgoKSB7XHJcbiAgICBjb25zdCBsZWZ0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxlZnQtcGlubmVkLWJvZHknKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGNlbnRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICcuY2VudGVyLXNjcm9sbGFibGUtYm9keSdcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5yaWdodC1waW5uZWQtYm9keScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKGxlZnQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMubGVmdFBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAoY2VudGVyKSB7XHJcbiAgICAgIGxlZnQuc3R5bGUubWluV2lkdGggPSBgJHt0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRofWA7XHJcbiAgICB9XHJcbiAgICBpZiAocmlnaHQpIHtcclxuICAgICAgbGVmdC5zdHlsZS5taW5XaWR0aCA9IGAke3RoaXMucmlnaHRQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aH1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gb25DZW50ZXJCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQ7XHJcblxyXG4gIC8vICAgLy8gU3luYyB2ZXJ0aWNhbCBzY3JvbGwgd2l0aCBsZWZ0ICYgcmlnaHQgcGlubmVkIGJvZGllc1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG5cclxuICAvLyAgIC8vIFN5bmMgaG9yaXpvbnRhbCBzY3JvbGwgd2l0aCBjZW50ZXIgaGVhZGVyXHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSBzY3JvbGxMZWZ0O1xyXG4gIC8vICAgdGhpcy5jZW50ZXJGYWtlU2Nyb2xsYmFyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQ7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBvbkxlZnRCb2R5U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMuY2VudGVyUGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vIH1cclxuICAvLyBvblJpZ2h0Qm9keVNjcm9sbCgpOiB2b2lkIHtcclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMucmlnaHRQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5jZW50ZXJQaW5uZWRCb2R5Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xyXG4gIC8vICAgdGhpcy5sZWZ0UGlubmVkQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAvLyB9XHJcblxyXG4gIGZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gMDtcclxuICAvLyBvbkZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgLy8gICB0aGlzLmZha2VTY3JvbGxiYXJTY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgLy8gICB0aGlzLmNlbnRlclBpbm5lZEhlYWRlci5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG4gIGdldE5lc3RlZFZhbHVlKG9iajogYW55LCBmaWVsZDogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiBmaWVsZD8uc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgcGFydCkgPT4gYWNjICYmIGFjY1twYXJ0XSwgb2JqKTtcclxuICB9XHJcblxyXG4gIGlzTmVzdGVkVmFsdWVBcnJheShvYmo6IGFueSwgZmllbGQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFvYmogfHwgIWZpZWxkKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGZpZWxkXHJcbiAgICAgIC5zcGxpdCgnLicpXHJcbiAgICAgIC5yZWR1Y2UoKGFjYywgcGFydCkgPT4gKGFjYyAmJiBhY2NbcGFydF0gIT09IHVuZGVmaW5lZCA/IGFjY1twYXJ0XSA6IHVuZGVmaW5lZCksIG9iaik7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBvblJlc2l6ZUdyb3VwKGV2ZW50OiBNb3VzZUV2ZW50LCBjb2w6IGFueSwgaXNSaWdodFBpbm5lZD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSBjb2wuY2hpbGRyZW4gfHwgW107XHJcbiAgICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNoaWxkV2lkdGhzOiB7IGZpZWxkOiBzdHJpbmc7IHdpZHRoOiBudW1iZXIgfVtdID0gY2hpbGRyZW4ubWFwKFxyXG4gICAgICAoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgIGBbZmllbGQ9XCIke2NoaWxkLmZpZWxkfVwiXWBcclxuICAgICAgICApIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBmaWVsZDogY2hpbGQuZmllbGQsXHJcbiAgICAgICAgICB3aWR0aDogZWw/Lm9mZnNldFdpZHRoIHx8IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCB0b3RhbEluaXRpYWxXaWR0aCA9IGNoaWxkV2lkdGhzLnJlZHVjZShcclxuICAgICAgKHN1bSwgY29sKSA9PiBzdW0gKyBjb2wud2lkdGgsXHJcbiAgICAgIDBcclxuICAgICk7XHJcblxyXG4gICAgY29uc3Qgb25Nb3VzZU1vdmUgPSAobW92ZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGxldCBkZWx0YVggPSBtb3ZlRXZlbnQuY2xpZW50WCAtIHN0YXJ0WDtcclxuXHJcbiAgICAgIGlmIChpc1JpZ2h0UGlubmVkKSB7XHJcbiAgICAgICAgZGVsdGFYID0gLWRlbHRhWDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJldmVudCBzaHJpbmtpbmcgdG9vIHNtYWxsXHJcbiAgICAgIGlmICh0b3RhbEluaXRpYWxXaWR0aCArIGRlbHRhWCA8IGNoaWxkcmVuLmxlbmd0aCAqIDgwKSByZXR1cm47XHJcblxyXG4gICAgICBsZXQgdG90YWxOZXdXaWR0aCA9IDA7XHJcblxyXG4gICAgICBjaGlsZFdpZHRocy5mb3JFYWNoKChjaGlsZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gY2hpbGQud2lkdGggLyB0b3RhbEluaXRpYWxXaWR0aDtcclxuICAgICAgICBjb25zdCBuZXdXaWR0aCA9IE1hdGgubWF4KGNoaWxkLndpZHRoICsgZGVsdGFYICogcmF0aW8sIDgwKTtcclxuICAgICAgICB0b3RhbE5ld1dpZHRoICs9IG5ld1dpZHRoO1xyXG5cclxuICAgICAgICBjb25zdCBjaGlsZEVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWZpZWxkPVwiJHtjaGlsZC5maWVsZH1cIl1gKTtcclxuICAgICAgICBjaGlsZEVscy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZWxIdG1sID0gZWwgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICBlbEh0bWwuc3R5bGUubWluV2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgICBlbEh0bWwuc3R5bGUud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY2hpbGQuZmllbGQsIG5ld1dpZHRoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyDinIUgVXBkYXRlIGdyb3VwIGhlYWRlciB3aWR0aCBpbiBET01cclxuICAgICAgY29uc3QgZ3JvdXBIZWFkZXJFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgYFtncm91cD1cIiR7Y29sLmhlYWRlcn1cIl1gXHJcbiAgICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmIChncm91cEhlYWRlckVsKSB7XHJcbiAgICAgICAgZ3JvdXBIZWFkZXJFbC5zdHlsZS53aWR0aCA9IGAke3RvdGFsTmV3V2lkdGh9cHhgO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uTW91c2VVcCA9ICgpID0+IHtcclxuICAgICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcclxuICAgICAgICB0aGlzLnNhdmVQcmVzZXQoJ21vdXNlVXAnKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoZmllbGQ6IHN0cmluZywgd2lkdGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgdXBkYXRlID0gKGNvbHVtbnM6IGFueVtdKSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHVwZGF0ZShjb2wuY2hpbGRyZW4pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xyXG4gICAgICAgICAgY29sLndpZHRoID0gd2lkdGg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHVwZGF0ZSh0aGlzLmNvbHVtbnMpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgIGNsZWFuQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgICAgcmV0dXJuIGNvbHVtbnMubWFwKChjb2wpID0+IHtcclxuICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgICBfX3R5cGVuYW1lLFxyXG4gICAgICAgICAgX2lkLFxyXG4gICAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLFxyXG4gICAgICAgICAgZmlsdGVyVmFsdWUsXHJcbiAgICAgICAgICBleHBhbmRlZEZpbHRlcixcclxuICAgICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgICAgaXNSb3dHcm91cGVkLFxyXG4gICAgICAgICAgLi4ucmVzdFxyXG4gICAgICAgIH0gPSBjb2w7XHJcblxyXG4gICAgICAgIC8vIENsZWFuIGRyb3Bkb3duIHZhbHVlcyAoX190eXBlbmFtZSByZW1vdmVkKVxyXG4gICAgICAgIGNvbnN0IGNsZWFuZWREcm9wZG93biA9IEFycmF5LmlzQXJyYXkoY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKVxyXG4gICAgICAgICAgPyBjb2x1bW5fZHJvcGRvd25fdmFsdWUubWFwKCh7IF9fdHlwZW5hbWUsIC4uLmRSZXN0IH0pID0+IGRSZXN0KVxyXG4gICAgICAgICAgOiBjb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgPyAoKHsgX190eXBlbmFtZSwgLi4uZFJlc3QgfSkgPT4gZFJlc3QpKGNvbHVtbl9kcm9wZG93bl92YWx1ZSlcclxuICAgICAgICAgICAgOiBudWxsO1xyXG5cclxuICAgICAgICAvLyBDbGVhbiBxdWVyeSAoX190eXBlbmFtZSByZW1vdmVkKVxyXG4gICAgICAgIGNvbnN0IGNsZWFuZWRRdWVyeSA9IEFycmF5LmlzQXJyYXkocXVlcnkpXHJcbiAgICAgICAgICA/IHF1ZXJ5Lm1hcCgoeyBfX3R5cGVuYW1lLCAuLi5xUmVzdCB9KSA9PiBxUmVzdClcclxuICAgICAgICAgIDogcXVlcnlcclxuICAgICAgICAgICAgPyAoKHsgX190eXBlbmFtZSwgX2lkcywgLi4ucVJlc3QgfSkgPT4gcVJlc3QpKHF1ZXJ5KVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5yZXN0LFxyXG4gICAgICAgICAgY29sdW1uX2Ryb3Bkb3duX3ZhbHVlOiBjbGVhbmVkRHJvcGRvd24sXHJcbiAgICAgICAgICBxdWVyeTogY2xlYW5lZFF1ZXJ5LFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICBvblJlc2l6ZUNvbHVtbihldmVudDogTW91c2VFdmVudCwgY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBjb25zdCBzdGFydFggPSBldmVudC5jbGllbnRYO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldEVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgYFtmaWVsZD1cIiR7Y29sLmZpZWxkfVwiXWBcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBpbml0aWFsV2lkdGggPSB0YXJnZXRFbD8ub2Zmc2V0V2lkdGggfHwgMTUwO1xyXG5cclxuICAgIGNvbnN0IG1hdGNoaW5nRWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtZmllbGQ9XCIke2NvbC5maWVsZH1cIl1gKTtcclxuXHJcbiAgICAvLyDwn5GJIEFkZCBoaWdobGlnaHQgd2hpbGUgcmVzaXppbmdcclxuICAgIGlmIChjb2w/LnBpbm5lZCA9PSAncmlnaHQnKSB7XHJcbiAgICAgIG1hdGNoaW5nRWxzLmZvckVhY2goKGVsOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgKGVsIGFzIEhUTUxFbGVtZW50KS5jbGFzc0xpc3QuYWRkKCdyZXNpemluZy1oaWdobGlnaHQtcmlnaHQnKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBtYXRjaGluZ0Vscy5mb3JFYWNoKChlbDogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmFkZCgncmVzaXppbmctaGlnaGxpZ2h0Jyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9uTW91c2VNb3ZlID0gKG1vdmVFdmVudDogTW91c2VFdmVudCkgPT4ge1xyXG4gICAgICBsZXQgZGVsdGFYID0gbW92ZUV2ZW50LmNsaWVudFggLSBzdGFydFg7XHJcblxyXG4gICAgICAvLyDwn5GJIFJldmVyc2UgaWYgdGhlIGNvbHVtbiBpcyBwaW5uZWQgdG8gdGhlIHJpZ2h0XHJcbiAgICAgIGlmIChjb2wucGlubmVkID09PSAncmlnaHQnKSB7XHJcbiAgICAgICAgZGVsdGFYID0gLWRlbHRhWDtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IG5ld1dpZHRoID0gaW5pdGlhbFdpZHRoICsgZGVsdGFYO1xyXG4gICAgICBpZiAobmV3V2lkdGggPCA4MCkgcmV0dXJuO1xyXG5cclxuICAgICAgbWF0Y2hpbmdFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZWwgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS5taW5XaWR0aCA9IGAke25ld1dpZHRofXB4YDtcclxuICAgICAgICBlbGVtZW50LnN0eWxlLndpZHRoID0gYCR7bmV3V2lkdGh9cHhgO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhJblNvdXJjZUJ5RmllbGQoY29sLmZpZWxkLCBuZXdXaWR0aCk7XHJcbiAgICAgIGNvbC53aWR0aCA9IG5ld1dpZHRoO1xyXG4gICAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlVXAgPSAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgICAgbWF0Y2hpbmdFbHMuZm9yRWFjaCgoZWw6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdC5yZW1vdmUoJ3Jlc2l6aW5nLWhpZ2hsaWdodCcpO1xyXG4gICAgICAgIChlbCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LnJlbW92ZSgncmVzaXppbmctaGlnaGxpZ2h0LXJpZ2h0Jyk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBvblJlc2l6ZUdyb3VwQm94KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgY29uc3Qgc3RhcnRYID0gZXZlbnQuY2xpZW50WDtcclxuXHJcbiAgICBjb25zdCB0YXJnZXRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdncm91cEJveEhlYWRlckRpdicpO1xyXG4gICAgY29uc3QgaW5pdGlhbFdpZHRoID0gdGFyZ2V0RWw/Lm9mZnNldFdpZHRoIHx8IDE1MDtcclxuXHJcbiAgICBjb25zdCBvbk1vdXNlTW92ZSA9IChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgICAgY29uc3QgZGVsdGFYID0gbW92ZUV2ZW50LmNsaWVudFggLSBzdGFydFg7XHJcblxyXG4gICAgICBsZXQgbmV3V2lkdGggPSBpbml0aWFsV2lkdGggKyBkZWx0YVg7XHJcbiAgICAgIGlmIChuZXdXaWR0aCA8IDEwMCkgbmV3V2lkdGggPSAxMDA7XHJcblxyXG4gICAgICBpZiAodGFyZ2V0RWwpIHtcclxuICAgICAgICB0YXJnZXRFbC5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcclxuICAgICAgICB0YXJnZXRFbC5zdHlsZS5taW5XaWR0aCA9IGAke25ld1dpZHRofXB4YDtcclxuICAgICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IG5ld1dpZHRoO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uTW91c2VVcCA9ICgpID0+IHtcclxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcclxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xyXG4gIH1cclxuXHJcbiAgb25QYXN0ZUluRmlsdGVyUm93U2VhcmNoKGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgY29sOiBhbnkpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLm9uRmlsdGVyQ2hhbmdlKGNvbCk7XHJcbiAgICAgIHRoaXMuYXBwbHlEcm9wZG93bkZpbHRlcigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkZpbHRlckNoYW5nZShjb2w6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgZmlsdGVyVmFsdWUgPSBjb2wuZmlsdGVyVmFsdWU/LnRvTG93ZXJDYXNlKCkgfHwgJyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyID0gY29sO1xyXG4gICAgaWYgKCFjb2w/LnF1ZXJ5KSB7XHJcbiAgICAgIGNvbC5xdWVyeSA9IHtcclxuICAgICAgICBmaXJzdF9jb25kaXRpb246IGNvbC50eXBlID09ICdkYXRlJyA/ICdlcXVhbCcgOiAnY29udGFpbicsXHJcbiAgICAgICAgZmlyc3RfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogbnVsbCxcclxuICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgY29uZGl0aW9uOiBudWxsXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbC5xdWVyeS5maXJzdF92YWx1ZSA9IGZpbHRlclZhbHVlO1xyXG4gICAgdGhpcy5maXJzdFZhbHVlID0gZmlsdGVyVmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgQm9keSBIZWlnaHRcclxuICBnZXQgYm9keVdyYXBwZXJIZWlnaHQoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHJvd3MgPSB0aGlzLnNob3dDb2x1bW5zR3JvdXBpbmcgJiYgdGhpcy5zaG93RmlsdGVyUm93ID8gMyA6ICh0aGlzLnNob3dDb2x1bW5zR3JvdXBpbmcgfHwgdGhpcy5zaG93RmlsdGVyUm93ID8gMiA6IDEpO1xyXG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5oZWFkZXJSb3dIZWlnaHQgKiByb3dzICsgKHRoaXMuaGFzU2Nyb2xsID8gMTcgOiAwKTtcclxuICAgIHJldHVybiBgY2FsYygxMDAlIC0gJHtvZmZzZXR9cHgpYDtcclxuICB9XHJcblxyXG4gIC8vIFJvdyBIb3ZlciBMb2dpYyBIZXJlXHJcbiAgaG92ZXJlZFJvd0lkOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBvblJvd0hvdmVyKHJvdzogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmhvdmVyZWRSb3dJZCA9IHJvdy5faWQgfHwgcm93LmlkO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dMZWF2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaG92ZXJlZFJvd0lkID0gbnVsbDtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICBvbkRvY3VtZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMuaXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLm9wZW5JbmRleCA9IG51bGw7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmhhc1BhcmVudFdpdGhDbGFzcyh0YXJnZXQsIFtcclxuICAgICAgICAndGhyZWUtZG90cycsXHJcbiAgICAgICAgJ2ZpbHRlci1pY29uLXdyYXBwZXInLFxyXG4gICAgICAgICdjb2x1bW4tbWVudScsXHJcbiAgICAgICAgJ2ZpbHRlci1tZW51JyxcclxuICAgICAgXSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5zaG93QWN0aW9uc0Ryb3BEb3duID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpbnNpZGVUb3BGaWx0ZXJSb3cgPSB0YXJnZXQuY2xvc2VzdCgnLmZpbHRlci10YWdzJykgfHwgdGFyZ2V0LmNsb3Nlc3QoJy5hZGQtZmlsdGVyLWJ1dHRvbi1tZW51JykgfHxcclxuICAgICAgdGFyZ2V0LmNsb3Nlc3QoJy50YWJsZS1yaWdodC10b3AtYWN0aW9ucycpIHx8IHRhcmdldC5jbG9zZXN0KCcudGFibGUtbGF5b3V0JykgfHwgdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItcm93LWZpbHRlci13cmFwcGVyJyk7XHJcbiAgICBjb25zdCBpc0NsaWNrZWRJbnNpZGVUaHJlZURvdHNGaWx0ZXIgPSB0YXJnZXQuY2xvc2VzdCgnLnRocmVlLWRvdHMtZmlsdGVyJykgfHwgdGFyZ2V0LmNsb3Nlc3QoJy5maWx0ZXItbWVudS1jb250YWluZXInKTtcclxuICAgIGlmICghaXNDbGlja2VkSW5zaWRlVGhyZWVEb3RzRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuY2xvc2VUaHJlZURvdHNNZW51RmlsdGVyKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWluc2lkZVRvcEZpbHRlclJvdykge1xyXG4gICAgICB0aGlzLmNsb3NlRmlsdGVyRHJvcGRvd25zKGV2ZW50KTtcclxuICAgIH1cclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5zZXQtZGVmYXVsdC1wcmVzZXQnKSkge1xyXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2V0LWRlZmF1bHQtcHJlc2V0Jyk/LmNsYXNzTGlzdD8ucmVtb3ZlKCdzaG93Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCF0YXJnZXQuY2xvc2VzdCgnLmZ1bGwtdGV4dC1ib3gnKSAmJiAhdGFyZ2V0LmNsb3Nlc3QoJy5kYXRhLWdyaWQtaGVhZGVyLXdyYXBwZXInKSkge1xyXG4gICAgICB0aGlzLmNvbGxhcHNlQWxsRXhwYW5kZWRDZWxscygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGFyZ2V0LmNsb3Nlc3QoJy5kYXRhLWdyaWQtdGFibGUtd3JhcHBlcicpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuYWN0aXZlQ2VsbCA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGNsb3NlVGhyZWVEb3RzTWVudUZpbHRlcigpIHtcclxuICAgIHRoaXMuaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2xvc2VGaWx0ZXJEcm9wZG93bnMoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhc1BhcmVudFdpdGhDbGFzcyhcclxuICAgIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxyXG4gICAgY2xhc3NMaXN0OiBzdHJpbmdbXVxyXG4gICk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGVsOiBIVE1MRWxlbWVudCB8IG51bGwgPSBlbGVtZW50O1xyXG5cclxuICAgIHdoaWxlIChlbCAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZWwuY2xhc3NMaXN0ICYmXHJcbiAgICAgICAgY2xhc3NMaXN0LnNvbWUoKGNsYXNzTmFtZSkgPT4gZWwhLmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBlbCA9IGVsLnBhcmVudEVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaXNNZW51ZUhpZGRlbiA9IGZhbHNlO1xyXG4gIG9wZW5UaHJlZURvdHNNZW51KGV2ZW50OiBNb3VzZUV2ZW50LCBjaGlsZDogYW55LCBrZWVwT3JpZ2luYWxQb3NpdGlvbiA9IGZhbHNlKSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLmlzTWVudWVIaWRkZW4gPSB0cnVlO1xyXG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aDtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gY2hpbGQ7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gICAgY29uc3QgeCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb2x1bW4tbWVudScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgIGlmICh4ID4gKGNvbnRhaW5lcldpZHRoIC8gMikpIHtcclxuICAgICAgICAgIGVsZW1lbnQuc3R5bGUubGVmdCA9IGAke3ggLSAyNDB9cHhgO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBlbGVtZW50IS5zdHlsZS5sZWZ0ID0gYCR7eH1weGA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNNZW51ZUhpZGRlbiA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyBDb2x1bW4gVGhyZWUgRG90cyBBY3Rpb25zXHJcbiAgLy8gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cclxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIHNvcnRBc2MoY29sOiBhbnkpIHtcclxuICAgIGlmICghY29sLmlzX3NvcnRhYmxlKSByZXR1cm47XHJcbiAgICBjb2whLm9yZGVyX2J5ID0gJ2FzYyc7XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb3JkZXI6ICdhc2MnLFxyXG4gICAgICBjb2x1bW46IGNvbFxyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zb3J0aW5nT3JkZXJPcHRpb25zLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgc29ydERlc2MoY29sOiBhbnkpIHtcclxuICAgIGlmICghY29sLmlzX3NvcnRhYmxlKSByZXR1cm47XHJcbiAgICBjb2whLm9yZGVyX2J5ID0gJ2Rlc2MnO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIG9yZGVyOiAnZGVzYycsXHJcbiAgICAgIGNvbHVtbjogY29sXHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnNvcnRpbmdPcmRlck9wdGlvbnMuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICByZXNldFNvcnQoY29sOiBhbnkpIHtcclxuICAgIHRoaXMuc29ydGluZ0NvbmZpZyA9IHsgZmllbGQ6ICcnLCBvcmRlcl9ieTogJycgfTtcclxuICAgIGNvbnN0IGV2ZW50ID0geyBmaWVsZDogbnVsbCwgb3JkZXJfYnk6IG51bGwgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zb3J0aW5nT3JkZXJPcHRpb25zLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIHVwZGF0ZUNvbHVtblBpbkluU291cmNlQnlGaWVsZChcclxuICAgIGNvbHVtbjogYW55LFxyXG4gICAgcGlubmVkOiAnbGVmdCcgfCAncmlnaHQnIHwgbnVsbCxcclxuICAgIGlzTmVzdGVkVGFibGU6IGFueSA9IGZhbHNlLFxyXG4gICAgY29sdW1ucz86IGFueVxyXG4gICkge1xyXG4gICAgZGVidWdnZXJcclxuICAgIGlmIChpc05lc3RlZFRhYmxlKSB7XHJcbiAgICAgIHRoaXMucGluVW5waW5Db2x1bShjb2x1bW4sIHBpbm5lZCwgY29sdW1ucyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHVwZGF0ZSA9IChjb2x1bW5zOiBhbnlbXSkgPT4ge1xyXG4gICAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XHJcbiAgICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICB1cGRhdGUoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgICAgICBjb2wucGlubmVkID0gcGlubmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuICAgIHVwZGF0ZSh0aGlzLmNvbHVtbnMpO1xyXG4gICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRWaXNpYmxlTGVhZkNvbHVtbnMgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XHJcbiAgICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLmlzX3Zpc2libGUpIHtcclxuICAgICAgICByZXN1bHQucHVzaChjb2x1bW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH07XHJcblxyXG4gIGF1dG9zaXplQ29sdW1uKGNvbHM6IGFueSB8IGFueVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcblxyXG4gICAgLy8gTm9ybWFsaXplIGlucHV0IHRvIGFuIGFycmF5XHJcbiAgICBjb25zdCBjb2x1bW5zVG9SZXNpemUgPSBBcnJheS5pc0FycmF5KGNvbHMpID8gY29scyA6IFtjb2xzXTtcclxuXHJcbiAgICAvLyBIZWxwZXI6IEZsYXR0ZW4gYWxsIHZpc2libGUgbGVhZiBjb2x1bW5zXHJcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IHRoaXMuZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ291bnQgPSB2aXNpYmxlQ29sdW1ucy5sZW5ndGg7XHJcblxyXG4gICAgaWYgKHZpc2libGVDb3VudCA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgIGxldCBjb250YWluZXJXaWR0aCA9XHJcbiAgICAgIHRoaXMuZGF0YUdyaWRDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoID8/IDA7XHJcbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PSAnQXNzZXRzJyB8fCB0aGlzLmdyaWRUeXBlID09ICdUYXNrcycpIGNvbnRhaW5lcldpZHRoIC09IDMwO1xyXG4gICAgY29udGFpbmVyV2lkdGggLT0gNTU7XHJcbiAgICBjb25zdCBlcXVhbFdpZHRoID0gTWF0aC5mbG9vcihjb250YWluZXJXaWR0aCAvIHZpc2libGVDb3VudCk7XHJcblxyXG4gICAgLy8gUmVzaXplIGVhY2ggcGFzc2VkIGNvbHVtblxyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1uc1RvUmVzaXplKSB7XHJcbiAgICAgIGlmIChjb2wgJiYgY29sLmZpZWxkKSB7XHJcbiAgICAgICAgY29sLndpZHRoID0gZXF1YWxXaWR0aDtcclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgZXF1YWxXaWR0aCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0R3JvdXBXaWR0aChncm91cDogYW55KTogbnVtYmVyIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGdyb3VwPy5jaGlsZHJlblxyXG4gICAgICAgID8uZmlsdGVyKChjb2w6IGFueSkgPT4gY29sPy5pc192aXNpYmxlKVxyXG4gICAgICAgID8ucmVkdWNlKChhY2M6IG51bWJlciwgY29sOiBhbnkpID0+IGFjYyArIChjb2w/LndpZHRoIHx8IDApLCAwKSB8fCAwXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgYXV0b3NpemVBbGxDb2x1bW5zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0IGdldFZpc2libGVMZWFmQ29sdW1ucyA9IChjb2x1bW5zOiBhbnlbXSk6IGFueVtdID0+IHtcclxuICAgICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uaXNfdmlzaWJsZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbHVtbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGdldFZpc2libGVMZWFmQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgY29uc3QgdmlzaWJsZUNvdW50ID0gdmlzaWJsZUNvbHVtbnMubGVuZ3RoO1xyXG5cclxuICAgIGlmICh2aXNpYmxlQ291bnQgPT09IDApIHJldHVybjtcclxuXHJcbiAgICBsZXQgY29udGFpbmVyV2lkdGggPVxyXG4gICAgICB0aGlzLmRhdGFHcmlkQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5vZmZzZXRXaWR0aCA/PyAwO1xyXG4gICAgaWYgKHRoaXMuc2hvd1NlcmlhbE51bWJlcikgY29udGFpbmVyV2lkdGggLT0gNTU7XHJcbiAgICBpZiAodGhpcy5zaG93U2lkZU1lbnUpIGNvbnRhaW5lcldpZHRoIC09IDI5O1xyXG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT0gJ0Fzc2V0cycgfHwgdGhpcy5ncmlkVHlwZSA9PSAnVGFza3MnKSBjb250YWluZXJXaWR0aCAtPSAzMDtcclxuICAgIGNvbnRhaW5lcldpZHRoIC09IDU1O1xyXG4gICAgY29uc3QgZXF1YWxXaWR0aCA9IE1hdGgubWF4KE1hdGguZmxvb3IoY29udGFpbmVyV2lkdGggLyB2aXNpYmxlQ291bnQpLCAxNTApO1xyXG5cclxuICAgIC8vIFVwZGF0ZSB3aWR0aHMgZm9yIGFsbCB2aXNpYmxlIGNvbHVtbnNcclxuICAgIHZpc2libGVDb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xyXG4gICAgICBjb2wud2lkdGggPSBlcXVhbFdpZHRoO1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoSW5Tb3VyY2VCeUZpZWxkKGNvbC5maWVsZCwgZXF1YWxXaWR0aCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFya0NvbHVtbkFzR3JvdXBlZChjb2x1bW5zOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xyXG4gICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkge1xyXG4gICAgICAgIGNvbC5pc1Jvd0dyb3VwZWQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLm1hcmtDb2x1bW5Bc0dyb3VwZWQoY29sLmNoaWxkcmVuLCBmaWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdyb3VwQnkoY29sOiBhbnkpIHtcclxuICAgIHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVkgPSAwO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gICAgaWYgKCFjb2wpIHJldHVybjtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBpZiAoY29sPy5pc19ncm91cGFibGUpIHtcclxuICAgICAgdGhpcy5ncm91cGVkQ29sdW1ucy5wdXNoKGNvbCk7XHJcbiAgICAgIHRoaXMubWFya0NvbHVtbkFzR3JvdXBlZCh0aGlzLmNvbHVtbnMsIGNvbC5maWVsZCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmdyb3VwZWRDb2x1bW5zLm1hcCgoaXRlbSkgPT4gaXRlbS5maWVsZCk7XHJcbiAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlRmxhdHRlbmVkRGF0YSgpO1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKDApO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5ncm91cEJveFBhZGRpbmcgPSB0aGlzLmNvbHVtbnNHcm91cGVkQm94Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIH0sIDEwKTtcclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBncm91cERhdGFBc3luYyhkYXRhOiBhbnlbXSwgZ3JvdXBGaWVsZHM6IHN0cmluZ1tdKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdyb3VwRGF0YShkYXRhLCBncm91cEZpZWxkcyk7XHJcbiAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgY2hvb3NlQ29sdW1ucygpIHtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuICAgIHRoaXMuc2hvd0NvbHVtblBhbmVsID0gdHJ1ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1ucygpIHtcclxuICAgIHRoaXMuYWN0aXZlQ29sID0gbnVsbDtcclxuXHJcbiAgICAvLyB0aGlzLmNvbHVtbnMgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5vcmlnaW5hbENvbHVtbnMpO1xyXG4gICAgLy8gRGVlcCBjb3B5IG5lc3RlZCBvYmplY3RzIGJ1dCBrZWVwIGNsYXNzIHJlZnMgc2FmZVxyXG4gICAgdGhpcy5vcmlnaW5hbENvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKGNvbCA9PiAoe1xyXG4gICAgICAuLi5jb2wsXHJcbiAgICAgIC8vIERlZXAgY29weSBuZXN0ZWQgb2JqZWN0cyBidXQga2VlcCBjbGFzcyByZWZzIHNhZmVcclxuICAgICAgcXVlcnk6IGNvbC5xdWVyeSA/IHsgLi4uY29sLnF1ZXJ5IH0gOiBudWxsLFxyXG4gICAgICBjb2x1bW5fZHJvcGRvd25fdmFsdWU6IGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICA/IFsuLi5jb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXVxyXG4gICAgICAgIDogW10sXHJcbiAgICB9KSk7XHJcblxyXG4gICAgdGhpcy5TZXRDb2x1bW5zRGVmYXVsdFdpZHRoKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGNsZWFyRmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICBjb2wuZmlyc3RWYWx1ZSA9ICcnO1xyXG4gICAgY29sLnNlY29uZFZhbHVlID0gJyc7XHJcbiAgICBjb2wuZmlyc3RDb25kaXRpb24gPSAnY29udGFpbic7XHJcbiAgICBjb2wuc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcclxuICAgIGNvbC5sb2dpYyA9ICdBTkQnO1xyXG4gICAgY29sLnNlbGVjdEFsbCA9IGZhbHNlO1xyXG4gICAgY29sLnNlbGVjdGVkT3B0aW9ucyA9IHt9O1xyXG4gICAgY29sLnNlYXJjaFZhbHVlID0gJyc7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGFwcGx5RmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICB0aGlzLmZpbHRlckNvbHVtbnNMaXN0LnB1c2goY29sKTtcclxuICB9XHJcblxyXG4gIC8vIFJvd3MgU2VsZWN0aW9uIExvZ2ljIEdvZXMgSGVyZVxyXG5cclxuICBzZWxlY3RlZFJvd3M6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xyXG5cclxuICAvKipcclxuICAgKiBHZXQgbm9ybWFsaXplZCBJRCBmcm9tIHJvdy5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFJvd0lkKHJvdzogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiByb3cuaWQgPz8gcm93Ll9pZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvZ2dsZSBhIHNpbmdsZSByb3cgc2VsZWN0aW9uLlxyXG4gICAqL1xyXG4gIHRvZ2dsZVJvd1NlbGVjdGlvbihyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgaWQgPSB0aGlzLmdldFJvd0lkKHJvdyk7XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKGlkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmFkZChpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGVkUm93cyk7XHJcblxyXG4gICAgdGhpcy5zYXZlU2VsZWN0aW9uKGlkcywgdGhpcy50YWJsZVR5cGUpO1xyXG5cclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgb2JqOiBpZHNcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiBcIm9uU2VsZWN0Um93XCIsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHRvZ2dsZVNlbGVjdEFsbChkYXRhOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmdldEFsbExlYWZSb3dzKGRhdGEpO1xyXG4gICAgY29uc3QgYWxsSWRzID0gbGVhZlJvd3MubWFwKHIgPT4gdGhpcy5nZXRSb3dJZChyKSk7XHJcblxyXG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBhbGxJZHMuZXZlcnkoaWQgPT4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKGlkKSk7XHJcblxyXG4gICAgaWYgKGFsbFNlbGVjdGVkKSB7XHJcbiAgICAgIGFsbElkcy5mb3JFYWNoKGlkID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmRlbGV0ZShpZCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYWxsSWRzLmZvckVhY2goaWQgPT4gdGhpcy5zZWxlY3RlZFJvd3MuYWRkKGlkKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgb2JqOiBpZHNcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiBcIm9uU2VsZWN0Um93XCIsXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMuc2F2ZVNlbGVjdGlvbihpZHMsIHRoaXMudGFibGVUeXBlKTtcclxuICB9XHJcblxyXG4gIGlzUm93U2VsZWN0ZWQocm93OiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkUm93cy5oYXModGhpcy5nZXRSb3dJZChyb3cpKTtcclxuICB9XHJcblxyXG4gIGlzQWxsU2VsZWN0ZWQoZGF0YTogYW55W10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5nZXRBbGxMZWFmUm93cyhkYXRhKTtcclxuICAgIHJldHVybiBsZWFmUm93cy5sZW5ndGggPiAwICYmIGxlYWZSb3dzLmV2ZXJ5KHIgPT4gdGhpcy5zZWxlY3RlZFJvd3MuaGFzKHRoaXMuZ2V0Um93SWQocikpKTtcclxuICB9XHJcblxyXG5cclxuICBpc0luZGV0ZXJtaW5hdGVTdGF0ZShkYXRhOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgbGVhZlJvd3MgPSB0aGlzLmdldEFsbExlYWZSb3dzKGRhdGEpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRDb3VudCA9IGxlYWZSb3dzLmZpbHRlcihyID0+IHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyh0aGlzLmdldFJvd0lkKHIpKSkubGVuZ3RoO1xyXG5cclxuICAgIHJldHVybiBzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50IDwgbGVhZlJvd3MubGVuZ3RoO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEFsbExlYWZSb3dzKGRhdGE6IGFueVtdKTogYW55W10ge1xyXG4gICAgY29uc3QgbGVhZjogYW55W10gPSBbXTtcclxuXHJcbiAgICBjb25zdCB0cmF2ZXJzZSA9IChub2RlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKCFub2RlKSByZXR1cm47XHJcblxyXG4gICAgICBpZiAobm9kZS5pc0dyb3VwKSB7XHJcbiAgICAgICAgbm9kZS5jaGlsZHJlbj8uZm9yRWFjaCh0cmF2ZXJzZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGVhZi5wdXNoKG5vZGUpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGRhdGEuZm9yRWFjaCh0cmF2ZXJzZSk7XHJcbiAgICByZXR1cm4gbGVhZjtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIC8vIFNpZGUgTWVudSBXb3JraW5nIEdvZXMgSGVyZVxyXG4gIHRvZ2dsZVNpZGVNZW51KGNsaWNrZWRPbjogJ2NvbHMnIHwgJ2ZpbHRycycpIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gY2xpY2tlZE9uKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9IGNsaWNrZWRPbjtcclxuICAgICAgdGhpcy5zaWRlTWVudVZpc2libGUgPSAhdGhpcy5zaWRlTWVudVZpc2libGU7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLnNpZGVNZW51VmlzaWJsZSAmJlxyXG4gICAgICBjbGlja2VkT24gIT0gdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5jdXJyZW50T3BlbmVkU2lkZU1lbnVlID0gY2xpY2tlZE9uO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPSBjbGlja2VkT247XHJcbiAgICAgIHRoaXMuc2lkZU1lbnVWaXNpYmxlID0gIXRoaXMuc2lkZU1lbnVWaXNpYmxlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5oYXNTY3JvbGwgPSB0aGlzLmhhc0hvcml6b250YWxTY3JvbGxiYXIoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUdyb3VwVmlzaWJpbGl0eShjb2w6IGFueSkge1xyXG4gICAgY29uc3QgYWxsVmlzaWJsZSA9IGNvbC5jaGlsZHJlbi5ldmVyeSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQuaXNfdmlzaWJsZSk7XHJcbiAgICBjb2wuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gKGNoaWxkLmlzX3Zpc2libGUgPSAhYWxsVmlzaWJsZSkpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICB0aGlzLlNldENvbHVtbnNEZWZhdWx0V2lkdGgoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgaXNDb2x1bW5WaXNpYmxlKGNvbHVtbnM6IGFueSkge1xyXG4gICAgaWYgKGNvbHVtbnM/LmNoaWxkcmVuKSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW5zLmNoaWxkcmVuLmV2ZXJ5KChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQuaXNfdmlzaWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbHVtbnM/LmlzX3Zpc2libGU7XHJcbiAgfVxyXG5cclxuICBhbGxDb2x1bW5zU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBmbGF0dGVuID0gdGhpcy5mbGF0dGVuQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gICAgcmV0dXJuIGZsYXR0ZW4uZXZlcnkoKGNvbCkgPT4gY29sLmlzX3Zpc2libGUpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgZmluZENvbHVtbkJ5RmllbGQoZmllbGQ6IHN0cmluZywgY29sczogYW55W10pOiBhbnkgfCBudWxsIHtcclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcclxuICAgICAgaWYgKGNvbC5maWVsZCA9PT0gZmllbGQpIHtcclxuICAgICAgICByZXR1cm4gY29sO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgY29uc3QgZm91bmQgPSB0aGlzLmZpbmRDb2x1bW5CeUZpZWxkKGZpZWxkLCBjb2wuY2hpbGRyZW4pO1xyXG4gICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgYXN5bmMgdG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2x1bW46IGFueSwgaXNWaXNpYmxlOiBib29sZWFuKSB7XHJcbiAgICBpZiAoaXNWaXNpYmxlKSB7XHJcbiAgICAgIGlmICh0aGlzLnZpc2libGVDb2x1bW5zKCk/Lmxlbmd0aCA8PSAyICYmIGNvbHVtbi5pc192aXNpYmxlIHx8IChjb2x1bW4/LmlzX2Fsd2F5c192aXNpYmxlKSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgY29sID0gdGhpcy5maW5kQ29sdW1uQnlGaWVsZChjb2x1bW4uZmllbGQsIHRoaXMuY29sdW1ucyk7XHJcbiAgICBpZiAoY29sKSB7XHJcbiAgICAgIGNvbC5pc192aXNpYmxlID0gaXNWaXNpYmxlO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIGlmICh0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSB7XHJcbiAgICAgIHRoaXMuc2F2ZVByZXNldCgnbW91c2VVcCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIHRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gIHRoaXMubG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZmxhdHRlbiA9IHRoaXMuZmxhdHRlbkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBmbGF0dGVuLmZpbHRlcihjb2wgPT4gY29sLmlzX3Zpc2libGUpO1xyXG4gICAgICBpZiAodmlzaWJsZUNvbHVtbnMubGVuZ3RoIDw9IDIpIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IG5vbkFsd2F5c1Zpc2libGUgPSBmbGF0dGVuLmZpbHRlcihjb2wgPT4gIWNvbC5pc19hbHdheXNfdmlzaWJsZSk7XHJcbiAgICAgIGNvbnN0IGFsbE5vbkFsd2F5c1Zpc2libGVBcmVWaXNpYmxlID0gbm9uQWx3YXlzVmlzaWJsZS5ldmVyeShjb2wgPT4gY29sLmlzX3Zpc2libGUpO1xyXG4gICAgICBpZiAoYWxsTm9uQWx3YXlzVmlzaWJsZUFyZVZpc2libGUpIHtcclxuICAgICAgICBmbGF0dGVuLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICAgIGNvbC5pc192aXNpYmxlID0gY29sLmlzX2Fsd2F5c192aXNpYmxlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZsYXR0ZW4uZm9yRWFjaChjb2wgPT4gKGNvbC5pc192aXNpYmxlID0gdHJ1ZSkpO1xyXG4gICAgICB9XHJcbiAgICAgIGF3YWl0IHRoaXMud2FpdCgxMCk7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIGF3YWl0IHRoaXMud2FpdCgxMCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgYXdhaXQgdGhpcy53YWl0KDEwMCk7XHJcbiAgICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcblxyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHdhaXQobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB2aXNpYmxlQ29sdW1ucygpIHtcclxuICAgIGNvbnN0IGZsYXR0ZW4gPSB0aGlzLmZsYXR0ZW5Db2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IGZsYXR0ZW4uZmlsdGVyKChjOiBhbnkpID0+IGMuaXNfdmlzaWJsZSk7XHJcbiAgICByZXR1cm4gdmlzaWJsZUNvbHVtbnM7XHJcbiAgfVxyXG5cclxuICBmbGF0dGVuQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIHJldHVybiBjb2xzLnJlZHVjZSgoYWNjOiBhbnlbXSwgY29sOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGNvbD8uY2hpbGRyZW4gJiYgY29sLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIHJlY3Vyc2l2ZWx5IGZsYXR0ZW4gY2hpbGRyZW5cclxuICAgICAgICByZXR1cm4gYWNjLmNvbmNhdCh0aGlzLmZsYXR0ZW5Db2x1bW5zKGNvbC5jaGlsZHJlbikpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGxlYWYgY29sdW1uXHJcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQoY29sKTtcclxuICAgICAgfVxyXG4gICAgfSwgW10pO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbHRlcmVkQ29sdW1ucyhjb2xzOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGNvbnN0IHNlYXJjaCA9IHRoaXMuY29sdW1uU2VhcmNoLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gY29sc1xyXG4gICAgICAubWFwKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZENoaWxkcmVuID0gdGhpcy5maWx0ZXJlZENvbHVtbnMoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgY29sLmhlYWRlci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkgfHxcclxuICAgICAgICAgICAgZmlsdGVyZWRDaGlsZHJlbi5sZW5ndGhcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4geyAuLi5jb2wsIGNoaWxkcmVuOiBmaWx0ZXJlZENoaWxkcmVuIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIGNvbC5oZWFkZXIudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpID8gY29sIDogbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XHJcbiAgfVxyXG5cclxuICBnZXQgYWNjb3JkaW9uU3RhdGUoKTogJ2FsbCcgfCAnbm9uZScgfCAnc29tZScge1xyXG4gICAgY29uc3QgZ3JvdXBzID0gdGhpcy5nZXRBbGxHcm91cENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZCkubGVuZ3RoO1xyXG5cclxuICAgIGlmIChleHBhbmRlZENvdW50ID09PSAwKSByZXR1cm4gJ25vbmUnO1xyXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcclxuICAgIHJldHVybiAnc29tZSc7XHJcbiAgfVxyXG5cclxuICBnZXQgZmlsdGVyQWNjb3JkaW9uU3RhdGUoKTogJ2FsbCcgfCAnbm9uZScgfCAnc29tZScge1xyXG4gICAgY29uc3QgZ3JvdXBzID0gdGhpcy5nZXRBbGxHcm91cENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGV4cGFuZGVkQ291bnQgPSBncm91cHMuZmlsdGVyKChjb2wpID0+IGNvbC5leHBhbmRlZEZpbHRlcikubGVuZ3RoO1xyXG5cclxuICAgIGlmIChleHBhbmRlZENvdW50ID09PSAwKSByZXR1cm4gJ25vbmUnO1xyXG4gICAgaWYgKGV4cGFuZGVkQ291bnQgPT09IGdyb3Vwcy5sZW5ndGgpIHJldHVybiAnYWxsJztcclxuICAgIHJldHVybiAnc29tZSc7XHJcbiAgfVxyXG5cclxuICAvLyBSZWN1cnNpdmVseSBjb2xsZWN0IGFsbCBncm91cCBjb2x1bW5zXHJcbiAgcHJpdmF0ZSBnZXRBbGxHcm91cENvbHVtbnMoY29sczogYW55W10pOiBhbnlbXSB7XHJcbiAgICBsZXQgZ3JvdXBzOiBhbnlbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBjb2wgb2YgY29scykge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBncm91cHMucHVzaChjb2wpO1xyXG4gICAgICAgIGdyb3VwcyA9IGdyb3Vwcy5jb25jYXQodGhpcy5nZXRBbGxHcm91cENvbHVtbnMoY29sLmNoaWxkcmVuKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBncm91cHM7XHJcbiAgfVxyXG5cclxuICAvLyBUb2dnbGUgYmFzZWQgb24gY3VycmVudCBzdGF0ZVxyXG4gIHRvZ2dsZUFsbEFjY29yZGlvbnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0aGlzLmFjY29yZGlvblN0YXRlID09PSAnYWxsJyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIHRoaXMuc2V0QWNjb3JkaW9uU3RhdGUodGhpcy5jb2x1bW5zLCBuZXh0U3RhdGUpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsRmlsdGVyQWNjb3JkaW9ucygpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5leHRTdGF0ZSA9IHRoaXMuZmlsdGVyQWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnID8gZmFsc2UgOiB0cnVlO1xyXG4gICAgdGhpcy5zZXRGaWx0ZXJBY2NvcmRpb25TdGF0ZSh0aGlzLmNvbHVtbnMsIG5leHRTdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEFjY29yZGlvblN0YXRlKGNvbHM6IGFueVtdLCBzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgY29sIG9mIGNvbHMpIHtcclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29sLmV4cGFuZGVkID0gc3RhdGU7XHJcbiAgICAgICAgdGhpcy5zZXRBY2NvcmRpb25TdGF0ZShjb2wuY2hpbGRyZW4sIHN0YXRlKTsgLy8gUmVjdXJzaXZlbHkgaGFuZGxlIG5lc3RlZFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgc2V0RmlsdGVyQWNjb3JkaW9uU3RhdGUoY29sczogYW55W10sIHN0YXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBjb2wgb2YgY29scykge1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICBjb2wuZXhwYW5kZWRGaWx0ZXIgPSBzdGF0ZTtcclxuICAgICAgICB0aGlzLnNldEZpbHRlckFjY29yZGlvblN0YXRlKGNvbC5jaGlsZHJlbiwgc3RhdGUpOyAvLyBSZWN1cnNpdmVseSBoYW5kbGUgbmVzdGVkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xyXG5cclxuICBjbG9zZU1vZGFsQ29sdW1uUGFuZWwoKSB7XHJcbiAgICB0aGlzLnNob3dDb2x1bW5QYW5lbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKVxyXG4gIG9uRXNjYXBlKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5jbG9zZU1vZGFsQ29sdW1uUGFuZWwoKTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIElmICBBbnkgY29sdW1uIGhhdmUgcmlnaHQgcGlubmVkXHJcbiAgZ2V0IGhhc1JpZ2h0UGlubmVkQ29sdW1ucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNSaWdodFBpbm5lZENvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNMZWZ0UGlubmVkQ29sdW1ucygpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRoYXNMZWZ0UGlubmVkQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRhdGFTZXRMZW5ndGgoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0RXhwYW5kZWRSb3dDb3VudCh0aGlzLmRhdGFTZXQpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvblJlc2l6ZShldmVudDogVUlFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZSkgdGhpcy5hdXRvU2l6ZUNvbHVtbnNCeVJhdGlvKCk7XHJcbiAgICBjb25zdCBoID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50Py5jbGllbnRIZWlnaHQgPz8gMDtcclxuICAgIHRoaXMudmlld3BvcnRSb3dzID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKGggLyB0aGlzLnJvd0hlaWdodCkpO1xyXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cyh0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQ/LnNjcm9sbFRvcCk7XHJcbiAgICB0aGlzLmhhc1Njcm9sbCA9IHRoaXMuaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICBhdXRvU2l6ZUNvbHVtbnNCeVJhdGlvKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0IGdldFZpc2libGVMZWFmQ29sdW1ucyA9IChjb2x1bW5zOiBhbnlbXSk6IGFueVtdID0+IHtcclxuICAgICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCguLi5nZXRWaXNpYmxlTGVhZkNvbHVtbnMoY29sdW1uLmNoaWxkcmVuKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChjb2x1bW4uaXNfdmlzaWJsZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbHVtbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gZ2V0VmlzaWJsZUxlYWZDb2x1bW5zKHRoaXMuY29sdW1ucyk7XHJcblxyXG4gICAgaWYgKHZpc2libGVDb2x1bW5zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgbGV0IGNvbnRhaW5lcldpZHRoID1cclxuICAgICAgdGhpcy5kYXRhR3JpZENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0V2lkdGggPz8gMDtcclxuXHJcbiAgICBpZiAodGhpcy5zaG93U2VyaWFsTnVtYmVyKSBjb250YWluZXJXaWR0aCAtPSA1NTtcclxuICAgIGlmICh0aGlzLnNob3dTaWRlTWVudSkgY29udGFpbmVyV2lkdGggLT0gMjk7XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PSAnQXNzZXRzJyB8fCB0aGlzLmdyaWRUeXBlID09ICdUYXNrcycpXHJcbiAgICAgIGNvbnRhaW5lcldpZHRoIC09IDMwO1xyXG4gICAgY29udGFpbmVyV2lkdGggLT0gNTU7XHJcbiAgICBjb25zdCB0b3RhbE9sZFdpZHRoID0gdmlzaWJsZUNvbHVtbnMucmVkdWNlKFxyXG4gICAgICAoc3VtLCBjb2wpID0+IHN1bSArIChjb2wud2lkdGggfHwgMCksXHJcbiAgICAgIDBcclxuICAgICk7XHJcbiAgICBpZiAodG90YWxPbGRXaWR0aCA9PT0gMCkgcmV0dXJuO1xyXG4gICAgdmlzaWJsZUNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJhdGlvID0gY29sLndpZHRoIC8gdG90YWxPbGRXaWR0aDtcclxuICAgICAgY29uc3QgbmV3V2lkdGggPSBNYXRoLm1heChNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoICogcmF0aW8pLCAxMDApO1xyXG4gICAgICBjb2wud2lkdGggPSBuZXdXaWR0aDtcclxuICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aEluU291cmNlQnlGaWVsZChjb2wuZmllbGQsIG5ld1dpZHRoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVmcmVzaEhlYWRlcnMoKTtcclxuICAgIHRoaXMuaGFzU2Nyb2xsID0gdGhpcy5oYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgICBmaWx0ZXJzOiB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKSxcclxuICAgICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuICAgIH0sIDQwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgcmVmcmVzaEhlYWRlcnMoKSB7XHJcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcihhc3luYyAoKSA9PiB7XHJcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCAwKSk7XHJcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIGF3YWl0IHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcblxyXG4gICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhhc0FueVZpc2libGVDb2x1bW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0aGFzVmlzaWJsZUNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldCBoYXNBbnlJblZpc2libGVDb2x1bW4oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZ2V0aGFzSW5WaXNpYmxlQ29sdW1ucyh0aGlzLmNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNvbHVtbnNDb3VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbW1vblNldmljZS5nZXRUb3RhbENvbHVtbnNMZW5ndGgodGhpcy5jb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIHRhYmxlSGVhZGVyQW5kQm9keUhlaWdodCgpIHtcclxuICAgIHJldHVybiBgY2FsYygxMDAlIC0gJHt0aGlzLmZvb3RlclJvd0hlaWdodH0pYDtcclxuICB9XHJcblxyXG4gIGRyYWdnaW5nSW5Hcm91cEFyZWEgPSBmYWxzZTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY2VudGVyU2Nyb2xsJykgY2VudGVyU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgdmlzaWJsZVJvd0NvdW50ID0gMjU7XHJcbiAgc3RhcnRJbmRleCA9IDA7XHJcbiAgdmlzaWJsZVJvd3M6IGFueVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgZmxhdHRlbkdyb3VwZWRSb3dzKFxyXG4gICAgcm93czogYW55W10gPSBbXSxcclxuICAgIGxldmVsID0gMCxcclxuICAgIHJlc3VsdDogYW55W10gPSBbXVxyXG4gICk6IGFueVtdIHtcclxuICAgIGZvciAoY29uc3Qgcm93IG9mIHJvd3MpIHtcclxuICAgICAgcmVzdWx0LnB1c2goeyAuLi5yb3csIF9fZGVwdGg6IGxldmVsIH0pO1xyXG4gICAgICBpZiAocm93LmlzR3JvdXAgJiYgcm93LmlzRXhwYW5kICYmIHJvdy5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3Mocm93LmNoaWxkcmVuLCBsZXZlbCArIDEsIFtdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5hc3NpZ25WaXJ0dWFsSW5kZXhlcyh0aGlzLnZpc2libGVSb3dzKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBhc3NpZ25WaXJ0dWFsSW5kZXhlcyhkYXRhOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGxldCBjdXJyZW50SW5kZXggPSAxO1xyXG4gICAgY29uc3Qgd2FsayA9IChpdGVtczogYW55W10pOiB2b2lkID0+IHtcclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XHJcbiAgICAgICAgaXRlbS5fX3ZpcnR1YWxJbmRleCA9IGN1cnJlbnRJbmRleCsrO1xyXG4gICAgICAgIGlmIChpdGVtPy5pc0dyb3VwKSB7XHJcbiAgICAgICAgICBjb25zdCBncm91cCA9IGl0ZW07XHJcbiAgICAgICAgICBpZiAoZ3JvdXAuaXNFeHBhbmQgJiYgQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgd2Fsayhncm91cC5jaGlsZHJlbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgd2FsayhkYXRhKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKCdUaGlzIGRhdGFzZXQ6ICcsIHRoaXMudmlzaWJsZVJvd3MpXHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XHJcblxyXG5cclxuICB1cGRhdGVWaXNpYmxlUm93cyhzY3JvbGxUb3A6IG51bWJlcikge1xyXG5cclxuICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuZGF0YVNldDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmxhdERhdGEgPSB0aGlzLmZsYXR0ZW5Hcm91cGVkUm93cyh0aGlzLmRhdGFTZXQpO1xyXG5cclxuICAgIGlmICh0aGlzLmRhdGFTZXQ/Lmxlbmd0aCA8PSAxNSkge1xyXG4gICAgICB0aGlzLnZpc2libGVSb3dzID0gZmxhdERhdGE7XHJcbiAgICAgIHRoaXMuZmlyc3RJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMucmVuZGVyU3RhcnQgPSAwO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdGFsID0gZmxhdERhdGEubGVuZ3RoO1xyXG4gICAgY29uc3QgbWF4Rmlyc3QgPSBNYXRoLm1heCgwLCB0b3RhbCAtIHRoaXMudmlld3BvcnRSb3dzKTtcclxuICAgIGNvbnN0IGZpcnN0ID0gTWF0aC5taW4oTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCksIG1heEZpcnN0KTtcclxuICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgZmlyc3QpO1xyXG4gICAgY29uc3QgZW5kID0gTWF0aC5taW4odG90YWwsIGZpcnN0ICsgdGhpcy52aWV3cG9ydFJvd3MpO1xyXG5cclxuICAgIHRoaXMuZmlyc3RJbmRleCA9IGZpcnN0O1xyXG4gICAgdGhpcy5zdGFydEluZGV4ID0gZmlyc3Q7XHJcbiAgICB0aGlzLnJlbmRlclN0YXJ0ID0gc3RhcnQ7XHJcbiAgICB0aGlzLnZpc2libGVSb3dzID0gZmxhdERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgICB0aGlzLmFzc2lnblZpcnR1YWxJbmRleGVzKHRoaXMudmlzaWJsZVJvd3MpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHRyYWNrQnlSZW5kZXJlZEluZGV4ID0gKGk6IG51bWJlciwgX3JvdzogYW55KSA9PiB0aGlzLnJlbmRlclN0YXJ0ICsgaTtcclxuXHJcbiAgcHJpdmF0ZSBpc1N5bmNpbmdGcm9tTWFpbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaXNTeW5jaW5nRnJvbUZha2UgPSBmYWxzZTtcclxuICBwcml2YXRlIG1haW5TY3JvbGxSYWY6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XHJcbiAgICByZXR1cm4gaXRlbS5pZCB8fCBpdGVtLl9pZDtcclxuICB9XHJcblxyXG4gIGZsYXR0ZW5lZERhdGE6IGFueVtdID0gW107XHJcblxyXG4gIHVwZGF0ZUZsYXR0ZW5lZERhdGEoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5mbGF0dGVuZWREYXRhID0gdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3ModGhpcy5kYXRhU2V0KTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgLy8gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIElEc1xyXG4gIHByaXZhdGUgZmFrZVNjcm9sbFJhZjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAvLyBvbk1haW5TY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAvLyAgIGNvbnN0IHNjcm9sbFRvcCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcDtcclxuICAvLyAgICAgaWYgKHRoaXMuZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICB0aGlzLnN0YXJ0SW5kZXggPSAwO1xyXG4gIC8vICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgICAgICByZXR1cm47XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgY29uc3Qgb3ZlcnNjYW4gPSB0aGlzLm92ZXJzY2FuICogMjtcclxuICAvLyAgICAgdGhpcy5zdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgLy8gICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgdGhpcy5zdGFydEluZGV4IC0gb3ZlcnNjYW4pO1xyXG4gIC8vICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbih0aGlzLmZsYXR0ZW5lZERhdGEubGVuZ3RoLCB0aGlzLnN0YXJ0SW5kZXggKyB0aGlzLnZpZXdwb3J0Um93cyArIG92ZXJzY2FuKTtcclxuICAvLyAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuZmxhdHRlbmVkRGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAvLyAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vIH1cclxuICB0cmFuc2xhdGVZID0gMDtcclxuXHJcbiAgbGFzdFNjcm9sbFRvcCA9IDA7XHJcbiAgcGVuZGluZ0FuaW1hdGlvbkZyYW1lOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgb25NYWluU2Nyb2xsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wO1xyXG4gICAgaWYgKE1hdGguYWJzKHNjcm9sbFRvcCAtIHRoaXMubGFzdFNjcm9sbFRvcCkgPCAoMTApKSByZXR1cm47XHJcbiAgICBpZiAodGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMucGVuZGluZ0FuaW1hdGlvbkZyYW1lKTtcclxuICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wZW5kaW5nQW5pbWF0aW9uRnJhbWUgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICBjb25zdCBzY3JvbGxpbmdEb3duID0gc2Nyb2xsVG9wID4gdGhpcy5sYXN0U2Nyb2xsVG9wO1xyXG4gICAgICB0aGlzLmxhc3RTY3JvbGxUb3AgPSBzY3JvbGxUb3A7XHJcblxyXG4gICAgICBjb25zdCBvdmVyc2NhbiA9IDU7XHJcbiAgICAgIGNvbnN0IG5ld1N0YXJ0SW5kZXggPSBNYXRoLmZsb29yKHNjcm9sbFRvcCAvIHRoaXMucm93SGVpZ2h0KTtcclxuICAgICAgY29uc3QgZHluYW1pY092ZXJzY2FuID0gc2Nyb2xsaW5nRG93biA/IG92ZXJzY2FuIDogb3ZlcnNjYW47XHJcblxyXG4gICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIG5ld1N0YXJ0SW5kZXggLSBkeW5hbWljT3ZlcnNjYW4pO1xyXG4gICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbihcclxuICAgICAgICB0aGlzLmZsYXR0ZW5lZERhdGEubGVuZ3RoLFxyXG4gICAgICAgIG5ld1N0YXJ0SW5kZXggKyB0aGlzLnZpZXdwb3J0Um93cyArIGR5bmFtaWNPdmVyc2NhblxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLnRyYW5zbGF0ZVkgPSBzdGFydCAqIHRoaXMucm93SGVpZ2h0O1xyXG4gICAgICBpZiAodGhpcy5zdGFydEluZGV4ICE9PSBzdGFydCB8fCB0aGlzLnZpc2libGVSb3dzLmxlbmd0aCAhPT0gZW5kIC0gc3RhcnQpIHtcclxuICAgICAgICB0aGlzLnN0YXJ0SW5kZXggPSBzdGFydDtcclxuICAgICAgICB0aGlzLnZpc2libGVSb3dzID0gdGhpcy5kYXRhU2V0LnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnBlbmRpbmdBbmltYXRpb25GcmFtZSA9IG51bGw7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvLyBvbk1haW5TY3JvbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLmV4cGFuZGVkQ2VsbHMuY2xlYXIoKTtcclxuICAvLyAgIGlmICh0aGlzLmlzU3luY2luZ0Zyb21GYWtlKSB7XHJcbiAgLy8gICAgIHRoaXMuaXNTeW5jaW5nRnJvbUZha2UgPSBmYWxzZTtcclxuICAvLyAgICAgcmV0dXJuO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wO1xyXG4gIC8vICAgaWYgKE1hdGguYWJzKHNjcm9sbFRvcCAtIHRoaXMubGFzdFNjcm9sbFRvcCkgPCB0aGlzLnJvd0hlaWdodCAvIDIpIHJldHVybjtcclxuICAvLyAgIHRoaXMubGFzdFNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuXHJcbiAgLy8gICBpZiAodGhpcy5mYWtlU2Nyb2xsUmFmKSBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmZha2VTY3JvbGxSYWYpO1xyXG5cclxuICAvLyAgIHRoaXMuZmFrZVNjcm9sbFJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgLy8gICAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgICAgdGhpcy5zdGFydEluZGV4ID0gMDtcclxuICAvLyAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGNvbnN0IGZsYXREYXRhID0gdGhpcy5mbGF0dGVuR3JvdXBlZFJvd3ModGhpcy5kYXRhU2V0KTtcclxuICAvLyAgICAgY29uc3QgdG90YWxSb3dzID0gZmxhdERhdGEubGVuZ3RoO1xyXG4gIC8vICAgICBjb25zdCBuZXdTdGFydEluZGV4ID0gTWF0aC5mbG9vcihzY3JvbGxUb3AgLyB0aGlzLnJvd0hlaWdodCk7XHJcbiAgLy8gICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgbmV3U3RhcnRJbmRleCAtICh0aGlzLm92ZXJzY2FuICogMikpO1xyXG4gIC8vICAgICBjb25zdCBlbmQgPSBNYXRoLm1pbih0b3RhbFJvd3MsIG5ld1N0YXJ0SW5kZXggKyB0aGlzLnZpZXdwb3J0Um93cyArICh0aGlzLm92ZXJzY2FuICogMikpO1xyXG5cclxuICAvLyAgICAgdGhpcy50cmFuc2xhdGVZID0gc3RhcnQgKiB0aGlzLnJvd0hlaWdodDtcclxuICAvLyAgICAgdGhpcy5zdGFydEluZGV4ID0gc3RhcnQ7XHJcbiAgLy8gICAgIHRoaXMudmlzaWJsZVJvd3MgPSBmbGF0RGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAvLyAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuXHJcbiAgZ2V0IGlzU2Nyb2xsYmFyVmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgIGlmICghdGhpcy5tYWluU2Nyb2xsKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50O1xyXG4gICAgcmV0dXJuIGVsLnNjcm9sbEhlaWdodCA+IGVsLmNsaWVudEhlaWdodDtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUV4cGFuZChyb3c6IGFueSkge1xyXG4gICAgaWYgKHJvdy5kZXRhaWxzKSB7XHJcbiAgICAgIHJvdy5pc0RldGFpbHNFeHBhbmQgPSAhcm93LmlzRGV0YWlsc0V4cGFuZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJvdy5pc0V4cGFuZCA9ICFyb3cuaXNFeHBhbmQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAvLyB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIC8vIG9uTWFpbkZha2VTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgLy8gICBpZiAodGhpcy5pc1N5bmNpbmdGcm9tTWFpbikge1xyXG4gIC8vICAgICB0aGlzLmlzU3luY2luZ0Zyb21NYWluID0gZmFsc2U7XHJcbiAgLy8gICAgIHJldHVybjtcclxuICAvLyAgIH1cclxuICAvLyAgIGlmICh0aGlzLmdyb3VwZWRDb2x1bW5zPy5sZW5ndGggPiAwKSB7XHJcbiAgLy8gICAgIHRoaXMuc3RhcnRJbmRleCA9IDA7XHJcbiAgLy8gICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgICAgcmV0dXJuO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgY29uc3Qgc2Nyb2xsVG9wID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wO1xyXG4gIC8vICAgaWYgKHRoaXMubWFpblNjcm9sbFJhZikgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5tYWluU2Nyb2xsUmFmKTtcclxuICAvLyAgIHRoaXMubWFpblNjcm9sbFJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgLy8gICAgIHRoaXMuaXNTeW5jaW5nRnJvbUZha2UgPSB0cnVlO1xyXG4gIC8vICAgICB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XHJcbiAgLy8gICAgIGNvbnN0IG92ZXJzY2FuID0gdGhpcy5vdmVyc2NhbiA/PyAwO1xyXG4gIC8vICAgICB0aGlzLnN0YXJ0SW5kZXggPSBNYXRoLmZsb29yKHNjcm9sbFRvcCAvIHRoaXMucm93SGVpZ2h0KTtcclxuICAvLyAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCB0aGlzLnN0YXJ0SW5kZXggLSBvdmVyc2Nhbik7XHJcbiAgLy8gICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKFxyXG4gIC8vICAgICAgIHRoaXMuZmxhdHRlbmVkRGF0YS5sZW5ndGgsXHJcbiAgLy8gICAgICAgdGhpcy5zdGFydEluZGV4ICsgdGhpcy52aWV3cG9ydFJvd3MgKyBvdmVyc2NhblxyXG4gIC8vICAgICApO1xyXG4gIC8vICAgICB0aGlzLnZpc2libGVSb3dzID0gdGhpcy5mbGF0dGVuZWREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gIC8vICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICB2aWV3cG9ydFJvd3MgPSAwOyAvLyBob3cgbWFueSByb3dzIGZpdCBpbiB2aWV3cG9ydCAoY29tcHV0ZWQpXHJcbiAgZmlyc3RJbmRleCA9IDA7IC8vIGluZGV4IG9mIHRoZSBmaXJzdCB2aXNpYmxlIHJvdyAoY2xhbXBlZClcclxuICByZW5kZXJTdGFydCA9IDA7IC8vIHdoZXJlIHRoZSBzbGljZSBhY3R1YWxseSBzdGFydHMgKGZpcnN0SW5kZXggLSBvdmVyc2NhbiwgY2xhbXBlZClcclxuXHJcbiAgcHJpdmF0ZSBzY3JvbGxSYWY6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgcGVuZGluZ1Njcm9sbFRvcCA9IDA7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21haW5TY3JvbGwnKSBtYWluU2Nyb2xsITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgQFZpZXdDaGlsZCgnZmFrZVNjcm9sbCcpIGZha2VTY3JvbGwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdob3JpemludGFsRmFrZVNjcm9sbCcpXHJcbiAgaG9yaXppbnRhbEZha2VTY3JvbGwhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBAVmlld0NoaWxkKCdjZW50ZXJTY3JvbGxhYmxlQm9keScpXHJcbiAgY2VudGVyU2Nyb2xsYWJsZUJvZHkhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBwcml2YXRlIG92ZXJzY2FuID0gMTA7IC8vIGJ1ZmZlciByb3dzIGFib3ZlIGFuZCBiZWxvd1xyXG5cclxuICBjb21wdXRlVmlld3BvcnRSb3dzKCkge1xyXG4gICAgaWYgKHRoaXMuZmFrZVNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmZha2VTY3JvbGwubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1haW5TY3JvbGw/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgICAgY29uc3QgaCA9IHRoaXMubWFpblNjcm9sbC5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCA/PyAwO1xyXG5cclxuICAgICAgLy8gcm93cyB2aXNpYmxlIGluIHZpZXdwb3J0XHJcbiAgICAgIGNvbnN0IHJvd3NJblZpZXdwb3J0ID0gTWF0aC5tYXgoMSwgTWF0aC5jZWlsKGggLyB0aGlzLnJvd0hlaWdodCkpO1xyXG5cclxuICAgICAgLy8gYWRkIGJ1ZmZlciByb3dzIChvdmVyc2NhbilcclxuICAgICAgdGhpcy52aWV3cG9ydFJvd3MgPSByb3dzSW5WaWV3cG9ydCArIHRoaXMub3ZlcnNjYW47XHJcblxyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Ib3Jpem9udGFsRmFrZVNjcm9sbChldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHNjcm9sbExlZnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxMZWZ0O1xyXG4gICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcclxuICAgIGlmICh0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2VudGVyQm9keVNjcm9sbChldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICh0aGlzLmNlbnRlclNjcm9sbGFibGVCb2R5Py5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHkubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIpIHtcclxuICAgICAgdGhpcy5jZW50ZXJQaW5uZWRIZWFkZXIubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ob3JpemludGFsRmFrZVNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gIH1cclxuXHJcbiAgb25DZW50ZXJIZWFkZXJTY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBpZiAodGhpcy5ob3JpemludGFsRmFrZVNjcm9sbD8ubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmhvcml6aW50YWxGYWtlU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIERyYWdnaW5nIExvZ2ljIGlzIGltcGxlbWVudGVkIGhlcmVcclxuICAvLyBwcml2YXRlIGluaXRpYWxJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGRyYWdnaW5nQ29sdW1uOiBhbnk7XHJcbiAgZHJhZ1N0YXJ0SW5kZXg6IGFueSA9IDA7XHJcbiAgLy8gb25EcmFnU3RhcnQoZGF0YTogYW55LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgLy8gICB0aGlzLmRyYWdnaW5nQ29sdW1uID0gZGF0YS5jb2x1bW47XHJcbiAgLy8gICB0aGlzLmRyYWdTdGFydEluZGV4ID0gaW5kZXg7XHJcbiAgLy8gfVxyXG4gIC8vIG9uRHJhZ01vdmUoZGF0YTogYW55KSB7XHJcbiAgLy8gICBjb25zdCB7IGNsaWVudFgsIGNsaWVudFkgfSA9IGRhdGEuZXZlbnQ7XHJcbiAgLy8gICBjb25zdCBoZWFkZXJzID0gQXJyYXkuZnJvbShcclxuICAvLyAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm9uZS1yb3ctaGVhZGVyLWNlbGxzJylcclxuICAvLyAgICkgYXMgSFRNTEVsZW1lbnRbXTtcclxuXHJcbiAgLy8gICBoZWFkZXJzLmZvckVhY2goKGhlYWRlckVsLCBpZHgpID0+IHtcclxuICAvLyAgICAgY29uc3QgcmVjdCA9IGhlYWRlckVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gIC8vICAgICBpZiAoXHJcbiAgLy8gICAgICAgaWR4ICE9PSB0aGlzLmRyYWdTdGFydEluZGV4ICYmXHJcbiAgLy8gICAgICAgY2xpZW50WCA+IHJlY3QubGVmdCAmJlxyXG4gIC8vICAgICAgIGNsaWVudFggPCByZWN0LnJpZ2h0ICYmXHJcbiAgLy8gICAgICAgY2xpZW50WSA+IHJlY3QudG9wICYmXHJcbiAgLy8gICAgICAgY2xpZW50WSA8IHJlY3QuYm90dG9tXHJcbiAgLy8gICAgICkge1xyXG4gIC8vICAgICAgIGNvbnN0IG90aGVySW5kZXggPSBpZHg7XHJcbiAgLy8gICAgICAgY29uc29sZS5sb2coYCR7dGhpcy5kcmFnU3RhcnRJbmRleH0gLS0+ICR7b3RoZXJJbmRleH1gKTtcclxuICAvLyAgICAgICB0aGlzLnN3YXBDb2x1bW4odGhpcy5kcmFnU3RhcnRJbmRleCwgb3RoZXJJbmRleCk7XHJcbiAgLy8gICAgICAgY29uc29sZS5sb2coJ1VwZGF0ZWQgQ29sdW1uczogJywgdGhpcy5jb2x1bW5zKTtcclxuICAvLyAgICAgICB0aGlzLmRyYWdTdGFydEluZGV4ID0gb3RoZXJJbmRleDsgLy8gdXBkYXRlIGluZGV4XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gc3dhcENvbHVtbihwcmV2aXVzSW5kZXg6IG51bWJlciwgY3VycmVudEluZGV4OiBudW1iZXIpIHtcclxuICAvLyAgIGNvbnN0IGNvbHVtbnMgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5jb2x1bW5zKTtcclxuICAvLyAgIGNvbnN0IGZsYXR0ZW5Db2x1bW5zID0gdGhpcy5mbGF0dGVuQ29sdW1ucyhjb2x1bW5zKTtcclxuXHJcbiAgLy8gICBjb25zdCB2aXNpYmxlRmxhdHRlbkNvbHVtbnMgPSBmbGF0dGVuQ29sdW1ucy5maWx0ZXIoXHJcbiAgLy8gICAgIChjb2wpID0+IGNvbC5pc192aXNpYmxlXHJcbiAgLy8gICApO1xyXG4gIC8vICAgY29uc3QgcHJldml1c0NvbHVtbiA9IHZpc2libGVGbGF0dGVuQ29sdW1uc1twcmV2aXVzSW5kZXhdO1xyXG4gIC8vICAgY29uc3QgY3VycmVudENvbHVtbiA9IHZpc2libGVGbGF0dGVuQ29sdW1uc1tjdXJyZW50SW5kZXhdO1xyXG5cclxuICAvLyAgIGNvbnNvbGUubG9nKCdQcmV2aXVzIENvbHVtbjogJywgcHJldml1c0NvbHVtbik7XHJcbiAgLy8gICBjb25zb2xlLmxvZygnY3VycmVudCBjbHVtbjogJywgY3VycmVudENvbHVtbik7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBvbkRyYWdFbmQoZGF0YTogYW55KSB7XHJcbiAgLy8gICB0aGlzLmRyYWdnaW5nQ29sdW1uID0gbnVsbDtcclxuICAvLyAgIHRoaXMuZHJhZ1N0YXJ0SW5kZXggPSBudWxsO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gQ0RLIERSQUcgRFJPUCBMT0dJQyBHT0VTIEhFUkVcclxuXHJcblxyXG4gIGNhbkVudGVyVG9Sb3dzR3JvdXBpbmcgPSAoZHJhZzogQ2RrRHJhZzxhbnk+LCBkcm9wOiBDZGtEcm9wTGlzdDxhbnk+KSA9PiB7XHJcbiAgICAvLyBFeGFtcGxlOiBCbG9jayBpZiBhbHJlYWR5IHBpbm5lZCBsZWZ0XHJcbiAgICBjb25zdCBkYXRhID0gZHJhZy5kYXRhO1xyXG4gICAgaWYgKGRhdGE/LmNoaWxkcmVuICYmIGRhdGE/LmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZGF0YS5jaGlsZHJlbi5zb21lKFxyXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmlzX3Zpc2libGUgJiYgY29sLmlzX2dyb3VwYWJsZVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGEuaXNfdmlzaWJsZSAmJiBkYXRhLmlzX2dyb3VwYWJsZTtcclxuICB9O1xyXG5cclxuICAvLyBvbkRyYWdNb3ZlZChldmVudDogQ2RrRHJhZ01vdmU8YW55Pikge1xyXG4gIC8vICAgY29uc3QgcG9pbnRlclggPSBldmVudC5wb2ludGVyUG9zaXRpb24ueDtcclxuICAvLyAgIGNvbnN0IHBvaW50ZXJZID0gZXZlbnQucG9pbnRlclBvc2l0aW9uLnk7XHJcblxyXG4gIC8vICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gIC8vICAgICAncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ1xyXG4gIC8vICAgKTtcclxuXHJcbiAgLy8gICBpZiAodGFyZ2V0RWxlbWVudCkge1xyXG4gIC8vICAgICBjb25zdCByZWN0ID0gdGFyZ2V0RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgLy8gICAgIGNvbnN0IGlzT3ZlclRhcmdldCA9XHJcbiAgLy8gICAgICAgcG9pbnRlclggPj0gcmVjdC5sZWZ0ICYmXHJcbiAgLy8gICAgICAgcG9pbnRlclggPD0gcmVjdC5yaWdodCAmJlxyXG4gIC8vICAgICAgIHBvaW50ZXJZID49IHJlY3QudG9wICYmXHJcbiAgLy8gICAgICAgcG9pbnRlclkgPD0gcmVjdC5ib3R0b207XHJcblxyXG4gIC8vICAgICBpZiAoaXNPdmVyVGFyZ2V0KSB7XHJcbiAgLy8gICAgICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gdHJ1ZTtcclxuICAvLyAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSBmYWxzZTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgZW50ZXJUb1RvcFJvd0dyb3VwaW5nKGRyb3BMaXN0OiBDZGtEcmFnRW50ZXI8YW55Pikge1xyXG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xyXG4gICAgdGhpcy5kcmFnZ2luZ0luR3JvdXBBcmVhID0gdHJ1ZTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwiRHJhZ2dpbmcgaW4gZ3JvdXAgYXJlYVwiKVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGRyYWdnaW5nRGF0YT8uY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNvbnN0IHRhcmdldEdyb3VwID0gdGhpcy5jb2x1bW5zLmZpbmQoXHJcbiAgICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PT0gZHJhZ2dpbmdEYXRhLmhlYWRlclxyXG4gICAgICApO1xyXG4gICAgICBpZiAodGFyZ2V0R3JvdXApIHtcclxuICAgICAgICBkcmFnZ2luZ0RhdGEuY2hpbGRyZW4uZm9yRWFjaCgoZHJhZ2dlZENoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1hdGNoaW5nQ2hpbGQgPSB0YXJnZXRHcm91cC5jaGlsZHJlbi5maW5kKFxyXG4gICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGlmIChtYXRjaGluZ0NoaWxkKSB7XHJcbiAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gISFtYXRjaGluZ0NoaWxkLmlzX2dyb3VwYWJsZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIC8vIFRyeSBmaW5kaW5nIGl0IGluIHRvcC1sZXZlbCBjb2x1bW5zIGZpcnN0XHJcbiAgICAgIGxldCB0YXJnZXRDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5maWVsZCA9PT0gZHJhZ2dpbmdEYXRhLmZpZWxkXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBpZiAodGFyZ2V0Q29sdW1uKSB7XHJcbiAgICAgICAgdGFyZ2V0Q29sdW1uLmlzUm93R3JvdXBlZCA9ICEhdGFyZ2V0Q29sdW1uLmlzX2dyb3VwYWJsZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBncm91cCBvZiB0aGlzLmNvbHVtbnMpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGdyb3VwLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gZ3JvdXAuY2hpbGRyZW4uZmluZChcclxuICAgICAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnaW5nRGF0YS5maWVsZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAobWF0Y2hpbmdDaGlsZCkge1xyXG4gICAgICAgICAgICAgIG1hdGNoaW5nQ2hpbGQuaXNSb3dHcm91cGVkID0gISFtYXRjaGluZ0NoaWxkLmlzX2dyb3VwYWJsZTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIOKchSBSZWZyZXNoIFVJXHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25Ecm9wTGlzdEVudGVyKFxyXG4gICAgZHJvcExpc3Q6IENka0RyYWdFbnRlcjxhbnk+LFxyXG4gICAgc2VjdGlvbjogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnXHJcbiAgKSB7XHJcbiAgICBjb25zdCBkcmFnZ2luZ0RhdGEgPSBkcm9wTGlzdC5pdGVtLmRhdGE7XHJcblxyXG4gICAgY29uc3QgdGFyZ2V0Q29sdW1uOiBhbnkgPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PSBkcmFnZ2luZ0RhdGEuaGVhZGVyXHJcbiAgICApO1xyXG5cclxuICAgIGlmICghdGFyZ2V0Q29sdW1uKSByZXR1cm47XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBBcnJheS5pc0FycmF5KGRyYWdnaW5nRGF0YT8uY2hpbGRyZW4pICYmXHJcbiAgICAgIEFycmF5LmlzQXJyYXkodGFyZ2V0Q29sdW1uPy5jaGlsZHJlbilcclxuICAgICkge1xyXG4gICAgICBkcmFnZ2luZ0RhdGEuY2hpbGRyZW4uZm9yRWFjaCgoZHJhZ2dlZENoaWxkOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBtYXRjaGluZ0NoaWxkID0gdGFyZ2V0Q29sdW1uLmNoaWxkcmVuLmZpbmQoXHJcbiAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZmllbGQgPT09IGRyYWdnZWRDaGlsZC5maWVsZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcclxuICAgICAgICAgIG1hdGNoaW5nQ2hpbGQucGlubmVkID0gc2VjdGlvbiA9PT0gJ2NlbnRlcicgPyBudWxsIDogc2VjdGlvbjtcclxuICAgICAgICAgIG1hdGNoaW5nQ2hpbGRbJ2lzUm93R3JvdXBlZCddID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRhcmdldENvbHVtbi5waW5uZWQgPSBzZWN0aW9uID09PSAnY2VudGVyJyA/IG51bGwgOiBzZWN0aW9uO1xyXG4gICAgICB0YXJnZXRDb2x1bW5bJ2lzUm93R3JvdXBlZCddID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIGVudGVyVG9Ub3BHcm91cGluZ1Jvdyhkcm9wTGlzdDogQ2RrRHJhZ0VudGVyPGFueT4pIHtcclxuICAvLyAgIHRoaXMuc2hvdWxkRGlzYWJsZURyb3BsaXN0U29ydGluZyA9IHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmc7XHJcbiAgLy8gICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSB0cnVlO1xyXG4gIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIC8vIGNvbnN0IGluZGV4ID0gdGhpcy5ncm91cGVkQ29sdW1ucy5maW5kSW5kZXgoXHJcbiAgLy8gICAoY29sKSA9PiBjb2wuZmllbGQgPT09IGNvbHVtbi5maWVsZFxyXG4gIC8vICk7XHJcbiAgLy8gaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gIC8vICAgdGhpcy5ncm91cGVkQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gLy8gMi4gVHJhdmVyc2UgdGhpcy5jb2x1bW5zIHRvIGZpbmQgYW5kIHVwZGF0ZSB0aGUgbWF0Y2hpbmcgY29sdW1uXHJcbiAgLy8gdGhpcy5jb2x1bW5zLmZvckVhY2goKGdyb3VwKSA9PiB7XHJcbiAgLy8gICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgLy8gICAgIGdyb3VwLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKGNoaWxkLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAvLyAgICAgICAgIGNoaWxkLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICB9IGVsc2UgaWYgKGdyb3VwLmZpZWxkID09PSBjb2x1bW4uZmllbGQpIHtcclxuICAvLyAgICAgZ3JvdXAuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgLy8gICB9XHJcbiAgLy8gfSk7XHJcbiAgLy8gICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgLy8gfVxyXG5cclxuICBleGl0ZWRGcm9tVGhlVG9wUm93KGRyb3BMaXN0OiBDZGtEcmFnRXhpdDxhbnk+KSB7XHJcbiAgICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvdWxkRGlzYWJsZURyb3BsaXN0U29ydGluZyA9IGZhbHNlO1xyXG4gICAgY29uc3QgZHJhZ2dpbmdEYXRhID0gZHJvcExpc3QuaXRlbS5kYXRhO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZHJhZ2dpbmdEYXRhPy5jaGlsZHJlbikpIHtcclxuICAgICAgY29uc3QgdGFyZ2V0R3JvdXAgPSB0aGlzLmNvbHVtbnMuZmluZChcclxuICAgICAgICAoY29sKSA9PiBjb2wuaGVhZGVyID09PSBkcmFnZ2luZ0RhdGEuaGVhZGVyXHJcbiAgICAgICk7XHJcbiAgICAgIGlmICh0YXJnZXRHcm91cCkge1xyXG4gICAgICAgIGRyYWdnaW5nRGF0YS5jaGlsZHJlbi5mb3JFYWNoKChkcmFnZ2VkQ2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IHRhcmdldEdyb3VwLmNoaWxkcmVuLmZpbmQoXHJcbiAgICAgICAgICAgIChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCA9PT0gZHJhZ2dlZENoaWxkLmZpZWxkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcclxuICAgICAgICAgICAgbWF0Y2hpbmdDaGlsZC5pc1Jvd0dyb3VwZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHRhcmdldENvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKFxyXG4gICAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcclxuICAgICAgKTtcclxuXHJcbiAgICAgIGlmICh0YXJnZXRDb2x1bW4pIHtcclxuICAgICAgICB0YXJnZXRDb2x1bW4uaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgZ3JvdXAgb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShncm91cC5jaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdDaGlsZCA9IGdyb3VwLmNoaWxkcmVuLmZpbmQoXHJcbiAgICAgICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmZpZWxkID09PSBkcmFnZ2luZ0RhdGEuZmllbGRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKG1hdGNoaW5nQ2hpbGQpIHtcclxuICAgICAgICAgICAgICBtYXRjaGluZ0NoaWxkLmlzUm93R3JvdXBlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2hvdWxkRGlzYWJsZURyb3BsaXN0U29ydGluZyA9IGZhbHNlO1xyXG4gIGlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gZmFsc2U7XHJcbiAgY2hlY2tDb2x1bW5Hcm91cGluZ1N0YXR1cyhjb2w6IGFueSkge1xyXG4gICAgaWYgKGNvbD8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNvbnN0IGFsbENoaWxkcmVuRGlzYWJsZWQgPSBjb2wuY2hpbGRyZW4uZXZlcnkoXHJcbiAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmlzX2dyb3VwYWJsZSA9PT0gZmFsc2VcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pc0Rpc2FibGVDb2x1bW5Hcm91cGluZyA9IGFsbENoaWxkcmVuRGlzYWJsZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlzRGlzYWJsZUNvbHVtbkdyb3VwaW5nID0gY29sLmlzX2dyb3VwYWJsZSA9PT0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50RHJhZ2dpbmdDb2x1bW46IGFueSA9IG51bGw7XHJcbiAgZHJhZ1N0YXJ0T25Hcm91cChjb2w6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4gPSBjb2w7XHJcbiAgfVxyXG5cclxuICBvblNvcnRHcm91cCA9IGFzeW5jIChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnk+LCBzZWN0aW9uOiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IGNvbHVtbnMgPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dO1xyXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcigoY29sOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGNvbD8uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZC5pc192aXNpYmxlKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sLmlzX3Zpc2libGU7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHByZXZpb3VzSGVhZGVyID0gdmlzaWJsZUNvbHVtbnNbZXZlbnQucHJldmlvdXNJbmRleF0uaGVhZGVyO1xyXG4gICAgY29uc3QgY3VycmVudEhlYWRlciA9IHZpc2libGVDb2x1bW5zW2V2ZW50LmN1cnJlbnRJbmRleF0uaGVhZGVyO1xyXG4gICAgY29uc3QgdmlzaWJsZVByZXZJbmRleCA9IHZpc2libGVDb2x1bW5zLmZpbmRJbmRleChcclxuICAgICAgKGNvbDogYW55KSA9PiBjb2wuaGVhZGVyID09PSBwcmV2aW91c0hlYWRlclxyXG4gICAgKTtcclxuICAgIGNvbnN0IHZpc2libGVDdXJySW5kZXggPSB2aXNpYmxlQ29sdW1ucy5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmhlYWRlciA9PT0gY3VycmVudEhlYWRlclxyXG4gICAgKTtcclxuICAgIGNvbnN0IGdldEZpZWxkcyA9IChpdGVtOiBhbnkpOiBzdHJpbmdbXSA9PiB7XHJcbiAgICAgIGlmIChpdGVtPy5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGl0ZW0uY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0uY2hpbGRyZW4ubWFwKChjaGlsZDogYW55KSA9PiBjaGlsZC5maWVsZCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFtpdGVtLmZpZWxkXTtcclxuICAgIH07XHJcbiAgICBjb25zdCBwcmV2RmllbGRzID0gZ2V0RmllbGRzKHZpc2libGVDb2x1bW5zW3Zpc2libGVQcmV2SW5kZXhdKTtcclxuICAgIGNvbnN0IGN1cnJGaWVsZHMgPSBnZXRGaWVsZHModmlzaWJsZUNvbHVtbnNbdmlzaWJsZUN1cnJJbmRleF0pO1xyXG4gICAgY29uc3QgYWxsRmllbGRzID0gWy4uLnByZXZGaWVsZHMsIC4uLmN1cnJGaWVsZHNdO1xyXG4gICAgY29uc3QgY2VsbHMgPSBhbGxGaWVsZHMubGVuZ3RoXHJcbiAgICAgID8gKFtdIGFzIEhUTUxFbGVtZW50W10pLmNvbmNhdChcclxuICAgICAgICAuLi5hbGxGaWVsZHMubWFwKChmaWVsZCkgPT5cclxuICAgICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtZmllbGQ9XCIke2ZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIDogW107XHJcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcclxuICAgIGNlbGxzLmZvckVhY2goKGVsKSA9PiBmaXJzdFBvc2l0aW9ucy5zZXQoZWwsIGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQpKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwidGhpcyAuY29sdW5zXCIsIHRoaXMuY29sdW1ucyk7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoKHRoaXMgYXMgYW55KVtzZWN0aW9uXSwgdmlzaWJsZVByZXZJbmRleCwgdmlzaWJsZUN1cnJJbmRleCk7XHJcblxyXG4gICAgY29uc3QgcHJldkNvbEluZGV4SW5Db2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uaGVhZGVyID09PSBwcmV2aW91c0hlYWRlcik7XHJcbiAgICBjb25zdCBjdXJyQ29sSW5kZXhJbkNvbHVtbnMgPSB0aGlzLmNvbHVtbnMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5oZWFkZXIgPT09IGN1cnJlbnRIZWFkZXIpO1xyXG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuY29sdW1ucywgcHJldkNvbEluZGV4SW5Db2x1bW5zLCBjdXJyQ29sSW5kZXhJbkNvbHVtbnMpO1xyXG4gICAgLy8gYXdhaXQgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubmdab25lLm9uU3RhYmxlKTtcclxuICAgIC8vIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgLy8gV2FpdCBhIHRpY2sgdG8gbWFrZSBzdXJlIGVsZW1lbnRzIGFyZSByZW5kZXJlZFxyXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgIGFsbEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtZmllbGQ9XCIke2ZpZWxkfVwiXWApXHJcbiAgICAgICAgICApIGFzIEhUTUxFbGVtZW50W107XHJcblxyXG4gICAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpO1xyXG4gICAgICAgICAgICBpZiAob2xkTGVmdCA9PSBudWxsKSByZXR1cm47IC8vIHNraXAgaWYgb2xkIHBvc2l0aW9uIG5vdCBhdmFpbGFibGVcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IG5ld0xlZnQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcclxuXHJcbiAgICAgICAgICAgIGlmIChkZWx0YVggIT09IDApIHtcclxuICAgICAgICAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWCgke2RlbHRhWH1weClgO1xyXG5cclxuICAgICAgICAgICAgICAvLyBGb3JjZSByZWZsb3dcclxuICAgICAgICAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJztcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgwKSc7XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcclxuICAgICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25Ecm9wR3JvdXAoKSB7XHJcbiAgICB0aGlzLmxlZnRQaW5uZWRDb2x1bW5zID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHRoaXMucHJldmlld0xlZnRQaW5uZWRDb2x1bW5zKTtcclxuICAgIHRoaXMuY2VudGVyQ29sdW1ucyA9IHRoaXMuZGVlcENsb25lQ29sdW1ucyh0aGlzLnByZXZpZXdDZW50ZXJDb2x1bW5zKTtcclxuICAgIHRoaXMucmlnaHRQaW5uZWRDb2x1bW5zID0gdGhpcy5kZWVwQ2xvbmVDb2x1bW5zKHRoaXMucHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlU2l6ZSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVlcENsb25lQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShjb2x1bW5zKSkgcmV0dXJuIFtdO1xyXG5cclxuICAgIHJldHVybiBjb2x1bW5zLm1hcChjb2wgPT4gKHtcclxuICAgICAgLi4uY29sLFxyXG4gICAgICBxdWVyeTogY29sLnF1ZXJ5ID8geyAuLi5jb2wucXVlcnkgfSA6IG51bGwsXHJcbiAgICAgIGNvbHVtbl9kcm9wZG93bl92YWx1ZTogQXJyYXkuaXNBcnJheShjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlKVxyXG4gICAgICAgID8gWy4uLmNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWVdXHJcbiAgICAgICAgOiBbXSxcclxuICAgICAgLy8gUmVjdXJzaXZlbHkgZGVlcCBjbG9uZSBjaGlsZHJlbiBpZiBwcmVzZW50XHJcbiAgICAgIGNoaWxkcmVuOiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbilcclxuICAgICAgICA/IHRoaXMuZGVlcENsb25lQ29sdW1ucyhjb2wuY2hpbGRyZW4pXHJcbiAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgb25Ecm9wVG9wR3JvdXAoZXZlbnQ6IENka0RyYWdEcm9wPGFueT4pIHtcclxuICAgIGlmICh0aGlzLmlzT3V0c2lkZUNvbnRhaW5lcikgcmV0dXJuO1xyXG4gICAgdGhpcy5tYWluU2Nyb2xsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gMDtcclxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZVkgPSAwO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgZHJhZ2dlZERhdGEgPSBldmVudC5pdGVtLmRhdGE7XHJcbiAgICBpZiAoZHJhZ2dlZERhdGE/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoZHJhZ2dlZERhdGEuY2hpbGRyZW4pKSB7XHJcbiAgICAgIGRyYWdnZWREYXRhLmNoaWxkcmVuLmZvckVhY2goKGNvbDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbC5pc192aXNpYmxlICYmIGNvbC5pc19ncm91cGFibGUpIHtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBlZENvbHVtbnMucHVzaChjb2wpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoZHJhZ2dlZERhdGEuaXNfdmlzaWJsZSAmJiBkcmFnZ2VkRGF0YS5pc19ncm91cGFibGUpIHtcclxuICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnB1c2goZHJhZ2dlZERhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmRyYWdnaW5nSW5Hcm91cEFyZWEgPSBmYWxzZTtcclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XHJcbiAgICB0aGlzLnVwZGF0ZUZsYXR0ZW5lZERhdGEoKTtcclxuICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUm93cygwKTtcclxuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgdGhpcy5zZWxlY3RlZENlbGxzID0gW107XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMTAwMCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkdyb3VwUmVvcmRlcihldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5ncm91cGVkQ29sdW1ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZ3JvdXBlZENvbHVtbnMubWFwKChpdGVtKSA9PiBpdGVtLmZpZWxkKTtcclxuICAgIHRoaXMuZGF0YVNldCA9IGF3YWl0IHRoaXMuZ3JvdXBEYXRhQXN5bmModGhpcy5vcmlnaW5hbERhdGFTZXQsIGZpZWxkcyk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlQ29sdW1uV2lkdGhzQW5kR3JvdXBzKCk7XHJcbiAgICAgIHRoaXMucmVmcmVzaFByZXZpZXdDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAxMDApO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3VwQm94UGFkZGluZyA9IHRoaXMuY29sdW1uc0dyb3VwZWRCb3g/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKVxyXG4gICAgfSwgMTApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdW5ncm91cENvbHVtbihjb2x1bW46IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ3JvdXBlZENvbHVtbnMuZmluZEluZGV4KFxyXG4gICAgICAgIChjb2wpID0+IGNvbC5maWVsZCA9PT0gY29sdW1uLmZpZWxkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLmdyb3VwZWRDb2x1bW5zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5ncm91cGVkQ29sdW1ucy5tYXAoKGl0ZW0pID0+IGl0ZW0uZmllbGQpO1xyXG4gICAgICB0aGlzLmRhdGFTZXQgPSBhd2FpdCB0aGlzLmdyb3VwRGF0YUFzeW5jKHRoaXMub3JpZ2luYWxEYXRhU2V0LCBmaWVsZHMpO1xyXG4gICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoZ3JvdXApID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoZ3JvdXAuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICBncm91cC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC5maWVsZCA9PT0gY29sdW1uLmZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgY2hpbGQuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXAuZmllbGQgPT09IGNvbHVtbi5maWVsZCkge1xyXG4gICAgICAgICAgZ3JvdXAuaXNSb3dHcm91cGVkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGbGF0dGVuZWREYXRhKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5XaWR0aHNBbmRHcm91cHMoKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJvd3MoMCk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LCAxMDAwKTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGluIHVuZ3JvdXBDb2x1bW46XCIsIGVycik7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG4gIHNob3VsZFRoZUdyb3VwSGVhZGVyU2hvdyhncm91cDogYW55KSB7XHJcbiAgICBpZiAoZ3JvdXA/LmNoaWxkcmVuICYmIGdyb3VwLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gZ3JvdXAuY2hpbGRyZW4uc29tZShcclxuICAgICAgICAoY29sOiBhbnkpID0+IGNvbC5pc192aXNpYmxlICYmICFjb2w/LmlzUm93R3JvdXBlZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdyb3VwPy5pc192aXNpYmxlICYmICFncm91cD8uaXNSb3dHcm91cGVkO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIG9uQ2hpbGREcmFnU3RhcnQoKSB7XHJcbiAgLy8gICBkZWJ1Z2dlcjtcclxuICAvLyB9XHJcblxyXG4gIC8vIGRyb3BMaXN0SWRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAvLyBnZW5lcmF0ZURyb3BMaXN0SWRzKCkge1xyXG4gIC8vICAgdGhpcy5kcm9wTGlzdElkcyA9IFtdO1xyXG5cclxuICAvLyAgIGNvbnN0IHNlY3Rpb25LZXlzID0gW1xyXG4gIC8vICAgICAnbGVmdFBpbm5lZENvbHVtbnMnLFxyXG4gIC8vICAgICAnY2VudGVyQ29sdW1ucycsXHJcbiAgLy8gICAgICdyaWdodFBpbm5lZENvbHVtbnMnLFxyXG4gIC8vICAgXTtcclxuXHJcbiAgLy8gICBzZWN0aW9uS2V5cy5mb3JFYWNoKChzZWN0aW9uS2V5KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IHNlY3Rpb25Db2xzID0gKHRoaXMgYXMgYW55KVtzZWN0aW9uS2V5XTtcclxuXHJcbiAgLy8gICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjb2w6IGFueSwgaTogbnVtYmVyKSA9PiB7XHJcbiAgLy8gICAgICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICAgIGNvbC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55LCBjaGlsZEluZGV4OiBudW1iZXIpID0+IHtcclxuICAvLyAgICAgICAgICAgaWYgKGNoaWxkPy5pc192aXNpYmxlICYmICFjaGlsZC5pc1Jvd0dyb3VwZWQpIHtcclxuICAvLyAgICAgICAgICAgICBjb25zdCBpZCA9IGAke3NlY3Rpb25LZXl9JHtpfWA7XHJcbiAgLy8gICAgICAgICAgICAgdGhpcy5kcm9wTGlzdElkcy5wdXNoKGlkKTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgfSBlbHNlIGlmIChjb2w/LmlzX3Zpc2libGUgJiYgIWNvbC5pc1Jvd0dyb3VwZWQpIHtcclxuICAvLyAgICAgICAgIGNvbnN0IGlkID0gYCR7c2VjdGlvbktleX0ke2l9YDtcclxuICAvLyAgICAgICAgIHRoaXMuZHJvcExpc3RJZHMucHVzaChpZCk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9KTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgb25DaGlsZERyb3BsaXN0U29ydGVkID0gYXN5bmMgKGV2ZW50OiBDZGtEcmFnU29ydEV2ZW50PGFueT4sIHNlY3Rpb246IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKGV2ZW50LnByZXZpb3VzSW5kZXggPT09IGV2ZW50LmN1cnJlbnRJbmRleCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHBpbm5lZCA9XHJcbiAgICAgIHNlY3Rpb24gPT0gJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucydcclxuICAgICAgICA/ICdsZWZ0J1xyXG4gICAgICAgIDogc2VjdGlvbiA9PSAncHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucydcclxuICAgICAgICAgID8gJ3JpZ2h0J1xyXG4gICAgICAgICAgOiBcIlwiO1xyXG5cclxuICAgIGNvbnN0IGNvbHVtbiA9IGV2ZW50Lml0ZW0uZGF0YTtcclxuICAgIGxldCBncm91cCA9IHRoaXMuY29sdW1ucy5maW5kKFxyXG4gICAgICAoY29sOiBhbnkpID0+XHJcbiAgICAgICAgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmXHJcbiAgICAgICAgY29sLmNoaWxkcmVuLnNvbWUoKGNoaWxkOiBhbnkpID0+IGNoaWxkPy5maWVsZCA9PT0gY29sdW1uPy5maWVsZClcclxuICAgICk7XHJcbiAgICBjb25zdCBncm91cEluZGV4ID0gdGhpcy5jb2x1bW5zLmZpbmRJbmRleChcclxuICAgICAgKGNvbCkgPT4gY29sLmhlYWRlciA9PT0gZ3JvdXAuaGVhZGVyXHJcbiAgICApO1xyXG4gICAgY29uc3QgZmlsdGVyZWRHcm91cCA9IGdyb3VwPy5jaGlsZHJlbi5maWx0ZXIoKGNvbDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGlzUGlubmVkTWF0Y2ggPVxyXG4gICAgICAgIChwaW5uZWQgPT09IFwiXCIgJiYgKCFjb2w/LnBpbm5lZCB8fCBjb2w/LnBpbm5lZCA9PT0gXCJcIikpIHx8IGNvbD8ucGlubmVkID09PSBwaW5uZWQ7XHJcbiAgICAgIHJldHVybiBpc1Bpbm5lZE1hdGNoICYmIGNvbD8uaXNfdmlzaWJsZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHByZXZpb3VzRmllbGQgPSBmaWx0ZXJlZEdyb3VwW2V2ZW50LnByZXZpb3VzSW5kZXhdLmZpZWxkO1xyXG4gICAgY29uc3QgY3VycmVudEZpZWxkID0gZmlsdGVyZWRHcm91cFtldmVudC5jdXJyZW50SW5kZXhdLmZpZWxkO1xyXG4gICAgY29uc3QgdmlzaWJsZVByZXZJbmRleCA9IGdyb3VwLmNoaWxkcmVuLmZpbmRJbmRleChcclxuICAgICAgKGNvbDogYW55KSA9PiBjb2wuZmllbGQgPT0gcHJldmlvdXNGaWVsZFxyXG4gICAgKTtcclxuICAgIGNvbnN0IHZpc2libGVDdXJySW5kZXggPSBncm91cC5jaGlsZHJlbi5maW5kSW5kZXgoXHJcbiAgICAgIChjb2w6IGFueSkgPT4gY29sLmZpZWxkID09IGN1cnJlbnRGaWVsZFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGFsbEZpZWxkcyA9IFtwcmV2aW91c0ZpZWxkLCBjdXJyZW50RmllbGRdO1xyXG4gICAgY29uc3QgY2VsbHMgPSBhbGxGaWVsZHMubGVuZ3RoXHJcbiAgICAgID8gKFtdIGFzIEhUTUxFbGVtZW50W10pLmNvbmNhdChcclxuICAgICAgICAuLi5hbGxGaWVsZHMubWFwKChmaWVsZCkgPT5cclxuICAgICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgW2RhdGEtZmllbGQ9XCIke2ZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdXHJcbiAgICAgICAgKVxyXG4gICAgICApXHJcbiAgICAgIDogW107XHJcblxyXG4gICAgY29uc3QgZ3JvdXBJblNlY3Rpb24gPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmQoXHJcbiAgICAgIChjb2w6IGFueSkgPT5cclxuICAgICAgICBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikgJiZcclxuICAgICAgICBjb2wuY2hpbGRyZW4uc29tZSgoY2hpbGQ6IGFueSkgPT4gY2hpbGQ/LmZpZWxkID09PSBjb2x1bW4/LmZpZWxkKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJHcm91cEluU2VjdGlvbiA9ICh0aGlzIGFzIGFueSlbc2VjdGlvbl0uZmluZChcclxuICAgICAgKGNvbDogYW55KSA9PlxyXG4gICAgICAgIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJlxyXG4gICAgICAgIGNvbC5jaGlsZHJlbi5zb21lKChjaGlsZDogYW55KSA9PiBjaGlsZD8uZmllbGQgPT09IGNvbHVtbj8uZmllbGQpXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGdyb3VwSW5TZWN0aW9uSW5kZXggPSAodGhpcyBhcyBhbnkpW3NlY3Rpb25dLmZpbmRJbmRleChcclxuICAgICAgKGNvbDogYW55KSA9PiBjb2wuaGVhZGVyID09PSBncm91cEluU2VjdGlvbi5oZWFkZXJcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZmlyc3RQb3NpdGlvbnMgPSBuZXcgTWFwPEhUTUxFbGVtZW50LCBudW1iZXI+KCk7XHJcbiAgICBjZWxscy5mb3JFYWNoKChlbCkgPT4gZmlyc3RQb3NpdGlvbnMuc2V0KGVsLCBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KSk7XHJcbiAgICBtb3ZlSXRlbUluQXJyYXkoXHJcbiAgICAgIHRoaXMuY29sdW1uc1tncm91cEluZGV4XT8uY2hpbGRyZW4sXHJcbiAgICAgIHZpc2libGVQcmV2SW5kZXgsXHJcbiAgICAgIHZpc2libGVDdXJySW5kZXhcclxuICAgICk7XHJcblxyXG4gICAgbW92ZUl0ZW1JbkFycmF5KFxyXG4gICAgICAodGhpcyBhcyBhbnkpW3NlY3Rpb25dPy5bZ3JvdXBJblNlY3Rpb25JbmRleF0uY2hpbGRyZW4sXHJcbiAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXHJcbiAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBhd2FpdCB0aGlzLnJlZnJlc2hQcmV2aWV3Q29sdW1ucygpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubmdab25lLm9uU3RhYmxlKTtcclxuICAgIC8vIGFsbEZpZWxkcy5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgLy8gICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKFxyXG4gICAgLy8gICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWZpZWxkPVwiJHtmaWVsZH1cIl1gKVxyXG4gICAgLy8gICApIGFzIEhUTUxFbGVtZW50W107XHJcbiAgICAvLyAgIHVwZGF0ZWRDZWxscy5mb3JFYWNoKChlbCkgPT4ge1xyXG4gICAgLy8gICAgIGNvbnN0IG5ld0xlZnQgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O1xyXG4gICAgLy8gICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpITtcclxuICAgIC8vICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcclxuICAgIC8vICAgICBpZiAoZGVsdGFYICE9PSAwKSB7XHJcbiAgICAvLyAgICAgICBlbC5zdHlsZS53aWxsQ2hhbmdlID0gJ3RyYW5zZm9ybSc7XHJcbiAgICAvLyAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ25vbmUnO1xyXG4gICAgLy8gICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtkZWx0YVh9cHgpYDtcclxuICAgIC8vICAgICAgIHZvaWQgZWwub2Zmc2V0V2lkdGg7XHJcbiAgICAvLyAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJ3RyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJztcclxuICAgIC8vICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcclxuXHJcbiAgICAvLyAgICAgICBjb25zdCBoYW5kbGUgPSAoKSA9PiB7XHJcbiAgICAvLyAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcclxuICAgIC8vICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XHJcbiAgICAvLyAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAnJztcclxuICAgIC8vICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAvLyAgICAgICB9O1xyXG4gICAgLy8gICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGhhbmRsZSk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICB9KTtcclxuICAgIC8vIH0pO1xyXG5cclxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgYWxsRmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlZENlbGxzID0gQXJyYXkuZnJvbShcclxuICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWZpZWxkPVwiJHtmaWVsZH1cIl1gKVxyXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcclxuXHJcbiAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBvbGRMZWZ0ID0gZmlyc3RQb3NpdGlvbnMuZ2V0KGVsKTtcclxuICAgICAgICAgIGlmIChvbGRMZWZ0ID09IG51bGwpIHJldHVybjsgLy8gc2FmZXR5IGNoZWNrXHJcblxyXG4gICAgICAgICAgY29uc3QgbmV3TGVmdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQ7XHJcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcclxuXHJcbiAgICAgICAgICBpZiAoZGVsdGFYICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLndpbGxDaGFuZ2UgPSAndHJhbnNmb3JtJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVgoJHtkZWx0YVh9cHgpYDtcclxuXHJcbiAgICAgICAgICAgIC8vIEZvcmNlIHJlZmxvd1xyXG4gICAgICAgICAgICB2b2lkIGVsLm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSc7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVYKDApJztcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICBlbC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUud2lsbENoYW5nZSA9ICcnO1xyXG4gICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBoYW5kbGUpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgaGFuZGxlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBjb25zb2xlLmdyb3VwKCdHcm91cDogJywgZ3JvdXApO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uQ2hpbGREcm9wbGlzdERyb3BlZChjZGtEcmFnRHJvcGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbldpZHRoc0FuZEdyb3VwcygpO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiB0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZVNpemUsXHJcbiAgICAgIHR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuY3JlYXRlVXBkYXRlQ29uZmlnTGlzdGluZy5lbWl0KHNlbmREYXRhKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgMik7XHJcbiAgfVxyXG5cclxuICAvLyBSb3dzIEdyb3VwaW5nIExvZ2ljIEdvZXMgSGVyZVxyXG5cclxuICBncm91cERhdGEoZGF0YTogYW55W10sIGdyb3VwRmllbGRzOiBzdHJpbmdbXSk6IGFueVtdIHtcclxuICAgIGxldCBkYXRhU2V0ID0gc3RydWN0dXJlZENsb25lKGRhdGEpO1xyXG4gICAgaWYgKCFncm91cEZpZWxkcy5sZW5ndGgpIHJldHVybiBkYXRhO1xyXG4gICAgY29uc3QgW2N1cnJlbnRGaWVsZCwgLi4ucmVzdEZpZWxkc10gPSBncm91cEZpZWxkcztcclxuICAgIGNvbnN0IGdyb3VwZWRNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55W10+KCk7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgZGF0YVNldCkge1xyXG4gICAgICBsZXQga2V5VmFsdWUgPSBjdXJyZW50RmllbGQuc3BsaXQoJy4nKS5yZWR1Y2UoKG9iaiwgaykgPT4gb2JqPy5ba10sIGl0ZW0pO1xyXG4gICAgICBsZXQgZ3JvdXBLZXk6IHN0cmluZztcclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5VmFsdWUpKSB7XHJcbiAgICAgICAgaWYgKGtleVZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSBcIl9CbGFua1wiO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGtleVZhbHVlWzBdID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICBncm91cEtleSA9IGtleVZhbHVlXHJcbiAgICAgICAgICAgIC5tYXAob2JqID0+IChvYmo/LmRlcGFydG1lbnRfbmFtZSB8fCBvYmoucm9sZU5hbWUgfHwgb2JqPy5mdWxsX25hbWUpID8/IFwiX0JsYW5rXCIpXHJcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSBrZXlWYWx1ZVxyXG4gICAgICAgICAgICAubWFwKHZhbCA9PiB2YWwgPz8gXCJfQmxhbmtcIilcclxuICAgICAgICAgICAgLmpvaW4oXCIsXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBncm91cEtleSA9IGtleVZhbHVlID8ga2V5VmFsdWUgOiBcIl9CbGFua1wiOztcclxuICAgICAgfVxyXG4gICAgICBpZiAodHlwZW9mIGtleVZhbHVlID09PSAnc3RyaW5nJyAmJiAhaXNOYU4oRGF0ZS5wYXJzZShrZXlWYWx1ZSkpKSB7XHJcbiAgICAgICAgICBjb25zdCBkYXRlT2JqID0gbmV3IERhdGUoa2V5VmFsdWUpO1xyXG4gICAgICAgICAgZ3JvdXBLZXkgPSB0aGlzLmNvbW1vblNldmljZS5mb3JtYXREYXRlVmFsdWUoZGF0ZU9iaiwgdGhpcy5kYXRlRm9ybWF0IHx8ICdNTS9kZC95eXl5Jyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghZ3JvdXBlZE1hcC5oYXMoZ3JvdXBLZXkpKSBncm91cGVkTWFwLnNldChncm91cEtleSwgW10pO1xyXG4gICAgICBncm91cGVkTWFwLmdldChncm91cEtleSkhLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShncm91cGVkTWFwLmVudHJpZXMoKSkubWFwKChbZ3JvdXBWYWx1ZSwgZ3JvdXBJdGVtc10pID0+ICh7XHJcbiAgICAgIGlzR3JvdXA6IHRydWUsXHJcbiAgICAgIGdyb3VwRmllbGQ6IGN1cnJlbnRGaWVsZCxcclxuICAgICAgZ3JvdXBWYWx1ZSxcclxuICAgICAgY2hpbGRyZW46IHRoaXMuZ3JvdXBEYXRhKGdyb3VwSXRlbXMsIHJlc3RGaWVsZHMpLFxyXG4gICAgICBpc0V4cGFuZDogZmFsc2UsXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgY291bnRMZWFmUm93cyhncm91cDogYW55KTogbnVtYmVyIHtcclxuICAgIGlmICghZ3JvdXAuY2hpbGRyZW4gfHwgIWdyb3VwLmNoaWxkcmVuLmxlbmd0aCkgcmV0dXJuIDA7XHJcblxyXG4gICAgcmV0dXJuIGdyb3VwLmNoaWxkcmVuLnJlZHVjZSgoY291bnQ6IG51bWJlciwgY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4gY291bnQgKyAoY2hpbGQuaXNHcm91cCA/IHRoaXMuY291bnRMZWFmUm93cyhjaGlsZCkgOiAxKTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgdG9nZ2xlQWN0aXZlRmlsdGVyKCkge1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSAhdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW47XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBY3Rpb25zKHR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKHR5cGUgPT09IHRoaXMuYWN0aXZlVG9wQnV0dG9uKSB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9IHR5cGU7XHJcbiAgICBlbHNlIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gdHlwZTtcclxuICAgIHRoaXMuYWN0aXZlU3ViQnV0dG9uID0gJyc7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgYWN0aXZlU3ViQnV0dG9uID0gJyc7XHJcbiAgdG9nZ2xlU3ViQWN0aW9ucyh0eXBlOiBzdHJpbmcpIHtcclxuICAgIGlmICh0eXBlID09PSB0aGlzLmFjdGl2ZVN1YkJ1dHRvbikgdGhpcy5hY3RpdmVTdWJCdXR0b24gPSAnJztcclxuICAgIGVsc2UgdGhpcy5hY3RpdmVTdWJCdXR0b24gPSB0eXBlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWN0aW9uc0Ryb3Bkb3duKCkge1xyXG4gICAgdGhpcy5zaG93QWN0aW9uc0Ryb3BEb3duID0gIXRoaXMuc2hvd0FjdGlvbnNEcm9wRG93bjtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgYXN5bmMgY2hhbmdlVGFibGVMYXlvdXQoZXZlbnQ6IEV2ZW50LCBsYXlvdXRUeXBlOiBzdHJpbmcpIHtcclxuICAgIGxldCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuXHJcbiAgICBpZiAodGFyZ2V0LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlTGF5b3V0ID0gbGF5b3V0VHlwZTtcclxuICAgICAgdGhpcy5zZXRUYWJsZUxheW91dChsYXlvdXRUeXBlKVxyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSb3dzKHRoaXMubWFpblNjcm9sbD8ubmF0aXZlRWxlbWVudD8uc2Nyb2xsVG9wKTtcclxuICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoSGVhZGVycygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcclxuICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uRm9udENoYW5nZSgpXHJcbiAgfVxyXG5cclxuICBzZXRUYWJsZUxheW91dChsYXlvdXRUeXBlOiBzdHJpbmcpIHtcclxuICAgIGlmKCFsYXlvdXRUeXBlKSByZXR1cm47XHJcbiAgICBpZiAobGF5b3V0VHlwZSA9PT0gJ3NtYWxsJykge1xyXG4gICAgICB0aGlzLnJvd0hlaWdodCA9IDM2O1xyXG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDQwO1xyXG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTA7XHJcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IDEwO1xyXG5cclxuICAgIH0gZWxzZSBpZiAobGF5b3V0VHlwZSA9PT0gJ21lZGl1bScpIHtcclxuICAgICAgdGhpcy5yb3dIZWlnaHQgPSA0NDtcclxuICAgICAgdGhpcy5oZWFkZXJSb3dIZWlnaHQgPSA0NDtcclxuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IDE0O1xyXG4gICAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSAxNDtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvd0hlaWdodCA9IDYwO1xyXG4gICAgICB0aGlzLmhlYWRlclJvd0hlaWdodCA9IDUyO1xyXG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTY7XHJcbiAgICAgIHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9IDE2O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IHN0YXJ0SW5kZXhEYXRhKCkge1xyXG4gICAgcmV0dXJuICh0aGlzLnBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0O1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVuZEluZGV4KCkge1xyXG4gICAgcmV0dXJuIE1hdGgubWluKHRoaXMuc3RhcnRJbmRleCArIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCwgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmlzaWJsZVBhZ2VzKCk6IChudW1iZXIgfCBzdHJpbmcpW10ge1xyXG4gICAgY29uc3QgcGFnZXM6IChudW1iZXIgfCBzdHJpbmcpW10gPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMgPD0gNykge1xyXG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlczsgaSsrKSB7XHJcbiAgICAgICAgcGFnZXMucHVzaChpKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFnZXMucHVzaCgxKTtcclxuICAgICAgaWYgKHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID4gMykge1xyXG4gICAgICAgIHBhZ2VzLnB1c2goJy4uLicpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBzdGFydCA9IE1hdGgubWF4KDIsIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlIC0gMSk7XHJcbiAgICAgIGxldCBlbmQgPSBNYXRoLm1pbih0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyAtIDEsIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlICsgMSk7XHJcblxyXG4gICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHtcclxuICAgICAgICBwYWdlcy5wdXNoKGkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPCB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxQYWdlcyAtIDIpIHtcclxuICAgICAgICBwYWdlcy5wdXNoKCcuLi4nKTtcclxuICAgICAgfVxyXG4gICAgICBwYWdlcy5wdXNoKHRoaXMucGFnaW5hdGlvbkNvbmZpZy50b3RhbFBhZ2VzKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcGFnZXM7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duID0gJyc7XHJcbiAgdG9nZ2xlQ29sdW1uSW5GaWx0ZXJEcm9wZG93bihjb2w6IGFueSkge1xyXG5cclxuICB9XHJcblxyXG4gIHJlbW92ZUNvbHVtbkZyb21GaWx0ZXIob3B0aW9uOiBhbnkpIHtcclxuXHJcbiAgfVxyXG5cclxuICBoYW5kbGVCYWNrc3BhY2UoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAvLyBJZiBzZWFyY2ggaXMgZW1wdHksIHJlbW92ZSBsYXN0IHRhZ1xyXG4gICAgaWYgKCF0aGlzLnNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93biAmJiB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgbGFzdCA9IHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zW3RoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLmxlbmd0aCAtIDFdO1xyXG4gICAgICB0aGlzLnRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKGxhc3QpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsdGVyTWVudWVTZWFyY2hJbnB1dCcpIGZpbHRlck1lbnVlU2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+XHJcbiAgQFZpZXdDaGlsZCgnZmlsdGVyTWVudWVUZXh0Y2hJbnB1dCcpIGZpbHRlck1lbnVlVGV4dGNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+XHJcblxyXG4gIG9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNvbDogYW55KSB7XHJcbiAgICBpZiAoY29sLnR5cGUgPT0gJ2ltYWdlJyB8fCAhY29sPy50eXBlKSByZXR1cm47XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyID0gY29sO1xyXG4gICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSB0cnVlO1xyXG4gICAgdGhpcy5hZGRGaWx0ZXJDb2x1bW5JbnB1dCA9ICcnO1xyXG4gICAgaWYgKGNvbC50eXBlID09PSAnZHJvcGRvd24nKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmNsZWFyKCk7XHJcbiAgICAgIGNvbnN0IHNhdmVkSWRzID0gY29sPy5xdWVyeT8uX2lkcyB8fCBbXTtcclxuICAgICAgc2F2ZWRJZHMuZm9yRWFjaCgoaWQ6IHN0cmluZykgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuYWRkKGlkKSk7XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9ucyA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8uZmlsdGVyKFxyXG4gICAgICAgIChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbj8uaWQgfHwgb3B0aW9uPy5faWQgfHwgb3B0aW9uKVxyXG4gICAgICApO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJNZW51ZVNlYXJjaElucHV0KSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlck1lbnVlU2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTAwKTtcclxuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2wudHlwZSkpIHtcclxuICAgICAgdGhpcy5maXJzdENvbmRpdGlvbiA9IGNvbC5xdWVyeS5maXJzdF9jb25kaXRpb24gPyBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uIDogKGNvbC50eXBlID09ICdkYXRlJyA/ICdlcXVhbCcgOiAnY29udGFpbicpO1xyXG4gICAgICB0aGlzLmZpcnN0VmFsdWUgPSBjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSB8fCAnJztcclxuICAgICAgdGhpcy5jb25kaXRpb24gPSBjb2w/LnF1ZXJ5Py5jb25kaXRpb24gfHwgJ25vbmUnO1xyXG4gICAgICB0aGlzLnNlY29uZENvbmRpdGlvbiA9IGNvbC5xdWVyeS5maXJzdF9jb25kaXRpb24gPyBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uIDogKGNvbC50eXBlID09ICdkYXRlJyA/ICdlcXVhbCcgOiAnY29udGFpbicpO1xyXG4gICAgICB0aGlzLnNlY29uZFZhbHVlID0gY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlIHx8ICcnO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlck1lbnVlVGV4dGNoSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB9LCAxMDApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgaXNGaWx0ZXJPcGVuID0gZmFsc2VcclxuICBzZWxlY3RlZENvbHVtbkZvckZpbHRlcjogYW55O1xyXG4gIHNob3dGaWx0ZXJzID0gdGhpcy5zaG93U2lkZU1lbnUgPyBmYWxzZSA6IGZhbHNlO1xyXG5cclxuXHJcbiAgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sOiBhbnkpIHtcclxuICAgIGlmIChjb2wudHlwZSAhPT0gJ2Ryb3Bkb3duJykgcmV0dXJuO1xyXG4gICAgdGhpcy5vcGVuRmlsdGVyKGNvbCk7XHJcbiAgfVxyXG5cclxuICBvcGVuRmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBjb2w7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGxcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duID0gJyc7XHJcbiAgICB0aGlzLmFkZEZpbHRlckNvbHVtbklucHV0ID0gJyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyID0gY29sO1xyXG5cclxuICAgIGlmIChjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xyXG4gICAgICBjb25zdCBzYXZlZElkcyA9IGNvbD8ucXVlcnk/Ll9pZHMgfHwgW107XHJcbiAgICAgIHNhdmVkSWRzLmZvckVhY2goKGlkOiBzdHJpbmcpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmFkZChpZCkpO1xyXG5cclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/LmZpbHRlcihcclxuICAgICAgICAob3B0aW9uOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2wudHlwZSkpIHtcclxuICAgICAgdGhpcy5maXJzdENvbmRpdGlvbiA9IGNvbD8ucXVlcnk/LmZpcnN0X2NvbmRpdGlvbiB8fCAnY29udGFpbic7XHJcbiAgICAgIHRoaXMuZmlyc3RWYWx1ZSA9IGNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlIHx8ICcnO1xyXG4gICAgICB0aGlzLmNvbmRpdGlvbiA9IGNvbD8ucXVlcnk/LmNvbmRpdGlvbiB8fCAnbm9uZSc7XHJcbiAgICAgIHRoaXMuc2Vjb25kQ29uZGl0aW9uID0gY29sPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbiB8fCAnY29udGFpbic7XHJcbiAgICAgIHRoaXMuc2Vjb25kVmFsdWUgPSBjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUgfHwgJyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZmlyc3RWYWx1ZTogYW55ID0gJyc7XHJcbiAgZmlyc3RDb25kaXRpb24gPSAnJztcclxuICBzZWNvbmRWYWx1ZTogYW55ID0gJyc7XHJcbiAgc2Vjb25kQ29uZGl0aW9uID0gbnVsbDtcclxuICBjb25kaXRpb24gPSAnJztcclxuXHJcbiAgcmVzZXRUZXh0RmlsdGVyQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuZmlyc3RDb25kaXRpb24gPSAnY29udGFpbic7XHJcbiAgICB0aGlzLmZpcnN0VmFsdWUgPSAnJztcclxuICAgIHRoaXMuY29uZGl0aW9uID0gJ25vbmUnO1xyXG4gICAgdGhpcy5zZWNvbmRDb25kaXRpb24gPSBudWxsO1xyXG4gICAgdGhpcy5zZWNvbmRWYWx1ZSA9ICcnO1xyXG4gICAgdGhpcy5pc0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZVRvcEJ1dHRvbiA9ICcnO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQWxsVmFsdXNTZWxlY3Rpb25JbkRyb3Bkb3duRmlsdGVyKGNvbHVtbjogYW55KSB7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdGVkRmlsdGVyT3B0aW9uczogYW55W10gPSBbXVxyXG5cclxuICBjdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgdG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uOiBhbnkpIHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBjb25zdCBpZCA9IG9wdGlvbi5pZCB8fCBvcHRpb24uX2lkIHx8IG9wdGlvbjtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMoaWQpKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmRlbGV0ZShpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5hZGQoaWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5jb2x1bW5fZHJvcGRvd25fdmFsdWUuZmlsdGVyKChvcHRpb246IGFueSkgPT4gdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuaGFzKG9wdGlvbi5pZCB8fCBvcHRpb24uX2lkIHx8IG9wdGlvbikpXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICByZXNldEZpbHRlckNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuY2xlYXIoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zIS5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgICAvLyBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwiRmlsdGVyZWQgQ29sdW1ucyBBcmU6IFwiLCBmaWx0ZXJlZENvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlEcm9wZG93bkZpbHRlcigpIHtcclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgY29uc3QgZmluZENvbHVtbiA9IChjb2x1bW5zOiBhbnlbXSwgZmllbGQ6IHN0cmluZyk6IGFueSA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sLmZpZWxkID09PSBmaWVsZCkgcmV0dXJuIGNvbDtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgIGNvbnN0IGZvdW5kID0gZmluZENvbHVtbihjb2wuY2hpbGRyZW4sIGZpZWxkKTtcclxuICAgICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY29sdW1uID0gZmluZENvbHVtbih0aGlzLmNvbHVtbnMsIHRoaXMuc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuZmllbGQpO1xyXG4gICAgaWYgKGNvbHVtbikge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgICBjb2x1bW4ucXVlcnkgPSBjb2x1bW4ucXVlcnkgfHwge307XHJcbiAgICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBjb2x1bW4ucXVlcnkuX2lkcyB8fCBbXTtcclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIHN0YWxlIElEcyAobm90IHByZXNlbnQgaW4gU2V0KVxyXG4gICAgICAgIGNvbHVtbi5xdWVyeS5faWRzID0gY29sdW1uLnF1ZXJ5Ll9pZHMuZmlsdGVyKFxyXG4gICAgICAgICAgKGlkOiBhbnkpID0+IHRoaXMuY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhpZCkgICAvLyA8LS0gdXNlIC5oYXMoKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIC8vIEFkZCBuZXcgb25lcyBpZiBtaXNzaW5nXHJcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyU2VsZWN0ZWRJZHMuZm9yRWFjaChpZCA9PiB7XHJcbiAgICAgICAgICBpZiAoIWNvbHVtbi5xdWVyeS5faWRzLmluY2x1ZGVzKGlkKSkge1xyXG4gICAgICAgICAgICBjb2x1bW4ucXVlcnkuX2lkcy5wdXNoKGlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcclxuICAgICAgICBjb2x1bW4ucXVlcnkgPSB7XHJcbiAgICAgICAgICBmaXJzdF9jb25kaXRpb246IHRoaXMuZmlyc3RDb25kaXRpb24gfHwgJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IHRoaXMuZmlyc3RWYWx1ZSB8fCBudWxsLFxyXG4gICAgICAgICAgY29uZGl0aW9uOiB0aGlzLnNlY29uZFZhbHVlID8gdGhpcy5jb25kaXRpb246ICdub25lJyxcclxuICAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICB0aGlzLnNlY29uZFZhbHVlID8gdGhpcy5zZWNvbmRDb25kaXRpb24gOiBudWxsLFxyXG4gICAgICAgICAgc2Vjb25kX3ZhbHVlOiB0aGlzLnNlY29uZFZhbHVlIHx8IG51bGwsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAgICAgc2VhcmNoOiBjb2x1bW4uc2VhcmNoLFxyXG4gICAgICBxdWVyeTogY29sdW1uLnF1ZXJ5LFxyXG4gICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAgICAgX2lkczogY29sdW1uLl9pZHNcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG5cclxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWdbZXhpc3RpbmdJbmRleF0gPSBmaWx0ZXI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcucHVzaChmaWx0ZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuID0gZmFsc2U7XHJcbiAgICB0aGlzLmFjdGl2ZUNvbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzQWN0aXZlRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5hY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcnMpO1xyXG4gICAgfSwgMjAwKTtcclxuICB9XHJcblxyXG4gIC8vIGFwcGx5RmlsdGVyRnJvbUZpbHRlclJvdyhjb2x1bW46IGFueSkge1xyXG4gIC8vICAgY29uc3QgZmlsdGVyID0ge1xyXG4gIC8vICAgICBmaWVsZDogY29sdW1uLmZpZWxkLFxyXG4gIC8vICAgICBzZWFyY2g6IGNvbHVtbi5zZWFyY2gsXHJcbiAgLy8gICAgIHF1ZXJ5OiBjb2x1bW4ucXVlcnksXHJcbiAgLy8gICAgIHR5cGU6IGNvbHVtbi50eXBlLFxyXG4gIC8vICAgICBfaWRzOiBjb2x1bW4uX2lkc1xyXG4gIC8vICAgfTtcclxuICAvLyAgIHRoaXMuZmlsdGVyc0NvbmZpZy5wdXNoKGZpbHRlcik7XHJcbiAgLy8gICB0aGlzLmlzRmlsdGVyT3BlbiA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5pc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAvLyAgIHRoaXMuYWN0aXZlVG9wQnV0dG9uID0gJyc7XHJcbiAgLy8gICB0aGlzLmFjdGl2ZUZpbHRlckNlbGwgPSBudWxsO1xyXG4gIC8vICAgdGhpcy5pc1RocmVlRG90c0ZpbHRlck9wZW4gPSBmYWxzZTtcclxuICAvLyAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgLy8gICB0aGlzLmZpbHRlck9wdGlvbnMuZW1pdChmaWx0ZXJlZENvbHVtbnMpO1xyXG4gIC8vIH1cclxuXHJcbiAgaXNGaWx0ZXJBcHBsaWVkT25Db2x1bW4oY29sdW1uOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmZpbHRlcnNDb25maWcuc29tZShjb2wgPT4gY29sLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgLy8gU2lkZSBGaWx0ZXJzIExvZ2ljIGlzIGhlcmVcclxuXHJcbiAgdG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sOiBhbnksIGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgY2hlY2tlZCA9IChldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy5jaGVja2VkO1xyXG5cclxuICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWU/Lm1hcChcclxuICAgICAgICAob3B0OiBhbnkpID0+IG9wdC5pZCB8fCBvcHQuX2lkIHx8IG9wdFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcyA9IG5ldyBTZXQ8c3RyaW5nPihjb2wucXVlcnkuX2lkcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcyA9IFtdO1xyXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5jbGVhcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGlzQWxsU2lkZUZpbHRlck9wdGlvbnNTZWxlY3RlZChjb2w6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCFjb2w/LnF1ZXJ5Py5faWRzIHx8ICFBcnJheS5pc0FycmF5KGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID09PSBjb2wuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIG9uT3B0aW9uVG9nZ2xlKGNvbDogYW55LCBvcHRpb246IGFueSkge1xyXG4gICAgY29uc3Qgb3B0aW9uSWQgPSBvcHRpb24uaWQgfHwgb3B0aW9uLl9pZCB8fCBvcHRpb247XHJcbiAgICBpZiAoIWNvbC5xdWVyeS5faWRzKSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzID0gW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBpZHggPSBjb2wucXVlcnkuX2lkcy5pbmRleE9mKG9wdGlvbklkKTtcclxuICAgIGlmIChpZHggPiAtMSkge1xyXG4gICAgICBjb2wucXVlcnkuX2lkcy5zcGxpY2UoaWR4LCAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbC5xdWVyeS5faWRzLnB1c2gob3B0aW9uSWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgcmVzZXRTaWRlRmlsdGVyKGNvbDogYW55KSB7XHJcbiAgICBjb25zdCByZXNldENvbHVtblJlY3Vyc2l2ZWx5ID0gKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIGNvbHVtbnMpIHtcclxuICAgICAgICBpZiAoY29sdW1uLmZpZWxkID09PSBjb2wuZmllbGQpIHtcclxuICAgICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcclxuICAgICAgICAgICAgX2lkczogW10sXHJcbiAgICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbHVtbj8uY2hpbGRyZW4pICYmIGNvbHVtbj8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgaWYgKHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkoY29sdW1uLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIHJlc2V0Q29sdW1uUmVjdXJzaXZlbHkodGhpcy5jb2x1bW5zKTtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJzQ29uZmlnLmZpbmRJbmRleCgoZjogYW55KSA9PiBmLmZpZWxkID09PSBjb2wuZmllbGQpO1xyXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDb25maWcuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlRmlsdGVyQ2VsbCA9IG51bGw7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcblxyXG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVycyk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIGNsZWFyQWxsRmlsdGVycygpIHtcclxuICAgIHRoaXMudGFibGVWaWV3Py5mb3JFYWNoKChlbGUpID0+IHsgZWxlLmlzX3RlbXAgPSBmYWxzZSB9KTtcclxuICAgIGNvbnN0IHJlc2V0QWxsUmVjdXJzaXZlbHkgPSAoY29sdW1uczogYW55W10pID0+IHtcclxuICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xyXG4gICAgICAgIGlmIChjb2x1bW4ucXVlcnkpIHtcclxuICAgICAgICAgIGNvbHVtbi5xdWVyeSA9IHtcclxuICAgICAgICAgICAgX2lkczogW10sXHJcbiAgICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgY29uZGl0aW9uOiAnbm9uZScsXHJcbiAgICAgICAgICAgIHNlY29uZF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2x1bW4/LmNoaWxkcmVuKSAmJiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXNldEFsbFJlY3Vyc2l2ZWx5KGNvbHVtbi5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgcmVzZXRBbGxSZWN1cnNpdmVseSh0aGlzLmNvbHVtbnMpO1xyXG4gICAgdGhpcy5hY3RpdmVGaWx0ZXJDZWxsID0gbnVsbDtcclxuICAgIHRoaXMuZmlsdGVyc0NvbmZpZyA9IFtdO1xyXG4gICAgdGhpcy5yZWZyZXNoUHJldmlld0NvbHVtbnMoKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZmFsc2U7XHJcbiAgICB0aGlzLmZvbnRGYWltbHkgPSAnSW50ZXInO1xyXG4gICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSAnbWVkaXVtZCc7XHJcbiAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gMTQ7XHJcbiAgICB0aGlzLmdsb2JhbFNlYXJjaFRleHQgPSAnJztcclxuICAgIGNvbnN0IGV2ZW50ID0geyBldmVudFR5cGU6ICdyZXNldCcsIGRhdGE6IHsgdGFibGVUeXBlOiB0aGlzLnRhYmxlVHlwZSB9IH07XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogW10sXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY2xlYW5GaWx0ZXJkQ29sdW1ucygpO1xyXG4gICAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAgIH0sIDMwMCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYXBwbHlTaWRlRmlsdGVyKGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbi5xdWVyeS5maXJzdF92YWx1ZSAmJiAhY29sdW1uPy5xdWVyeT8uX2lkcy5sZW5ndGgpIHJldHVybjtcclxuICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgZmllbGQ6IGNvbHVtbi5maWVsZCxcclxuICAgICAgc2VhcmNoOiBjb2x1bW4uc2VhcmNoLFxyXG4gICAgICBxdWVyeTogY29sdW1uLnF1ZXJ5LFxyXG4gICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAgICAgX2lkczogY29sdW1uLl9pZHMgfHwgW11cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG5cclxuICAgIGlmIChleGlzdGluZ0luZGV4ICE9PSAtMSkge1xyXG4gICAgICAvLyBSZXBsYWNlIHRoZSBleGlzdGluZyBmaWx0ZXJcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnW2V4aXN0aW5nSW5kZXhdID0gZmlsdGVyO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gQWRkIG5ldyBmaWx0ZXJcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnLnB1c2goZmlsdGVyKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiB0aGlzLmNvbW1vblNldmljZS5nZXRGaWx0ZXJzRnJvbUNvbHVtbnModGhpcy5jb2x1bW5zLCB0aGlzLmZpbHRlcnNDb25maWcpLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgICBkZWxldGUgcXVlcnkuX190eXBlbmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHF1ZXJ5LFxyXG4gICAgICAgICAgLi4ucmVzdCxcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSB0aGlzLmNsZWFuRmlsdGVyZENvbHVtbnMoKTtcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVtb3ZlU2lkZUZpbHRlcihjb2x1bW46IGFueSkge1xyXG4gICAgaWYgKCFjb2x1bW4ucXVlcnkuZmlyc3RfdmFsdWUgJiYgIWNvbHVtbj8ucXVlcnk/Ll9pZHMubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IHRoaXMuZmlsdGVyc0NvbmZpZy5maW5kSW5kZXgoZiA9PiBmLmZpZWxkID09PSBjb2x1bW4uZmllbGQpO1xyXG4gICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoZXhpc3RpbmdJbmRleCwgMSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jbGVhbkZpbHRlcmRDb2x1bW5zKCk7XHJcbiAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucy5lbWl0KGZpbHRlcmVkQ29sdW1ucyk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgY29sbGFwc2VBbGxFeHBhbmRlZENlbGxzKCkge1xyXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRDZWxscz8uc2l6ZSA+IDApIHtcclxuICAgICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuXHJcbiAgdHJhY2tCeUZpZWxkKGluZGV4OiBudW1iZXIsIGNvbDogYW55KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBjb2w/LmZpZWxkO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGFjdGl2ZUZpbHRlcmVkQ29sdW1ucygpOiBhbnlbXSB7XHJcbiAgICBjb25zdCBjb2xsZWN0RmlsdGVyZWQgPSAoY29sdW1uczogYW55W10pOiBhbnlbXSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHQ6IGFueVtdID0gW107XHJcblxyXG4gICAgICBjb2x1bW5zLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICBpZiAoY29sLmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoY29sbGVjdEZpbHRlcmVkKGNvbC5jaGlsZHJlbikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaXNJbkZpbHRlcnNDb25maWcgPSB0aGlzLmZpbHRlcnNDb25maWcuc29tZShmID0+IGYuZmllbGQgPT09IGNvbC5maWVsZCk7XHJcbiAgICAgICAgaWYgKGlzSW5GaWx0ZXJzQ29uZmlnKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChjb2wpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gY29sbGVjdEZpbHRlcmVkKHRoaXMuY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICB0b2dnbGVPcGVuRmlsdGVyKCkge1xyXG4gICAgdGhpcy5zaG93RmlsdGVycyA9ICF0aGlzLnNob3dGaWx0ZXJzO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgLy8gQ2VsbCBFZGl0aW5nIFdvcmsgc3RhcnQgaGVyZVxyXG5cclxuICBlZGl0aW5nS2V5OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBhY3RpdmVDZWxsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgc2V0QWN0aXZlQ2VsbChyb3c6IGFueSwgY29sdW1uOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlQ2VsbCA9ICgocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgY29sdW1uLmZpZWxkKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGlzQWN0aXZlQ2VsbChyb3c6IGFueSwgY29sOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmFjdGl2ZUNlbGwgPT09ICgocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgY29sLmZpZWxkKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3RleHRBcmVhZElucHV0JykgdGV4dEFyZWFkSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+O1xyXG4gIGVuYWJsZUVkaXQocm93OiBhbnksIGNvbHVtbjogYW55LCBjbGlja2VkRnJvbURldGFpbHNCb3ggPSBmYWxzZSwgY2VsbENvbnRhaW5lcj86IEhUTUxFbGVtZW50KSB7XHJcbiAgICB0aGlzLmVkaXRpbkRyb3Bkb3duU2VhcmNoID0gJyc7XHJcbiAgICBpZiAocm93Py5fX3ZpcnR1YWxJbmRleCA9PSAwKSByZXR1cm47XHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT0gJ2ltYWdlJyB8fCAhY29sdW1uPy5pc19lZGl0YWJsZSkgcmV0dXJuO1xyXG4gICAgdGhpcy5lZGl0aW5nS2V5ID0gKChyb3cuaWQgfHwgcm93Ll9pZCkgKyAnLScgKyBjb2x1bW4uZmllbGQpO1xyXG5cclxuICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBkcm9wZG93bk1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY2VsbC1lZGl0aW5nLWRyb3Bkb3duLW1lbnUnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBpZiAoZHJvcGRvd25NZW51KSB7XHJcbiAgICAgICAgICBjb25zdCByZWN0ID0gZHJvcGRvd25NZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgY29uc3Qgd2luZG93SGVpZ2h0ID0gdGhpcy5kYXRhR3JpZENvbnRhaW5lci5uYXRpdmVFbGVtZW50Py5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgICAgICAgaWYgKHJlY3QuYm90dG9tID4gd2luZG93SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIGRyb3Bkb3duTWVudS5zdHlsZS50b3AgPSBgLSR7cmVjdC5oZWlnaHR9cHhgO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZHJvcGRvd25NZW51LnN0eWxlLnRvcCA9ICcxMDAlJztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghY2xpY2tlZEZyb21EZXRhaWxzQm94ICYmIHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2x1bW4uZmllbGQpPy5sZW5ndGggPiA1MCkge1xyXG4gICAgICB0aGlzLnRvZ2dsZUV4cGFuZE9mTG9uZ0NlbGxUZXh0KHJvdywgY29sdW1uLCB0aGlzLmNvbHVtbnMsIGZhbHNlKVxyXG4gICAgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghY2VsbENvbnRhaW5lcikgcmV0dXJuO1xyXG5cclxuICAgICAgY29uc3QgZm9jdXNhYmxlID0gY2VsbENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICdpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nXHJcbiAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xyXG5cclxuICAgICAgaWYgKGZvY3VzYWJsZSkge1xyXG4gICAgICAgIChmb2N1c2FibGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLmZvbnRTaXplID0gJzE2cHgnO1xyXG4gICAgICAgIGZvY3VzYWJsZS5mb2N1cygpO1xyXG5cclxuICAgICAgICBpZiAoZm9jdXNhYmxlIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCBmb2N1c2FibGUgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSB7XHJcbiAgICAgICAgICBmb2N1c2FibGUuc2VsZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZGlzYWJsZUVkaXQocm93OiBhbnksIGNvbHVtbjogYW55LCBjb250cm9sPzogYW55KSB7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgaWYgKCF0aGlzLmVkaXRpbmdLZXkpIHJldHVyblxyXG4gICAgdGhpcy5jaGVja1Jvd0VkaXRBbmRFbWl0VmFsdWUocm93LCBjb2x1bW4sIHJvd1tjb2x1bW4uZmllbGRdKVxyXG4gICAgdGhpcy5lZGl0aW5nS2V5ID0gbnVsbDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sdW1uPy5maWVsZCk7XHJcbiAgICBpZiAoIWN1cnJlbnQgfHwgKGNvbHVtbi50eXBlID09ICdlbWFpbCcgJiYgIXRoaXMudmFsaWRhdGVFbWFpbChjdXJyZW50KSkpIHtcclxuICAgICAgY29uc3Qgb3JpZ2luYWxSb3cgPSB0aGlzLm9yaWdpbmFsRGF0YVNldC5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PSByb3cuaWQgfHwgaXRlbS5pZCA9PSByb3cuX2lkKTtcclxuICAgICAgY29uc3Qgb3JpZ2luYWwgPSB0aGlzLmdldE5lc3RlZFZhbHVlKG9yaWdpbmFsUm93LCBjb2x1bW4/LmZpZWxkKTtcclxuICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZShyb3csIGNvbHVtbiwgb3JpZ2luYWwpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbWFpbFJlZ2V4ID0gL15bYS16QS1aMC05Ll8lKy1dK0BbYS16QS1aMC05Li1dK1xcLlthLXpBLVpdezIsfSQvO1xyXG4gIHZhbGlkYXRlRW1haWwodmFsdWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZW1haWxSZWdleC50ZXN0KHZhbHVlKTtcclxuICB9XHJcbiAgYWxsb3dPbmx5TnVtYmVycyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgY2hhckNvZGUgPSBldmVudC53aGljaCA/IGV2ZW50LndoaWNoIDogZXZlbnQua2V5Q29kZTtcclxuICAgIGlmIChjaGFyQ29kZSA8IDQ4IHx8IGNoYXJDb2RlID4gNTcpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShyb3c6IGFueSwgY29sdW1uOiBhbnksIHZhbHVlPzogYW55KSB7XHJcbiAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgIGNvbnN0IG9yaWdpbmFsUm93ID0gdGhpcy5vcmlnaW5hbERhdGFTZXQ/LmZpbmQoXHJcbiAgICAgIChyOiBhbnkpID0+IHIuaWQgPT09IHJvdy5pZCB8fCByLl9pZCA9PT0gcm93Ll9pZFxyXG4gICAgKTtcclxuICAgIGlmICghb3JpZ2luYWxSb3cpIHJldHVybjtcclxuICAgIC8vIGNvbnN0IGNsZWFuID0gKG9iajogYW55KSA9PiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgLy8gY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbHVtbi5maWVsZCk7XHJcbiAgICAvLyBjb25zdCBvcmlnaW5hbFZhbHVlID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShvcmlnaW5hbFJvdywgY29sdW1uLmZpZWxkKTtcclxuICAgIGNvbnN0IG9yaWdpblZhbHVlID0gdGhpcy5kYXRhU2V0LmZpbmQoKHI6IGFueSkgPT4gci5pZCA9PT0gcm93LmlkKTtcclxuICAgIGNvbnN0IGNoYW5nZWRWYWx1ZSA9IG9yaWdpblZhbHVlLnZlcmlmaWVkID09IHZhbHVlO1xyXG4gICAgLy8gaWYgKGNoYW5nZWRWYWx1ZSkgcmV0dXJuO1xyXG4gICAgLy8gY29uc3QgaGFzQ2hhbmdlZCA9IHRoaXMuY29tbW9uU2V2aWNlLmhhc0ZpZWxkQ2hhbmdlZChjdXJyZW50VmFsdWUsIG9yaWdpbmFsVmFsdWUsIGNvbHVtbi50eXBlKTtcclxuICAgIC8vIGlmICghaGFzQ2hhbmdlZCkgcmV0dXJuO1xyXG4gICAgLy8gdGhpcy5zZXROZXN0ZWRWYWx1ZShvcmlnaW5hbFJvdywgY29sdW1uLCB2YWx1ZSk7XHJcblxyXG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcclxuICAgICAgZGF0YTogeyAuLi5vcmlnaW5WYWx1ZSB9LFxyXG4gICAgICBldmVudFR5cGU6ICdvbkNlbGxFZGl0JyxcclxuICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICBjb2x1bW46IGNvbHVtblxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHNlbmRPYmopXHJcbiAgICAvLyB9LCAxMDApO1xyXG4gIH1cclxuXHJcblxyXG4gIGlzRWRpdGluZyhyb3c6IGFueSwgY29sOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRpbmdLZXkgPT09ICgocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgY29sLmZpZWxkKTtcclxuICB9XHJcblxyXG4gIHNldE5lc3RlZFZhbHVlKG9iajogYW55LCBjb2x1bW46IGFueSwgb3B0aW9uOiBhbnksIGNhbGxlZEZyb21JbnB1dCA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXRoID0gY29sdW1uLmZpZWxkO1xyXG4gICAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoJy4nKTtcclxuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzLnBvcCgpO1xyXG4gICAgY29uc3QgcGFyZW50ID0ga2V5cy5yZWR1Y2UoKGFjYzogeyBbeDogc3RyaW5nXToge307IH0sIGtleTogc3RyaW5nIHwgbnVtYmVyKSA9PiBhY2Nba2V5XSA/Pz0ge30sIG9iaik7XHJcblxyXG4gICAgaWYgKHBhcmVudCAmJiBsYXN0S2V5KSB7XHJcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiBvcHRpb24gIT09IG51bGwpIHtcclxuICAgICAgICAvLyBjYXNlOiBkcm9wZG93biBvYmplY3Qge2lkLCB2YWx1ZX1cclxuICAgICAgICBwYXJlbnQuaWQgPSBvcHRpb24uaWQ7XHJcbiAgICAgICAgcGFyZW50W2xhc3RLZXldID0gb3B0aW9uLnZhbHVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGNhc2U6IHBsYWluIHN0cmluZyBvciBudW1iZXJcclxuICAgICAgICBwYXJlbnRbbGFzdEtleV0gPSBvcHRpb247XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBzZW5kT2JqID0ge1xyXG4gICAgICBkYXRhOiB7IC4uLm9iaiB9LFxyXG4gICAgICBldmVudFR5cGU6ICdvbkNlbGxFZGl0JyxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGNhbGxlZEZyb21JbnB1dCkge1xyXG4gICAgICB0aGlzLmNoZWNrUm93RWRpdEFuZEVtaXRWYWx1ZShvYmosIGNvbHVtbiwgb3B0aW9uKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgZ29Ub1BhZ2UocGFnZTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnPy5wYWdlID09IHBhZ2UpIHJldHVybjtcclxuICAgIGlmIChwYWdlIDwgMSB8fCBwYWdlID4gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUGFnZXMpIHJldHVybjtcclxuICAgIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5wYWdlID0gcGFnZTtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICBsaW1pdDogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LFxyXG4gICAgICAgIHBhZ2U6IHBhZ2UsXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ3BhZ2VDaGFuZ2UnLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPSAxO1xyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZykubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgICBpZiAocXVlcnkpIHtcclxuICAgICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgcXVlcnksXHJcbiAgICAgICAgICAuLi5yZXN0LFxyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgICAgb2JqOiB7XHJcbiAgICAgICAgICBsaW1pdDogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0LFxyXG4gICAgICAgICAgcGFnZTogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBldmVudFR5cGU6ICdwYWdlQ2hhbmdlJyxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuICAgIH0sIDcwMCk7XHJcbiAgfVxyXG5cclxuICBhY3Rpb25QcmVzZXQoZGF0YTogYW55LCB0eXBlOiBhbnkpIHtcclxuICAgIGRhdGEuY29sdW1ucyA9IGRhdGEuY29sdW1ucy5tYXAoKHsgX2lkLCBmaWx0ZXJWYWx1ZSwgc2VhcmNoLCBjb2x1bW5fZHJvcGRvd25fdmFsdWUsIHF1ZXJ5LCBfX3R5cGVuYW1lLCAuLi5yZXN0IH06IGFueSkgPT4gcmVzdCk7XHJcbiAgICB0aGlzLnRhYmxlVmlldz8uZm9yRWFjaCgoZWxlKSA9PiB7IGVsZS5pc190ZW1wID0gZmFsc2UgfSk7XHJcblxyXG4gICAge1xyXG4gICAgICB0aGlzLmJvZHlUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuYm9keVRleHRGb250c1NpemUsXHJcbiAgICAgICAgdGhpcy5mb250RmFpbWx5ID0gZGF0YS5jb25maWcuZm9udEZhaW1seSxcclxuICAgICAgICBkYXRhLmZpbHRlcnMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5fX3R5cGVuYW1lO1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQucXVlcnkpIHtcclxuICAgICAgICAgICAgZGVsZXRlIGVsZW1lbnQucXVlcnkuX190eXBlbmFtZTtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIHR5cGVvZiBlbGVtZW50LnF1ZXJ5ID09PSAnb2JqZWN0JyAmJlxyXG4gICAgICAgICAgICAgIGVsZW1lbnQucXVlcnkgIT09IG51bGwgJiZcclxuICAgICAgICAgICAgICBPYmplY3Qua2V5cyhlbGVtZW50LnF1ZXJ5KS5sZW5ndGggPT09IDBcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuaGVhZGVyVGV4dEZvbnRzU2l6ZSxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSBkYXRhLmNvbmZpZy5zZWxlY3RlZFRhYmxlTGF5b3V0LFxyXG4gICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZGF0YS5jb25maWcuc2hvd1ZlcnRpY2FsQm9yZGVyLFxyXG4gICAgICAgIHRoaXMuY3VycmVudElkRm9yVXBkYXRlUHJlc2V0ID0gZGF0YS5pZDtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnID0gZGF0YS5maWx0ZXJzO1xyXG4gICAgfVxyXG4gICAgZGVsZXRlIGRhdGE/Ll9fdHlwZW5hbWU7XHJcbiAgICBkZWxldGUgZGF0YT8uaXNfdGVtcDtcclxuICAgIGRlbGV0ZSBkYXRhPy5jb25maWcuX190eXBlbmFtZTtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICBkYXRhOiBkYXRhXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogdHlwZVxyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuICB9XHJcblxyXG4gIGN1cnJlbnRJZEZvclVwZGF0ZVByZXNldCA9ICcnO1xyXG4gIGN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZTogYW55O1xyXG4gIHRlbXBfc3RhdGUgPSB7XHJcbiAgICBpZDogJycsXHJcbiAgICBpc190ZW1wOiBmYWxzZVxyXG4gIH1cclxuICBhc3luYyBzZWxlY3RGaWx0ZXIoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLnRlbXBfc3RhdGUgPSB7XHJcbiAgICAgIGlkOiBkYXRhLmlkLFxyXG4gICAgICBpc190ZW1wOiB0cnVlXHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlVmlldz8uZm9yRWFjaCgoZWxlKSA9PiB7IGVsZS5pc190ZW1wID0gZmFsc2UgfSk7XHJcbiAgICB0aGlzLnRhYmxlVmlldyA9IHRoaXMudGFibGVWaWV3Lm1hcChpdGVtID0+ICh7XHJcbiAgICAgIC4uLml0ZW0sXHJcbiAgICAgIGlzX3RlbXA6IGl0ZW0uaWQgPT0gZGF0YT8uaWRcclxuICAgIH0pKTtcclxuICAgIHRoaXMuY29sdW1ucyA9IGRhdGEuY29sdW1ucztcclxuICAgIHtcclxuICAgICAgdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9IGRhdGEuY29uZmlnLmJvZHlUZXh0Rm9udHNTaXplLFxyXG4gICAgICAgIHRoaXMuZm9udEZhaW1seSA9IGRhdGEuY29uZmlnLmZvbnRGYWltbHksXHJcbiAgICAgICAgZGF0YS5maWx0ZXJzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuX190eXBlbmFtZTtcclxuXHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5xdWVyeSkge1xyXG4gICAgICAgICAgICBkZWxldGUgZWxlbWVudC5xdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgdHlwZW9mIGVsZW1lbnQucXVlcnkgPT09ICdvYmplY3QnICYmXHJcbiAgICAgICAgICAgICAgZWxlbWVudC5xdWVyeSAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAgIE9iamVjdC5rZXlzKGVsZW1lbnQucXVlcnkpLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnF1ZXJ5ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gdGhpcy5nbG9iYWxTZWFyY2ggPSBkYXRhLmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSxcclxuICAgICAgdGhpcy5oZWFkZXJUZXh0Rm9udHNTaXplID0gZGF0YS5jb25maWcuaGVhZGVyVGV4dEZvbnRzU2l6ZSxcclxuICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQgPSBkYXRhLmNvbmZpZy5zZWxlY3RlZFRhYmxlTGF5b3V0LFxyXG4gICAgICAgIHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyID0gZGF0YS5jb25maWcuc2hvd1ZlcnRpY2FsQm9yZGVyLFxyXG4gICAgICAgIHRoaXMuY3VycmVudElkRm9yVXBkYXRlUHJlc2V0ID0gZGF0YS5pZDtcclxuICAgICAgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUgPSBzdHJ1Y3R1cmVkQ2xvbmUoZGF0YSk7XHJcbiAgICAgIHRoaXMucHJlc2V0TmFtZSA9IGRhdGE/Lm5hbWU7XHJcbiAgICAgIHRoaXMucHJlc2V0RmlsdGVyID0gZGF0YT8uYWN0aXZlRmlsdGVycyB8fCBmYWxzZTtcclxuICAgICAgdGhpcy5maWx0ZXJzQ29uZmlnID0gZGF0YS5maWx0ZXJzO1xyXG4gICAgICBhd2FpdCB0aGlzLmFwcGx5RmlsdGVyb3B0aW9uTGlzdCgpO1xyXG4gICAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgZGF0YS5jb2x1bW5zID0gdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKTtcclxuICAgICAgZGVsZXRlIGRhdGE/Ll9fdHlwZW5hbWU7XHJcbiAgICAgIGRlbGV0ZSBkYXRhPy5pc190ZW1wO1xyXG4gICAgICBkZWxldGUgZGF0YT8uY29uZmlnLl9fdHlwZW5hbWU7XHJcbiAgICB9XHJcbiAgICBpZiAoZGF0YT8uaXNfZGVhZnVsdCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5hY3Rpb25QcmVzZXQoZGF0YSwgJ3NldFByZXNldCcpXHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgZGF0YTogZGF0YVxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6ICdzZWxlY3QnXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgc2F2ZVByZXNldChjb250cm9sPzogYW55KSB7XHJcbiAgICBpZiAoY29udHJvbD8uaW52YWxpZCkge1xyXG4gICAgICBjb250cm9sPy5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG5hbWVzID0gdGhpcy5nZXRGaWx0ZXJIZWFkZXJzKHRoaXMuZmlsdGVyc0NvbmZpZywgdGhpcy5jb2x1bW5zKTtcclxuICAgIHRoaXMucHJlc2V0RmlsdGVyID0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCA/IHRydWUgOiB0aGlzLnByZXNldEZpbHRlcjtcclxuICAgIGxldCBzZWxlY3RlZERhdGE6IGFueSA9IHRoaXMudGFibGVWaWV3LmZpbmQoKGVsZSkgPT4gZWxlLmlkID09IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpO1xyXG4gICAgbGV0IGNvbmZpZyA9IHtcclxuICAgICAgZm9udEZhaW1seTogdGhpcy5mb250RmFpbWx5LFxyXG4gICAgICBib2R5VGV4dEZvbnRzU2l6ZTogKyh0aGlzLmJvZHlUZXh0Rm9udHNTaXplIHx8IDE0KSxcclxuICAgICAgaGVhZGVyVGV4dEZvbnRzU2l6ZTogKyh0aGlzLmhlYWRlclRleHRGb250c1NpemUgfHwgMTQpLFxyXG4gICAgICBvZGRSb3dzQmFja2dyb3VuZENvbG9yOiB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID8gdGhpcy5vZGRSb3dzQmFja2dyb3VuZENvbG9yIDogdW5kZWZpbmVkLFxyXG4gICAgICBzaG93VmVydGljYWxCb3JkZXI6IHRoaXMuc2hvd1ZlcnRpY2FsQm9yZGVyLFxyXG4gICAgICBzZWxlY3RlZFRhYmxlTGF5b3V0OiB0aGlzLnNlbGVjdGVkVGFibGVMYXlvdXQsXHJcbiAgICAgIGdsb2JhbFNlYXJjaDogdGhpcy50YWJsZVNlYXJjaCxcclxuICAgICAgZmlsdGVyTmFtZXM6IG5hbWVzLFxyXG4gICAgICB0b3RhbENvdW50OiB0aGlzLnBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzLFxyXG4gICAgICByb3dTaGFkaW5nRW5hYmxlZDogdGhpcy5yb3dTaGFkaW5nRW5hYmxlZFxyXG5cclxuICAgIH1cclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICBuYW1lOiB0aGlzLnRhYmxlRmlsdGVyVmlld0lkID8gc2VsZWN0ZWREYXRhPy5uYW1lIDogdGhpcy5wcmVzZXROYW1lLFxyXG4gICAgICAgIGFjdGl2ZUZpbHRlcnM6IHRoaXMucHJlc2V0RmlsdGVyLFxyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgICAgZmlsdGVyczogdGhpcy5wcmVzZXRGaWx0ZXJcclxuICAgICAgICAgID8gdGhpcy5maWx0ZXJzQ29uZmlnPy5tYXAoKHsgX190eXBlbmFtZSwgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7IF9fdHlwZW5hbWU6IF9faW5uZXIsIC4uLmNsZWFuUXVlcnkgfSA9IHF1ZXJ5IHx8IHt9O1xyXG4gICAgICAgICAgICByZXR1cm4geyAuLi5yZXN0LCBxdWVyeTogY2xlYW5RdWVyeSB9O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIDogW10sXHJcbiAgICAgICAgY29uZmlnOiBjb25maWcsXHJcbiAgICAgICAgaWQ6IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgfHwgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGU/LmlkLFxyXG4gICAgICAgIGxvYWRpbmdDYWxsOiBjb250cm9sID09ICdtb3VzZVVwJyA/IGZhbHNlIDogdHJ1ZSxcclxuICAgICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZVxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6IHRoaXMudGFibGVGaWx0ZXJWaWV3SWQgfHwgIXRoaXMuaXNUYWJsZVByZXNldE5vdENoYW5nZWQgPyAndXBkYXRlUHJlc2V0JyA6ICdjcmVhdGVQcmVzZXQnXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBxdWVyeSxcclxuICAgICAgICAuLi5yZXN0LFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IHNlbmREYXRhID0ge1xyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNsZWFuQ29sdW1ucyh0aGlzLmNvbHVtbnMpLFxyXG4gICAgICBmaWx0ZXJzOiBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zLFxyXG4gICAgICBub19vZl9yZWNvcmRzOiBOdW1iZXIodGhpcy5wYWdpbmF0aW9uQ29uZmlnLmxpbWl0KSxcclxuICAgICAgdHlwZTogdGhpcy50YWJsZVR5cGUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5jcmVhdGVVcGRhdGVDb25maWdMaXN0aW5nLmVtaXQoc2VuZERhdGEpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgICB9LCA1MDApO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEZpbHRlckhlYWRlcnMoZmlsdGVyczogYW55W10sIGNvbHVtbnM6IGFueVtdKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1hdGNoZWRIZWFkZXJzID0gZmlsdGVyc1xyXG4gICAgICAubWFwKGYgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbHVtbnMuZmluZChjID0+IGMuZmllbGQgPT09IGYuZmllbGQpO1xyXG4gICAgICAgIHJldHVybiBjb2x1bW4gPyBjb2x1bW4uaGVhZGVyIDogbnVsbDtcclxuICAgICAgfSlcclxuICAgICAgLmZpbHRlcihoZWFkZXIgPT4gISFoZWFkZXIpO1xyXG5cclxuICAgIHJldHVybiBtYXRjaGVkSGVhZGVycy5qb2luKCcsICcpO1xyXG4gIH1cclxuXHJcblxyXG4gIHRvZ2dsZVJvd1NoYWRpbmcoKSB7XHJcbiAgICB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLnJvd1NoYWRpbmdFbmFibGVkID8gJyNmMWYxZjEnIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5vbkZvbnRDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlUYWJsZShpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcbiAgYWN0aXZlUm93OiBhbnlcclxuICBhY3RpdmVSb3dDb2w6IGFueTtcclxuXHJcbiAgLy8gVHJhY2sgZXhwYW5kZWQgY2VsbHMgYXMgYSBTZXQgb2YgdW5pcXVlIHJvdytjb2wgaWRlbnRpZmllcnNcclxuXHJcbiAgZ2V0Q2VsbEtleShyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke3RoaXMuZ2V0Um93SWQocm93KX1fJHtjb2w/LmZpZWxkfWA7XHJcbiAgfVxyXG5cclxuICBleHBhbmRlZENlbGxzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcclxuICBwcml2YXRlIHpDb3VudGVyID0gMjE7XHJcblxyXG4gIHNob3dEZXRhaWxzQm94ID0gZmFsc2U7XHJcblxyXG4gIHRvZ2dsZUV4cGFuZE9mTG9uZ0NlbGxUZXh0KFxyXG4gICAgcm93OiBhbnksXHJcbiAgICBjb2w6IGFueSxcclxuICAgIGNvbHVtbnM6IGFueVtdLFxyXG4gICAgZXhwYW5kV2hvbGVSb3cgPSBmYWxzZVxyXG4gICkge1xyXG4gICAgY29uc3QgZXhwYW5kQ2VsbHMgPSAodGFyZ2V0Um93OiBhbnkpID0+IHtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdpbWFnZScpIHJldHVybjtcclxuICAgICAgICBjb25zdCB0ZXh0ID0gdGFyZ2V0Um93W2MuZmllbGRdO1xyXG5cclxuICAgICAgICBpZiAoKHR5cGVvZiB0ZXh0ID09PSAnc3RyaW5nJyAmJiB0ZXh0Lmxlbmd0aCA+IDUwKSB8fCAoQXJyYXkuaXNBcnJheSh0ZXh0KSAmJiB0ZXh0Py5sZW5ndGggPiAxKSkge1xyXG4gICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5nZXRSb3dJZCh0YXJnZXRSb3cpICsgJy0nICsgYy5maWVsZDtcclxuICAgICAgICAgIHRoaXMuekNvdW50ZXIrKztcclxuICAgICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5zZXQoa2V5LCB0aGlzLnpDb3VudGVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgY29uc3QgY29sbGVjdEtleXNGb3JSb3cgPSAodGFyZ2V0Um93OiBhbnkpID0+IHtcclxuICAgICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBbXTtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdpbWFnZScpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgdGV4dCA9IHRhcmdldFJvd1tjLmZpZWxkXTtcclxuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQubGVuZ3RoID4gNTAgfHwgKEFycmF5LmlzQXJyYXkodGV4dCkgJiYgdGV4dD8ubGVuZ3RoID4gMSkpIHtcclxuICAgICAgICAgIGtleXMucHVzaCh0aGlzLmdldFJvd0lkKHRhcmdldFJvdykgKyAnLScgKyBjLmZpZWxkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4ga2V5cztcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGV4cGFuZFdob2xlUm93KSB7XHJcbiAgICAgIGxldCByb3dLZXlzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICBjb25zdCB0ZXh0ID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbD8uZmllbGQpO1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0ZXh0KSAmJiB0ZXh0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICByb3dLZXlzID0gY29sbGVjdEtleXNGb3JSb3cocm93KTtcclxuICAgICAgICByb3c/LmNoaWxkcmVuPy5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByb3dLZXlzLnB1c2goLi4uY29sbGVjdEtleXNGb3JSb3coY2hpbGQpKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByb3dLZXlzID0gY29sbGVjdEtleXNGb3JSb3cocm93KTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBhbGxFeHBhbmRlZCA9IHJvd0tleXMuZXZlcnkoayA9PiB0aGlzLmV4cGFuZGVkQ2VsbHMuaGFzKGspKTtcclxuICAgICAgdGhpcy5leHBhbmRlZENlbGxzLmNsZWFyKCk7XHJcbiAgICAgIGlmICghYWxsRXhwYW5kZWQpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyb3cuY2hpbGRyZW4pICYmIHJvdy5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBleHBhbmRDZWxscyhyb3cpO1xyXG4gICAgICAgICAgcm93Py5jaGlsZHJlbj8uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4gZXhwYW5kQ2VsbHMoY2hpbGQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZXhwYW5kQ2VsbHMocm93KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0Um93SWQocm93KSArICctJyArIGNvbC5maWVsZDtcclxuICAgICAgaWYgKGNvbC50eXBlID09PSAnaW1hZ2UnKSByZXR1cm47XHJcblxyXG4gICAgICBpZiAoIXRoaXMuZXhwYW5kZWRDZWxscy5oYXMoa2V5KSkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRDZWxscy5jbGVhcigpO1xyXG4gICAgICAgIHRoaXMuekNvdW50ZXIrKztcclxuICAgICAgICB0aGlzLmV4cGFuZGVkQ2VsbHMuc2V0KGtleSwgdGhpcy56Q291bnRlcik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5leHBhbmRlZENlbGxzLmRlbGV0ZShrZXkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zaG93RGV0YWlsc0JveCA9IGZhbHNlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuaXNPcGVuVG9Ub3Aocm93KVxyXG4gICAgfSwgMCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBpc09wZW5Ub1RvcChyb3c6IGFueSkge1xyXG4gICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kYXRhLWdyaWQtYm9keS13cmFwcGVyJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xyXG4gICAgaWYgKCF3cmFwcGVyKSByZXR1cm4gZmFsc2U7XHJcbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaCgoY29sOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaWQgPSAocm93LmlkIHx8IHJvdy5faWQpICsgJy0nICsgKGNvbC5pZCB8fCBjb2wuX2lkKTtcclxuICAgICAgY29uc3QgYm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgICBpZiAoIWJveCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjb25zdCBib3hSZWN0ID0gYm94LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICAgIGNvbnN0IGlzT3ZlcmZsb3dpbmdCb3R0b20gPSBib3hSZWN0LmJvdHRvbSA+IHdyYXBwZXJSZWN0LmJvdHRvbTtcclxuICAgICAgY29uc3QgaXNPdmVyZmxvd2luZ1RvcCA9IGJveFJlY3QudG9wIDwgd3JhcHBlclJlY3QudG9wO1xyXG4gICAgICBpZiAoaXNPdmVyZmxvd2luZ0JvdHRvbSAmJiAhaXNPdmVyZmxvd2luZ1RvcCkge1xyXG4gICAgICAgIGNvbnN0IGJveEhlaWdodCA9IGJveC5vZmZzZXRIZWlnaHQgfHwgMDtcclxuICAgICAgICBjb25zdCBvZmZzZXQgPSBib3hIZWlnaHQgKyA0O1xyXG4gICAgICAgIGJveC5zdHlsZS50b3AgPSBgJHstb2Zmc2V0fXB4YDtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYm94LnN0eWxlLmJvdHRvbSA9IGBhdXRvYDtcclxuICAgICAgICBib3guc3R5bGUudG9wID0gYDEwMCVgO1xyXG4gICAgICAgIGJveC5zdHlsZS50cmFuc2Zvcm0gPSBgdHJhbnNsYXRlWSgwKWA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSlcclxuICAgIHRoaXMuc2hvd0RldGFpbHNCb3ggPSB0cnVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGlzRXhwYW5kZWQocm93OiBhbnksIGNvbDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZENlbGxzLmhhcyh0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0WkluZGV4KHJvdzogYW55LCBjb2w6IGFueSk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5leHBhbmRlZENlbGxzLmdldCh0aGlzLmdldFJvd0lkKHJvdykgKyAnLScgKyBjb2wuZmllbGQpID8/IDIxO1xyXG4gIH1cclxuXHJcbiAgaXNPdmVyZmxvd2luZyhlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpOiBib29sZWFuIHtcclxuICAgIGlmICghZWxlbWVudCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIGVsZW1lbnQuc2Nyb2xsV2lkdGggPiBlbGVtZW50LmNsaWVudFdpZHRoO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIFBpY3R1cmUgY2VsbCBMb2dpY1xyXG4gIGNvbG9yQ29tYmluYXRpb24gPSBbJ3BpYy1jb21iMScsICdwaWMtY29tYjInLCAncGljLWNvbWI0J107XHJcbiAgZ2V0RHluYW1pY0NsYXNzKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIW5hbWUpIHJldHVybiB0aGlzLmNvbG9yQ29tYmluYXRpb25bMF07XHJcbiAgICBjb25zdCBoYXNoID0gQXJyYXkuZnJvbShuYW1lKS5yZWR1Y2UoKGFjYywgY2hhcikgPT4gYWNjICsgY2hhci5jaGFyQ29kZUF0KDApLCAwKTtcclxuICAgIGNvbnN0IGluZGV4ID0gaGFzaCAlIHRoaXMuY29sb3JDb21iaW5hdGlvbj8ubGVuZ3RoO1xyXG4gICAgcmV0dXJuIHRoaXMuY29sb3JDb21iaW5hdGlvbltpbmRleF07XHJcbiAgfVxyXG5cclxuICBnZXRJbml0aWFscyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJ05BJztcclxuICAgIGNvbnN0IHBhcnRzID0gbmFtZS50cmltKCkuc3BsaXQoJyAnKTtcclxuICAgIHJldHVybiAocGFydHNbMF1bMF0gKyAocGFydHNbMV0/LlswXSB8fCAnJykpLnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgYWN0aW9uSGlkZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgeFBvcyA9IDA7XHJcbiAgeVBvcyA9IDA7XHJcbiAgaXNWaXNpYmxlID0gZmFsc2U7XHJcbiAgZGVhdGlsc0xpc3Q6IGFueTtcclxuICBvcGVuRXhwZW5kSW5kZXg6IGFueTtcclxuICBwb3NpdGlvbmVkWWV0ID0gZmFsc2U7XHJcblxyXG4gIG9uUmlnaHRDbGljayhldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQgfCBhbnksIGRlYXRpbHNMaXN0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGlmIChkZWF0aWxzTGlzdD8uYWN0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9ucyA9IGRlYXRpbHNMaXN0LmFjdGlvbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoIShldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZGVhdGlsc0xpc3QuX192aXJ0dWFsSW5kZXggPT0gMCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMueFBvcyA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WCA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcclxuICAgIHRoaXMueVBvcyA9IChldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpID8gZXZlbnQuY2xpZW50WSA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTtcclxuICAgIC8vIHRoaXMueFBvcyA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICAvLyB0aGlzLnlQb3MgPSBldmVudC5jbGllbnRZO1xyXG4gICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xyXG4gICAgdGhpcy5wb3NpdGlvbmVkWWV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmRlYXRpbHNMaXN0ID0gZGVhdGlsc0xpc3Q7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgbWVudUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29udGV4dC1tZW51JykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghbWVudUVsZW1lbnQpIHJldHVybjtcclxuICAgICAgY29uc3QgbWVudVdpZHRoID0gbWVudUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIGNvbnN0IG1lbnVIZWlnaHQgPSBtZW51RWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcbiAgICAgIGNvbnN0IHZpZXdwb3J0V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICAgICAgY29uc3Qgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICAgIGxldCB4ID0gKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkgPyBldmVudC5jbGllbnRYIDogZXZlbnQudG91Y2hlc1swXS5jbGllbnRYOyAvL2V2ZW50LmNsaWVudFg7XHJcbiAgICAgIGxldCB5ID0gKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkgPyBldmVudC5jbGllbnRZIDogZXZlbnQudG91Y2hlc1swXS5jbGllbnRZOyAvL2V2ZW50LmNsaWVudFk7XHJcbiAgICAgIGlmICh4ICsgbWVudVdpZHRoID4gdmlld3BvcnRXaWR0aCkge1xyXG4gICAgICAgIHggPSB2aWV3cG9ydFdpZHRoIC0gbWVudVdpZHRoIC0gMTA7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHkgKyBtZW51SGVpZ2h0ID4gdmlld3BvcnRIZWlnaHQpIHtcclxuICAgICAgICB5ID0gdmlld3BvcnRIZWlnaHQgLSBtZW51SGVpZ2h0IC0gMTA7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy54UG9zID0geDtcclxuICAgICAgdGhpcy55UG9zID0geTtcclxuICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbmVkWWV0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHNlbmRPYmogPSB7XHJcbiAgICAgIG9iajogdGhpcy5kZWF0aWxzTGlzdCxcclxuICAgICAgZXZlbnRUeXBlOiBhY3Rpb24sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5wb3NpdGlvbmVkWWV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KHNlbmRPYmopO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uVmVyaWZ5Q2xpY2sodHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0ZXh0ID0gdHlwZT8udG9Mb3dlckNhc2UoKTtcclxuICAgIGlmKHRleHQgPT0gJ2FyY2hpdmUnIHx8IHRleHQgPT0gJ3VuYXJjaGl2ZSdcclxuICAgICAgLy8gfHwgdGV4dCA9PSAnZGVsZXRlJyB8fCB0ZXh0ID09ICdyZXN0b3JlJyB8fCB0ZXh0ID09ICdyZW1vdmUnIHx8IHRleHQgPT0gJ2RlYWN0aXZhdGUnIHx8IHRleHQgPT0gJ2FjdGl2YXRlJyB8fCB0ZXh0ID09ICdibG9jaycgfHwgdGV4dCA9PSAndW5ibG9jaydcclxuICAgICAgLy8gfHwgdGV4dCA9PSAnZW5hYmxlJyB8fCB0ZXh0ID09ICdkaXNhYmxlJyB8fCB0ZXh0ID09ICdhcHByb3ZlJyB8fCB0ZXh0ID09ICdyZWplY3QnIHx8IHRleHQgPT0gJ3B1Ymxpc2gnIHx8IHRleHQgPT0gJ3VucHVibGlzaCcgfHwgdGV4dCA9PSAnbG9jaycgfHwgdGV4dCA9PSAndW5sb2NrJyB8fCB0ZXh0ID09ICdjb21wbGV0ZScgfHwgdGV4dCA9PSAnaW5jb21wbGV0ZSdcclxuICAgICAgLy8gfHwgdGV4dCA9PSAnc2VuZCB0byByZXZpZXcnIHx8IHRleHQgPT0gJ21hcmsgYXMgcGFpZCcgfHwgdGV4dCA9PSAnbWFyayBhcyB1bnBhaWQnIHx8IHRleHQgPT0gJ2Z1bGZpbGwnIHx8IHRleHQgPT0gJ3VuZnVsZmlsbCcgfHwgdGV4dCA9PSAncmVmdW5kJyB8fCB0ZXh0ID09ICdjYW5jZWwnIHx8IHRleHQgPT0gJ3Jlc2VuZCcgfHwgdGV4dCA9PSAnY2hhcmdlYmFjaydcclxuICAgICAgLy8gfHwgdGV4dCA9PSAnZGlzcHV0ZScgfHwgdGV4dCA9PSAnZXNjYWxhdGUnIHx8IHRleHQgPT0gJ2RlZXNjYWxhdGUnIHx8IHRleHQgPT0gJ2ZsYWcnIHx8IHRleHQgPT0gJ3VuZmxhZycgfHwgdGV4dCA9PSAndmVyaWZ5JyB8fCB0ZXh0ID09ICd1bnZlcmlmeScgfHwgdGV4dCA9PSAnc3Vic2NyaWJlJyB8fCB0ZXh0ID09ICd1bnN1YnNjcmliZScgfHwgdGV4dCA9PSAnZm9sbG93JyB8fCB0ZXh0ID09ICd1bmZvbGxvdydcclxuICAgICAgLy8gfHwgdGV4dCA9PSAnbGlrZScgfHwgdGV4dCA9PSAndW5saWtlJyB8fCB0ZXh0ID09ICdzaGFyZScgfHwgdGV4dCA9PSAndW5zaGFyZScgfHwgdGV4dCA9PSAnY29tbWVudCcgfHwgdGV4dCA9PSAndW5jb21tZW50JyB8fCB0ZXh0ID09ICd0YWcnIHx8IHRleHQgPT0gJ3VudGFnJyB8fCB0ZXh0ID09ICdhc3NpZ24nIHx8IHRleHQgPT0gJ3VuYXNzaWduJyB8fCB0ZXh0ID09ICdsaW5rJyB8fCB0ZXh0ID09ICd1bmxpbmsnXHJcbiAgICAgIC8vIHx8IHRleHQgPT0gJ3N5bmMnIHx8IHRleHQgPT0gJ3Vuc3luYycgfHwgdGV4dCA9PSAnYmFja3VwJyB8fCB0ZXh0ID09ICdyZXN0b3JlIGJhY2t1cCcgfHwgdGV4dCA9PSAnbWlncmF0ZScgfHwgdGV4dCA9PSAnaW1wb3J0JyB8fCB0ZXh0ID09ICdleHBvcnQnIHx8IHRleHQgPT0gJ2dlbmVyYXRlIHJlcG9ydCcgfHwgdGV4dCA9PSAnZG93bmxvYWQgcmVwb3J0JyB8fCB0ZXh0ID09ICd2aWV3IGRldGFpbHMnXHJcbiAgICAgIC8vIHx8IHRleHQgPT0gJ2VkaXQgZGV0YWlscycgfHwgdGV4dCA9PSAndXBkYXRlIGRldGFpbHMnIHx8IHRleHQgPT0gJ2NoYW5nZSBzdGF0dXMnIHx8IHRleHQgPT0gJ3Jlc2V0IHBhc3N3b3JkJyB8fCB0ZXh0ID09ICdzZW5kIG5vdGlmaWNhdGlvbicgfHwgdGV4dCA9PSAnc2NoZWR1bGUnIHx8IHRleHQgPT0gJ3Jlc2NoZWR1bGUnIHx8IHRleHQgPT0gJ2NhbmNlbCBzY2hlZHVsZScgfHwgdGV4dCA9PSAnc3RhcnQnIHx8IHRleHQgPT0gJ3N0b3AnIHx8IHRleHQgPT0gJ3BhdXNlJyB8fCB0ZXh0ID09ICdyZXN1bWUnXHJcbiAgICApe1xyXG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uU3RhdGUodGhpcy50YWJsZVR5cGUpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUm93cy5jbGVhcigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaWRzQXJyYXkgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIGNvbnN0IGFycmF5T2ZPYmplY3RzV2l0aFRhYmxlVHlwZTogYW55W10gPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzLmZvckVhY2goaWQgPT4ge1xyXG4gICAgICBhcnJheU9mT2JqZWN0c1dpdGhUYWJsZVR5cGUucHVzaCh7XHJcbiAgICAgICAgaWQ6IGlkLFxyXG4gICAgICAgIGxpc3RpbmdUeXBlOiB0aGlzLmxpc3RpbmdUeXBlLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3Qgc2VuZE9iaiA9IHtcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIG9iajogaWRzQXJyYXksXHJcbiAgICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZSxcclxuICAgICAgICBsaXN0aW5nVHlwZTogdGhpcy5saXN0aW5nVHlwZSxcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiB0eXBlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoc2VuZE9iailcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0Q2VsbENsYXNzZXMoY29sdW1uOiBhbnksIHZhbHVlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF2YWx1ZSB8fCAhY29sdW1uPy5maWVsZCB8fCBjb2x1bW4/LmNlbGxSZW5kZXJlcikgcmV0dXJuICcnO1xyXG5cclxuICAgIGxldCB2YWw6IGFueSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB2YWx1ZT8udmFsdWUgPz8gdmFsdWUgOiB2YWx1ZTtcclxuICAgIGNvbnN0IGZpZWxkID0gY29sdW1uLmZpZWxkLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgaWYgKGZpZWxkID09PSAnZHVlX2RhdGUnKSB7XHJcbiAgICAgIGNvbnN0IGR1ZURhdGUgPSBuZXcgRGF0ZSh2YWwpO1xyXG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IHRvZGF5VVRDID0gRGF0ZS5VVEModG9kYXkuZ2V0RnVsbFllYXIoKSwgdG9kYXkuZ2V0TW9udGgoKSwgdG9kYXkuZ2V0RGF0ZSgpKTtcclxuICAgICAgY29uc3QgZHVlVVRDID0gRGF0ZS5VVEMoZHVlRGF0ZS5nZXRGdWxsWWVhcigpLCBkdWVEYXRlLmdldE1vbnRoKCksIGR1ZURhdGUuZ2V0RGF0ZSgpKTtcclxuXHJcbiAgICAgIGlmIChkdWVVVEMgPCB0b2RheVVUQykge1xyXG4gICAgICAgIHJldHVybiAndGV4dC1kYW5nZXInO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGVsc2UgaWYoZHVlVVRDID09PSB0b2RheVVUQyl7XHJcbiAgICAgIC8vICAgcmV0dXJuICd0ZXh0LXdhcm5pbmcnO1xyXG4gICAgICAvLyB9XHJcblxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNvbnN0IHN0YXR1cyA9IHZhbD8udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKFxyXG4gICAgICBmaWVsZCA9PT0gJ3N0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdhY2NvdW50X3N0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdhdmFpbHN0YXR1cycgfHxcclxuICAgICAgZmllbGQgPT09ICdpc19jdXN0b21fZ3JhZGUnXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIFNUQVRVU0VTX0JBREdFX01BUFtzdGF0dXNdIHx8ICdiYWRnZSBiYWRnZS1zZWNvbmRhcnknO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxuICByZW1vdmVDb2x1bW5GaWx0ZXJGcm9tQ29sdW1uKGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbikgcmV0dXJuXHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgY29sdW1uLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgIH0gZWxzZSBpZiAoWydzdHJpbmcnLCAnbnVtYmVyJywgJ2RhdGUnXS5pbmNsdWRlcyhjb2x1bW4udHlwZSkpIHtcclxuICAgICAgY29sdW1uLnF1ZXJ5ID0ge1xyXG4gICAgICAgIGZpcnN0X2NvbmRpdGlvbjogJ2NvbnRhaW4nLFxyXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgIHNlY29uZF9jb25kaXRpb246IG51bGwsXHJcbiAgICAgICAgc2Vjb25kX3ZhbHVlOiBudWxsLFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmZpbHRlcnNDb25maWcuZmluZEluZGV4KChmOiBhbnkpID0+IGYuZmllbGQgPT09IGNvbHVtbi5maWVsZCk7XHJcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyc0NvbmZpZy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlcmVkQ29sdW1ucyA9IHRoaXMuY29tbW9uU2V2aWNlLmdldEZpbHRlcnNGcm9tQ29sdW1ucyh0aGlzLmNvbHVtbnMsIHRoaXMuZmlsdGVyc0NvbmZpZyk7XHJcbiAgICBjb25zdCBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zID0gZmlsdGVyZWRDb2x1bW5zLm1hcCgoeyBxdWVyeSwgLi4ucmVzdCB9KSA9PiB7XHJcbiAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgIGRlbGV0ZSBxdWVyeS5fX3R5cGVuYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgcXVlcnksXHJcbiAgICAgICAgLi4ucmVzdCxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgc2VuZERhdGEgPSB7XHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY2xlYW5Db2x1bW5zKHRoaXMuY29sdW1ucyksXHJcbiAgICAgIGZpbHRlcnM6IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMsXHJcbiAgICAgIG5vX29mX3JlY29yZHM6IE51bWJlcih0aGlzLnBhZ2luYXRpb25Db25maWcubGltaXQpLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gY2xlYW5lZEZpbHRlcmVkQ29sdW1ucztcclxuICAgICAgdGhpcy5maWx0ZXJPcHRpb25zLmVtaXQoZmlsdGVyZWRDb2x1bW5zKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBvblNpZGVNZW51Q29sdW1uc1Zpc2liaWxpdHlDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnJlZnJlc2hIZWFkZXJzKCk7XHJcbiAgICBjb25zdCBzZW5kRGF0YSA9IHtcclxuICAgICAgY29sdW1uczogdGhpcy5jbGVhbkNvbHVtbnModGhpcy5jb2x1bW5zKSxcclxuICAgICAgZmlsdGVyczogdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKS5tYXAoKHsgcXVlcnksIC4uLnJlc3QgfSkgPT4ge1xyXG4gICAgICAgIGlmIChxdWVyeSkge1xyXG4gICAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBxdWVyeSxcclxuICAgICAgICAgIC4uLnJlc3QsXHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbm9fb2ZfcmVjb3JkczogdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2VTaXplLFxyXG4gICAgICB0eXBlOiB0aGlzLnRhYmxlVHlwZSxcclxuICAgIH07XHJcbiAgICB0aGlzLmNyZWF0ZVVwZGF0ZUNvbmZpZ0xpc3RpbmcuZW1pdChzZW5kRGF0YSk7XHJcbiAgfVxyXG5cclxuICBjbGVhbkZpbHRlcmRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgZmlsdGVyZWRDb2x1bW5zID0gdGhpcy5jb21tb25TZXZpY2UuZ2V0RmlsdGVyc0Zyb21Db2x1bW5zKHRoaXMuY29sdW1ucywgdGhpcy5maWx0ZXJzQ29uZmlnKTtcclxuICAgIGNvbnN0IGNsZWFuZWRGaWx0ZXJlZENvbHVtbnMgPSBmaWx0ZXJlZENvbHVtbnMubWFwKCh7IHF1ZXJ5LCAuLi5yZXN0IH0pID0+IHtcclxuICAgICAgaWYgKHF1ZXJ5KSB7XHJcbiAgICAgICAgZGVsZXRlIHF1ZXJ5Ll9fdHlwZW5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBxdWVyeSxcclxuICAgICAgICAuLi5yZXN0LFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjbGVhbmVkRmlsdGVyZWRDb2x1bW5zO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWRDc3YodHlwZTogJ2NzdicgfCAneGxzeCcpIHtcclxuICAgIGNvbnN0IGNvbmZpZzogYW55ID0ge1xyXG4gICAgICBoZWFkZXJCZ0NvbG9yOiB0aGlzLmhlYWRlckJhY2tncm91bmRDb2xvcixcclxuICAgICAgaGVhZGVyVGV4dENvbG9yOiB0aGlzLmhlYWRlclRleHRDb2xvcixcclxuICAgICAgYm9keVRleHRDb2xvcjogJyMwMDAwMDAnLFxyXG4gICAgICBmb250RmFtaWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGZvbnRXZWlnaHQ6ICdub3JtYWwnLFxyXG4gICAgICB6b29tU2NhbGU6IDEyNSxcclxuICAgICAgaGVhZGVyUm93SGVpZ2h0OiAzMFxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZW5hYmxlRXhwb3J0KSB7XHJcbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGNvbnN0IGRkID0gU3RyaW5nKG5vdy5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgIGNvbnN0IG1tID0gU3RyaW5nKG5vdy5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgeXl5eSA9IG5vdy5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBjb25zdCBISCA9IFN0cmluZyhub3cuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgTU0gPSBTdHJpbmcobm93LmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgY29uc3QgZm9ybWF0dGVkID1cclxuICAgICAgICBgJHt0aGlzLnRhYmxlVHlwZX1fJHtkZH0tJHttbX0tJHt5eXl5fV8ke0hIfS0ke01NfWA7XHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhmb3JtYXR0ZWQpO1xyXG5cclxuICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydERhdGEodGhpcy5jb2x1bW5zLCB0aGlzLmRhdGFTZXQsIGZvcm1hdHRlZCwgdHlwZSwgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMsIGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLFxyXG4gICAgICAgIGZpbHRlcnM6IFtdXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ2Rvd25sb2FkQ3N2J1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGUgPT0gJ3hsc3gnKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudClcclxuXHJcbiAgfVxyXG5cclxuICBvbkZvbnRDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmhlYWRlclRleHRGb250c1NpemUgPSB0aGlzLmJvZHlUZXh0Rm9udHNTaXplO1xyXG4gICAgY29uc3QgY29uZmlnID0ge1xyXG4gICAgICBmb250RmFpbWx5OiB0aGlzLmZvbnRGYWltbHksXHJcbiAgICAgIGJvZHlUZXh0Rm9udHNTaXplOiB0aGlzLmJvZHlUZXh0Rm9udHNTaXplLFxyXG4gICAgICBoZWFkZXJUZXh0Rm9udHNTaXplOiB0aGlzLmhlYWRlclRleHRGb250c1NpemUsXHJcbiAgICAgIG9kZFJvd3NCYWNrZ3JvdW5kQ29sb3I6IHRoaXMucm93U2hhZGluZ0VuYWJsZWQgPyB0aGlzLm9kZFJvd3NCYWNrZ3JvdW5kQ29sb3IgOiB1bmRlZmluZWQsXHJcbiAgICAgIHNob3dWZXJ0aWNhbEJvcmRlcjogdGhpcy5zaG93VmVydGljYWxCb3JkZXIsXHJcbiAgICAgIHNlbGVjdGVkVGFibGVMYXlvdXQ6IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dCxcclxuICAgICAgZ2xvYmFsU2VhcmNoOiB0aGlzLnRhYmxlU2VhcmNoXHJcbiAgICB9XHJcbiAgICBjb25zdCBldmVudCA9IHtcclxuICAgICAgb2JqOiB7XHJcbiAgICAgICAgZGF0YTogY29uZmlnXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ2NvbmZpZydcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoZXZlbnQpXHJcbiAgfVxyXG5cclxuICBvbkdsb2JhbFNlYXJjaCgpIHtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBvYmo6IHtcclxuICAgICAgICB0YWJsZVNlYXJjaDogdGhpcy50YWJsZVNlYXJjaFxyXG4gICAgICB9LFxyXG4gICAgICBldmVudFR5cGU6ICdzZWFyY2gnXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KVxyXG4gICAgaWYgKHRoaXMudGFibGVGaWx0ZXJWaWV3SWQpIHtcclxuICAgICAgdGhpcy5zYXZlUHJlc2V0KCdtb3VzZVVwJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaElucHV0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ1NlYXJjaCB2YWx1ZTonLCB2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHZhbHVlID09PSAnJykge1xyXG4gICAgICB0aGlzLnRhYmxlU2VhcmNoID0gJyc7XHJcbiAgICAgIHRoaXMub25HbG9iYWxTZWFyY2goKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoZWNrRmlsdGVyQ2hhbmdlc0VmZmVjdCgpOiBhbnkge1xyXG4gICAgaWYgKCF0aGlzLnRhYmxlRmlsdGVyVmlld0lkKSByZXR1cm4gdHJ1ZVxyXG4gICAgY29uc3QgZmluZERlZmF1bHRGaWx0ZXIgPSB0aGlzLnRhYmxlVmlldz8uZmluZCgoZWxlOiBhbnkpID0+IGVsZT8uaWQgPT0gdGhpcy50YWJsZUZpbHRlclZpZXdJZCk7XHJcbiAgICBjb25zdCBub3JtYWxpemVGaWx0ZXJzID0gKGZpbHRlcnM6IGFueVtdIHwgdW5kZWZpbmVkKTogYW55W10gPT4ge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZmlsdGVycykpIHJldHVybiBbXTtcclxuICAgICAgY29uc3QgY2xvbmVkID0gZmlsdGVycy5tYXAoZiA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZiA/PyB7fSkpO1xyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLl9pZHMpKSBpdGVtLl9pZHMgPSBbXTtcclxuICAgICAgICBpdGVtLl9pZHMgPSBpdGVtLl9pZHMuc2xpY2UoKS5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiBhID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgYiA9PT0gJ251bWJlcicpIHJldHVybiBhIC0gYjtcclxuICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtLnF1ZXJ5ID09PSBudWxsKSB7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbS5xdWVyeSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpdGVtLnF1ZXJ5Ll9pZHMpKSBpdGVtLnF1ZXJ5Ll9pZHMgPSBbXTtcclxuICAgICAgICAgIGl0ZW0ucXVlcnkuX2lkcyA9IGl0ZW0ucXVlcnkuX2lkcy5zbGljZSgpLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYSA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGIgPT09ICdudW1iZXInKSByZXR1cm4gYSAtIGI7XHJcbiAgICAgICAgICAgIHJldHVybiAoJycgKyBhKS5sb2NhbGVDb21wYXJlKCcnICsgYik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICB9KTtcclxuICAgICAgY2xvbmVkLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmEgPSAoYS5maWVsZCB8fCAnJykgKyAnfCcgKyAoYS50eXBlIHx8ICcnKTtcclxuICAgICAgICBjb25zdCBmYiA9IChiLmZpZWxkIHx8ICcnKSArICd8JyArIChiLnR5cGUgfHwgJycpO1xyXG4gICAgICAgIHJldHVybiBmYS5sb2NhbGVDb21wYXJlKGZiKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4gY2xvbmVkO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBkZWVwRXF1YWwgPSAoYTogYW55LCBiOiBhbnkpOiBib29sZWFuID0+IHtcclxuICAgICAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgaWYgKHR5cGVvZiBhICE9PSAnb2JqZWN0JyB8fCBhID09PSBudWxsIHx8IHR5cGVvZiBiICE9PSAnb2JqZWN0JyB8fCBiID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIGEgPT09IGI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGEpICE9PSBBcnJheS5pc0FycmF5KGIpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xyXG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGlmICghZGVlcEVxdWFsKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xyXG4gICAgICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xyXG4gICAgICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXNBKSB7XHJcbiAgICAgICAgaWYgKCFrZXlzQi5pbmNsdWRlcyhrZXkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0pKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgbm9ybWFsaXplZEEgPSBub3JtYWxpemVGaWx0ZXJzKGZpbmREZWZhdWx0RmlsdGVyPy5maWx0ZXJzKTtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZWRCID0gbm9ybWFsaXplRmlsdGVycyh0aGlzLmZpbHRlcnNDb25maWcpO1xyXG4gICAgY29uc3QgaXNTYW1lID0gZGVlcEVxdWFsKG5vcm1hbGl6ZWRBLCBub3JtYWxpemVkQik7XHJcbiAgICByZXR1cm4gaXNTYW1lO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gQ2VsbCBTZWxlY3Rpb24gSW1wbGVtZW50ZWQgSGVyZSBJbXBsZW1lbnRlZCBIZXJlXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICBzZWxlY3RlZENlbGxzOiBhbnlbXSA9IFtdO1xyXG4gIHNlbGVjdGVkS2V5czogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XHJcbiAgc2VsZWN0aW9uU3RhcnQ6IGFueSA9IG51bGw7XHJcbiAgaXNTZWxlY3RpbmcgPSBmYWxzZTtcclxuICBzdGFydFNlbGVjdGlvbihcclxuICAgIHJvd0luZGV4OiBudW1iZXIsXHJcbiAgICBjb2xJbmRleDogbnVtYmVyLFxyXG4gICAgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsXHJcbiAgICBmaWVsZDogc3RyaW5nLFxyXG4gICAgZXZlbnQ6IE1vdXNlRXZlbnQsXHJcbiAgICBzZWN0aW9uOiBzdHJpbmdcclxuICApIHtcclxuICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzYWZlU3VifS0ke2ZpZWxkfWA7XHJcblxyXG4gICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHsgcm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleDogc2FmZVN1YiwgZmllbGQsIGtleSB9O1xyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEtleXMuYWRkKGtleSk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQ2VsbHMgPSBbdGhpcy5zZWxlY3Rpb25TdGFydF07XHJcbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5lbmRTZWxlY3Rpb24oKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIH07XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgbW91c2VVcEhhbmRsZXIpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKClcclxuICB9XHJcblxyXG5cclxuICBleHRlbmRTZWxlY3Rpb24oXHJcbiAgICByb3dJbmRleDogbnVtYmVyLFxyXG4gICAgY29sSW5kZXg6IG51bWJlcixcclxuICAgIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgZmllbGQ6IHN0cmluZyxcclxuICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxyXG4gICAgc2VjdGlvbjogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNTZWxlY3RpbmcgfHwgIXRoaXMuc2VsZWN0aW9uU3RhcnQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICBjb25zdCB0YXJnZXRTdWJDb2xJbmRleCA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBuZXdLZXlzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcclxuICAgIGNvbnN0IG5ld0NlbGxzOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3QgbWluUm93ID0gTWF0aC5taW4oc3RhcnQucm93SW5kZXgsIHJvd0luZGV4KTtcclxuICAgIGNvbnN0IG1heFJvdyA9IE1hdGgubWF4KHN0YXJ0LnJvd0luZGV4LCByb3dJbmRleCk7XHJcbiAgICBjb25zdCBjb2x1bW5zVG9TZWxlY3QgPSB0aGlzLmdldENvbHVtblNlbGVjdGlvblJhbmdlKHN0YXJ0LmNvbEluZGV4LCBjb2xJbmRleCwgc3RhcnQuc3ViQ29sSW5kZXgsIHRhcmdldFN1YkNvbEluZGV4KTtcclxuXHJcbiAgICBmb3IgKGxldCByID0gbWluUm93OyByIDw9IG1heFJvdzsgcisrKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY29sSW5mbyBvZiBjb2x1bW5zVG9TZWxlY3QpIHtcclxuICAgICAgICBjb25zdCBrID0gYCR7cn0tJHtjb2xJbmZvLmNvbEluZGV4fS0ke2NvbEluZm8uc3ViQ29sSW5kZXh9LSR7c2VjdGlvbn1gO1xyXG4gICAgICAgIG5ld0tleXMuYWRkKGspO1xyXG4gICAgICAgIG5ld0NlbGxzLnB1c2goe1xyXG4gICAgICAgICAgcm93SW5kZXg6IHIsXHJcbiAgICAgICAgICBjb2xJbmRleDogY29sSW5mby5jb2xJbmRleCxcclxuICAgICAgICAgIHN1YkNvbEluZGV4OiBjb2xJbmZvLnN1YkNvbEluZGV4LFxyXG4gICAgICAgICAgZmllbGQsXHJcbiAgICAgICAgICBrZXk6IGtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2VsZWN0ZWRLZXlzID0gbmV3S2V5cztcclxuICAgIHRoaXMuc2VsZWN0ZWRDZWxscyA9IG5ld0NlbGxzO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgLy8gQWRkIGF1dG8tc2Nyb2xsaW5nIGxvZ2ljXHJcbiAgICB0aGlzLmhhbmRsZUNlbGxBdXRvU2Nyb2xsKGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG4gIGdldENvbHVtblNlbGVjdGlvblJhbmdlKFxyXG4gICAgc3RhcnRDb2w6IG51bWJlcixcclxuICAgIGVuZENvbDogbnVtYmVyLFxyXG4gICAgc3RhcnRTdWI6IG51bWJlcixcclxuICAgIGVuZFN1YjogbnVtYmVyXHJcbiAgKTogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH1bXSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9W10gPSBbXTtcclxuICAgIGNvbnN0IG1pbkNvbCA9IE1hdGgubWluKHN0YXJ0Q29sLCBlbmRDb2wpO1xyXG4gICAgY29uc3QgbWF4Q29sID0gTWF0aC5tYXgoc3RhcnRDb2wsIGVuZENvbCk7XHJcblxyXG4gICAgY29uc3QgaXNMZWZ0VG9SaWdodCA9IHN0YXJ0Q29sIDw9IGVuZENvbDtcclxuICAgIGZvciAobGV0IGMgPSBtaW5Db2w7IGMgPD0gbWF4Q29sOyBjKyspIHtcclxuICAgICAgY29uc3Qgc3ViQ29sQ291bnQgPSB0aGlzLmdldFN1YkNvbHVtbkNvdW50KGMpO1xyXG5cclxuICAgICAgaWYgKGMgPT09IHN0YXJ0Q29sICYmIGMgPT09IGVuZENvbCkge1xyXG4gICAgICAgIGNvbnN0IG1pblN1YiA9IE1hdGgubWluKHN0YXJ0U3ViLCBlbmRTdWIpO1xyXG4gICAgICAgIGNvbnN0IG1heFN1YiA9IE1hdGgubWF4KHN0YXJ0U3ViLCBlbmRTdWIpO1xyXG4gICAgICAgIGZvciAobGV0IHMgPSBtaW5TdWI7IHMgPD0gbWF4U3ViICYmIHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYyA9PT0gc3RhcnRDb2wpIHtcclxuICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodCkge1xyXG4gICAgICAgICAgZm9yIChsZXQgcyA9IHN0YXJ0U3ViOyBzIDwgc3ViQ29sQ291bnQ7IHMrKykge1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh7IGNvbEluZGV4OiBjLCBzdWJDb2xJbmRleDogcyB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPD0gc3RhcnRTdWIgJiYgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGMgPT09IGVuZENvbCkge1xyXG4gICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0KSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8PSBlbmRTdWIgJiYgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBjb2xJbmRleDogYywgc3ViQ29sSW5kZXg6IHMgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IHMgPSBlbmRTdWI7IHMgPCBzdWJDb2xDb3VudDsgcysrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IHN1YkNvbENvdW50OyBzKyspIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKHsgY29sSW5kZXg6IGMsIHN1YkNvbEluZGV4OiBzIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBnZXRTdWJDb2x1bW5Db3VudChjb2xJbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGlmICghdGhpcy5jb2x1bW5zIHx8IGNvbEluZGV4IDwgMCB8fCBjb2xJbmRleCA+PSB0aGlzLmNvbHVtbnMubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zW2NvbEluZGV4XTtcclxuICAgIGlmIChjb2x1bW4uY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2x1bW4uY2hpbGRyZW4pKSB7XHJcbiAgICAgIHJldHVybiBjb2x1bW4uY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIDE7XHJcbiAgfVxyXG4gIGlzR3JvdXBDb2x1bW4oY29sSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0U3ViQ29sdW1uQ291bnQoY29sSW5kZXgpID4gMTtcclxuICB9XHJcbiAgZW5kU2VsZWN0aW9uKCkge1xyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdG9wQXV0b1Njcm9sbCgpO1xyXG4gICAgdGhpcy51cGRhdGVTZWxlY3Rpb25Cb3VuZGFyaWVzKCk7XHJcbiAgfVxyXG4gIGlzU2VsZWN0ZWQoXHJcbiAgICByb3dJbmRleDogbnVtYmVyLFxyXG4gICAgY29sSW5kZXg6IG51bWJlcixcclxuICAgIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLFxyXG4gICAgZmllbGQ6IHN0cmluZyxcclxuICAgIHNlY3Rpb246IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tJHtzYWZlU3VifS0ke3NlY3Rpb259YDtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoa2V5KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHNlbGVjdGlvbkJvdW5kczoge1xyXG4gICAgdG9wOiBudW1iZXIgfCBudWxsO1xyXG4gICAgYm90dG9tOiBudW1iZXIgfCBudWxsO1xyXG4gICAgbGVmdDogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH0gfCBudWxsO1xyXG4gICAgcmlnaHQ6IHsgY29sSW5kZXg6IG51bWJlcjsgc3ViQ29sSW5kZXg6IG51bWJlciB9IHwgbnVsbDtcclxuICB9ID0geyB0b3A6IG51bGwsIGJvdHRvbTogbnVsbCwgbGVmdDogbnVsbCwgcmlnaHQ6IG51bGwgfTtcclxuXHJcbiAgdXBkYXRlU2VsZWN0aW9uQm91bmRhcmllcygpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0aW9uQm91bmRzID0geyB0b3A6IG51bGwsIGJvdHRvbTogbnVsbCwgbGVmdDogbnVsbCwgcmlnaHQ6IG51bGwgfTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEdldCBhbGwgdW5pcXVlIHJvdyBpbmRpY2VzIGFuZCBmaW5kIG1pbi9tYXhcclxuICAgIGNvbnN0IHJvd0luZGljZXMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkQ2VsbHMubWFwKGNlbGwgPT4gY2VsbC5yb3dJbmRleCkpXTtcclxuICAgIHRoaXMuc2VsZWN0aW9uQm91bmRzLnRvcCA9IE1hdGgubWluKC4uLnJvd0luZGljZXMpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25Cb3VuZHMuYm90dG9tID0gTWF0aC5tYXgoLi4ucm93SW5kaWNlcyk7XHJcblxyXG4gICAgLy8gRm9yIGxlZnQvcmlnaHQgYm91bmRhcmllcywgd2UgbmVlZCB0byBjb25zaWRlciBib3RoIGNvbEluZGV4IGFuZCBzdWJDb2xJbmRleFxyXG4gICAgY29uc3QgbGVmdE1vc3QgPSB0aGlzLmZpbmRMZWZ0TW9zdENlbGwoKTtcclxuICAgIGNvbnN0IHJpZ2h0TW9zdCA9IHRoaXMuZmluZFJpZ2h0TW9zdENlbGwoKTtcclxuXHJcbiAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcy5sZWZ0ID0gbGVmdE1vc3Q7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkJvdW5kcy5yaWdodCA9IHJpZ2h0TW9zdDtcclxuICB9XHJcbiAgZmluZExlZnRNb3N0Q2VsbCgpOiB7IGNvbEluZGV4OiBudW1iZXI7IHN1YkNvbEluZGV4OiBudW1iZXIgfSB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDZWxscy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xyXG5cclxuICAgIGNvbnN0IG1pbkNvbEluZGV4ID0gTWF0aC5taW4oLi4udGhpcy5zZWxlY3RlZENlbGxzLm1hcChjZWxsID0+IGNlbGwuY29sSW5kZXgpKTtcclxuICAgIGNvbnN0IGxlZnRDb2xDZWxscyA9IHRoaXMuc2VsZWN0ZWRDZWxscy5maWx0ZXIoY2VsbCA9PiBjZWxsLmNvbEluZGV4ID09PSBtaW5Db2xJbmRleCk7XHJcbiAgICBjb25zdCBtaW5TdWJDb2xJbmRleCA9IE1hdGgubWluKC4uLmxlZnRDb2xDZWxscy5tYXAoY2VsbCA9PiBjZWxsLnN1YkNvbEluZGV4KSk7XHJcblxyXG4gICAgcmV0dXJuIHsgY29sSW5kZXg6IG1pbkNvbEluZGV4LCBzdWJDb2xJbmRleDogbWluU3ViQ29sSW5kZXggfTtcclxuICB9XHJcbiAgZmluZFJpZ2h0TW9zdENlbGwoKTogeyBjb2xJbmRleDogbnVtYmVyOyBzdWJDb2xJbmRleDogbnVtYmVyIH0gfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBjb25zdCBtYXhDb2xJbmRleCA9IE1hdGgubWF4KC4uLnRoaXMuc2VsZWN0ZWRDZWxscy5tYXAoY2VsbCA9PiBjZWxsLmNvbEluZGV4KSk7XHJcbiAgICBjb25zdCByaWdodENvbENlbGxzID0gdGhpcy5zZWxlY3RlZENlbGxzLmZpbHRlcihjZWxsID0+IGNlbGwuY29sSW5kZXggPT09IG1heENvbEluZGV4KTtcclxuICAgIGNvbnN0IG1heFN1YkNvbEluZGV4ID0gTWF0aC5tYXgoLi4ucmlnaHRDb2xDZWxscy5tYXAoY2VsbCA9PiBjZWxsLnN1YkNvbEluZGV4KSk7XHJcblxyXG4gICAgcmV0dXJuIHsgY29sSW5kZXg6IG1heENvbEluZGV4LCBzdWJDb2xJbmRleDogbWF4U3ViQ29sSW5kZXggfTtcclxuICB9XHJcbiAgaXNUb3BCb3JkZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3Qgc2FmZVN1YiA9IHN1YkNvbEluZGV4ID8/IDA7XHJcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEtleXMuaGFzKGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3NhZmVTdWJ9LSR7c2VjdGlvbn1gKTtcclxuICAgIHJldHVybiBpc1NlbGVjdGVkICYmIHRoaXMuc2VsZWN0aW9uQm91bmRzLnRvcCAhPT0gbnVsbCAmJiByb3dJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMudG9wO1xyXG4gIH1cclxuICBpc0JvdHRvbUJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMuYm90dG9tICE9PSBudWxsICYmIHJvd0luZGV4ID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5ib3R0b207XHJcbiAgfVxyXG4gIGlzTGVmdEJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdCAhPT0gbnVsbCAmJlxyXG4gICAgICBjb2xJbmRleCA9PT0gdGhpcy5zZWxlY3Rpb25Cb3VuZHMubGVmdC5jb2xJbmRleCAmJlxyXG4gICAgICBzYWZlU3ViID09PSB0aGlzLnNlbGVjdGlvbkJvdW5kcy5sZWZ0LnN1YkNvbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgaXNSaWdodEJvcmRlcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBzYWZlU3ViID0gc3ViQ29sSW5kZXggPz8gMDtcclxuICAgIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkS2V5cy5oYXMoYCR7cm93SW5kZXh9LSR7Y29sSW5kZXh9LSR7c2FmZVN1Yn0tJHtzZWN0aW9ufWApO1xyXG4gICAgcmV0dXJuIGlzU2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb25Cb3VuZHMucmlnaHQgIT09IG51bGwgJiZcclxuICAgICAgY29sSW5kZXggPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLnJpZ2h0LmNvbEluZGV4ICYmXHJcbiAgICAgIHNhZmVTdWIgPT09IHRoaXMuc2VsZWN0aW9uQm91bmRzLnJpZ2h0LnN1YkNvbEluZGV4O1xyXG4gIH1cclxuXHJcbiAgaXNUb3BMZWZ0Q29ybmVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzVG9wQm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pICYmIHRoaXMuaXNMZWZ0Qm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgaXNUb3BSaWdodENvcm5lcihyb3dJbmRleDogbnVtYmVyLCBjb2xJbmRleDogbnVtYmVyLCBzdWJDb2xJbmRleDogbnVtYmVyIHwgbnVsbCwgc2VjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc1RvcEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKSAmJiB0aGlzLmlzUmlnaHRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbik7XHJcbiAgfVxyXG5cclxuICBpc0JvdHRvbUxlZnRDb3JuZXIocm93SW5kZXg6IG51bWJlciwgY29sSW5kZXg6IG51bWJlciwgc3ViQ29sSW5kZXg6IG51bWJlciB8IG51bGwsIHNlY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNCb3R0b21Cb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbikgJiYgdGhpcy5pc0xlZnRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbik7XHJcbiAgfVxyXG5cclxuICBpc0JvdHRvbVJpZ2h0Q29ybmVyKHJvd0luZGV4OiBudW1iZXIsIGNvbEluZGV4OiBudW1iZXIsIHN1YkNvbEluZGV4OiBudW1iZXIgfCBudWxsLCBzZWN0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzQm90dG9tQm9yZGVyKHJvd0luZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pICYmIHRoaXMuaXNSaWdodEJvcmRlcihyb3dJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKTtcclxuICB9XHJcblxyXG5cclxuICBjZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgc2Nyb2xsU3BlZWQgPSAxNTA7XHJcbiAgcHJpdmF0ZSBzY3JvbGxNYXJnaW4gPSAzMDtcclxuICBoYW5kbGVDZWxsQXV0b1Njcm9sbChldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICBjbGVhckludGVydmFsKHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCk7XHJcbiAgICAgIHRoaXMuY2VsbFNlbGVjdGlvbkF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBob3Jpem9udGFsQ29udGFpbmVyID0gdGhpcy5jZW50ZXJTY3JvbGxhYmxlQm9keS5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgdmVydGljYWxDb250YWluZXIgPSB0aGlzLm1haW5TY3JvbGwubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghaG9yaXpvbnRhbENvbnRhaW5lciB8fCAhdmVydGljYWxDb250YWluZXIpIHJldHVybjtcclxuICAgIGNvbnN0IGhvcml6b250YWxSZWN0ID0gaG9yaXpvbnRhbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG1vdXNlWCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICBjb25zdCB2ZXJ0aWNhbFJlY3QgPSB2ZXJ0aWNhbENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IG1vdXNlWSA9IGV2ZW50LmNsaWVudFk7XHJcbiAgICBjb25zdCBuZWFyVG9wID0gbW91c2VZIC0gdmVydGljYWxSZWN0LnRvcCA8IHRoaXMuc2Nyb2xsTWFyZ2luO1xyXG4gICAgY29uc3QgbmVhckJvdHRvbSA9IHZlcnRpY2FsUmVjdC5ib3R0b20gLSBtb3VzZVkgPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGNvbnN0IG5lYXJMZWZ0ID0gbW91c2VYIC0gaG9yaXpvbnRhbFJlY3QubGVmdCA8IHRoaXMuc2Nyb2xsTWFyZ2luO1xyXG4gICAgY29uc3QgbmVhclJpZ2h0ID0gaG9yaXpvbnRhbFJlY3QucmlnaHQgLSBtb3VzZVggPCB0aGlzLnNjcm9sbE1hcmdpbjtcclxuICAgIGxldCBzY3JvbGxYID0gMDtcclxuICAgIGxldCBzY3JvbGxZID0gMDtcclxuICAgIGlmIChuZWFyVG9wKSBzY3JvbGxZID0gLXRoaXMuc2Nyb2xsU3BlZWQ7XHJcbiAgICBpZiAobmVhckJvdHRvbSkgc2Nyb2xsWSA9IHRoaXMuc2Nyb2xsU3BlZWQ7XHJcbiAgICBpZiAobmVhckxlZnQpIHNjcm9sbFggPSAtdGhpcy5zY3JvbGxTcGVlZDtcclxuICAgIGlmIChuZWFyUmlnaHQpIHNjcm9sbFggPSB0aGlzLnNjcm9sbFNwZWVkO1xyXG4gICAgaWYgKHNjcm9sbFggIT09IDAgfHwgc2Nyb2xsWSAhPT0gMCkge1xyXG4gICAgICB0aGlzLmNlbGxTZWxlY3Rpb25BdXRvU2Nyb2xsSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHNjcm9sbFggIT09IDApIHtcclxuICAgICAgICAgIGhvcml6b250YWxDb250YWluZXIuc2Nyb2xsQnkoc2Nyb2xsWCwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzY3JvbGxZICE9PSAwKSB7XHJcbiAgICAgICAgICB2ZXJ0aWNhbENvbnRhaW5lci5zY3JvbGxCeSgwLCBzY3JvbGxZKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcEF1dG9TY3JvbGwoKSB7XHJcbiAgICBpZiAodGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsKTtcclxuICAgICAgdGhpcy5jZWxsU2VsZWN0aW9uQXV0b1Njcm9sbEludGVydmFsID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyBSb3cgU2VsZWN0aW9uIGZyb20gdGhlIEluZGV4aW5nIEltcGxlbWVudGVkIEhlcmVcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gIHJvd1NlbGVjdGVkSW5kZXhlczogU2V0PG51bWJlcj4gPSBuZXcgU2V0KCk7XHJcbiAgcm93U2VsZWN0aW5nID0gZmFsc2U7XHJcbiAgcm93U2VsZWN0aW9uU3RhcnRJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgYXV0b1Njcm9sbEludGVydmFsOiBhbnkgPSBudWxsO1xyXG5cclxuICBnZXQgZmlyc3RTZWxlY3RlZFJvdygpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIGlmICh0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplID09PSAwKSByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiBNYXRoLm1pbiguLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyk7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdFNlbGVjdGVkUm93KCk6IG51bWJlciB8IG51bGwge1xyXG4gICAgaWYgKHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLnNpemUgPT09IDApIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIE1hdGgubWF4KC4uLnRoaXMucm93U2VsZWN0ZWRJbmRleGVzKTtcclxuICB9XHJcblxyXG5cclxuICBvblJvd01vdXNlRG93bihpbmRleDogbnVtYmVyLCBldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMucm93U2VsZWN0aW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmNsZWFyKCk7XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5hZGQoaW5kZXgpO1xyXG4gICAgdGhpcy5hY3RpdmVDZWxsID0gJyc7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgY29uc3QgbW91c2VNb3ZlSGFuZGxlciA9IChlOiBNb3VzZUV2ZW50KSA9PiB0aGlzLmhhbmRsZUF1dG9TY3JvbGwoZSk7XHJcbiAgICBjb25zdCBtb3VzZVVwSGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgdGhpcy5vblJvd01vdXNlVXAoKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2VNb3ZlSGFuZGxlcik7XHJcbiAgICAgIGlmICh0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCkge1xyXG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKTtcclxuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG1vdXNlVXBIYW5kbGVyKTtcclxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG1vdXNlTW92ZUhhbmRsZXIpO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dNb3VzZU92ZXIoaW5kZXg6IG51bWJlciwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICghdGhpcy5yb3dTZWxlY3RpbmcgfHwgdGhpcy5yb3dTZWxlY3Rpb25TdGFydEluZGV4ID09PSBudWxsKSByZXR1cm47XHJcbiAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5jbGVhcigpO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbih0aGlzLnJvd1NlbGVjdGlvblN0YXJ0SW5kZXgsIGluZGV4KTtcclxuICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCwgaW5kZXgpO1xyXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKSB7XHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLmFkZChpKTtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKFsuLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlc10pO1xyXG4gIH1cclxuXHJcbiAgb25Sb3dNb3VzZVVwKCkge1xyXG4gICAgdGhpcy5yb3dTZWxlY3RpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMucm93U2VsZWN0aW9uU3RhcnRJbmRleCA9IG51bGw7XHJcbiAgfVxyXG4gIGhhbmRsZUF1dG9TY3JvbGwoZTogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5tYWluU2Nyb2xsPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgaWYgKCFjb250YWluZXIpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCByZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgZWRnZVNpemUgPSA0MFxyXG4gICAgbGV0IHNjcm9sbEFtb3VudCA9IDA7XHJcblxyXG4gICAgaWYgKGUuY2xpZW50WSA8IHJlY3QudG9wICsgZWRnZVNpemUpIHtcclxuICAgICAgc2Nyb2xsQW1vdW50ID0gLTE1MDtcclxuICAgIH0gZWxzZSBpZiAoZS5jbGllbnRZID4gcmVjdC5ib3R0b20gLSBlZGdlU2l6ZSkge1xyXG4gICAgICBzY3JvbGxBbW91bnQgPSAxNTA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNjcm9sbEFtb3VudCAhPT0gMCkge1xyXG4gICAgICBpZiAoIXRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgICAgY29uc3Qgc3RlcCA9ICgpID0+IHtcclxuICAgICAgICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgKz0gc2Nyb2xsQW1vdW50O1xyXG4gICAgICAgICAgdGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmF1dG9TY3JvbGxJbnRlcnZhbCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuYXV0b1Njcm9sbEludGVydmFsKSB7XHJcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5hdXRvU2Nyb2xsSW50ZXJ2YWwpO1xyXG4gICAgICAgIHRoaXMuYXV0b1Njcm9sbEludGVydmFsID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIGdldFNlbGVjdGVkRGF0YUZvckNvcHkoKTogYW55W11bXSB7XHJcbiAgLy8gICBjb25zdCBjb3BpZWRSb3dzOiBhbnlbXVtdID0gW107XHJcbiAgLy8gICBjb25zdCBmaW5kUm93QnlWaXJ0dWFsSW5kZXggPSAodkluZGV4OiBudW1iZXIpID0+XHJcbiAgLy8gICAgIHRoaXMuZGF0YVNldC5maW5kKChyOiBhbnkpID0+IHIuX192aXJ0dWFsSW5kZXggPT09IHZJbmRleCk7XHJcbiAgLy8gICBpZiAodGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMgJiYgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuc2l6ZSA+IDApIHtcclxuICAvLyAgICAgY29uc3Qgc29ydGVkSW5kZXhlcyA9IFsuLi50aGlzLnJvd1NlbGVjdGVkSW5kZXhlc10uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xyXG4gIC8vICAgICBmb3IgKGNvbnN0IHZJbmRleCBvZiBzb3J0ZWRJbmRleGVzKSB7XHJcbiAgLy8gICAgICAgY29uc3Qgcm93ID0gZmluZFJvd0J5VmlydHVhbEluZGV4KHZJbmRleCk7XHJcbiAgLy8gICAgICAgaWYgKCFyb3cpIGNvbnRpbnVlO1xyXG4gIC8vICAgICAgIGNvbnN0IHJvd1ZhbHVlcyA9IHRoaXMuY29sdW1ucy5mbGF0TWFwKGNvbCA9PlxyXG4gIC8vICAgICAgICAgY29sLmNoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKVxyXG4gIC8vICAgICAgICAgICA/IGNvbC5jaGlsZHJlbi5tYXAoKGM6IHsgZmllbGQ6IHN0cmluZyB9KSA9PlxyXG4gIC8vICAgICAgICAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGMuZmllbGQpID8/ICcnXHJcbiAgLy8gICAgICAgICAgICAgKVxyXG4gIC8vICAgICAgICAgICA6IHRoaXMuZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpID8/ICcnXHJcbiAgLy8gICAgICAgKTtcclxuICAvLyAgICAgICBjb3BpZWRSb3dzLnB1c2gocm93VmFsdWVzKTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfVxyXG5cclxuICAvLyAgIGlmICh0aGlzLnNlbGVjdGVkQ2VsbHMgJiYgdGhpcy5zZWxlY3RlZENlbGxzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgY29uc3Qgcm93c01hcCA9IG5ldyBNYXA8bnVtYmVyLCBhbnlbXT4oKTtcclxuICAvLyAgICAgZm9yIChjb25zdCBjZWxsIG9mIHRoaXMuc2VsZWN0ZWRDZWxscykge1xyXG4gIC8vICAgICAgIGNvbnN0IHJvdyA9IGZpbmRSb3dCeVZpcnR1YWxJbmRleChjZWxsLnJvd0luZGV4KTtcclxuICAvLyAgICAgICBpZiAoIXJvdykgY29udGludWU7XHJcblxyXG4gIC8vICAgICAgIGNvbnN0IGNvbCA9IHRoaXMuY29sdW1uc1tjZWxsLmNvbEluZGV4XTtcclxuICAvLyAgICAgICBsZXQgZmllbGROYW1lID0gY29sPy5maWVsZDtcclxuICAvLyAgICAgICBpZiAoY29sPy5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW5bY2VsbC5zdWJDb2xJbmRleF0pIHtcclxuICAvLyAgICAgICAgIGZpZWxkTmFtZSA9IGNvbC5jaGlsZHJlbltjZWxsLnN1YkNvbEluZGV4XS5maWVsZDtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgZmllbGROYW1lKSA/PyAnJztcclxuXHJcbiAgLy8gICAgICAgaWYgKCFyb3dzTWFwLmhhcyhjZWxsLnJvd0luZGV4KSkgcm93c01hcC5zZXQoY2VsbC5yb3dJbmRleCwgW10pO1xyXG4gIC8vICAgICAgIHJvd3NNYXAuZ2V0KGNlbGwucm93SW5kZXgpIS5wdXNoKHZhbHVlKTtcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgY29uc3Qgc29ydGVkQ2VsbHMgPSBbLi4ucm93c01hcC5lbnRyaWVzKCldXHJcbiAgLy8gICAgICAgLnNvcnQoKFthXSwgW2JdKSA9PiBhIC0gYilcclxuICAvLyAgICAgICAubWFwKChbXywgdl0pID0+IHYpO1xyXG5cclxuICAvLyAgICAgY29waWVkUm93cy5wdXNoKC4uLnNvcnRlZENlbGxzKTtcclxuICAvLyAgIH1cclxuXHJcbiAgLy8gICBpZiAoY29waWVkUm93cy5sZW5ndGggPT09IDApIHtcclxuICAvLyAgICAgY29uc3QgYWN0aXZlQ2VsbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUtY2VsbCcpO1xyXG4gIC8vICAgICBpZiAoYWN0aXZlQ2VsbCkgcmV0dXJuIFtbYWN0aXZlQ2VsbC50ZXh0Q29udGVudD8udHJpbSgpIHx8ICcnXV07XHJcbiAgLy8gICB9XHJcbiAgLy8gICBjb25zdCBtYXhDb2xzID0gY29waWVkUm93cy5yZWR1Y2UoKG1heCwgcm93KSA9PiBNYXRoLm1heChtYXgsIHJvdy5sZW5ndGgpLCAwKTtcclxuICAvLyAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBjb3BpZWRSb3dzLm1hcChyb3cgPT4ge1xyXG4gIC8vICAgICBjb25zdCBuZXdSb3cgPSBbLi4ucm93XTtcclxuICAvLyAgICAgd2hpbGUgKG5ld1Jvdy5sZW5ndGggPCBtYXhDb2xzKSBuZXdSb3cucHVzaCgnJyk7IFxyXG4gIC8vICAgICByZXR1cm4gbmV3Um93O1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICByZXR1cm4gbm9ybWFsaXplZDtcclxuICAvLyB9XHJcblxyXG5cclxuICB1bmRvU3RhY2s6IGFueVtdW10gPSBbXTtcclxuICByZWRvU3RhY2s6IGFueVtdW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBjbG9uZURhdGEoZGF0YTogYW55W10pOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgfVxyXG5cclxuICBwZXJmb3JtQ3V0KHNlbGVjdGVkRGF0YTogYW55W11bXSkge1xyXG4gICAgLy8gU2F2ZSBjdXJyZW50IHN0YXRlIGZvciB1bmRvXHJcbiAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgIHRoaXMucmVkb1N0YWNrID0gW107IC8vIENsZWFyIHJlZG8gc3RhY2sgb24gbmV3IGFjdGlvblxyXG5cclxuICAgIC8vIFBlcmZvcm0gY3V0XHJcbiAgICB0aGlzLmNvcHlTZXJ2aWNlLmN1dFdpdGhBbmltYXRpb24oc2VsZWN0ZWREYXRhKTtcclxuICAgIGNvbnN0IHsgdXBkYXRlZFJvd3MgfSA9IHRoaXMuY29weVNlcnZpY2UuY3V0U2VsZWN0ZWRTZWxlY3RlZERhdGEoXHJcbiAgICAgIHRoaXMudmlzaWJsZVJvd3MsXHJcbiAgICAgIHRoaXMucm93U2VsZWN0ZWRJbmRleGVzLFxyXG4gICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMsXHJcbiAgICAgIHRoaXMuY29sdW1ucyxcclxuICAgICAgdGhpcy5zZXROZXN0ZWRWYWx1ZS5iaW5kKHRoaXMpXHJcbiAgICApO1xyXG5cclxuICAgIC8vIGNvbnNvbGUubG9nKCdVcGRhdGVkIFJvd3M6ICcsIHVwZGF0ZWRSb3dzKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZ2V0U2VsZWN0ZWREYXRhRm9yQ29weSgpOiBhbnlbXVtdIHtcclxuICAgIHJldHVybiB0aGlzLmNvcHlTZXJ2aWNlLmdldFNlbGVjdGVkRGF0YUZvckNvcHkoXHJcbiAgICAgIHRoaXMuZGF0YVNldCxcclxuICAgICAgdGhpcy5jb2x1bW5zLFxyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcyxcclxuICAgICAgdGhpcy5zZWxlY3RlZENlbGxzLFxyXG4gICAgICB0aGlzLmdldE5lc3RlZFZhbHVlLmJpbmQodGhpcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGlzRm9ybUZpZWxkID1cclxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdJTlBVVCcgfHxcclxuICAgICAgdGFyZ2V0LnRhZ05hbWUgPT09ICdURVhUQVJFQScgfHxcclxuICAgICAgdGFyZ2V0LmlzQ29udGVudEVkaXRhYmxlO1xyXG4gICAgaWYgKGlzRm9ybUZpZWxkKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdGFibGVDb250YWluZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0YS1ncmlkLWJvZHktd3JhcHBlcicpO1xyXG4gICAgaWYgKHRhYmxlQ29udGFpbmVyICYmICF0YWJsZUNvbnRhaW5lci5jb250YWlucyh0YXJnZXQpKSByZXR1cm47XHJcbiAgICBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjJykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoICYmICF0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5zaXplKSByZXR1cm5cclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XHJcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMuY29weVNlcnZpY2UuY29weVRvQ2xpcGJvYXJkKHNlbGVjdGVkRGF0YSk7XHJcblxyXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3gnKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGggfHwgIXRoaXMuZW5hYmxlQ3V0KSByZXR1cm5cclxuICAgICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5nZXRTZWxlY3RlZERhdGFGb3JDb3B5KCk7XHJcbiAgICAgIC8vIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgIHRoaXMucGVyZm9ybUN1dChzZWxlY3RlZERhdGEpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd6Jykge1xyXG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRDZWxscz8ubGVuZ3RoKSByZXR1cm5cclxuICAgICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy51bmRvKCk7XHJcblxyXG4gICAgfSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiBldmVudC5rZXkudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGgpIHJldHVyblxyXG4gICAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB0aGlzLnJlZG8oKTtcclxuICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQua2V5ID09PSAnYScpIHtcclxuICAgICAgLy8g4pyFIFNlbGVjdCBhbGwgY2VsbHNcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgdGhpcy5zZWxlY3RBbGxDZWxscygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdEFsbENlbGxzKCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENlbGxzID0gW107XHJcbiAgICB0aGlzLnNlbGVjdGVkS2V5cy5jbGVhcigpO1xyXG4gICAgdGhpcy5yb3dTZWxlY3RlZEluZGV4ZXMuY2xlYXIoKTtcclxuXHJcbiAgICAvLyBTZXQgc2VsZWN0aW9uIHN0YXJ0IGxpa2Ugc2luZ2xlIHNlbGVjdGlvbiAoZmlyc3QgY2VsbClcclxuICAgIGlmICh0aGlzLmRhdGFTZXQubGVuZ3RoICYmIHRoaXMuY29sdW1ucy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgZmlyc3RGaWVsZCA9IHRoaXMuY29sdW1uc1swXS5maWVsZCB8fCB0aGlzLmNvbHVtbnNbMF0ubmFtZTtcclxuICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydCA9IHtcclxuICAgICAgICByb3dJbmRleDogMCxcclxuICAgICAgICBjb2xJbmRleDogMCxcclxuICAgICAgICBzdWJDb2xJbmRleDogMCxcclxuICAgICAgICBmaWVsZDogZmlyc3RGaWVsZCxcclxuICAgICAgICBrZXk6IGAwLTAtMC0ke2ZpcnN0RmllbGR9YCxcclxuICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzU2VsZWN0aW5nID0gdHJ1ZTtcclxuXHJcbiAgICBmb3IgKGxldCByb3dJbmRleCA9IDA7IHJvd0luZGV4IDw9IHRoaXMuZGF0YVNldD8ubGVuZ3RoOyByb3dJbmRleCsrKSB7XHJcbiAgICAgIGlmICghcm93SW5kZXgpIGNvbnRpbnVlO1xyXG4gICAgICBjb25zdCByb3cgPSB0aGlzLmRhdGFTZXRbcm93SW5kZXhdO1xyXG4gICAgICB0aGlzLnJvd1NlbGVjdGVkSW5kZXhlcy5hZGQocm93SW5kZXgpO1xyXG5cclxuICAgICAgLy8gZm9yIChsZXQgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGNvbEluZGV4KyspIHtcclxuICAgICAgLy8gICBjb25zdCBjb2wgPSB0aGlzLmNvbHVtbnNbY29sSW5kZXhdO1xyXG4gICAgICAvLyAgIGNvbnN0IGZpZWxkID0gY29sLmZpZWxkIHx8IGNvbC5uYW1lO1xyXG4gICAgICAvLyAgIGlmKCFjb2wuaXNfdmlzaWJsZSkgY29udGludWU7XHJcblxyXG4gICAgICAvLyAgIGlmIChjb2wuY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAvLyAgICAgY29sLmNoaWxkcmVuLmZvckVhY2goKHN1YjogYW55LCBzdWJDb2xJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIC8vICAgICAgIGNvbnN0IGtleSA9IGAke3Jvd0luZGV4fS0ke2NvbEluZGV4fS0ke3N1YkNvbEluZGV4fS0ke2ZpZWxkfWA7XHJcbiAgICAgIC8vICAgICAgIHRoaXMuc2VsZWN0ZWRLZXlzLmFkZChrZXkpO1xyXG4gICAgICAvLyAgICAgICB0aGlzLnNlbGVjdGVkQ2VsbHMucHVzaCh7XHJcbiAgICAgIC8vICAgICAgICAgcm93SW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgY29sSW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgc3ViQ29sSW5kZXgsXHJcbiAgICAgIC8vICAgICAgICAgZmllbGQsXHJcbiAgICAgIC8vICAgICAgICAga2V5LFxyXG4gICAgICAvLyAgICAgICB9KTtcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgIH0gZWxzZSB7XHJcbiAgICAgIC8vICAgICBjb25zdCBrZXkgPSBgJHtyb3dJbmRleH0tJHtjb2xJbmRleH0tMC0ke2ZpZWxkfWA7XHJcbiAgICAgIC8vICAgICB0aGlzLnNlbGVjdGVkS2V5cy5hZGQoa2V5KTtcclxuICAgICAgLy8gICAgIHRoaXMuc2VsZWN0ZWRDZWxscy5wdXNoKHtcclxuICAgICAgLy8gICAgICAgcm93SW5kZXgsXHJcbiAgICAgIC8vICAgICAgIGNvbEluZGV4LFxyXG4gICAgICAvLyAgICAgICBzdWJDb2xJbmRleDogMCxcclxuICAgICAgLy8gICAgICAgZmllbGQsXHJcbiAgICAgIC8vICAgICAgIGtleSxcclxuICAgICAgLy8gICAgIH0pO1xyXG4gICAgICAvLyAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBoaWdobGlnaHRpbmcgYW5kIFVJXHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbkJvdW5kYXJpZXMoKTtcclxuXHJcbiAgICAvLyBTdG9wIFwic2VsZWN0aW5nXCIgbW9kZSBzaW5jZSBpdCdzIGEgb25lLXRpbWUgc2VsZWN0LWFsbFxyXG4gICAgdGhpcy5pc1NlbGVjdGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICB1bmRvKCkge1xyXG4gICAgaWYgKHRoaXMudW5kb1N0YWNrLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcHJldlN0YXRlID0gdGhpcy51bmRvU3RhY2sucG9wKCkhO1xyXG4gICAgICB0aGlzLnJlZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKHByZXZTdGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWRvKCkge1xyXG4gICAgaWYgKHRoaXMucmVkb1N0YWNrLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgbmV4dFN0YXRlID0gdGhpcy5yZWRvU3RhY2sucG9wKCkhO1xyXG4gICAgICB0aGlzLnVuZG9TdGFjay5wdXNoKHRoaXMuY2xvbmVEYXRhKHRoaXMudmlzaWJsZVJvd3MpKTtcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyA9IHRoaXMuY2xvbmVEYXRhKG5leHRTdGF0ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OnBhc3RlJywgWyckZXZlbnQnXSlcclxuICBhc3luYyBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgdGFnID0gdGFyZ2V0Py50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYScgfHwgdGFyZ2V0Py5nZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScpID09PSAndHJ1ZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zZWxlY3RlZENlbGxzPy5sZW5ndGggfHwgIXRoaXMuYWN0aXZlQ2VsbCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSBldmVudC5jbGlwYm9hcmREYXRhPy5nZXREYXRhKCd0ZXh0Jyk7XHJcbiAgICBpZiAoIXRleHQpIHJldHVybjtcclxuICAgIGNvbnN0IHVzZXJDb25maXJtZWQgPSBhd2FpdCB0aGlzLnNob3dDb25maXJtYXRpb25Nb2RhbChcclxuICAgICAgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBwYXN0ZSB0aGUgY29waWVkIGRhdGE/J1xyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoIXVzZXJDb25maXJtZWQpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHN0YXJ0Q2VsbCA9IHRoaXMuc2VsZWN0ZWRDZWxscz8uWzBdO1xyXG4gICAgaWYgKCFzdGFydENlbGwpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVkUm93cyA9IGF3YWl0IHRoaXMuY29weVNlcnZpY2UucGFzdGVGcm9tQ2xpcGJvYXJkVGV4dChcclxuICAgICAgdGV4dCxcclxuICAgICAgdGhpcy52aXNpYmxlUm93cyxcclxuICAgICAgdGhpcy5jb2x1bW5zLFxyXG4gICAgICBzdGFydENlbGwucm93SW5kZXgsXHJcbiAgICAgIHN0YXJ0Q2VsbC5jb2xJbmRleCxcclxuICAgICAgc3RhcnRDZWxsLnN1YkNvbEluZGV4XHJcbiAgICApO1xyXG5cclxuICAgIGlmICh1cGRhdGVkUm93cz8udXBkYXRlUm93cz8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuZ2VuZXJpY0V2ZW50LmVtaXQoe1xyXG4gICAgICAgIGRhdGE6IHVwZGF0ZWRSb3dzPy51cGRhdGVSb3dzLFxyXG4gICAgICAgIGV2ZW50VHlwZTogJ29uQ2VsbEVkaXQnLFxyXG4gICAgICAgIGNvbHVtbjogdXBkYXRlZFJvd3M/LmN1cnJlbnRDb2x1bXNcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0NvbmZpcm1hdGlvbk1vZGFsKG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICBjb25zdCBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIG92ZXJsYXkuY2xhc3NMaXN0LmFkZCgnY3VzdG9tLW92ZXJsYXktd3JhcHBlcicpO1xyXG4gICAgICBvdmVybGF5LmlubmVySFRNTCA9IGBcclxuICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1vdmVybGF5XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1tb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxwIGNsYXNzPVwibW9kYWwtbWVzc2FnZVwiPiR7bWVzc2FnZX08L3A+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bi1jb25maXJtXCI+Q29uZmlybTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4tY2FuY2VsXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgYDtcclxuXHJcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XHJcbiAgICAgIGNvbnN0IGNvbmZpcm1CdG4gPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoJy5idG4tY29uZmlybScpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBjb25zdCBjYW5jZWxCdG4gPSBvdmVybGF5LnF1ZXJ5U2VsZWN0b3IoJy5idG4tY2FuY2VsJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChvdmVybGF5KTtcclxuICAgICAgfTtcclxuICAgICAgY29uZmlybUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICBjbGVhbnVwKCk7XHJcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjYW5jZWxCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgICAgY2xlYW51cCgpO1xyXG4gICAgICAgIHJlc29sdmUoZmFsc2UpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGlzRGF0ZSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIWlzTmFOKG5ldyBEYXRlKHZhbHVlKT8uZ2V0VGltZSgpKTtcclxuICB9XHJcblxyXG5cclxuICAvLyBIb2xkIGV4cGFuZGVkIElEcyAoYXJyYXkgZm9yIG11bHRpcGxlLCBzaW5nbGUgdmFsdWUgZm9yIHNpbmdsZSlcclxuICBleHBhbmRlZGVkRGV0YWlsUm93czogKHN0cmluZyB8IG51bWJlcilbXSB8IHN0cmluZyB8IG51bWJlciA9ICcnO1xyXG5cclxuICB0b2dnbGVEZXRhaWxSb3dFeHBhbmQocm93OiBhbnkpIHtcclxuICAgIGNvbnN0IGlkID0gcm93Py5pZCB8fCByb3c/Ll9pZDtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSAnQXNzZXRzJyAmJiByb3c/LmRldGFpbD8uY29sdW1ucykge1xyXG4gICAgICByb3cuZGV0YWlsLmNvbHVtbnMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaXRlbS53aWR0aCA9IGl0ZW0/LndpZHRoIHx8ICh0aGlzLmRhdGFHcmlkQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggLyByb3cuZGV0YWlsLmNvbHVtbnM/Lmxlbmd0aClcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMucHJldmlld05lc3RlZENvbHMgPSB0aGlzLmRlZXBDbG9uZUNvbHVtbnMocm93LmRldGFpbC5jb2x1bW5zKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5leHBhbmRlZGVkRGV0YWlsUm93cykpIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gW107XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzIGFzIChzdHJpbmcgfCBudW1iZXIpW107XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gZXhwYW5kZWQuaW5kZXhPZihpZCk7XHJcblxyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIGV4cGFuZGVkLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXhwYW5kZWQucHVzaChpZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID09PSBpZCkge1xyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPSAnJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzID0gaWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdm9pZCB0aGlzLnJpZ2h0UGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNlbnRlclBpbm5lZEJvZHk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIHRoaXMucmlnaHRQaW5uZWRCb2R5Py5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAzMDApXHJcbiAgfVxyXG5cclxuICBpc0RldGFpbHNFeHBhbmRlZChyb3c6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgaWQgPSByb3c/LmlkIHx8IHJvdz8uX2lkO1xyXG5cclxuICAgIGlmICh0aGlzLmtlZXBNdWx0aXBsZUV4cGFuZGVkRGV0YWlscykge1xyXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmV4cGFuZGVkZWREZXRhaWxSb3dzKSAmJlxyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MuaW5jbHVkZXMoaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRlZERldGFpbFJvd3MgPT09IGlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0RmlsdGVyVmFsdWUob3B0aW9uOiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIG9wdGlvbj8udmFsdWUgPz8gb3B0aW9uO1xyXG4gIH1cclxuXHJcblxyXG4gIG9wZW5JbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgdG9nZ2xlTWVudShpOiBudW1iZXIsIGV2ZW50PzogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKGV2ZW50KSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9XHJcbiAgICB0aGlzLm9wZW5JbmRleCA9IHRoaXMub3BlbkluZGV4ID09PSBpID8gbnVsbCA6IGk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCduZXN0ZWRUYWJsZScpXHJcbiAgbmVzdGVkVGFibGUhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuICBnZXQgaGFzVmVydGljYWxTY3JvbGwoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMubmVzdGVkVGFibGUpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiB0aGlzLm5lc3RlZFRhYmxlLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5uZXN0ZWRUYWJsZS5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICB9XHJcblxyXG4gIGdldCBoYXNIb3Jpem9udGFsU2Nyb2xsKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0aGlzLm5lc3RlZFRhYmxlKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMubmVzdGVkVGFibGUubmF0aXZlRWxlbWVudDtcclxuICAgIHJldHVybiBlbC5zY3JvbGxXaWR0aCA+IGVsLmNsaWVudFdpZHRoO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFRvdGFsQW1vdW50KGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoIWNvbHVtbj8uaXNfYW1vdW50KSByZXR1cm47XHJcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMub3JpZ2luYWxEYXRhU2V0LnJlZHVjZSgoc3VtLCByb3cpID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSByb3dbY29sdW1uLmZpZWxkXSB8fCAwO1xyXG4gICAgICByZXR1cm4gc3VtICsgdmFsdWU7XHJcbiAgICB9LCAwKTtcclxuICAgIGlmKCF0b3RhbCkgcmV0dXJuIGAke3RoaXMuY3VycmVuY3lTeW1ib2x9IDAuMDBgXHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXJyZW5jeVN5bWJvbH0gJHt0aGlzLmZvcm1hdEN1cnJlbmN5LnRyYW5zZm9ybSh0b3RhbCwgdGhpcy5jdXJyZW5jeUZvcm1hdCl9YDtcclxuICB9XHJcblxyXG4gIGRyb3BDb2x1bW4oZXZlbnQ6IENka0RyYWdEcm9wPGFueVtdPiwgcm93OiBhbnkpIHtcclxuICAgIC8vIFJlb3JkZXIgdGhlIGNvbHVtbnMgYXJyYXlcclxuICAgIG1vdmVJdGVtSW5BcnJheShyb3cuZGV0YWlsLmNvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgfVxyXG5cclxuICBjdXJyZW50U3ViU29ydENvbHVtbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7IC8vIGFjdGl2ZSBjb2x1bW5cclxuICBjdXJyZW50U29ydERpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJzsgLy8gYWN0aXZlIGRpcmVjdGlvblxyXG5cclxuICBzb3J0TmVzdGVkQ29sKGNvbDogYW55LCByb3c6IGFueSkge1xyXG4gICAgY29uc3QgZGF0YVNldCA9IHJvdz8uZGV0YWlsPy5yZXN1bHQ7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9PT0gY29sLmZpZWxkKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPSB0aGlzLmN1cnJlbnRTb3J0RGlyZWN0aW9uID09PSAnYXNjJyA/ICdkZXNjJyA6ICdhc2MnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jdXJyZW50U3ViU29ydENvbHVtbiA9IGNvbC5maWVsZDtcclxuICAgICAgdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9ICdhc2MnO1xyXG4gICAgfVxyXG4gICAgY29sLm9yZGVyX2J5ID0gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbjtcclxuXHJcbiAgICAvLyBTb3J0IGNvcHkgaW5zdGVhZCBvZiBtdXRhdGluZ1xyXG4gICAgY29uc3Qgc29ydGVkID0gWy4uLmRhdGFTZXRdLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgbGV0IGFWYWwgPSBhW2NvbC5maWVsZF07XHJcbiAgICAgIGxldCBiVmFsID0gYltjb2wuZmllbGRdO1xyXG4gICAgICBhVmFsID0gYVZhbCA9PSBudWxsID8gJycgOiBhVmFsO1xyXG4gICAgICBiVmFsID0gYlZhbCA9PSBudWxsID8gJycgOiBiVmFsO1xyXG5cclxuICAgICAgaWYgKGNvbC50eXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgICBhVmFsID0gbmV3IERhdGUoYVZhbCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGJWYWwgPSBuZXcgRGF0ZShiVmFsKS5nZXRUaW1lKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGFOdW0gPSBwYXJzZUZsb2F0KGFWYWwpO1xyXG4gICAgICBjb25zdCBiTnVtID0gcGFyc2VGbG9hdChiVmFsKTtcclxuICAgICAgY29uc3QgYm90aE51bWJlcnMgPSAhaXNOYU4oYU51bSkgJiYgIWlzTmFOKGJOdW0pO1xyXG5cclxuICAgICAgaWYgKGJvdGhOdW1iZXJzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFNvcnREaXJlY3Rpb24gPT09ICdhc2MnID8gYU51bSAtIGJOdW0gOiBiTnVtIC0gYU51bTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBjb21wID0gU3RyaW5nKGFWYWwpLmxvY2FsZUNvbXBhcmUoU3RyaW5nKGJWYWwpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U29ydERpcmVjdGlvbiA9PT0gJ2FzYycgPyBjb21wIDogLWNvbXA7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJvdy5kZXRhaWwucmVzdWx0ID0gc29ydGVkO1xyXG5cclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRDb2x1bW5XaWR0aFB4KHJvdzogYW55LCBjb2w6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLndpZHRoKSByZXR1cm4gY29sLndpZHRoICsgJ3B4JztcclxuICAgIGNvbnN0IHBpeGVscyA9IHRoaXMuY2VudGVyU2Nyb2xsYWJsZUJvZHk/Lm5hdGl2ZUVsZW1lbnQ/Lm9mZnNldFdpZHRoIC8gcm93LmRldGFpbD8uY29sdW1ucy5sZW5ndGg7XHJcbiAgICByZXR1cm4gcGl4ZWxzICsgJ3B4JztcclxuICB9XHJcblxyXG4gIGZ1bGxzY3JlZW5JbWFnZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuICAvLyBBc3Nlc3RzIE5lc3RlZCBUYWJsZSBXb3JrIEltcGxlbWVudGVkIEhlcmVcclxuXHJcbiAgcGluVW5waW5Db2x1bShjb2w6IGFueSwgdmFsdWU6ICdsZWZ0JyB8ICdyaWdodCcgfCBudWxsLCBjb2x1bW5zOiBhbnlbXSkge1xyXG4gICAgY29sLnBpbm5lZCA9IHZhbHVlO1xyXG4gICAgY29uc3QgbGVmdCA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdsZWZ0Jyk7XHJcbiAgICBjb25zdCBtaWRkbGUgPSBjb2x1bW5zLmZpbHRlcihjID0+ICFjLnBpbm5lZCB8fCBjLnBpbm5lZCA9PT0gbnVsbCk7XHJcbiAgICBjb25zdCByaWdodCA9IGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpO1xyXG4gICAgY29sdW1ucy5sZW5ndGggPSAwO1xyXG4gICAgY29sdW1ucy5wdXNoKC4uLmxlZnQsIC4uLm1pZGRsZSwgLi4ucmlnaHQpO1xyXG4gICAgdGhpcy5hY3RpdmVDb2wgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgZ2V0TGVmdFBpbm5lZENvdW50KGNvbHVtbnM6IGFueVtdKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBjb2x1bW5zLmZpbHRlcihjID0+IGMucGlubmVkID09PSAnbGVmdCcpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldFJpZ2h0UGlubmVkQ291bnQoY29sdW1uczogYW55W10pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGNvbHVtbnMuZmlsdGVyKGMgPT4gYy5waW5uZWQgPT09ICdyaWdodCcpLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldFN0aWNreUxlZnQoY29sdW1uczogYW55W10sIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxlZnQgPSAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRleDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHByZXZDb2wgPSBjb2x1bW5zW2ldO1xyXG4gICAgICBpZiAocHJldkNvbC5waW5uZWQgPT09ICdsZWZ0Jykge1xyXG4gICAgICAgIGxlZnQgKz0gcHJldkNvbC53aWR0aCB8fCAxMDA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBgJHtsZWZ0fXB4YDtcclxuICB9XHJcblxyXG4gIHByZXZpZXdOZXN0ZWRDb2xzOiBhbnlbXSA9IFtdO1xyXG4gIG9uTmVzdGVkQ29sU29ydChldmVudDogQ2RrRHJhZ1NvcnRFdmVudDxhbnlbXT4sIGNvbHVtbnM6IGFueVtdKTogdm9pZCB7XHJcbiAgICBpZiAoIWV2ZW50IHx8ICFjb2x1bW5zKSByZXR1cm47XHJcbiAgICBjb25zdCBmaXJzdFBvc2l0aW9ucyA9IG5ldyBNYXA8SFRNTEVsZW1lbnQsIG51bWJlcj4oKTtcclxuICAgIGNvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbENlbGxzID0gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGBbZGF0YS1maWVsZD1cIiR7Y29sLmZpZWxkfVwiXWApKSBhcyBIVE1MRWxlbWVudFtdO1xyXG4gICAgICBjb2xDZWxscy5mb3JFYWNoKChlbCkgPT4gZmlyc3RQb3NpdGlvbnMuc2V0KGVsLCBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0KSk7XHJcbiAgICB9KTtcclxuICAgIG1vdmVJdGVtSW5BcnJheShjb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgICBjb25zdCB1cGRhdGVkQ2VsbHMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYFtkYXRhLWZpZWxkPVwiJHtjb2wuZmllbGR9XCJdYCkpIGFzIEhUTUxFbGVtZW50W107XHJcbiAgICAgICAgdXBkYXRlZENlbGxzLmZvckVhY2goKGVsKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBuZXdMZWZ0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgICAgICAgIGNvbnN0IG9sZExlZnQgPSBmaXJzdFBvc2l0aW9ucy5nZXQoZWwpID8/IG5ld0xlZnQ7XHJcbiAgICAgICAgICBjb25zdCBkZWx0YVggPSBvbGRMZWZ0IC0gbmV3TGVmdDtcclxuXHJcbiAgICAgICAgICBpZiAoZGVsdGFYICE9PSAwKSB7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7ZGVsdGFYfXB4KWA7XHJcbiAgICAgICAgICAgIHZvaWQgZWwub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zaXRpb24gPSAndHJhbnNmb3JtIDI1MG1zIGVhc2UnO1xyXG4gICAgICAgICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWCgwKSc7XHJcbiAgICAgICAgICAgIGNvbnN0IGNsZWFudXAgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgZWwuc3R5bGUudHJhbnNpdGlvbiA9ICcnO1xyXG4gICAgICAgICAgICAgIGVsLnN0eWxlLnRyYW5zZm9ybSA9ICcnO1xyXG4gICAgICAgICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBjbGVhbnVwKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcigndHJhbnNpdGlvbmVuZCcsIGNsZWFudXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHNhdmVTZWxlY3Rpb24oc2VsZWN0ZWRJZHM6IHN0cmluZ1tdLCB0YWJsZVR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKCF0YWJsZVR5cGUpIHJldHVybjtcclxuICAgIGNvbnN0IHN0b3JlZCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RhdGF0YWJsZVNlbGVjdGlvbnMnKSB8fCAne1wic2VsZWN0ZWRSb3dzXCI6IHt9fScpO1xyXG4gICAgY29uc3QgYWxsU2VsZWN0ZWQgPSBzdG9yZWQuc2VsZWN0ZWRSb3dzIHx8IHt9O1xyXG4gICAgYWxsU2VsZWN0ZWRbdGFibGVUeXBlXSA9IHNlbGVjdGVkSWRzO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXHJcbiAgICAgICdkYXRhdGFibGVTZWxlY3Rpb25zJyxcclxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIHNlbGVjdGVkUm93czogYWxsU2VsZWN0ZWQsXHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRhYmxlVHlwZVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICByZXN0b3JlU2VsZWN0aW9uKHRhYmxlVHlwZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBzdG9yZWQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhdGFibGVTZWxlY3Rpb25zJykgfHwgJ3t9Jyk7XHJcbiAgICBjb25zdCBpZHMgPSBzdG9yZWQuc2VsZWN0ZWRSb3dzPy5bdGFibGVUeXBlXSB8fCBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gbmV3IFNldChpZHMpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRSb3dzO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBpc091dHNpZGVDb250YWluZXIgPSBmYWxzZTtcclxuICBwcml2YXRlIGNvbnRhaW5lclJlY3Q6IERPTVJlY3QgfCBudWxsID0gbnVsbDtcclxuXHJcblxyXG4gIG9uRHJhZ1N0YXJ0ZWQoY29sOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uID0gY29sO1xyXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGEtZ3JpZC1tYWluLWNvbnRhaW5lcicpO1xyXG4gICAgdGhpcy5jb250YWluZXJSZWN0ID0gY29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnTW92ZWQoZXZlbnQ6IENka0RyYWdNb3ZlKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyUmVjdCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IHsgeCwgeSB9ID0gZXZlbnQucG9pbnRlclBvc2l0aW9uO1xyXG4gICAgY29uc3QgaXNPdXRzaWRlID1cclxuICAgICAgeCA8IHRoaXMuY29udGFpbmVyUmVjdC5sZWZ0IHx8XHJcbiAgICAgIHggPiB0aGlzLmNvbnRhaW5lclJlY3QucmlnaHQgfHxcclxuICAgICAgeSA8IHRoaXMuY29udGFpbmVyUmVjdC50b3AgfHxcclxuICAgICAgeSA+IHRoaXMuY29udGFpbmVyUmVjdC5ib3R0b207XHJcblxyXG4gICAgLy8gaWYgKGlzT3V0c2lkZSAhPT0gdGhpcy5pc091dHNpZGVDb250YWluZXIpIHtcclxuICAgIC8vICAgdGhpcy5pc091dHNpZGVDb250YWluZXIgPSBpc091dHNpZGU7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBvbkRyYWdFbmRlZCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvLyBpZiAodGhpcy5pc091dHNpZGVDb250YWluZXIgJiYgdGhpcy5jdXJyZW50RHJhZ2dpbmdDb2x1bW4pIHtcclxuICAgICAgLy8gICB0aGlzLmN1cnJlbnREcmFnZ2luZ0NvbHVtbiEuaXNfdmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudERyYWdnaW5nQ29sdW1uID0gbnVsbDtcclxuICAgICAgICB0aGlzLmlzT3V0c2lkZUNvbnRhaW5lciA9IGZhbHNlO1xyXG4gICAgICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgLy8gfVxyXG4gICAgfSwgMTAwKTtcclxuICAgIHRoaXMuY29udGFpbmVyUmVjdCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBnZXRTdGFydEluZGV4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyA9PT0gMFxyXG4gICAgICA/IDBcclxuICAgICAgOiAodGhpcy5wYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKSAqIHRoaXMucGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfHwgMDtcclxuICB9XHJcblxyXG4gIGhhc0FueURlZmF1bHRWaWV3KCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVWaWV3Py5zb21lKCh4KSA9PiB4LmlzX2RlZmF1bHQgfHwgeC5pc190ZW1wKTtcclxuICB9XHJcblxyXG5cclxuICBnZXQgaXNUYWJsZVByZXNldE5vdENoYW5nZWQoKSB7XHJcbiAgICBpZiAodGhpcy50YWJsZUZpbHRlclZpZXdJZCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgY29uc3QgY3VyclByZXNldCA9IHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRQcmVzZXRDb2x1bW5zID0gY3VyclByZXNldD8uY29sdW1ucz8ubWFwKChjb2w6IHsgZmllbGQ6IGFueTsgd2lkdGg6IGFueTsgcGlubmVkOiBhbnk7IH0pID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxyXG4gICAgICAgIHdpZHRoOiBjb2wud2lkdGgsXHJcbiAgICAgICAgcGlubmVkOiBjb2wucGlubmVkXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuY29sdW1ucz8ubWFwKGNvbCA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZmllbGQ6IGNvbC5maWVsZCxcclxuICAgICAgICB3aWR0aDogY29sLndpZHRoLFxyXG4gICAgICAgIHBpbm5lZDogY29sLnBpbm5lZFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBzdHJpbmdzQ3VycmVudFByZXN0Q29scyA9IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRQcmVzZXRDb2x1bW5zKTtcclxuICAgIGNvbnN0IHN0cmluZ0NvbHVtbnMgPSBKU09OLnN0cmluZ2lmeShjb2x1bW5zKTtcclxuICAgIGNvbnN0IGZpbHRlcnMgPSB0aGlzLmZpbHRlcnNDb25maWcubWFwKChmaWx0ZXIpID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBmaWxlZDogZmlsdGVyLmZpZWxkLFxyXG4gICAgICAgIHF1ZXJ5OiB7XHJcbiAgICAgICAgICBjb25kaXRpb246IGZpbHRlcj8ucXVlcnk/LmNvbmRpdGlvbixcclxuICAgICAgICAgIGZpcnN0X2NvbmRpdGlvbjogZmlsdGVyPy5xdWVyeT8uZmlyc3RfY29uZGl0aW9uLFxyXG4gICAgICAgICAgZmlyc3RfdmFsdWU6IGZpbHRlcj8ucXVlcnk/LmZpcnN0X3ZhbHVlLFxyXG4gICAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogZmlsdGVyPy5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbixcclxuICAgICAgICAgIHNlY29uZF92YWx1ZTogZmlsdGVyPy5xdWVyeT8uc2Vjb25kX3ZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX2lkczogZmlsdGVyPy5faWRzXHJcbiAgICAgIH1cclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgY3VycmVudFByZXNldEZpbHRlcnMgPSBjdXJyUHJlc2V0Py5maWx0ZXJzPy5tYXAoKGZpbHRlcjogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZmlsZWQ6IGZpbHRlci5maWVsZCxcclxuICAgICAgICBxdWVyeTogZmlsdGVyLnF1ZXJ5LFxyXG4gICAgICAgIF9pZHM6IGZpbHRlcj8uX2lkc1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG5cclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcImZpbHRlciBjb25naWc6IFwiLCBmaWx0ZXJzKTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwiY3VycmVudCBwcmVzZXQgZmlsdGVyczogXCIsIGN1cnJlbnRQcmVzZXRGaWx0ZXJzKTtcclxuXHJcbiAgICAvLyBjb25zb2xlLmxvZygnaXNFcXVhbCcsIHN0cmluZ3NDdXJyZW50UHJlc3RDb2xzID09IHN0cmluZ0NvbHVtbnMpO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ0N1cnJlbnQgVGVtcCBQcmVzZXQgOiAnLCBjdXJyUHJlc2V0KVxyXG4gICAgLy8gY29uc29sZS5sb2coJ0N1cnJlbnQgVGVtcCBQcmVzZXQgQ29scyBjb2x1bW5zOiAnLCBjdXJyZW50UHJlc2V0Q29sdW1ucylcclxuICAgIC8vIGNvbnNvbGUubG9nKCdDdXJyZW50IGNvbHVtbnM6ICcsIGNvbHVtbnMpO1xyXG5cclxuICAgIGlmICghY3VycmVudFByZXNldENvbHVtbnMpIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIChjdXJyZW50UHJlc2V0Q29sdW1ucyAmJiAoc3RyaW5nc0N1cnJlbnRQcmVzdENvbHMgPT0gc3RyaW5nQ29sdW1ucykgJiYgKEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpID09IEpTT04uc3RyaW5naWZ5KGN1cnJlbnRQcmVzZXRGaWx0ZXJzKSkgJiYgKHRoaXMuZm9udEZhaW1seSA9PSBjdXJyUHJlc2V0LmNvbmZpZy5mb250RmFpbWx5KVxyXG4gICAgICAmJiAodGhpcy5ib2R5VGV4dEZvbnRzU2l6ZSA9PSBjdXJyUHJlc2V0LmNvbmZpZy5ib2R5VGV4dEZvbnRzU2l6ZSkgJiZcclxuICAgICAgKHRoaXMuaGVhZGVyVGV4dEZvbnRzU2l6ZSA9PSB0aGlzLmhlYWRlclRleHRGb250c1NpemUpXHJcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5zaG93VmVydGljYWxCb3JkZXIgPT0gdGhpcy5zaG93VmVydGljYWxCb3JkZXJcclxuICAgICAgJiYgdGhpcy5jdXJyZXRhVGFibGVQcmVzZXRGb3JVcGRhdGUuY29uZmlnLmZvbnRGYWltbHkgPT0gdGhpcy5mb250RmFpbWx5XHJcbiAgICAgICYmIHRoaXMuY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlLmNvbmZpZy5zZWxlY3RlZFRhYmxlTGF5b3V0ID09IHRoaXMuc2VsZWN0ZWRUYWJsZUxheW91dFxyXG4gICAgICAmJiB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZS5jb25maWcuYm9keVRleHRGb250c1NpemUgPT0gdGhpcy5ib2R5VGV4dEZvbnRzU2l6ZVxyXG4gICAgICAmJiB0aGlzLmN1cnJldGFUYWJsZVByZXNldEZvclVwZGF0ZS5jb25maWcucm93U2hhZGluZ0VuYWJsZWQgPT0gdGhpcy5yb3dTaGFkaW5nRW5hYmxlZCk7XHJcblxyXG4gICAgLy8gcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbkJ1dHRvbkNsaWNrKGJ1dHRvbjogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB0ZXh0ID0gYnV0dG9uPy50b0xvY2FsZUxvd2VyQ2FzZSgpO1xyXG4gICAgaWYgKHRleHQgPT0gJ2FjdGl2ZSBkYXRhJyB8fCB0ZXh0ID09ICdhY3RpdmUnIHx8IHRleHQgPT0gJ2RhdGEgYWN0aXZlJyB8fCB0ZXh0ID09ICd1bmFyY2hpdmVkIGRhdGEnIHx8IHRleHQgPT0gJ3VuYXJjaGl2ZSBkYXRhJykgdGhpcy5jbGVhclNlbGVjdGlvblN0YXRlKHRoaXMudGFibGVUeXBlKTtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgb2JqOiBidXR0b25cclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiBcIm9uQWN0aW9uQnV0dG9uQ2xpY2tcIixcclxuICAgIH07XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG5cclxuICBzZXRBY3RpdmVUYWIodGFiOiBzdHJpbmcgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYjtcclxuICAgIGNvbnN0IGFsbFRhYnMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhY3RpdmVUYWJzJykgfHwgJ3t9Jyk7XHJcbiAgICBhbGxUYWJzW3RoaXMudGFibGVUeXBlXSA9IHRhYjtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhY3RpdmVUYWJzJywgSlNPTi5zdHJpbmdpZnkoYWxsVGFicykpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgY29uc3QgZXZlbnQgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICB0YWJsZVR5cGU6IHRoaXMudGFibGVUeXBlLFxyXG4gICAgICAgIG9iajogdGFiXHJcbiAgICAgIH0sXHJcbiAgICAgIGV2ZW50VHlwZTogJ29uVGFiQ2hhbmdlJyxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5nZW5lcmljRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRCYWNrZ3JvdW5kQ29sb3Iocm93OiBhbnksIGlzRXZlbjogYm9vbGVhbiwgc2VjdGlvbjogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICh0aGlzLmhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3dIb3ZlckNvbG9yO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaXNSb3dTZWxlY3RlZChyb3cpKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNoZWNrZWRSb3dCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICB9XHJcbiAgICBsZXQgYmFzZUNvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgaWYgKHRoaXMucm93U2hhZGluZ0VuYWJsZWQpIHtcclxuICAgICAgYmFzZUNvbG9yID0gaXNFdmVuID8gdGhpcy5ldmVuUm93c0JhY2tncm91bmRDb2xvciA6IHRoaXMub2RkUm93c0JhY2tncm91bmRDb2xvcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGJhc2VDb2xvciA9IHRoaXMuZXZlblJvd3NCYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICB9XHJcbiAgICBpZiAoIWJhc2VDb2xvcikge1xyXG4gICAgICBpZiAoc2VjdGlvbiA9PT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgYmFzZUNvbG9yID0gdGhpcy5sZWZ0UGlubmVkQmFja2dyb3VuZENvbG9yO1xyXG4gICAgICB9IGVsc2UgaWYgKHNlY3Rpb24gPT09ICdyaWdodCcpIHtcclxuICAgICAgICBiYXNlQ29sb3IgPSB0aGlzLnJpZ2h0UGlubmVkQmFja2dyb3VuZENvbG9yO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGJhc2VDb2xvciA9IHRoaXMuYm9keUJhY2tncm91bmRDb2xvcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJhc2VDb2xvcjtcclxuICB9XHJcblxyXG4gIGhhc0hvcml6b250YWxTY3JvbGxiYXIoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXRoaXMuY2VudGVyUGlubmVkSGVhZGVyPy5uYXRpdmVFbGVtZW50KSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBlbCA9IHRoaXMuY2VudGVyUGlubmVkSGVhZGVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICByZXR1cm4gZWwuc2Nyb2xsV2lkdGggPiBlbC5jbGllbnRXaWR0aDtcclxuICB9XHJcblxyXG5cclxuICBnZXRTYWZlQ29tbWVudChkZXNjcmlwdGlvbjogc3RyaW5nKTogU2FmZUh0bWwge1xyXG4gICAgcmV0dXJuIHRoaXMuY2xlYW5FZGl0b3JDb250ZW50KGRlc2NyaXB0aW9uKTtcclxuICB9XHJcbiAgY2xlYW5FZGl0b3JDb250ZW50KGNvbnRlbnQ6IHN0cmluZyk6IFNhZmVIdG1sIHtcclxuICAgIGlmICghY29udGVudCkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICAvLyAxLiBEZWNvZGUgSFRNTCBlbnRpdGllc1xyXG4gICAgY29uc3QgdGV4dGFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpO1xyXG4gICAgdGV4dGFyZWEuaW5uZXJIVE1MID0gY29udGVudDtcclxuICAgIGxldCBkZWNvZGVkID0gdGV4dGFyZWEudmFsdWU7XHJcblxyXG4gICAgZGVjb2RlZCA9IGRlY29kZWRcclxuICAgICAgLnJlcGxhY2UoLzxcXC8/KHNwYW58cHx0aGVhZHx0Ym9keXx0Zm9vdClbXj5dKj4vZywgJycpXHJcbiAgICAgIC5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKTtcclxuXHJcbiAgICAvLyBFbnN1cmUgY2xlYW4gdGFibGUgc3RydWN0dXJlXHJcbiAgICBkZWNvZGVkID0gZGVjb2RlZFxyXG4gICAgICAucmVwbGFjZSgvPHRhYmxlW14+XSo+L2csICc8dGFibGU+JylcclxuICAgICAgLnJlcGxhY2UoLzx0cltePl0qPi9nLCAnPHRyPicpXHJcbiAgICAgIC5yZXBsYWNlKC88dGhbXj5dKj4vZywgJzx0aD4nKVxyXG4gICAgICAucmVwbGFjZSgvPHRkW14+XSo+L2csICc8dGQ+Jyk7ICAvLyBSZW1vdmUgPHRoZWFkPiBhbmQgPHRib2R5PiB0YWdzXHJcblxyXG4gICAgLy8gNC4gQWRkIGlubGluZSBzdHlsZXNcclxuICAgIGRlY29kZWQgPSBkZWNvZGVkXHJcbiAgICAgIC8vIEFkZCBpbmxpbmUgc3R5bGVzIHRvIDx0YWJsZT5cclxuICAgICAgLnJlcGxhY2UoLzx0YWJsZShbXj5dKik+L2csIGA8dGFibGUgc3R5bGU9XCJ3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgcGFkZGluZzogMjBweDsgZm9udC1zaXplOiAxNHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1wiJDE+YClcclxuICAgICAgLy8gQWRkIGlubGluZSBzdHlsZXMgdG8gPHRyPlxyXG4gICAgICAucmVwbGFjZSgvPHRyKFtePl0qKT4vZywgYDx0ciBzdHlsZT1cImJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1wiJDE+YClcclxuICAgICAgLy8gQWRkIGlubGluZSBzdHlsZXMgdG8gPHRoPlxyXG4gICAgICAucmVwbGFjZSgvPHRoKFtePl0qKT4vZywgYDx0aCBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTZweDsgY29sb3I6ICMyQTFGNzM7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDEycHggMjBweDsgdGV4dC1hbGlnbjogbGVmdDtcIiQxPmApXHJcbiAgICAgIC8vIEFkZCBpbmxpbmUgc3R5bGVzIHRvIDx0ZD5cclxuICAgICAgLnJlcGxhY2UoLzx0ZChbXj5dKik+L2csIGA8dGQgc3R5bGU9XCJtaW4td2lkdGg6MTIwcHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDEycHggMjBweDsgdGV4dC1hbGlnbjogbGVmdDtcIiQxPmApO1xyXG4gICAgZGVjb2RlZCA9IGRlY29kZWQucmVwbGFjZSgvPGltZyhbXj5dKik+L2csIChtYXRjaCwgZ3JvdXAxKSA9PiB7XHJcbiAgICAgIC8vIEFkZCBzdHlsZSB0byA8aW1nPiBpZiBub3QgYWxyZWFkeSBzcGVjaWZpZWRcclxuICAgICAgaWYgKC9zdHlsZT0vLnRlc3QoZ3JvdXAxKSkge1xyXG4gICAgICAgIHJldHVybiBtYXRjaDsgIC8vIElmIHN0eWxlIGFscmVhZHkgZXhpc3RzLCBrZWVwIGl0XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGA8aW1nIHN0eWxlPVwid2lkdGg6IDMwJTsgaGVpZ2h0OiAzMCU7Ym9yZGVyLXJhZGl1czogMTZweDsgcGFkZGluZy10b3A6IDE1cHg7cGFkZGluZy1ib3R0b206IDEwcHg7XCIke2dyb3VwMX0+YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyA1LiBSZXR1cm4gc2FmZSBIVE1MXHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZGVjb2RlZCk7XHJcbiAgfVxyXG5cclxuICBnZXRFeHRlbnRpb24odXJsOiBzdHJpbmcgfCBzdHJpbmdbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh1cmwgIT09ICctJykge1xyXG4gICAgICBpZiAodHlwZW9mICh1cmwpID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHVybC5zcGxpdCgnLicpLnBvcCgpXHJcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh1cmwpKSB7XHJcbiAgICAgICAgcmV0dXJuIHVybFswXS5zcGxpdCgnLicpLnBvcCgpXHJcbiAgICAgIH0gZWxzZSByZXR1cm4gJy0nXHJcbiAgICB9XHJcbiAgICBlbHNlIHJldHVybiAnLSdcclxuICB9XHJcblxyXG4gIGRvd25sb2FkQXR0Y2htZW50KHVybDogYW55LCBmaWxlPzogYW55KSB7XHJcbiAgICAvLyB0aGlzLm9uRXZlbnQuZW1pdCh7XHJcbiAgICAvLyAgIGRvd25sb2FkOiB0cnVlLFxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGRhdGEpXHJcbiAgICAvLyBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuaHJlZiA9IHVybDtcclxuICAgIGxpbmsuZG93bmxvYWQgPSAnJztcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG5cclxuICB9XHJcbiAgZnVsbEltYWdlU3JjOiBzdHJpbmcgfCBudWxsID0gJyc7XHJcbiAgb3BlbkZ1bGxJbWFnZShldmVudDogRXZlbnQpIHtcclxuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHtcclxuICAgICAgdGhpcy5mdWxsSW1hZ2VTcmMgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKCdzcmMnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZFN0eWxlc1RvSW1hZ2VzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW1hZ2VzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmNvbW1lbnQtY29udGVudCBpbWcnKTtcclxuICAgIGltYWdlcy5mb3JFYWNoKChpbWcpID0+IHtcclxuICAgICAgLy8gQXBwbHkgaW5saW5lIHN0eWxlcyBkaXJlY3RseVxyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGltZywgJ3dpZHRoJywgJzcwcHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWcsICdib3JkZXItcmFkaXVzJywgJzE2cHgnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpbWcsICdtYXJnaW4nLCAnOHB4Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoaW1nLCAnY3Vyc29yJywgJ3BvaW50ZXInKTtcclxuXHJcbiAgICAgIC8vIEFkZCBjbGljayBsaXN0ZW5lciB0byBzaG93IGZ1bGxzY3JlZW4gaW1hZ2Ugb24gY2xpY2tcclxuICAgICAgdGhpcy5yZW5kZXJlci5saXN0ZW4oaW1nLCAnY2xpY2snLCAoKSA9PiB0aGlzLm9uSW1hZ2VDbGljaygoaW1nIGFzIEhUTUxJbWFnZUVsZW1lbnQpLnNyYykpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkltYWdlQ2xpY2soc3JjOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZnVsbHNjcmVlbkltYWdlID0gc3JjO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZnVsbHNjcmVlbkltYWdlVGVtcGxhdGUnKSBmdWxsc2NyZWVuSW1hZ2VUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgcHJpdmF0ZSBmdWxsc2NyZWVuVmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgaWNvbk1hcDogUmVjb3JkPHN0cmluZywgKHJvdzogYW55LCBjb2w6IGFueSkgPT4gc3RyaW5nPiA9IHtcclxuICAgIGF0dGFjaG1lbnRzX2NvdW50OiAoKSA9PiB0aGlzLnNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2F0dGFjaG1lbnRzLnN2ZycsXHJcbiAgICBjb21tZW50X2NvdW50OiAoKSA9PiB0aGlzLnNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NvbW1lbnRzLnN2ZycsXHJcbiAgICBwcmlvcml0eTogKHJvdywgY29sKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbCA9XHJcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICB0aGlzLmdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTtcclxuXHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgdGhpcy5zaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAnZGF0YS1ncmlkL2ljb25zLycgK1xyXG4gICAgICAgICh2YWwgPz8gJ2RlZmF1bHQnKSArXHJcbiAgICAgICAgJy5zdmcnXHJcbiAgICAgICk7XHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIHRvZ2dsZUZ1bGxzY3JlZW4oKSB7XHJcbiAgICB0aGlzLmlzRnVsbFNjcmVlbiA9ICF0aGlzLmlzRnVsbFNjcmVlbjtcclxuICAgIGNvbnN0IGVsZW0gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgYXMgYW55O1xyXG4gICAgaWYgKCFkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCkge1xyXG4gICAgICBpZiAoZWxlbS5yZXF1ZXN0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmIChlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XHJcbiAgICAgICAgZWxlbS5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4pIHtcclxuICAgICAgICBlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKSB7XHJcbiAgICAgICAgZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChkb2N1bWVudC5leGl0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50IGFzIGFueSkubW96Q2FuY2VsRnVsbFNjcmVlbikge1xyXG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLm1vekNhbmNlbEZ1bGxTY3JlZW4oKTtcclxuICAgICAgfSBlbHNlIGlmICgoZG9jdW1lbnQgYXMgYW55KS53ZWJraXRFeGl0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoKGRvY3VtZW50IGFzIGFueSkubXNFeGl0RnVsbHNjcmVlbikge1xyXG4gICAgICAgIChkb2N1bWVudCBhcyBhbnkpLm1zRXhpdEZ1bGxzY3JlZW4oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DZWxsRXZlbnQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXN0b21DZWxsRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZsYXR0ZW5Hcm91cChyb3c6IGFueSk6IGFueVtdIHtcclxuICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHRyYXZlcnNlID0gKG5vZGU6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIW5vZGUpIHJldHVybjtcclxuICAgICAgaWYgKG5vZGUuaXNHcm91cCkge1xyXG4gICAgICAgIG5vZGUuY2hpbGRyZW4/LmZvckVhY2goKGNoaWxkOiBhbnkpID0+IHRyYXZlcnNlKGNoaWxkKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB0cmF2ZXJzZShyb3cpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHNlbGVjdEdyb3VwUm93KGU6IEV2ZW50LCByb3c6IGFueSkge1xyXG4gICAgY29uc3QgY2hlY2tib3ggPSBlLnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgY29uc3QgaXNDaGVja2VkID0gY2hlY2tib3guY2hlY2tlZDtcclxuICAgIC8vIEdldCBhbGwgZGVlcCBkYXRhIHJvd3MgKGxlYWYgcm93cylcclxuICAgIGNvbnN0IGxlYWZSb3dzID0gdGhpcy5mbGF0dGVuR3JvdXAocm93KTtcclxuICAgIGlmIChpc0NoZWNrZWQpIHtcclxuICAgICAgbGVhZlJvd3MuZm9yRWFjaChyID0+IHtcclxuICAgICAgICBjb25zdCBpZCA9IHIuX2lkIHx8IHIuaWQ7XHJcbiAgICAgICAgaWYgKGlkKSB0aGlzLnNlbGVjdGVkUm93cy5hZGQoaWQpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgY29uc3QgaWQgPSByLl9pZCB8fCByLmlkO1xyXG4gICAgICAgIGlmIChpZCkgdGhpcy5zZWxlY3RlZFJvd3MuZGVsZXRlKGlkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0ZWRSb3dzKTtcclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgbGlzdGluZ1R5cGU6IHRoaXMubGlzdGluZ1R5cGUsXHJcbiAgICAgICAgb2JqOiBpZHNcclxuICAgICAgfSxcclxuICAgICAgZXZlbnRUeXBlOiBcIm9uU2VsZWN0Um93XCIsXHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyaWNFdmVudC5lbWl0KGV2ZW50KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldEdyb3VwQ2hlY2tlZFN0YXRlKHJvdzogYW55KTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIXJvdy5pc0dyb3VwKSByZXR1cm4gZmFsc2U7XHJcbiAgICBjb25zdCBsZWFmUm93cyA9IHRoaXMuZmxhdHRlbkdyb3VwKHJvdyk7XHJcbiAgICBsZXQgY2hlY2tlZENvdW50ID0gMDtcclxuICAgIGxlYWZSb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgIGNvbnN0IGlkID0gci5faWQgfHwgci5pZDtcclxuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dzLmhhcyhpZCkpIGNoZWNrZWRDb3VudCsrO1xyXG4gICAgfSk7XHJcbiAgICBpZiAoY2hlY2tlZENvdW50ID09PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAoY2hlY2tlZENvdW50ID09PSBsZWFmUm93cy5sZW5ndGgpIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGdldENlbGxUaXRsZShyb3c6IGFueSwgY29sOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdmFsID0gdGhpcy5nZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZCkpIHtcclxuICAgICAgaWYgKGNvbC50eXBlID09PSAnZGF0ZScpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21tb25TZXZpY2UuZm9ybWF0RGF0ZVZhbHVlKHZhbCwgdGhpcy5kYXRlRm9ybWF0KTtcclxuICAgICAgfSBlbHNlIGlmIChjb2w/LmlzX2Ftb3VudCkge1xyXG4gICAgICAgIGlmKCF2YWwpIHJldHVybiBgMC4wMGBcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRDdXJyZW5jeS50cmFuc2Zvcm0odmFsLCB0aGlzLmN1cnJlbmN5Rm9ybWF0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICB2YWw/LnZhbHVlID8/XHJcbiAgICAgICAgdmFsPy5uYW1lID8/XHJcbiAgICAgICAgdmFsID8/XHJcbiAgICAgICAgKGNvbC5pc19hbW91bnQgPyAnMCcgOiAnLScpXHJcbiAgICAgICkgKyAnJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaXJzdCA9IHZhbD8uWzBdO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIGZpcnN0Py5kZXBhcnRtZW50X25hbWUgPz9cclxuICAgICAgZmlyc3Q/LnJvbGVOYW1lID8/XHJcbiAgICAgIGZpcnN0Py5mdWxsX25hbWUgPz9cclxuICAgICAgJy0nXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIGZpbmlzaEVkaXQoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ2NlbGwgZWRpdGVkZGRkZGRkZGRkZGRkZGQ6ICcsIGV2ZW50KVxyXG4gIH1cclxuXHJcblxyXG5cclxufSIsIjxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBoLTEwMFwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTIgYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJuYXYgbmF2LXRhYnNcIiAqbmdJZj1cInRydWVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibmF2IG5hdi10YWJzXCIgaWQ9XCJuYXYtdGFiXCIgcm9sZT1cInRhYmxpc3RcIj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVUYWIodGFiKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibmF2LWxpbmsgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVRhYiA9PSB0YWJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyB0YWIgfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtc2VhcmNoXCIgW3N0eWxlLndpZHRoLnB4XT1cIjM1MFwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdJZj1cImVuYWJsZUdsb2JhbFNlYXJjaFwiXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NlYXJjaC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvblwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICpuZ0lmPVwiZW5hYmxlR2xvYmFsU2VhcmNoXCJcclxuICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzNnB4XCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSB0byBzZWFyY2gsIHRoZW4gcHJlc3MgRW50ZXJcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0YWJsZVNlYXJjaFwiXHJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkdsb2JhbFNlYXJjaCgpXCJcclxuICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaElucHV0KCRldmVudClcIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyIHRhYmxlLXJpZ2h0LXRvcC1hY3Rpb25zXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIGFjdGlvbi1idXR0b25zLXJvd1wiXHJcbiAgICAgICAgICAqbmdJZj1cImJ1dHRvbj8uaGFzX3Blcm1pc3Npb25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb25CdXR0b25DbGljayhidXR0b24ubmFtZSlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBidXR0b24tc21hbGwgYnRuIGJvcmRlciBib3JkZXItcHJpbWFyeSBidG4tYWN0aXZlLXByaW1hcnkgbWUtMiBwLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHB4LTNcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiYnV0dG9uLmlzX3Nob3dJY29uXCJcclxuICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvJyArIGJ1dHRvbi5pY29uICsgJy5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5tcy0wXT1cImJ1dHRvbi5pc19zaG93SWNvblwiXHJcbiAgICAgICAgICAgICAgPnt7IGJ1dHRvbj8ubmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCIhc2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBhY3Rpb24tYnV0dG9ucy1yb3dcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVPcGVuRmlsdGVyKClcIlxyXG4gICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2hvd0ZpbHRlcnNcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IG1lLTIgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtaGlkZGVuIHRleHQtd2hpdGVcIj5GaWx0ZXJzPC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJlZENvbHVtbnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICBzdHlsZT1cIlxyXG4gICAgICAgICAgICB3aWR0aDogN3B4O1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDdweDtcclxuICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzAwMjJmZjtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAsIDYwLCAyNTUpO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIHJpZ2h0OiAxNnB4O1xyXG4gICAgICAgICAgICB0b3A6IDEwcHg7XHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWJsb2NrXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZC1ub25lXCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnYWR2YW5jZS1maWx0ZXInKVwiXHJcbiAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVUb3BCdXR0b24gPT09ICdhZHZhbmNlLWZpbHRlcidcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvem9vbS1jaGFyZ2Uuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiB0b3AtaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgYWN0aW9uLWJ1dHRvbnMtcm93XCJcclxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcclxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxyXG4gICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAnc2V0dGluZycgfHxcclxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLWxheW91dCcgfHxcclxuICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLXByZXNldHMnIHx8XHJcbiAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPT09ICdzaG93LWhpZGUtY29sdW1ucydcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPCEtLSA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZXR0aW5ncy0yLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gdG9wLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgIGhyZWY9XCJKYXZhU2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IG1lLTIgcC0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBweC0zXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3NldHRpbmdzLTIuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMlwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC1oaWRkZW4gdGV4dC13aGl0ZVwiPlNldHRpbmc8L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3NldHRpbmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xIGFjdGlvbnMtZHJvcGRvd24tc2V0dGluZ1wiXHJcbiAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnVcIj5cclxuICAgICAgICAgICAgPCEtLSBUYWJsZSBMYXlvdXQgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLWxheW91dCcpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICA+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy90YWJsZS0yLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgVGFibGUgTGF5b3V0PC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwhLS0gVGFibGUgUHJlc2V0cyAtLT5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVBY3Rpb25zKCd0YWJsZS1wcmVzZXRzJylcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICA+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9saXN0LWRldGFpbHMuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICBUYWJsZSBQcmVzZXRzPC9zcGFuXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICA8IS0tIENvbHVtbnMgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhc2hvd1NpZGVNZW51XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3Nob3ctaGlkZS1jb2x1bW5zJylcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICA+PHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9leWUuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIENvbHVtbnM8L3NwYW5cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdXRlZC10ZXh0XCI+e3sgY29sdW1uc0NvdW50IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBGaWx0ZXIgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlT3BlbkZpbHRlcigpOyBhY3RpdmVUb3BCdXR0b24gPSAnJztcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwiIXNob3dGaWx0ZXJSb3dcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2ZpbHRlci0yLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yIG10LTEgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgRmlsdGVyXHJcbiAgICAgICAgICAgIDwvYT5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRG93bmxvYWQgLS0+XHJcbiAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDc3YoJ2NzdicpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9kb3dubG9hZC5zdmcnXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICBDU1YgRXhwb3J0XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAqbmdJZj1cImVuYWJsZUV4cG9ydFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRDc3YoJ3hsc3gnKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZG93bmxvYWQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgRXhjZWwgRXhwb3J0XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPCEtLSBGb250IEZhbWlseSAmIEZvbnQgU2l6ZSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgcGItMiBwdC0yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBGb250IEZhbWlseSAtLT5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9udEZhaW1seVwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25Gb250Q2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmb250IG9mIGZvbnRGYW1pbGllc1wiIFt2YWx1ZV09XCJmb250XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgZm9udCB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRm9udCBTaXplIC0tPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtXCJcclxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZvbnRDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiYm9keVRleHRGb250c1NpemVcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIGZvbnRTaXplc1wiIFt2YWx1ZV09XCJzaXplXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgc2l6ZSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFRhYmxlIExheW91dCAtLT5cclxuXHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLWxheW91dCdcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWJsZUxheW91dFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93biBtdC0xXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGVcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICA8IS0tIFRhYmxlIFByZXNldHMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZVRvcEJ1dHRvbiA9PT0gJ3RhYmxlLXByZXNldHMnXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFibGVQcmVzZXRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPCEtLSBUYWJsZSBQcmVzZXRzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUb3BCdXR0b24gPT09ICdzaG93LWhpZGUtY29sdW1ucydcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaG93SGlkZUNvbHVtbnNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlXCJcclxuICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMtcm93XCIgKm5nSWY9XCJzaG93RnVsbFNjcmVlbkJ1dHRvblwiPlxyXG4gICAgICAgIDxhXHJcbiAgICAgICAgICAqbmdJZj1cIiFpc0Z1bGxTY3JlZW5cIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNtYWxsIGJ0biBidG4tYWN0aXZlLXByaW1hcnkgYm9yZGVyIGJvcmRlci1wcmltYXJ5IGV4cGVuZCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUZ1bGxzY3JlZW4oKVwiXHJcbiAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cInRvb2x0aXBcIlxyXG4gICAgICAgICAgZGF0YS1icy1wbGFjZW1lbnQ9XCJ0b3BcIlxyXG4gICAgICAgICAgdGl0bGU9XCJNaW5pbWlzZVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7IG1pbkFycm93OiAhaXNGdWxsU2NyZWVuLCBtYXhBcnJvdzogaXNGdWxsU2NyZWVuIH1cIlxyXG4gICAgICAgICAgc3R5bGU9XCJ0cmFuc2l0aW9uOiBjb2xvciAwLjJzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2V4cGVuZC5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIG1iLTFcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPGFcclxuICAgICAgICAgICpuZ0lmPVwiaXNGdWxsU2NyZWVuXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zbWFsbCBidG4gYnRuLWFjdGl2ZS1wcmltYXJ5IGJvcmRlciBib3JkZXItcHJpbWFyeSBleHBlbmQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuKClcIlxyXG4gICAgICAgICAgZGF0YS1icy10b2dnbGU9XCJ0b29sdGlwXCJcclxuICAgICAgICAgIGRhdGEtYnMtcGxhY2VtZW50PVwidG9wXCJcclxuICAgICAgICAgIHRpdGxlPVwiTWF4aW1pc2VcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyBtaW5BcnJvdzogIWlzRnVsbFNjcmVlbiwgbWF4QXJyb3c6IGlzRnVsbFNjcmVlbiB9XCJcclxuICAgICAgICAgIHN0eWxlPVwidHJhbnNpdGlvbjogY29sb3IgMC4yc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9taW5pbWl6ZS5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0yIG1iLTFcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDwhLS0gRXhhbXBsZSBzaW5nbGUgZGFuZ2VyIGJ1dHRvbiAtLT5cclxuXHJcbiAgICAgICAgPCEtLSA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkLWZsZXggZ2FwLTIgYWN0aW9uLWJ1dHRvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnYWN0aW9ucycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBBY3Rpb25cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvVmVjdG9yLnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnYWN0aW9ucydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51IHNob3dcIj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5BY3Rpb248L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+QW5vdGhlciBhY3Rpb248L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCIjXCI+U29tZXRoaW5nIGVsc2UgaGVyZTwvYT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIiNcIj5TZXBhcmF0ZWQgbGluazwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJzaG93RmlsdGVycyAmJiAhc2hvd0ZpbHRlclJvd1wiXHJcbiAgICBjbGFzcz1cInRvcC1maWx0ZXItcm93IGJvcmRlci10b3AgcHktMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwidG9wRmlsdGVyUm93SGVpZ2h0XCJcclxuICA+XHJcbiAgICA8IS0tIExFRlQgU0lERSAoRmlsdGVyIHRhZ3MgKyBGaWx0ZXIgYnV0dG9uKSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBhY3RpdmVGaWx0ZXJlZENvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQnlGaWVsZFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZpbHRlci10YWdzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIGFjdGl2ZVRvcEJ1dHRvbiA9ICdmaWx0ZXItY29sdW1ucyc7XHJcbiAgICAgICAgICAgICAgb3BlbkZpbHRlcihjb2wpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG11dGVkLXRleHQgYWRkLWZpbHRlci1idXR0b24gYWN0aXZlLWZpbHRlcnNcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBub3dyYXBcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxyXG4gICAgICAgICAgICAgIGNvbD8uZmllbGQgPT0gc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmZpZWxkICYmXHJcbiAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXJPcGVuICYmXHJcbiAgICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09ICdmaWx0ZXItY29sdW1ucydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGFnIG10LTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLnN2ZydcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZW1vdmVDb2x1bW5GaWx0ZXJGcm9tQ29sdW1uKGNvbClcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jcm9zcy1wcmltYXJ5LnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBjcm9zcy1zZWNvbmRhcnkgbXMtMiBtYi0xXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgYWN0aXZlVG9wQnV0dG9uID09PSAnZmlsdGVyLWNvbHVtbnMnICYmXHJcbiAgICAgICAgICAgICAgY29sPy5maWVsZCA9PSBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uZmllbGQgJiZcclxuICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlck9wZW5cclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyQ29sdW1uczsgY29udGV4dDogeyBjb2x1bW46IGNvbCB9XCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd24gbXQtMVwiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgIDwhLS0gRmlsdGVyIEJ1dHRvbiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImFkZC1maWx0ZXItYnV0dG9uLW1lbnVcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnZmlsdGVyLWNvbHVtbnMnKTsgaXNBY3RpdmVGaWx0ZXJPcGVuID0gZmFsc2VcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXV0ZWQtdGV4dCBhZGQtZmlsdGVyLWJ1dHRvbiBidXR0b24tZmlsdGVyXCJcclxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDcwcHhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGx1cy5zdmcnXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJtZS0yIGRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgRmlsdGVyXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ0lmPVwiYWN0aXZlVG9wQnV0dG9uID09PSAnZmlsdGVyLWNvbHVtbnMnICYmICFpc0FjdGl2ZUZpbHRlck9wZW5cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJDb2x1bW5zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb25zLWRyb3Bkb3duIG10LTFcIlxyXG4gICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUklHSFQgU0lERSAoVXBkYXRlICsgUmVzZXQpIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIChjbGljayk9XCJzYXZlUHJlc2V0KClcIlxyXG4gICAgICAgIGNsYXNzPVwidGV4dC1wcmltYXJ5IGN1cnNvci1wb2ludGVyIGFsbC1maWx0ZXJzLXJlc2V0LWJ1dHRvblwiXHJcbiAgICAgICAgKm5nSWY9XCIhY2hlY2tGaWx0ZXJDaGFuZ2VzRWZmZWN0KClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgVXBkYXRlIFZpZXdcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgY3Vyc29yLXBvaW50ZXIgYWxsLWZpbHRlcnMtcmVzZXQtYnV0dG9uXCJcclxuICAgICAgICAqbmdJZj1cIiF0YWJsZUZpbHRlclZpZXdJZCAmJiBhY3RpdmVGaWx0ZXJlZENvbHVtbnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsRmlsdGVycygpXCJcclxuICAgICAgPlxyXG4gICAgICAgIFJlc2V0XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgIFtzdHlsZS5oZWlnaHRdPVwiXHJcbiAgICAgIHNob3dGaWx0ZXJzID8gJ2NhbGMoMTAwJSAtICcgKyB0b3BGaWx0ZXJSb3dIZWlnaHQgKyAncHgpJyA6ICcxMDAlJ1xyXG4gICAgXCJcclxuICAgIGNka0Ryb3BMaXN0R3JvdXBcclxuICAgIGNsYXNzPVwiZGF0YS1ncmlkLXRhYmxlLXdyYXBwZXIgb3ZlcmZsb3ctaGlkZGVuXCJcclxuICAgICNkYXRhR3JpZENvbnRhaW5lclxyXG4gICAgW3N0eWxlLmZvbnRGYW1pbHldPVwiZm9udEZhaW1seVwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgaWQ9XCJkYXRhLWdyaWQtbWFpbi1jb250YWluZXJcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJzaG93Um93c0dyb3VwaW5nXCJcclxuICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICBbY2RrRHJvcExpc3REYXRhXT1cImNvbHVtbnNcIlxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxyXG4gICAgICAgIHRvcEdyb3VwZWRCYWRnZXNCYWNrZ3JvdW5kQ29sb3IgfHwgaGVhZGVyQmFja2dyb3VuZENvbG9yXHJcbiAgICAgIFwiXHJcbiAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiZW50ZXJUb1RvcFJvd0dyb3VwaW5nKCRldmVudClcIlxyXG4gICAgICAoY2RrRHJvcExpc3RFeGl0ZWQpPVwiZXhpdGVkRnJvbVRoZVRvcFJvdygkZXZlbnQpXCJcclxuICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BUb3BHcm91cCgkZXZlbnQpXCJcclxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiY2FuRW50ZXJUb1Jvd3NHcm91cGluZ1wiXHJcbiAgICAgIGlkPVwicm93cy1ncm91cGluZy10b3AtY29udGFpbmVyXCJcclxuICAgICAgY2xhc3M9XCJib3JkZXItYmVsb3cgZC1mbGV4IHB4LTQgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cImhlYWRlclRleHRDb2xvclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9qdXN0aWZ5LnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYSAmJiAhZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgRHJhZyBoZXJlIHRvIHNldCByb3cgZ3JvdXBzXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Hcm91cFJlb3JkZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICAgIFtjZGtEcmFnTG9ja0F4aXNdPVwiJ3gnXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGdyb3VwZWRDb2x1bW5zO1xyXG4gICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZENvbHVtbnMubGVuZ3RoID4gMSAmJiBpICE9IGdyb3VwZWRDb2x1bW5zLmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXY+e3sgY2hpbGQuaGVhZGVyIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggb3ZlcmZsb3ctaGlkZGVuXCJcclxuICAgICAgW3N0eWxlLmhlaWdodF09XCJcclxuICAgICAgICAnY2FsYygxMDAlIC0gJyArXHJcbiAgICAgICAgKHNob3dSb3dzR3JvdXBpbmdcclxuICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICsgZm9vdGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICA6IGZvb3RlclJvd0hlaWdodCkgK1xyXG4gICAgICAgICdweCknXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImgtMTAwXCJcclxuICAgICAgICBbc3R5bGUud2lkdGhdPVwiXHJcbiAgICAgICAgICAhc2hvd1NpZGVNZW51XHJcbiAgICAgICAgICAgID8gJzEwMCUnXHJcbiAgICAgICAgICAgIDogc2lkZU1lbnVWaXNpYmxlXHJcbiAgICAgICAgICAgID8gJ2NhbGMoMTAwJSAtIDI4MHB4KSdcclxuICAgICAgICAgICAgOiAnY2FsYygxMDAlIC0gMzBweCknXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMCB0cmFuc2l0aW9uIHBvc2l0aW9uLXJlbGF0aXZlIHctMTAwXCI+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tIERhdGEgR3JpZCBIZWFkZXIgc3RhcnRzIGhlcmUgLS0+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcblxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXItd3JhcHBlciB3LTEwMFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJoZWFkZXJUZXh0Q29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwiaGVhZGVyVGV4dEZvbnRzU2l6ZVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1iZWxvd109XCIhaGFzQW55VmlzaWJsZUNvbHVtblwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDNcclxuICAgICAgICAgICAgICAgIDogc2hvd0NvbHVtbnNHcm91cGluZyB8fCBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcclxuICAgICAgICAgICAgICAgIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSBEYXRhIEdyaWQgTGVmdCBQaW5uZWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgbGVmdC1waW5uZWRcIlxyXG4gICAgICAgICAgICAgICNsZWZ0UGlubmVkSGVhZGVyXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJoYXNMZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dTZXJpYWxOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcclxuICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBTLk5vXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAqbmdJZj1cInNob3dDaGVja2JveGVzXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3gtY2VsbCBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyAmJiBzaG93RmlsdGVyUm93XHJcbiAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDJcclxuICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTZweDsgaGVpZ2h0OiAxNnB4XCJcclxuICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNJbmRldGVybWluYXRlU3RhdGUoZGF0YVNldClcIlxyXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0FsbFNlbGVjdGVkKGRhdGFTZXQpXCJcclxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVTZWxlY3RBbGwoZGF0YVNldClcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgICAgICAgaWQ9XCJsZWZ0LXBpbm5lZC1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJsZWZ0UGlubmVkQ29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgICAoY2RrRHJvcExpc3RFbnRlcmVkKT1cIm9uRHJvcExpc3RFbnRlcigkZXZlbnQsICdsZWZ0JylcIlxyXG4gICAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIlxyXG4gICAgICAgICAgICAgICAgICBvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3TGVmdFBpbm5lZENvbHVtbnMnKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoKVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMXB4XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ2FibGUtaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgY2RrRHJhZ1xyXG4gICAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbCBvZiBsZWZ0UGlubmVkQ29sdW1ucztcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3ByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucydcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BHcm91cGluZ1Jvd1BsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IGNvbC5jaGlsZHJlbi5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gRGF0YSBHcmlkIENlbnRlciBQaW5uZWQgSGVhZGVyIHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgY2VudGVyLXNjcm9sbGFibGVcIlxyXG4gICAgICAgICAgICAgICNjZW50ZXJQaW5uZWRIZWFkZXJcclxuICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBpZD1cImNlbnRlci1waW5uZWQtaGVhZGVyXCJcclxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIlxyXG4gICAgICAgICAgICAgICAgc2hvd1Jvd3NHcm91cGluZyA/IFsncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ10gOiBbXVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjZW50ZXJDb2x1bW5zXCJcclxuICAgICAgICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0U29ydGluZ0Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlQ29sdW1uR3JvdXBpbmcgJiYgZHJhZ2dpbmdJbkdyb3VwQXJlYVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJvbkRyb3BMaXN0RW50ZXIoJGV2ZW50LCAnY2VudGVyJylcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdFNvcnRlZCk9XCJvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3Q2VudGVyQ29sdW1ucycpXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEdyb3VwKClcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5tYXhXaWR0aF09XCJcclxuICAgICAgICAgICAgICAgICdjYWxjKDEwMCUgLSAnICtcclxuICAgICAgICAgICAgICAgIChyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCArIGxlZnRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGgpICtcclxuICAgICAgICAgICAgICAgICdweCknXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXBlZENvbHVtbnM/Lmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMjAwcHhcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgI2NvbHVtbnNHcm91cGVkQm94XHJcbiAgICAgICAgICAgICAgICBpZD1cImdyb3VwQm94SGVhZGVyRGl2XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IHctMTAwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dGaWx0ZXJSb3cgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIDogaGVhZGVyUm93SGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcy0zXCI+R3JvdXA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgJ2dyb3VwJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlbiA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvblJlc2l6ZUdyb3VwQm94KCRldmVudClcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IC0ycHhcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwibWluLXdpZHRoOiAzMHB4OyBoZWlnaHQ6IDEwMCVcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJncmlkVHlwZSA9PT0gJ0Fzc2V0cycgfHwgZ3JpZFR5cGUgPT09ICdUYXNrcydcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcmFnYWJsZS1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgKGNka0RyYWdTdGFydGVkKT1cIlxyXG4gICAgICAgICAgICAgICAgICBjaGVja0NvbHVtbkdyb3VwaW5nU3RhdHVzKGNvbCk7XHJcbiAgICAgICAgICAgICAgICAgIGRyYWdTdGFydE9uR3JvdXAoY29sKTtcclxuICAgICAgICAgICAgICAgICAgb25EcmFnU3RhcnRlZChjb2wpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgKGNka0RyYWdNb3ZlZCk9XCJvbkRyYWdNb3ZlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChjZGtEcmFnRW5kZWQpPVwib25EcmFnRW5kZWQoKVwiXHJcbiAgICAgICAgICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiY29sXCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICBsZXQgY29sIG9mIGNlbnRlckNvbHVtbnM7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3ByZXZpZXdDZW50ZXJDb2x1bW5zJ1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XHJcbiAgICAgICAgICAgICAgICAgID48ZGl2IGNsYXNzPVwicC0yIGJvcmRlciBkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNPdXRzaWRlQ29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZHJhZ2dpbmdJbkdyb3VwQXJlYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZGF0YS1ncmlkL2ljb25zL2p1c3RpZnkuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzT3V0c2lkZUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLWNyb3NzLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdjZW50ZXJDb2x1bW5zJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgIWlzT3V0c2lkZUNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjZcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uY2hpbGRyZW4/Lmxlbmd0aDsgZWxzZSBzaW5nbGVDb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQ/LmlzX2dyb3VwYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgIT0gY29sLmNoaWxkcmVuLmxlbmd0aCAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbD8uaXNfZ3JvdXBhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGV2cm9uOiBjb2w/LmNoaWxkcmVuPy5sZW5ndGggPiAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuICAgICAgICAgICAgPCEtLSBEYXRhIEdyaWQgUmlnaHQgUGlubmVkIEhlYWRlciBzdGFydHMgaGVyZSAtLT5cclxuICAgICAgICAgICAgPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbiAgICAgICAgICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgICAgICAgaWQ9XCJyaWdodC1waW5uZWQtaGVhZGVyXCJcclxuICAgICAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcclxuICAgICAgICAgICAgICAgIHNob3dSb3dzR3JvdXBpbmcgPyBbJ3Jvd3MtZ3JvdXBpbmctdG9wLWNvbnRhaW5lciddIDogW11cclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNka0Ryb3BMaXN0T3JpZW50YXRpb249XCJob3Jpem9udGFsXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1oZWFkZXIgcmlnaHQtcGlubmVkXCJcclxuICAgICAgICAgICAgICAoY2RrRHJvcExpc3RTb3J0ZWQpPVwiXHJcbiAgICAgICAgICAgICAgICBvblNvcnRHcm91cCgkZXZlbnQsICdwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zJylcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwib25Ecm9wTGlzdEVudGVyKCRldmVudCwgJ3JpZ2h0JylcIlxyXG4gICAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoKVwiXHJcbiAgICAgICAgICAgICAgI3JpZ2h0UGlubmVkSGVhZGVyXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyaWdodC1waW5uZWQtaGVhZGVyIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJtaW4td2lkdGg6IDAuMnB4XCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJhZ2FibGUtaGVhZGVyXCJcclxuICAgICAgICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgICAgICAgIFtjZGtEcmFnRGF0YV09XCJjb2xcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBjb2wgb2YgcmlnaHRQaW5uZWRDb2x1bW5zO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICBwaW5uZWRSaWdodDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ3JpZ2h0J1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlld1xyXG4gICAgICAgICAgICAgICAgICA+PGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRyYWdnaW5nSW5Hcm91cEFyZWFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQbGFjZWhvbGRlcj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFkcmFnZ2luZ0luR3JvdXBBcmVhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyQ2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm9wYWNpdHk6IDAuNlwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sPy5jaGlsZHJlbj8ubGVuZ3RoOyBlbHNlIHNpbmdsZUNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2hpbGQgb2YgY29sLmNoaWxkcmVuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDEgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICE9IGNvbC5jaGlsZHJlbi5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2luZ2xlQ29sPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvcEdyb3VwaW5nUm93UGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Q2hldnJvbjogY29sPy5jaGlsZHJlbj8ubGVuZ3RoID4gMVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8IS0tIERhdGEgR3JpZCBCb2R5IHN0YXJ0cyBoZXJlIC0tPlxyXG4gICAgICAgICAgPCEtLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT5cclxuICAgICAgICAgIDwhLS0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiaC0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIhZGF0YVNldD8ubGVuZ3RoICYmICFsb2FkaW5nICYmICFkYXRhU2V0TG9hZGluZ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3JlY29yZC1ub3QtZm91bmQuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPjwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGRpdj5ObyBSZWNvcmQgRm91bmQ8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbG9hZGluZy1vdmVybGF5XCJcclxuICAgICAgICAgICAgKm5nSWY9XCJsb2FkaW5nIHx8IGRhdGFTZXRMb2FkaW5nXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICB6LWluZGV4OiA5OTk7XHJcbiAgICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDFweCk7XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiYm9keUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImxvYWRlclwiPjwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtYm9keS13cmFwcGVyIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiYm9keVdyYXBwZXJIZWlnaHRcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGF1dG87IG92ZXJmbG93LXg6IGhpZGRlblwiXHJcbiAgICAgICAgICAgICNtYWluU2Nyb2xsXHJcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25NYWluU2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwidmVydGljYWxTY3JvbGxiYXJXaWR0aFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gTEVGVCBQSU5ORUQgLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgIWdyb3VwZWRDb2x1bW5zLmxlbmd0aCA/IG9yaWdpbmFsRGF0YVNldC5sZW5ndGggKiByb3dIZWlnaHQgOiAwXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDwgOFwiPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgbGVmdC1waW5uZWQtYm9keSB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXk6IGhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cImhhc0xlZnRQaW5uZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy50cmFuc3BhcmVudC1ib3JkZXItcmlnaHRdPVwiIWhhc0xlZnRQaW5uZWRDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVkoJyArIHRyYW5zbGF0ZVkgKyAncHgpJ1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImxlZnRQaW5uZWRCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmgtMTAwXT1cIm9yaWdpbmFsRGF0YVNldC5sZW5ndGggPCA4XCJcclxuICAgICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZyAmJiAhZGF0YVNldExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiXHJcblxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcm93IG9mIHZpc2libGVSb3dzO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93Q2VsbDtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxpY2l0OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IHByZXZpZXdMZWZ0UGlubmVkQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IChzdGFydEluZGV4ICsgaSkgJSAyICE9PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xlZnQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdsZWZ0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0xlZnRQaW5uZWRDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdsZWZ0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gQ0VOVEVSIC0tPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwMFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNlbnRlclBpbm5lZEhlYWRlci5jbGllbnRXaWR0aFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgY2VudGVyLXNjcm9sbGFibGVcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLmgtMTAwXT1cIm9yaWdpbmFsRGF0YVNldC5sZW5ndGggPCA4XCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3ZlcmZsb3cteTogaGlkZGVuOyBvdmVyZmxvdy14OiBhdXRvXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3RyYW5zbGF0ZVkoJyArIHRyYW5zbGF0ZVkgKyAncHgpJ1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgI2NlbnRlclNjcm9sbGFibGVCb2R5XHJcbiAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3hTaGFkb3ddPVwibGVmdFBpbm5lZEJveHNoYWRvd1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXYgW0Byb3dEeW5hbWljXT1cInJvd0FuaW1hdGlvblwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWRhdGFTZXRMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3cgb2YgdmlzaWJsZVJvd3M7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHJvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0NlbnRlckNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogKHN0YXJ0SW5kZXggKyBpKSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiAoc3RhcnRJbmRleCArIGkpICUgMiAhPT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VG90YWxBbW91bnRSb3cgJiYgb3JpZ2luYWxEYXRhU2V0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHsgX192aXJ0dWFsSW5kZXg6IDAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld0NlbnRlckNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRXZlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzT2RkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFJJR0hUIFBJTk5FRCAtLT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwicmlnaHQtcGlubmVkLWJvZHktd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJoYXNSaWdodFBpbm5lZENvbHVtbnNcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5oLTEwMF09XCJvcmlnaW5hbERhdGFTZXQubGVuZ3RoIDwgOFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgaXNTY3JvbGxiYXJWaXNpYmxlXHJcbiAgICAgICAgICAgICAgICAgID8gcmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxNVxyXG4gICAgICAgICAgICAgICAgICA6IHJpZ2h0UGlubmVkSGVhZGVyLm9mZnNldFdpZHRoXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cInJpZ2h0UGlubmVkQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLWJvZHkgcmlnaHQtcGlubmVkLWJvZHkgdy0xMDAgaC0xMDBcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJvdmVyZmxvdy15OiBoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWSgnICsgdHJhbnNsYXRlWSArICdweCknXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5ib3hTaGFkb3ddPVwicmlnaHRQaW5uZWRCb3hzaGFkb3dcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJyaWdodFBpbm5lZEJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFsb2FkaW5nICYmICFkYXRhU2V0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICBbQHJvd0R5bmFtaWNdPVwicm93QW5pbWF0aW9uXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCByb3cgb2YgdmlzaWJsZVJvd3M7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dDZWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IHJvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uczogcHJldmlld1JpZ2h0UGlubmVkQ29sdW1ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNFdmVuOiAoc3RhcnRJbmRleCArIGkpICUgMiA9PT0gMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNPZGQ6IChzdGFydEluZGV4ICsgaSkgJSAyICE9PSAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dUb3RhbEFtb3VudFJvdyAmJiBvcmlnaW5hbERhdGFTZXQ/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogeyBfX3ZpcnR1YWxJbmRleDogMCB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBwcmV2aWV3UmlnaHRQaW5uZWRDb2x1bW5zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0V2ZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc09kZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246ICdyaWdodCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IGF1dG87IGxlZnQ6IGF1dG9cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5JbWFnZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICBkYXRhR3JpZENvbnRhaW5lci5vZmZzZXRIZWlnaHQgLSAoZm9vdGVyUm93SGVpZ2h0ICsgMTAwKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpbWFnZS1tb2RhbCBmdWxsLWltYWdlLW1vZGFsXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImZ1bGxzY3JlZW5JbWFnZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZnVsbHNjcmVlbkltYWdlXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIkZ1bGxzY3JlZW4gSW1hZ2VcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZFJvd3Muc2l6ZSA+IDAgJiYgc2hvd1Rhc2tiYXJcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidGFza2JhciB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJvdHRvbS5weF09XCI4NVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtcm93cy1hY3Rpb24tYmFyXCIgW0BzbGlkZVVwXT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWQtY291bnRcIj5cclxuICAgICAgICAgICAgICAgICAge3sgc2VsZWN0ZWRSb3dzLnNpemUgfX0gc2VsZWN0ZWQgb2ZcclxuICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlnPy5wYWdpbmF0aW9uUGFyYW1zPy50b3RhbEl0ZW1zXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIFRvdGFsXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiB0YXNrYmFyQWN0aW9uczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aW9uPy5oYXNfcGVybWlzc2lvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3Rpb24tYnRuIHZlcmlmaWVkIGJ0biB7eyBhY3Rpb24gfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25WZXJpZnlDbGljayhhY3Rpb24/LmFjdGlvbk5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGFjdGlvbj8uYWN0aW9uTmFtZSB9fTwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrYmFyQWN0aW9ucy5sZW5ndGggPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPT0gdGFza2JhckFjdGlvbnMubGVuZ3RoIC0gMSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tiYXJBY3Rpb25zW2kgKyAxXT8uaGFzX3Blcm1pc3Npb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+fDwvc3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xlYXJTZWxlY3Rpb25TdGF0ZSh0YWJsZVR5cGUpO3NlbGVjdGVkUm93cy5jbGVhcigpO1wiIGNsYXNzPVwiY2xlYXItYnRuIG1zLTIgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmkteC1jaXJjbGVcIj48L2k+IENsZWFyIFNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSBWZXJ0aWNhbCBGYWtlIHNjcm9sbCBCYXIgLS0+XHJcbiAgICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvbk1haW5GYWtlU2Nyb2xsKCRldmVudClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZha2Utc2Nyb2xsYmFyIGZha2Utc2Nyb2xsYmFyLXZlcnRpY2FsIGQtbm9uZVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJ2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoXCJcclxuICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJcclxuICAgICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nICYmIHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogM1xyXG4gICAgICAgICAgICAgICAgOiBzaG93Q29sdW1uc0dyb3VwaW5nIHx8IHNob3dGaWx0ZXJSb3dcclxuICAgICAgICAgICAgICAgID8gaGVhZGVyUm93SGVpZ2h0ICogMlxyXG4gICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJib2R5V3JhcHBlckhlaWdodFwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDE3cHg7XHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGYxZjJmMztcclxuICAgICAgICAgICAgICB6LWluZGV4OiAxMDtcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAqIGRhdGFTZXRMZW5ndGhcIj48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBIb3JpemludGFsIEZha2UgU2Nyb2xsYmFycyAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgICAqbmdJZj1cImhhc1Njcm9sbFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBbc3R5bGUuc2Nyb2xsYmFyV2lkdGhdPVwiaG9yaXppbnRhbFNjcm9sbGJhcldpZHRoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLWhvcml6aW50YWwtc2Nyb2xsYmFyXCJcclxuICAgICAgICAgICAgI2Zha2VTY3JvbGxcclxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImxlZnRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXg6IHNjcm9sbFwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJob3JpemludGFsU2Nyb2xsYmFyV2lkdGhcIlxyXG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uQ2VudGVyQm9keVNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmYWtlLWhvcml6aW50YWwtc2Nyb2xsYmFyXCJcclxuICAgICAgICAgICAgI2hvcml6aW50YWxGYWtlU2Nyb2xsXHJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IFtzdHlsZS53aWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGggLSAxMFwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIFtzdHlsZS5zY3JvbGxiYXJXaWR0aF09XCJob3JpemludGFsU2Nyb2xsYmFyV2lkdGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZha2UtaG9yaXppbnRhbC1zY3JvbGxiYXJcIlxyXG4gICAgICAgICAgICAjZmFrZVNjcm9sbFxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicmlnaHRQaW5uZWRIZWFkZXIub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93LXg6IHNjcm9sbFwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTaWRlIE1lbnUgSW1wbGVtZW50ZWQgSGVyZSAtLT5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwic2hvd1NpZGVNZW51XCJcclxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwic2lkZU1lbnVWaXNpYmxlID8gMjgwIDogMzBcIlxyXG4gICAgICAgIGNsYXNzPVwicmlnaHQtbWVudSBoLTEwMFwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJzaWRlbWVudUJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDAgZC1mbGV4IGZsZXgtcm93LXJldmVyc2VcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMzBweFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItc3RhcnRdPVwic2lkZU1lbnVWaXNpYmxlXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaWRlTWVudSgnY29scycpXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYmctZmZmXT1cIlxyXG4gICAgICAgICAgICAgICAgY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnY29scycgJiYgc2lkZU1lbnVWaXNpYmxlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cInNpZGVNZW51VmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjb2x1bW5zLWJ1dHRvbiBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3VpLWNoZWNrcy1ncmlkLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbWVudWUtdGV4dFwiPkNvbHVtbnM8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNpZGVNZW51KCdmaWx0cnMnKVwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLmJnLWZmZl09XCJcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2ZpbHRycycgJiYgc2lkZU1lbnVWaXNpYmxlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWJlbG93XT1cIlxyXG4gICAgICAgICAgICAgICAgc2lkZU1lbnVWaXNpYmxlICYmIGN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2ZpbHRycydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY29sdW1ucy1idXR0b24gZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW1lbnVlLXRleHRcIj5GaWx0ZXI8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJoLTEwMFwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2lkZU1lbnVWaXNpYmxlXCJcclxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyB3aWR0aDogc2lkZU1lbnVWaXNpYmxlID8gJzI1MHB4JyA6ICcnIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0xMDBcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRPcGVuZWRTaWRlTWVudWUgPT0gJ2NvbHMnICYmIHNpZGVNZW51VmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtblBhbm5lbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDb2x1bW4gSXRlbXMgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWJvZHkgcHgtM1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGhyIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbWVudS1yb3ctZ3JvdXBzXCIgc3R5bGU9XCJoZWlnaHQ6IDMwJVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlTWVudVJvd0dyb3Vwc1wiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY3VycmVudE9wZW5lZFNpZGVNZW51ZSA9PSAnZmlsdHJzJyAmJiBzaWRlTWVudVZpc2libGVcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlRmlsdGVyc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImZvb3RlclJvd0hlaWdodFwiXHJcbiAgICAgIGNsYXNzPVwiYm9yZGVyLXRvcFwiXHJcbiAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZm9vdGVyUm93QmFja2dyb3VuZENvbG9yXCJcclxuICAgID5cclxuICAgICAgPCEtLSBSb3dzOiA8c3BhbiBjbGFzcz1cImZ3LTUwMCBtcy0xXCI+e3sgZGF0YVNldC5sZW5ndGggfX08L3NwYW4+IC0tPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwicGFnaW5hdGlvbi1jb250YWluZXJcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiZm9vdGVyUm93SGVpZ2h0XCJcclxuICAgICAgICBbc3R5bGUucGFkZGluZy5weF09XCJmb290ZXJQYWRkaW5nXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLXNpemVcIj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBzaXplIG9mIHBhZ2VTaXplT3B0aW9uc1wiIFt2YWx1ZV09XCJzaXplXCI+XHJcbiAgICAgICAgICAgICAge3sgc2l6ZSB9fVxyXG4gICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZXBhcmF0b3JcIj4gcGVyIHBhZ2UgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1pbmZvXCI+XHJcbiAgICAgICAgICBSZXN1bHRzOlxyXG4gICAgICAgICAge3sgKHBhZ2luYXRpb25Db25maWcucGFnZSAtIDEpICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdCArIDEgfX0te3tcclxuICAgICAgICAgICAgcGFnaW5hdGlvbkNvbmZpZy5wYWdlICogcGFnaW5hdGlvbkNvbmZpZy5saW1pdCA8XHJcbiAgICAgICAgICAgIHBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzXHJcbiAgICAgICAgICAgICAgPyBwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKiBwYWdpbmF0aW9uQ29uZmlnLmxpbWl0XHJcbiAgICAgICAgICAgICAgOiBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0c1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIG9mXHJcbiAgICAgICAgICB7eyBwYWdpbmF0aW9uQ29uZmlnLnRvdGFsUmVzdWx0cyB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFnZS1idXR0b25zXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgLSAxKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPT09IDFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDigLlcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgdmlzaWJsZVBhZ2VzXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cInBhZ2UgIT09ICcuLi4nXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1BhZ2UocGFnZSlcIlxyXG4gICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwicGFnZSA9PT0gcGFnaW5hdGlvbkNvbmZpZy5wYWdlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHt7IHBhZ2UgfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGFnZSA9PT0gJy4uLidcIj4uLi48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUGFnZShwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgKyAxKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0aW9uQ29uZmlnLnBhZ2UgPT09IHBhZ2luYXRpb25Db25maWcudG90YWxSZXN1bHRzXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg4oC6XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0+XHJcbjwhLS0gSGVhZGVyIENlbGwgVGVtcGxhdGUgLS0+XHJcbjwhLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICNoZWFkZXJDZWxsXHJcbiAgbGV0LWNvbFxyXG4gIGxldC1waW5uZWRSaWdodD1cInBpbm5lZFJpZ2h0XCJcclxuICBsZXQtaT1cImluZGV4XCJcclxuICBsZXQtc2VjdGlvbnM9XCJzZWN0aW9uXCJcclxuICBsZXQtY2FsbGVkRnJvbU5lc3RlZFBsYWNlaG9sZGVyPVwiY2FsbGVkRnJvbU5lc3RlZFBsYWNlaG9sZGVyXCJcclxuPlxyXG4gIDxkaXY+XHJcbiAgICA8IS0tIEdyb3VwIEhlYWRlciAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aCA+IDA7IGVsc2UgZmxhdEhlYWRlclwiPlxyXG4gICAgICA8ZGl2IGNka0Ryb3BsaXN0R3JvdXAgY2xhc3M9XCJncm91cC1jb2x1bW4td3JhcHBlclwiPlxyXG4gICAgICAgIDwhLS0gUGFyZW50IEhlYWRlciAtLT5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cInNob3VsZFRoZUdyb3VwSGVhZGVyU2hvdyhjb2wpXCJcclxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZ3JvdXAtaGVhZGVyXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgICAgICAgW3N0eWxlLmdyaWRDb2x1bW5dPVwiJ3NwYW4gJyArIGNvbC5jaGlsZHJlbi5sZW5ndGhcIlxyXG4gICAgICAgICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXHJcbiAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICBbY2xhc3MuanVzdGlmeS1jb250ZW50LWVuZF09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAxXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtaGVhZGVyLWNvbnRlbnRcIlxyXG4gICAgICAgICAgICBbdGl0bGVdPVwiY29sLmhlYWRlclwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5tcy0yXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXHJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihjb2wuY2hpbGRyZW4pXCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uUmVzaXplR3JvdXAoJGV2ZW50LCBjb2wsIHBpbm5lZFJpZ2h0KVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBDaGlsZCBIZWFkZXJzIGFuZCBGaWx0ZXJzIC0tPlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgY2RrRHJvcExpc3RPcmllbnRhdGlvbj1cImhvcml6b250YWxcIlxyXG4gICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjb2wuY2hpbGRyZW5cIlxyXG4gICAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIm9uQ2hpbGREcm9wbGlzdFNvcnRlZCgkZXZlbnQsIHNlY3Rpb25zKVwiXHJcbiAgICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uQ2hpbGREcm9wbGlzdERyb3BlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJcclxuICAgICAgICAgICAgc2hvd1Jvd3NHcm91cGluZyA/IFsncm93cy1ncm91cGluZy10b3AtY29udGFpbmVyJ10gOiBbXVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImNoaWxkXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gQ2hpbGQgSGVhZGVyIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2hpbGQuaXNfdmlzaWJsZSAmJiAhY2hpbGRbJ2lzUm93R3JvdXBlZCddXCI+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxscyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWZpZWxkXT1cImNoaWxkLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjaGlsZC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAyXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5maWx0ZXItYXBwbGllZC1vbi10ZXh0XT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sLmhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Mudy0xMDBdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVkaXRhYmxlLWhlYWRlcl09XCJjaGlsZD8uaXNfZWRpdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbkZpbHRlcm9uVGhyZWVEb3RzQ2xpY2soY2hpbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoaWxkLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGlsZC5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlblRocmVlRG90c01lbnUoJGV2ZW50LCBjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBPbmx5IHNob3cgbWVudSBpZiB0aGlzIGNvbHVtbiBpcyBhY3RpdmUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbCA9PT0gY2hpbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogLTUwJTsgei1pbmRleDogMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAtKCFjaGlsZD8ucGlubmVkID8gY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnQgOiAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzVGhyZWVEb3RzRmlsdGVyT3BlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzaG93RmlsdGVyUm93IHx8IHNob3dDb2x1bW5zR3JvdXBpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBoZWFkZXJSb3dIZWlnaHQgKiAyIC0gMTBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBoZWFkZXJSb3dIZWlnaHQgLSAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uTWVudTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sOiBjaGlsZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwiYXV0b3NpemVDb2x1bW4oY2hpbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjaGlsZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEZpbHRlciBDZWxsIC0tPlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtZmllbGRdPVwiY2hpbGQuZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNoaWxkLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY2hpbGQud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cImdyaWQtcm93OiAzXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgZmlsdGVyLWNlbGxcIlxyXG4gICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hpbGQuZmlsdGVyVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHBhc3RlKT1cIm9uRmlsdGVyQ2hhbmdlKGNoaWxkKTsgYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNoaWxkPy50eXBlID09ICdpbWFnZSdcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZC1zZWFyY2gtaW5wdXRdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNoaWxkPy50eXBlID09ICdpbWFnZSdcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgIG9wZW5GaWx0ZXJGcm9tRGlzYWJsZWRTZWFyY2hlZElucHV0KGNoaWxkKVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuRmlsdGVyKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkXT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiY2hpbGQ/LnR5cGUgPT0gJ2ltYWdlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPjxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNoaWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogN3B4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDdweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDBweCAzcHggIzc0ODZmZjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAgMTYzIDIzMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDRweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAxMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm91bmRlZC1jaXJjbGUgZC1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvc3BhblxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVGaWx0ZXJDZWxsPy5maWVsZCA9PSBjaGlsZD8uZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidG9wOiAxMDAlOyByaWdodDogMDsgei1pbmRleDogOTlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGQ/LnBpbm5lZCA/IDAgOiAtY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbExlZnRcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJNZW51OyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNka0RyYWdQcmV2aWV3XHJcbiAgICAgICAgICAgICAgPjxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICFkcmFnZ2luZ0luR3JvdXBBcmVhIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKGNoaWxkLmlzX2dyb3VwYWJsZSAmJiBkcmFnZ2luZ0luR3JvdXBBcmVhKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvd3MtbW92ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZHJhZ2dpbmdJbkdyb3VwQXJlYSAmJiAhY2hpbGQuaXNfZ3JvdXBhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Jhbi5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLmhlYWRlciB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrRHJhZ1BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgY2hpbGRIZWFkZXJQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXHJcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IHNlY3Rpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxlZEZyb21OZXN0ZWRQbGFjZWhvbGRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRyYWdnaW5nSW5Hcm91cEFyZWEgJiYgY2hpbGQ/LmlzX2dyb3VwYWJsZVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiBtcy0yXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwib3BhY2l0eTogMC42XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlcjtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAkaW1wbGljaXQ6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZXZyb246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGlubmVkUmlnaHQ6IHBpbm5lZFJpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnM6IHNlY3Rpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIEZsYXQgSGVhZGVyIHx8IFNpbmdsZSBIZWFkZXIgQ2VsbC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlICNmbGF0SGVhZGVyPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJncm91cC1jb2x1bW4td3JhcHBlclwiXHJcbiAgICAgICAgKm5nSWY9XCJjb2wuaXNfdmlzaWJsZSAmJiAhY29sWydpc1Jvd0dyb3VwZWQnXVwiXHJcbiAgICAgID5cclxuICAgICAgICA8IS0tIEZ1bGwtaGVpZ2h0IEhlYWRlciBDZWxsIChzcGFucyAyIHJvd3MgdmlzdWFsbHkpIC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiaGVhZGVyLWNlbGwgb25lLXJvdy1oZWFkZXItY2VsbHNcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS1maWVsZF09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJcclxuICAgICAgICAgICAgc2hvd0NvbHVtbnNHcm91cGluZyA/IGhlYWRlclJvd0hlaWdodCAqIDIgOiBoZWFkZXJSb3dIZWlnaHRcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIlxyXG4gICAgICAgICAgICBzaG93Q29sdW1uc0dyb3VwaW5nID8gaGVhZGVyUm93SGVpZ2h0ICogMiA6IGhlYWRlclJvd0hlaWdodFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtzdHlsZS5mb250V2VpZ2h0XT1cImhlYWRlckZvbnRXZWlnaHRcIlxyXG4gICAgICAgICAgc3R5bGU9XCJncmlkLXJvdzogMSAvIHNwYW4gMlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gdy0xMDAgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiY29sLmhlYWRlclwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgaC0xMDAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZWRpdGFibGUtaGVhZGVyXT1cImNvbD8uaXNfZWRpdGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MuZmlsdGVyLWFwcGxpZWQtb24tdGV4dF09XCJpc0ZpbHRlckFwcGxpZWRPbkNvbHVtbihjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIG9wZW5UaHJlZURvdHNNZW51KCRldmVudCwgY29sKTtcclxuICAgICAgICAgICAgICAgICAgICBvcGVuRmlsdGVyb25UaHJlZURvdHNDbGljayhjb2wpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHt7IGNvbC5oZWFkZXIgfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZmxleC1yb3ctcmV2ZXJzZV09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3MubWUtMl09XCJwaW5uZWRSaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIFtjbGFzcy5tZS0yXT1cImNvbC5vcmRlcl9ieVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic29ydGluZ0NvbmZpZz8uZmllbGQgPT0gY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBBc2NlbmRpbmcgU29ydCBJY29uIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT0gJ2FzYydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWFzYy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNvcnREZXNjKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdhc2MnXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gRGVzY2VuZGluZyBTb3J0IEljb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnZGVzYydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zb3J0LWRlc2Muc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTEgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzb3J0QXNjKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwic29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT09ICdkZXNjJ1wiXHJcbiAgICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aHJlZS1kb3RzIHAtMVwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICBvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuID0gZmFsc2VcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvaWNvbnMvdGhyZWUtZG90cy12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBPbmx5IHNob3cgbWVudSBpZiB0aGlzIGNvbHVtbiBpcyBhY3RpdmUgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUNvbCA9PT0gY29sXCJcclxuICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IC01MCU7IHotaW5kZXg6IDIxXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgLSghY29sPy5waW5uZWQgPyBjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdCA6IDApXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS50b3AucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaXNUaHJlZURvdHNGaWx0ZXJPcGVuXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IHNob3dGaWx0ZXJSb3cgfHwgc2hvd0NvbHVtbnNHcm91cGluZ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhlYWRlclJvd0hlaWdodCAqIDIgLSAxMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGhlYWRlclJvd0hlaWdodCAtIDEwXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IDBcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5NZW51O1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IHNlY3Rpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInJlc2l6ZS1oYW5kbGVcIlxyXG4gICAgICAgICAgICAgICAgICBbY2xhc3Mudy0xMDBdPVwiY29sLnBpbm5lZCA9PSAncmlnaHQnXCJcclxuICAgICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cImF1dG9zaXplQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25SZXNpemVDb2x1bW4oJGV2ZW50LCBjb2wpXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEZpbHRlciBDZWxsIC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcclxuICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgIFthdHRyLmRhdGEtZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXJcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5maWx0ZXJWYWx1ZVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRmlsdGVyQ2hhbmdlKGNvbClcIlxyXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwiY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZSdcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWQtc2VhcmNoLWlucHV0XT1cIlxyXG4gICAgICAgICAgICAgIGNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlSW5GaWx0ZXJSb3dTZWFyY2goJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlckZyb21EaXNhYmxlZFNlYXJjaGVkSW5wdXQoY29sKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb3BlbkZpbHRlcihjb2wpXCJcclxuICAgICAgICAgICAgW2NsYXNzLmZpbHRlci1hcHBsaWVkXT1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJjb2w/LnR5cGUgPT0gJ2ltYWdlJ1wiXHJcbiAgICAgICAgICAgID48c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAqbmdJZj1cImlzRmlsdGVyQXBwbGllZE9uQ29sdW1uKGNvbClcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogN3B4O1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA3cHg7XHJcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggMHB4IDNweCAjNzQ4NmZmO1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDAgMTYzIDIzMyk7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICByaWdodDogNHB4O1xyXG4gICAgICAgICAgICAgICAgdG9wOiAxMnB4O1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyb3VuZGVkLWNpcmNsZSBkLWJsb2NrXCJcclxuICAgICAgICAgICAgPjwvc3BhblxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgZmlsdGVyLXJvdy1maWx0ZXItd3JhcHBlclwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyQ2VsbCA9PT0gY29sXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IHJpZ2h0OiAwOyB6LWluZGV4OiA5OVwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImNvbD8ucGlubmVkID8gMCA6IC1jZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsTGVmdFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImZpbHRlck1lbnU7IGNvbnRleHQ6IHsgY29sOiBjb2wgfVwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tPlxyXG48IS0tIEJvZHkgQ2VsbCBUZW1wbGF0ZSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuPCEtLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICNyb3dDZWxsXHJcbiAgbGV0LXJvd1xyXG4gIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiXHJcbiAgbGV0LWlzRXZlbj1cImlzRXZlblwiXHJcbiAgbGV0LWlzT2RkPVwiaXNPZGRcIlxyXG4gIGxldC1pc0xlZnRTZWN0aW9uPVwiaXNMZWZ0XCJcclxuICBsZXQtc2VjdGlvbj1cInNlY3Rpb25cIlxyXG4gIGxldC1yb3dJbmRleD1cInJvd0luZGV4XCJcclxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxyXG4+XHJcbiAgPCEtLSBDaGVjayBpZiByb3cgaXMgYSBncm91cCAtLT5cclxuICA8bmctY29udGFpbmVyXHJcbiAgICAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwUm93VGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3csIGRlcHRoOiAwIH1cIlxyXG4gID48L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI2dyb3VwUm93VGVtcGxhdGUgbGV0LXJvdyBsZXQtZGVwdGg9XCJkZXB0aFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvdy5pc0dyb3VwOyBlbHNlIHJlZ3VsYXJSb3dcIj5cclxuICAgICAgPCEtLSBHcm91cCBIZWFkZXIgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImdyb3VwLWhlYWRlci1yb3cgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICAgIFtjbGFzcy5ib3JkZXItYmVsb3ddPVwic2VjdGlvbiAhPT0gJ2NlbnRlcidcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJcclxuICAgICAgICAgIHNlY3Rpb24gPT09ICdjZW50ZXInXHJcbiAgICAgICAgICAgID8gKGNlbnRlclNjcm9sbGFibGVCb2R5Py5zY3JvbGxXaWR0aCA/PyAwKSArICdweCdcclxuICAgICAgICAgICAgOiAnMTAwJSdcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJzZWN0aW9uID09ICdsZWZ0J1wiXHJcbiAgICAgICAgICBjbGFzcz1cImgtMTAwIGQtZmxleFwiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwibGVmdFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aCAtIDFcIlxyXG4gICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93U2VyaWFsTnVtYmVyXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogNTBweFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBoLTEwMCBib3JkZXItcmlnaHQganVzdGlmeS1jb250ZW50LWVuZCBwZS0yIHMtbm9cIlxyXG4gICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiNTVcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY3Vyc29yXT1cIlxyXG4gICAgICAgICAgICAgICd1cmwoJyArXHJcbiAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1yaWdodC5zdmcpLCBhdXRvJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIm9uUm93TW91c2VEb3duKHJvdy5fX3ZpcnR1YWxJbmRleCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChtb3VzZW92ZXIpPVwib25Sb3dNb3VzZU92ZXIocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImNoZWNrYm94ZXNDb2xvclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IGdldFN0YXJ0SW5kZXgoKSArIChyb3cuX192aXJ0dWFsSW5kZXggLSAxKSB8fCBcIlwiIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2hvd0NoZWNrYm94ZXNcIlxyXG4gICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA1MHB4XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgaC0xMDAgYm9yZGVyLXJpZ2h0XCJcclxuICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxyXG4gICAgICAgICAgICAgIHJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiAxNnB4OyBoZWlnaHQ6IDE2cHhcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93KSA9PT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiZ2V0R3JvdXBDaGVja2VkU3RhdGUocm93KSA9PT0gdW5kZWZpbmVkXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdEdyb3VwUm93KCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAnY2VudGVyJ1wiXHJcbiAgICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiY2VudGVyUGlubmVkSGVhZGVyLnNjcm9sbFdpZHRoXCJcclxuICAgICAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJjZW50ZXJQaW5uZWRIZWFkZXIuc2Nyb2xsV2lkdGhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBzLTIgaC0xMDAgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICAgIFtjbGFzcy5yb3ctc2VsZWN0ZWRdPVwicm93U2VsZWN0ZWRJbmRleGVzLmhhcyhyb3cuX192aXJ0dWFsSW5kZXgpXCJcclxuICAgICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIlxyXG4gICAgICAgICAgICBbc3R5bGUucGFkZGluZ0xlZnQucHhdPVwiZGVwdGggPiAwID8gZGVwdGggKiAzMCA6IDBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgZmlsdGVyLWljb24td3JhcHBlclwiIChjbGljayk9XCJ0b2dnbGVFeHBhbmQocm93KVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBhbGlnbi1pdGVtcy1jZW50ZXIgZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJvdy5pc0V4cGFuZFxyXG4gICAgICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgKGNsaWNrKT1cInRvZ2dsZUV4cGFuZChyb3cpXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgIHt7IHJvdy5ncm91cFZhbHVlIH19ICh7eyBjb3VudExlYWZSb3dzKHJvdykgfX0pXHJcbiAgICAgICAgICAgIDwvc3Ryb25nPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwic2VjdGlvbiA9PSAncmlnaHQnXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyaWdodFBpbm5lZEhlYWRlci5vZmZzZXRXaWR0aFwiXHJcbiAgICAgICAgICBbY2xhc3Mucm93LXNlbGVjdGVkXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgID48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIFJlY3Vyc2l2ZSBDaGlsZHJlbiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImdyb3VwLWNoaWxkcmVuXCIgKm5nSWY9XCJyb3cuaXNFeHBhbmRcIiBbQHNsaWRlVG9nZ2xlXT5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2hpbGQgb2Ygcm93LmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5SWRcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZC5pc0dyb3VwOyBlbHNlIGRhdGFSb3dcIj5cclxuICAgICAgICAgICAgPCEtLSBSZWN1cnNpdmUgY2FsbCBmb3IgbmVzdGVkIGdyb3VwIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgIGdyb3VwUm93VGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogY2hpbGQsIGRlcHRoOiBkZXB0aCArIDEgfVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0YVJvdz5cclxuICAgICAgICAgICAgPCEtLSBSZWd1bGFyIGRhdGEgcm93IC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgIHJvd0NlbGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICRpbXBsaWNpdDogY2hpbGQsXHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXHJcbiAgICAgICAgICAgICAgICAgIGlzRXZlbjogaSAlIDIgPT09IDAsXHJcbiAgICAgICAgICAgICAgICAgIGlzT2RkOiBpICUgMiAhPT0gMCxcclxuICAgICAgICAgICAgICAgICAgaXNMZWZ0OiBpc0xlZnRTZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICBpc1RvdGFsUm93OiBpc1RvdGFsUm93XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICA8IS0tIFJlZ3VsYXIgcm93IChub3QgYSBncm91cCkgLS0+XHJcbiAgPG5nLXRlbXBsYXRlICNyZWd1bGFyUm93PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleFwiXHJcbiAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHRcIlxyXG4gICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgY3Vyc29yLXBvaW50ZXIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogMzBweDsgaGVpZ2h0OiAxMDAlXCJcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiAoZ3JpZFR5cGUgPT09ICdBc3NldHMnIHx8IGdyaWRUeXBlID09PSAnVGFza3MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgICAgPyBudWxsXHJcbiAgICAgICAgICAgIDogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cInJvd1NlbGVjdGVkSW5kZXhlcy5oYXMocm93Ll9fdmlydHVhbEluZGV4KVwiXHJcbiAgICAgICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURldGFpbFJvd0V4cGFuZChyb3cpXCJcclxuICAgICAgICAgICpuZ0lmPVwicm93Py5kZXRhaWw/LnJlc3VsdD8ubGVuZ3RoIHx8IGdyaWRUeXBlID09PSAnVGFza3MnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGZpbHRlci1pY29uLXdyYXBwZXJcIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgaXNEZXRhaWxzRXhwYW5kZWQocm93KVxyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICA6IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cIlxyXG4gICAgICAgICAgc2VjdGlvbiA9PSAnY2VudGVyJyAmJiBncm91cGVkQ29sdW1ucz8ubGVuZ3RoID8gZ3JvdXBCb3hQYWRkaW5nIDogMFxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgICAgIFtjbGFzcy5maXJzdC1yb3ctc2VsZWN0ZWRdPVwiZmlyc3RTZWxlY3RlZFJvdyA9PT0gcm93Ll9fdmlydHVhbEluZGV4XCJcclxuICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCByb3cpXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtcm93IGgtMTAwXCJcclxuICAgICAgICBbY2xhc3MuZXZlbi1yb3ddPVwiaXNFdmVuXCJcclxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXHJcbiAgICAgICAgW2NsYXNzLmhvdmVyZWQtcm93XT1cImhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Sb3dIb3Zlcihyb3cpXCJcclxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgID48L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCByb3cpXCJcclxuICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtcm93XCJcclxuICAgICAgICBbY2xhc3MuZXZlbi1yb3ddPVwiaXNFdmVuXCJcclxuICAgICAgICBbY2xhc3Mub2RkLXJvd109XCJpc09kZFwiXHJcbiAgICAgICAgW2NsYXNzLmhvdmVyZWQtcm93XT1cImhvdmVyZWRSb3dJZCA9PT0gKHJvdy5faWQgfHwgcm93LmlkKVwiXHJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Sb3dIb3Zlcihyb3cpXCJcclxuICAgICAgICAobW91c2VsZWF2ZSk9XCJvblJvd0xlYXZlKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogZ2V0QmFja2dyb3VuZENvbG9yKHJvdywgaXNFdmVuLCBzZWN0aW9uKVxyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsIGp1c3RpZnktY29udGVudC1lbmQgcGUtMiBzLW5vXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCI1NVwiXHJcbiAgICAgICAgICAqbmdJZj1cImlzTGVmdFNlY3Rpb24gJiYgc2hvd1NlcmlhbE51bWJlclwiXHJcbiAgICAgICAgICBbc3R5bGUuY3Vyc29yXT1cIlxyXG4gICAgICAgICAgICAndXJsKCcgK1xyXG4gICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1yaWdodC5zdmcpLCBhdXRvJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIChtb3VzZWRvd24pPVwib25Sb3dNb3VzZURvd24ocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgIChtb3VzZW92ZXIpPVwib25Sb3dNb3VzZU92ZXIocm93Ll9fdmlydHVhbEluZGV4LCAkZXZlbnQpXCJcclxuICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJjaGVja2JveGVzQ29sb3JcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IGdldFN0YXJ0SW5kZXgoKSArIChyb3cuX192aXJ0dWFsSW5kZXggLSAxKSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIlxyXG4gICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgICAgICA/IHNlbGVjdGVkUm93c0JhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgICAgIDogY2hlY2tib3hlc0JhY2tncm91bmRDb2xvclxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveC1jZWxsXCJcclxuICAgICAgICAgICpuZ0lmPVwiaXNMZWZ0U2VjdGlvbiAmJiBzaG93Q2hlY2tib3hlc1wiXHJcbiAgICAgICAgICBbY2xhc3MubGVmdC1zZWxlY3Rpb24tYm9yZGVyXT1cIlxyXG4gICAgICAgICAgICByb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbY2xhc3MuZmlyc3Qtcm93LXNlbGVjdGVkXT1cImZpcnN0U2VsZWN0ZWRSb3cgPT09IHJvdy5fX3ZpcnR1YWxJbmRleFwiXHJcbiAgICAgICAgICBbY2xhc3MubGFzdC1yb3ctc2VsZWN0ZWRdPVwibGFzdFNlbGVjdGVkUm93ID09PSByb3cuX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxXCJcclxuICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uXCJcclxuICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE2cHg7IGhlaWdodDogMTZweFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cImlzUm93U2VsZWN0ZWQocm93KVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlUm93U2VsZWN0aW9uKHJvdylcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSBSZW5kZXIgYWxsIGNvbHVtbnMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucztcclxuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkO1xyXG4gICAgICAgICAgICBsZXQgY29sSW5kZXggPSBpbmRleFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLmNoaWxkcmVuPy5sZW5ndGggPiAwOyBlbHNlIGZsYXRDb2x1bW5cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZDtcclxuICAgICAgICAgICAgICAgIGxldCBzdWJDb2xJbmRleCA9IGluZGV4XHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGlsZD8uaXNfdmlzaWJsZSAmJiAhY2hpbGQ/LmlzUm93R3JvdXBlZFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNoaWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgICByb3dJbmRleDogcm93SW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2xJbmRleDogY29sSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogc3ViQ29sSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgaXNUb3RhbFJvdzogaXNUb3RhbFJvd1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXRDb2x1bW4+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2w/LmlzX3Zpc2libGUgJiYgIWNvbD8uaXNSb3dHcm91cGVkXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICAgICAgcm93OiByb3csXHJcbiAgICAgICAgICAgICAgICAgICAgcm93SW5kZXg6IHJvd0luZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbEluZGV4OiBjb2xJbmRleCxcclxuICAgICAgICAgICAgICAgICAgICBzdWJDb2xJbmRleDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBzZWN0aW9uOiBzZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzVG90YWxSb3c6IGlzVG90YWxSb3dcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIFtAc2xpZGVUb2dnbGVdXHJcbiAgICAgICpuZ0lmPVwic2VjdGlvbiA9PT0gJ2xlZnQnICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxyXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzXCJcclxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzNTBweDsgb3ZlcmZsb3c6IGhpZGRlblwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiaGFzSG9yaXpvbnRhbFNjcm9sbCA/IDMzOSA6IDM0MVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgbGVmdFJpZ2h0TmVzdGVkUGxhY2Vob2xkZXI7XHJcbiAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93IH1cclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbQHNsaWRlVG9nZ2xlXVxyXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdjZW50ZXInICYmIGlzRGV0YWlsc0V4cGFuZGVkKHJvdylcIlxyXG4gICAgICBjbGFzcz1cImFjY29yZGlvbi1kZXRhaWxzIGNlbnRlci1zZWN0aW9uXCJcclxuICAgICAgc3R5bGU9XCJcclxuICAgICAgICBtYXgtaGVpZ2h0OiAzNTBweDtcclxuICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47XHJcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcclxuICAgICAgICBzY3JvbGxiYXItd2lkdGg6IHRoaW47XHJcbiAgICAgIFwiXHJcbiAgICAgICNuZXN0ZWRUYWJsZVxyXG4gICAgICBbc3R5bGUud2lkdGhdPVwiXHJcbiAgICAgICAgaGFzUmlnaHRQaW5uZWRDb2x1bW5zXHJcbiAgICAgICAgICA/ICcxMDAlJ1xyXG4gICAgICAgICAgOiBoYXNWZXJ0aWNhbFNjcm9sbFxyXG4gICAgICAgICAgPyAnY2FsYygxMDAlIC0gMTJweCknXHJcbiAgICAgICAgICA6ICcxMDAlJ1xyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm5lc3RlZFRhYmxlVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyaWRUeXBlID09ICdUYXNrcydcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICB0YXNrTWFuYWdlbWVudFRlbXBsYXRlO1xyXG4gICAgICAgICAgICBjb250ZXh0OiB7IHRhc2tEZXRhaWxzOiByb3cgfVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBbQHNsaWRlVG9nZ2xlXVxyXG4gICAgICAqbmdJZj1cInNlY3Rpb24gPT09ICdyaWdodCcgJiYgaXNEZXRhaWxzRXhwYW5kZWQocm93KVwiXHJcbiAgICAgIGNsYXNzPVwiYWNjb3JkaW9uLWRldGFpbHNcIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDM1MHB4OyBvdmVyZmxvdzogaGlkZGVuXCJcclxuICAgICAgW3N0eWxlLm1heEhlaWdodC5weF09XCJoYXNIb3Jpem9udGFsU2Nyb2xsID8gMzM5IDogMzQxXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICBsZWZ0UmlnaHROZXN0ZWRQbGFjZWhvbGRlcjtcclxuICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3cgfVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBBY3R1YWwgQ2VsbCBpcyBIZXJlIC0tPlxyXG48bmctdGVtcGxhdGVcclxuICAjY2VsbFRlbXBsYXRlXHJcbiAgbGV0LWNvbD1cImNvbFwiXHJcbiAgbGV0LXJvdz1cInJvd1wiXHJcbiAgbGV0LXNlY3Rpb249XCJzZWN0aW9uXCJcclxuICBsZXQtc3ViQ29sSW5kZXg9XCJzdWJDb2xJbmRleFwiXHJcbiAgbGV0LXJvd0luZGV4PVwicm93SW5kZXhcIlxyXG4gIGxldC1jb2xJbmRleD1cImNvbEluZGV4XCJcclxuICBsZXQtaXNUb3RhbFJvdz1cImlzVG90YWxSb3dcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgI2NlbGxDb250YWluZXJcclxuICAgIChjbGljayk9XCJcclxuICAgICAgZWRpdGluZ0tleSA9ICcnOyBzZXRBY3RpdmVDZWxsKHJvdywgY29sKTsgY29sbGFwc2VBbGxFeHBhbmRlZENlbGxzKClcclxuICAgIFwiXHJcbiAgICBbc3R5bGUuZm9udFdlaWdodF09XCJib2R5Rm9udFdlaWdodFwiXHJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICBjbGFzcz1cImNlbGwgb3ZlcmZsb3ctdmlzaWJsZSBwb3NpdGlvbi1yZWxhdGl2ZSBkYXRhLWdyaWQtY2VsbFwiXHJcbiAgICBbYXR0ci5kYXRhLWZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXHJcbiAgICBbc3R5bGUubWluSGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodFwiXHJcbiAgICBbY2xhc3MuYWN0aXZlLWNlbGxdPVwiXHJcbiAgICAgIGlzQWN0aXZlQ2VsbChyb3csIGNvbCkgJiYgIWlzRWRpdGluZyhyb3csIGNvbCkgJiYgc2VsZWN0ZWRLZXlzLnNpemUgPT0gMVxyXG4gICAgXCJcclxuICAgIChkYmxjbGljayk9XCJcclxuICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgZW5hYmxlRWRpdChyb3csIGNvbCwgZmFsc2UsIGNlbGxDb250YWluZXIpXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLnJvdy1zZWxlY3RlZF09XCJyb3dTZWxlY3RlZEluZGV4ZXMuaGFzKHJvdy5fX3ZpcnR1YWxJbmRleClcIlxyXG4gICAgW2NsYXNzLmZpcnN0LXJvdy1zZWxlY3RlZF09XCJmaXJzdFNlbGVjdGVkUm93ID09PSByb3c/Ll9fdmlydHVhbEluZGV4XCJcclxuICAgIFtjbGFzcy5sYXN0LXJvdy1zZWxlY3RlZF09XCJsYXN0U2VsZWN0ZWRSb3cgPT09IHJvdz8uX192aXJ0dWFsSW5kZXhcIlxyXG4gICAgdGFiaW5kZXg9XCItMVwiXHJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgZW5hYmxlRWRpdChyb3csIGNvbClcIlxyXG4gICAgKG1vdXNlZG93bik9XCJcclxuICAgICAgc3RhcnRTZWxlY3Rpb24oXHJcbiAgICAgICAgcm93Ll9fdmlydHVhbEluZGV4LFxyXG4gICAgICAgIGNvbEluZGV4LFxyXG4gICAgICAgIHN1YkNvbEluZGV4ID8/IDAsXHJcbiAgICAgICAgY29sLmZpZWxkLFxyXG4gICAgICAgICRldmVudCxcclxuICAgICAgICBzZWN0aW9uXHJcbiAgICAgIClcclxuICAgIFwiXHJcbiAgICAobW91c2VlbnRlcik9XCJcclxuICAgICAgZXh0ZW5kU2VsZWN0aW9uKFxyXG4gICAgICAgIHJvdy5fX3ZpcnR1YWxJbmRleCxcclxuICAgICAgICBjb2xJbmRleCxcclxuICAgICAgICBzdWJDb2xJbmRleCA/PyAwLFxyXG4gICAgICAgIGNvbC5maWVsZCxcclxuICAgICAgICAkZXZlbnQsXHJcbiAgICAgICAgc2VjdGlvblxyXG4gICAgICApXHJcbiAgICBcIlxyXG4gICAgKG1vdXNldXApPVwiZW5kU2VsZWN0aW9uKClcIlxyXG4gICAgW2NsYXNzLnNlbGVjdGVkLWNlbGxdPVwiXHJcbiAgICAgIGlzU2VsZWN0ZWQoXHJcbiAgICAgICAgcm93Ll9fdmlydHVhbEluZGV4LFxyXG4gICAgICAgIGNvbEluZGV4LFxyXG4gICAgICAgIHN1YkNvbEluZGV4ID8/IDAsXHJcbiAgICAgICAgY29sLmZpZWxkLFxyXG4gICAgICAgIHNlY3Rpb25cclxuICAgICAgKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy50b3AtYm9yZGVyXT1cIlxyXG4gICAgICBpc1RvcEJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgICBbY2xhc3MuYm90dG9tLWJvcmRlcl09XCJcclxuICAgICAgaXNCb3R0b21Cb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLmxlZnQtYm9yZGVyXT1cIlxyXG4gICAgICBpc0xlZnRCb3JkZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLnJpZ2h0LWJvcmRlcl09XCJcclxuICAgICAgaXNSaWdodEJvcmRlcihyb3cuX192aXJ0dWFsSW5kZXgsIGNvbEluZGV4LCBzdWJDb2xJbmRleCwgc2VjdGlvbilcclxuICAgIFwiXHJcbiAgICBbY2xhc3MudG9wLWxlZnQtY29ybmVyXT1cIlxyXG4gICAgICBpc1RvcExlZnRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLnRvcC1yaWdodC1jb3JuZXJdPVwiXHJcbiAgICAgIGlzVG9wUmlnaHRDb3JuZXIocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgc3ViQ29sSW5kZXgsIHNlY3Rpb24pXHJcbiAgICBcIlxyXG4gICAgW2NsYXNzLmJvdHRvbS1sZWZ0LWNvcm5lcl09XCJcclxuICAgICAgaXNCb3R0b21MZWZ0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICAgIFtjbGFzcy5ib3R0b20tcmlnaHQtY29ybmVyXT1cIlxyXG4gICAgICBpc0JvdHRvbVJpZ2h0Q29ybmVyKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4LCBzZWN0aW9uKVxyXG4gICAgXCJcclxuICA+XHJcbiAgICA8IS0tICAobW91c2Vkb3duKT1cInN0YXJ0U2VsZWN0aW9uKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZCwgJGV2ZW50KVwiXHJcbiAgKG1vdXNlZW50ZXIpPVwiZXh0ZW5kU2VsZWN0aW9uKHJvdy5fX3ZpcnR1YWxJbmRleCwgY29sSW5kZXgsIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZCwgJGV2ZW50KVwiXHJcbiAgKG1vdXNldXApPVwiZW5kU2VsZWN0aW9uKClcIlxyXG4gIFtjbGFzcy5zZWxlY3RlZC1jZWxsXT1cImlzU2VsZWN0ZWQocm93Ll9fdmlydHVhbEluZGV4LCBjb2xJbmRleCwgIHN1YkNvbEluZGV4ID8/IDAsIGNvbC5maWVsZClcIiAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ0YWJsZS1jZWxsXCJcclxuICAgICAgW2NsYXNzLmFjdGl2ZS1mb3ItZWRpdGluZ109XCJcclxuICAgICAgICBpc0VkaXRpbmcocm93LCBjb2wpICYmXHJcbiAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoIDw9IDUwKVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGlzRWRpdGluZyhyb3csIGNvbCkgJiZcclxuICAgICAgICAgICAgKGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgICAgICAoZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpPy5sZW5ndGggPD0gNTAgJiZcclxuICAgICAgICAgICAgICAgICFleHBhbmRlZENlbGxzLnNpemUpKTtcclxuICAgICAgICAgIGVsc2Ugdmlld01vZGVcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcblxyXG4gICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jZWxsRWRpdG9yOyBlbHNlIGJ1aWx0SW5FZGl0b3JzXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgW2NlbGxFZGl0b3JdPVwiY29sLmNlbGxFZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93XCJcclxuICAgICAgICAgICAgICAgIFtjb2xEYXRhXT1cImNvbFwiXHJcbiAgICAgICAgICAgICAgICBbY2VsbFZhbHVlXT1cImdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAoZWRpdG9yRXZlbnQpPVwiZmluaXNoRWRpdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8bmctdGVtcGxhdGUgI2J1aWx0SW5FZGl0b3JzPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImNvbC50eXBlXCI+XHJcbiAgICAgICAgICA8IS0tIFRleHQgSW5wdXQgLS0+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInaW5wdXQnXCJcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPCEtLSBOdW1iZXIgSW5wdXQgLS0+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSA4XCJcclxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCJcclxuICAgICAgICAgICAgI251bWJlcklucHV0PVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICNudW1iZXJSZWZcclxuICAgICAgICAgICAgKGtleXByZXNzKT1cImFsbG93T25seU51bWJlcnMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm51bWJlclJlZi5ibHVyKClcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgJ2lzLWludmFsaWQnOiBudW1iZXJJbnB1dC5pbnZhbGlkXHJcbiAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgIDwhLS0gRGF0ZSBJbnB1dCAtLT5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDhcIlxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCJcclxuICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgICNkYXRlSW5wdXQ9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogZGF0ZUlucHV0LmludmFsaWRcclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgPCEtLSBEcm9wZG93biAtLT5cclxuICAgICAgICAgIDwhLS0gbmctc2VsZWN0IGxpa2UgZHJvcGRvd24gLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZHJvcGRvd24nXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93biB3LTEwMFwiXHJcbiAgICAgICAgICAgIChibHVyKT1cImRpc2FibGVFZGl0KHJvdywgY29sKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwhLS0gVHJpZ2dlciAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gdGV4dC1zdGFydCB3LTEwMCB0ZXh0LWVsbGlwc2lzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJcclxuICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICAgIGRhdGEtYnMtZGlzcGxheT1cInN0YXRpY1wiXHJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8udmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/Lm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwbGFjZWhvbGRlcj4gU2VsZWN0IG9wdGlvbnMuLi4gPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8IS0tIE1lbnUgLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgdy0xMDAgcC0wIGNlbGwtZWRpdGluZy1kcm9wZG93bi1tZW51IHJvdW5kZWQtM1wiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLnNob3ddPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8IS0tIFNlYXJjaCAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBweS0xIGVkaXRpbmctZHJvcGRvd24tc2VhcmNoLWlucHV0XCIgKm5nSWY9XCJjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoID4gNVwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxyXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVkaXRpbkRyb3Bkb3duU2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0IFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzVcIiBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLXZpZXdwb3J0XCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMTIwcHhcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT0gb3B0aW9uPy52YWx1ZSB8fCBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkgPT0gb3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicHgtMiBweS0xIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZHJvcGRvd24taXRlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAqY2RrVmlydHVhbEZvcj1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3B0aW9uIG9mIGNvbC5jb2x1bW5fZHJvcGRvd25fdmFsdWUgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXIgOiBlZGl0aW5Ecm9wZG93blNlYXJjaCA6ICd2YWx1ZSdcclxuICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0TmVzdGVkVmFsdWUocm93LCBjb2wsIG9wdGlvbiwgdHJ1ZSk7IGVkaXRpbmdLZXkgPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cImNvbC5maWVsZCArICctJyArIChvcHRpb24udmFsdWUgfHwgb3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi52YWx1ZSB8fCBvcHRpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInZW1haWwnXCJcclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICAjZW1haWxNb2RlbD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAjZW1haWxJbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd1tjb2wuZmllbGRdXCJcclxuICAgICAgICAgICAgbmFtZT1cInt7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIHBhdHRlcm49XCJeW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kXCJcclxuICAgICAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIGVtYWlsTW9kZWwpXCJcclxuICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiXHJcbiAgICAgICAgICAgICAgZW1haWxNb2RlbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTsgZW1haWxJbnB1dC5ibHVyKClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAnaXMtaW52YWxpZCc6IGVtYWlsTW9kZWwuaW52YWxpZFxyXG4gICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDwhLS0gRGVmYXVsdCBmYWxsYmFjayAtLT5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAqbmdTd2l0Y2hEZWZhdWx0XHJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgICAgI3RleHRNb2RlbD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAjdGV4dElucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dbY29sLmZpZWxkXVwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICAoYmx1cik9XCJkaXNhYmxlRWRpdChyb3csIGNvbCwgdGV4dE1vZGVsKVwiXHJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIlxyXG4gICAgICAgICAgICAgIHRleHRNb2RlbC5jb250cm9sLm1hcmtBc1RvdWNoZWQoKTsgdGV4dElucHV0LmJsdXIoKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBhdXRvZm9jdXNcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWRcclxuICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gRGlzcGxheSBtb2RlIC0tPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3ZpZXdNb2RlPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMCBvdmVyZmxvdy1oaWRkZW5cIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Q2VsbENsYXNzZXMoY29sLCBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCkpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8IS0tIEZpZWxkIGljb24gKGZvciBUYXNrcyBncmlkKSAtLT5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nSWY9XCJncmlkVHlwZSA9PT0gJ1Rhc2tzJyAmJiBpY29uTWFwW2NvbC5maWVsZF0gJiYgIWlzVG90YWxSb3dcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbWUtMlwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiaWNvbk1hcFtjb2wuZmllbGRdKHJvdywgY29sKVwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8IS0tIOKchSBDdXN0b20gY2VsbCByZW5kZXJlciBzdXBwb3J0IC0tPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5jZWxsUmVuZGVyZXI7IGVsc2UgZGVmYXVsdENlbGxcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgIFtjZWxsUmVuZGVySW5pdF09XCJjb2wuY2VsbFJlbmRlcmVyXCJcclxuICAgICAgICAgICAgICBbcm93RGF0YV09XCJyb3dcIlxyXG4gICAgICAgICAgICAgIFtjb2xEYXRhXT1cImNvbFwiXHJcbiAgICAgICAgICAgICAgW2NlbGxWYWx1ZV09XCJnZXROZXN0ZWRWYWx1ZShyb3csIGNvbD8uZmllbGQpXCJcclxuICAgICAgICAgICAgICAoY2VsbEV2ZW50KT1cIm9uQ2VsbEV2ZW50KCRldmVudClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPCEtLSDwn6e+IERlZmF1bHQgdGV4dC1iYXNlZCBjZWxsIHJlbmRlcmluZyAtLT5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENlbGw+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAjY2VsbFRleHRcclxuICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJnZXRDZWxsVGl0bGUocm93LCBjb2wpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDwhLS0gTm9ybWFsIGNlbGwgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgICAgY29sLnR5cGUgIT09ICdpbWFnZScgJiZcclxuICAgICAgICAgICAgICAgICAgY29sLmZpZWxkICE9ICdpbWFnZScgJiZcclxuICAgICAgICAgICAgICAgICAgY29sLmZpZWxkICE9ICdpbnZvaWNlLmludm9pY2VfaW1hZ2UnICYmXHJcbiAgICAgICAgICAgICAgICAgICFpc1RvdGFsUm93XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuaXNfYW1vdW50XCI+e3tcclxuICAgICAgICAgICAgICAgICAgY3VycmVuY3lTeW1ib2xcclxuICAgICAgICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB7e2dldENlbGxUaXRsZShyb3csIGNvbCl9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIFRvdGFsIHJvdyAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUb3RhbFJvd1wiPlxyXG4gICAgICAgICAgICAgICAge3sgZ2V0VG90YWxBbW91bnQoY29sKSB9fVxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIEludm9pY2UgSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5maWVsZCA9PSAnaW52b2ljZS5pbnZvaWNlX2ltYWdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHpvb206IDAuN1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpIHx8ICdBdHRhY2htZW50JyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgICAgICdkYXRhLWdyaWQvZG9jdW1lbnQtaWNvbnMvJyArXHJcbiAgICAgICAgICAgICAgICAgICAgICBnZXRFeHRlbnRpb24oZ2V0TmVzdGVkVmFsdWUocm93LCBjb2wuZmllbGQpKSArXHJcbiAgICAgICAgICAgICAgICAgICAgICAnLnN2ZydcclxuICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDwhLS0gSW1hZ2UgY2VsbCAtLT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gJ2ltYWdlJyAmJiAhaXNUb3RhbFJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRJbWFnZVBsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgcm93OiByb3csIGNvbDogY29sIH1cclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgKCFjb2w/LmNlbGxSZW5kZXJlciAmJiBzaG93Q2VsbERldGFpbHNCb3ggJiZcclxuICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID4gNTAgJiYgY29sLnR5cGUgIT09ICdpbWFnZScpIHx8XHJcbiAgICAgICAgICAgICAgKGlzTmVzdGVkVmFsdWVBcnJheShyb3csIGNvbC5maWVsZCkgJiZcclxuICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubGVuZ3RoID4gMSlcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbXMtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgaXNFeHBhbmRlZChyb3csIGNvbClcclxuICAgICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJcclxuICAgICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgdG9nZ2xlRXhwYW5kT2ZMb25nQ2VsbFRleHQocm93LCBjb2wsIGNvbHVtbnMsIHRydWUpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChkYmxjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPCEtLSBFeHBhbmQgLyBDb2xsYXBzZSBpY29uIC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEV4cGFuZGVkIHRleHQgLS0+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBleHBhbmRlZC1ib3hcIlxyXG4gICAgICAgICAgKm5nSWY9XCJpc0V4cGFuZGVkKHJvdywgY29sKVwiXHJcbiAgICAgICAgICBbc3R5bGUuekluZGV4XT1cImdldFpJbmRleChyb3csIGNvbClcIlxyXG4gICAgICAgICAgc3R5bGU9XCJ0b3A6IDEwMCU7IGxlZnQ6IDBcIlxyXG4gICAgICAgICAgW2F0dHIuaWRdPVwiKHJvdy5pZCB8fCByb3cuX2lkKSArICctJyArIChjb2wuaWQgfHwgY29sLl9pZClcIlxyXG4gICAgICAgICAgW2NsYXNzLmludmlzaWJsZV09XCIhc2hvd0RldGFpbHNCb3hcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICBmdWxsVGV4dFRlbXBsYXRlO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQ6IHtcclxuICAgICAgICAgICAgICAgIHJvdzogcm93LFxyXG4gICAgICAgICAgICAgICAgY29sOiBjb2wsXHJcbiAgICAgICAgICAgICAgICBpc0FycmF5OiBpc05lc3RlZFZhbHVlQXJyYXkocm93LCBjb2wuZmllbGQpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIEhlYWRlcnMgQWN0aW9uIExpc3QgT24gY2xpY2tpbmcgdGhyZWUgZG90cyAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZVxyXG4gICNjb2x1bW5NZW51XHJcbiAgbGV0LWNvbD1cImNvbFwiXHJcbiAgbGV0LWlzTmVzdGVkVGFibGU9XCJpc05lc3RlZFRhYmxlXCJcclxuICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxyXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImNvbHVtbi1tZW51IHRocmVlLWRvdHMtY29sLW1lbnVcIlxyXG4gICAgW2NsYXNzLnZpc3VhbGx5LWhpZGRlbl09XCJpc01lbnVlSGlkZGVuXCJcclxuICAgICpuZ0lmPVwiYWN0aXZlQ29sICYmICFpc1RocmVlRG90c0ZpbHRlck9wZW5cIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICBbc3R5bGUuY29sb3JdPVwiaGVhZGVyVGV4dENvbG9yXCJcclxuICA+XHJcbiAgICA8IS0tIFNvcnQgQXNjZW5kaW5nIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImJvcmRlci1iZWxvdyBwYi0yXCIgW2NsYXNzLmRpc2FibGUtc29ydGluZ109XCIhY29sLmlzX3NvcnRhYmxlXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwibXV0ZWQtdGV4dCBmcy03XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTJweFwiPlNvcnQ8L3NwYW4+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0FzY2VuZGluZyAmJlxyXG4gICAgICAgICAgKHNvcnRpbmdDb25maWc/LmZpZWxkICE9IGNvbC5maWVsZCB8fFxyXG4gICAgICAgICAgICBzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PSAnZGVzYycpXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJzb3J0QXNjKGFjdGl2ZUNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctdXAuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIFNvcnQgQXNjZW5kaW5nXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBTb3J0IERlc2NlbmRpbmcgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0Rlc2NlbmRpbmcgJiZcclxuICAgICAgICAgIChzb3J0aW5nQ29uZmlnPy5maWVsZCAhPSBjb2wuZmllbGQgfHxcclxuICAgICAgICAgICAgc29ydGluZ0NvbmZpZz8ub3JkZXJfYnkgPT0gJ2FzYycpXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImNvbHVtbi1tZW51LWl0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJzb3J0RGVzYyhhY3RpdmVDb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWRvd24uc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIFNvcnQgRGVzY2VuZGluZ1xyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgc29ydGluZ0NvbmZpZz8uZmllbGQgPT09IGNvbC5maWVsZCAmJlxyXG4gICAgICAgICAgKHNvcnRpbmdDb25maWc/Lm9yZGVyX2J5ID09PSAnYXNjJyB8fFxyXG4gICAgICAgICAgICBzb3J0aW5nQ29uZmlnPy5vcmRlcl9ieSA9PT0gJ2Rlc2MnKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwicmVzZXRTb3J0KGFjdGl2ZUNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWNvdW50ZXJjbG9ja3dpc2Uuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgUmVzZXQgU29ydFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInB5LTIgYm9yZGVyLWJlbG93IHRocmVlLWRvdHMtZmlsdGVyXCIgW2NsYXNzLmRpc2FibGUtc29ydGluZ109XCJjb2wudHlwZSA9PSAnaW1hZ2UnXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dGaWx0ZXJcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbSB0aHJlZS1kb3RzLWZpbHRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5GaWx0ZXJvblRocmVlRG90c0NsaWNrKGNvbClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZmlsdGVyLTIuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIEZpbHRlclxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJweS0yIGJvcmRlci1iZWxvd1wiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm11dGVkLXRleHQgZnMtN1wiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEycHhcIj5QaW48L3NwYW4+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cImNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5sZWZ0ICYmIGNvbD8ucGlubmVkICE9PSAnbGVmdCdcIlxyXG4gICAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgdXBkYXRlQ29sdW1uUGluSW5Tb3VyY2VCeUZpZWxkKFxyXG4gICAgICAgICAgICBhY3RpdmVDb2wsXHJcbiAgICAgICAgICAgICdsZWZ0JyxcclxuICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZSxcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tbGVmdC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgICA+UGluIExlZnRcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIGNvbHVtblRocmVlZG90c011bnVDb25maWc/LnNob3dQaW5yaWdodCAmJiBjb2w/LnBpbm5lZCAhPT0gJ3JpZ2h0J1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXHJcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcclxuICAgICAgICAgICAgJ3JpZ2h0JyxcclxuICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZSxcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tcmlnaHQuc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3BhblxyXG4gICAgICAgID5QaW4gUmlnaHRcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJjb2w/LnBpbm5lZFwiXHJcbiAgICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICB1cGRhdGVDb2x1bW5QaW5JblNvdXJjZUJ5RmllbGQoXHJcbiAgICAgICAgICAgIGFjdGl2ZUNvbCxcclxuICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgaXNOZXN0ZWRUYWJsZSxcclxuICAgICAgICAgICAgY29sdW1uc1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvbGF5b3V0LXRocmVlLWNvbHVtbnMuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgID48L3NwYW5cclxuICAgICAgICA+VW5waW5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwiY29sdW1uVGhyZWVkb3RzTXVudUNvbmZpZz8uc2hvd0F1dG9zaXplVGhpc0NvbHVtblwiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJhdXRvc2l6ZUNvbHVtbihhY3RpdmVDb2wpXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLWV4cGFuZC12ZXJ0aWNhbC5zdmcnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICBBdXRvc2l6ZSBUaGlzIENvbHVtblxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBBdXRvc2l6ZSBBbGwgQ29sdW1ucyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93QXV0b3NpemVBbGxDb2x1bW5zXCJcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgKGNsaWNrKT1cImF1dG9zaXplQWxsQ29sdW1ucygpXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLWFuZ2xlLWV4cGFuZC5zdmcnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3BhblxyXG4gICAgICA+QXV0b3NpemUgQWxsIENvbHVtbnNcclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gR3JvdXAgQnkgLS0+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwic2hvd1Jvd3NHcm91cGluZ1wiXHJcbiAgICAgIGNsYXNzPVwiY29sdW1uLW1lbnUtaXRlbVwiXHJcbiAgICAgIChjbGljayk9XCJncm91cEJ5KGFjdGl2ZUNvbClcIlxyXG4gICAgICBbY2xhc3MuZGlzYWJsZS1zb3J0aW5nXT1cIiFjb2wuaXNfZ3JvdXBhYmxlXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2RpYWdyYW0tMy5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgR3JvdXAgYnkge3sgY29sLmhlYWRlciB9fVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBDaG9vc2UgQ29sdW1ucyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93Q2hvc2VDb2x1bW5zXCJcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgKGNsaWNrKT1cImNob29zZUNvbHVtbnMoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy91aS1jaGVja3MtZ3JpZC5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgQ2hvb3NlIENvbHVtbnNcclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUmVzZXQgQ29sdW1ucyAtLT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJjb2x1bW5UaHJlZWRvdHNNdW51Q29uZmlnPy5zaG93UmVzZXRDb2x1bW5zXCJcclxuICAgICAgY2xhc3M9XCJjb2x1bW4tbWVudS1pdGVtXCJcclxuICAgICAgKGNsaWNrKT1cInJlc2V0Q29sdW1ucygpXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3ctY291bnRlcmNsb2Nrd2lzZS5zdmcnXHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgPjwvc3BhblxyXG4gICAgICA+UmVzZXQgQ29sdW1uc1xyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgQHNsaWRlVG9nZ2xlXHJcbiAgICAqbmdJZj1cImlzVGhyZWVEb3RzRmlsdGVyT3BlblwiXHJcbiAgICBjbGFzcz1cInRocmVlLWRvdHMtY29sLW1lbnUgcG9zaXRpb24tcmVsYXRpdmVcIlxyXG4gICAgW3N0eWxlLnJpZ2h0LnB4XT1cInNlY3Rpb24gPT0gJ3JpZ2h0JyA/IG51bGwgOiBjb2wud2lkdGggLSA0NVwiXHJcbiAgICBbY2xhc3MudmlzdWFsbHktaGlkZGVuXT1cImlzTWVudWVIaWRkZW5cIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJNZW51OyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBGaWx0ZXIgTWVudWUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZmlsdGVyTWVudSBsZXQtY29sPVwiY29sXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmaWx0ZXItbWVudS1jb250YWluZXIgZmlsdGVyLW1lbnVcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJkcm9wZG93bnNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gID5cclxuICAgIDwhLS0gRHJvcGRvd24gVHlwZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJzsgZWxzZSB0ZXh0RmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItZHJvcGRvd24tc2VjdGlvbiBwLTFcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwiYWRkRmlsdGVyQ29sdW1uSW5wdXRcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXQtMiBtcy0xIHNlbGVjdC1hbGwtZmlsdGVyXCI+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNBbGxTaWRlRmlsdGVyT3B0aW9uc1NlbGVjdGVkKGNvbClcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdEFsbFNpZGVGaWx0ZXJzKGNvbCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cInNlbGVjdEFsbF97eyBjb2wuZmllbGQgfX1cIj5cclxuICAgICAgICAgICAgU2VsZWN0IEFsbFxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyBwcy0xXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgICAgICB8IGZpbHRlciA6IGFkZEZpbHRlckNvbHVtbklucHV0IDogJ3ZhbHVlJztcclxuICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWQ7XHJcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgW2lkXT1cImlcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvbilcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIiBbZm9yXT1cImlcIj5cclxuICAgICAgICAgICAgICB7eyBvcHRpb24/LnZhbHVlID8/IG9wdGlvbj8ubmFtZSA/PyBvcHRpb24gfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8Y2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0XHJcbiAgICAgICAgICAgICAgaXRlbVNpemU9XCIzMlwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXItdmlld3BvcnRcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAxMjBweFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xXCJcclxuICAgICAgICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwiXHJcbiAgICAgICAgICAgICAgICAgIGxldCBvcHRpb24gb2Ygc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXI/LmNvbHVtbl9kcm9wZG93bl92YWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAndmFsdWUnO1xyXG4gICAgICAgICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgIFtpZF09XCJvcHRpb24/LmlkID8/IG9wdGlvbj8uX2lkID8/IG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGaWx0ZXJTZWxlY3RlZElkcy5oYXMob3B0aW9uPy5pZCA/PyBvcHRpb24/Ll9pZCA/PyBvcHRpb24pXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0aW9uSW5GaWx0ZXIob3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgZnctc2VtaWJvbGRcIlxyXG4gICAgICAgICAgICAgICAgICBbZm9yXT1cIm9wdGlvbj8uaWQgPz8gb3B0aW9uPy5faWQgPz8gb3B0aW9uXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge3sgb3B0aW9uPy52YWx1ZSA/PyBvcHRpb24/Lm5hbWUgPz8gb3B0aW9uIH19XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBUZXh0IEZpbHRlciBTZWN0aW9uIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0RmlsdGVyPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXRleHQtc2VjdGlvblwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTJcIj5cclxuICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0XCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaXJzdENvbmRpdGlvblwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIFt0eXBlXT1cImNvbC50eXBlID09ICdzdHJpbmcnID8gJ3RleHQnIDogY29sLnR5cGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIG1iLTNcIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJWYWx1ZVwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0VmFsdWVcIlxyXG4gICAgICAgICAgI2ZpbHRlck1lbnVlVGV4dGNoSW5wdXRcclxuICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMyBkLWZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIG0tMCBjb2wtNCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGZpbHRlci1yYWRpby1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImNvbmRpdGlvblwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwiYW5kXCJcclxuICAgICAgICAgICAgICBpZD1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwiYW5kX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgPkFORDwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIm9yXCJcclxuICAgICAgICAgICAgICBpZD1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjZHIuZGV0ZWN0Q2hhbmdlcygpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJvcl97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5PUjwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgIGlkPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2RyLmRldGVjdENoYW5nZXMoKVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5Ob25lPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IEBzbGlkZVRvZ2dsZSAqbmdJZj1cImZpcnN0VmFsdWUgJiYgY29uZGl0aW9uICE9ICdub25lJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMlwiPlxyXG4gICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0XCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZENvbmRpdGlvblwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiY29udGFpblwiPkNvbnRhaW5zPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZG9lc19ub3RfY29udGFpblwiPkRvZXMgTm90IENvbnRhaW48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFsczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5FbmRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJub3RfZXF1YWxcIj5Ob3QgRXF1YWw8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkFmdGVyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIFt0eXBlXT1cImNvbC50eXBlID09ICdzdHJpbmcnID8gJ3RleHQnIDogY29sLnR5cGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2Vjb25kIFZhbHVlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRWYWx1ZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPCEtLSBBY3Rpb25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBtdC0yXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzBweFwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiXHJcbiAgICAgID5cclxuICAgICAgICBBcHBseVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMwcHhcIlxyXG4gICAgICAgIChjbGljayk9XCJyZXNldFNpZGVGaWx0ZXIoY29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICBSZXNldFxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBTaWRlIE1lbnVlIC0tPlxyXG5cclxuPCEtLSBDb2x1bW4gUGFubmVsIC8gUGl2b3QgTW9kZSAvIFNlYXJjaGluZyAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29sdW1uUGFubmVsPlxyXG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4tcGFuZWwtaGVhZGVyXCI+XHJcbiAgICA8IS0tIFBpdm90IFRvZ2dsZSAtLT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMiBwaXZvdC1tb2RlIHB4LTUgbXMtMiBkLW5vbmVcIlxyXG4gICAgPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXHJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICBpZD1cInBpdm90VG9nZ2xlXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cInBpdm90TW9kZVwiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJwaXZvdFRvZ2dsZVwiPlBpdm90IE1vZGU8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTZWxlY3QgQWxsICYgU2VhcmNoIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMiBweC0zIG10LTNcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIiAqbmdJZj1cInNob3dDb2x1bW5zR3JvdXBpbmdcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgYWNjb3JkaW9uU3RhdGUgPT09ICdhbGwnXHJcbiAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLWRvd24uc3ZnJ1xyXG4gICAgICAgICAgICAgIDogYWNjb3JkaW9uU3RhdGUgPT09ICdzb21lJ1xyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZGFzaC5zdmcnXHJcbiAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWxsQWNjb3JkaW9ucygpXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxyXG4gICAgICAvPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBjb2x1bW5zLi4uXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbHVtblNlYXJjaFwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIFNlcGFyYXRvciAtLT5cclxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBSaWdodCBDb2x1bW5zIE1lbnVlIC0tPlxyXG5cclxuPCEtLSBDb2x1bW4gUGFuZWwgSXRlbSBUZW1wbGF0ZSAtLT5cclxuPG5nLXRlbXBsYXRlICNjb2x1bW5QYW5lbEl0ZW0gbGV0LWNvbD1cImNvbFwiPlxyXG4gIDwhLS0gR3JvdXAgQ29sdW1uIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbi1ncm91cCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW2NsYXNzLnJvdGF0ZV09XCJjb2wuZXhwYW5kZWRcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZCA9ICFjb2wuZXhwYW5kZWRcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXHJcbiAgICAgICAgW2lkXT1cIidncm91cF8nICsgY29sLmhlYWRlclwiXHJcbiAgICAgICAgW2NoZWNrZWRdPVwiaXNDb2x1bW5WaXNpYmxlKGNvbClcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlR3JvdXBWaXNpYmlsaXR5KGNvbClcIlxyXG4gICAgICAvPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZ3JpZC0zeDItZ2FwLnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxyXG4gICAgICAgIFtmb3JdPVwiJ2dyb3VwXycgKyBjb2wuaGVhZGVyXCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiY29sLmV4cGFuZGVkXCIgY2xhc3M9XCJwcy00XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW5QYW5lbEl0ZW07IGNvbnRleHQ6IHsgY29sOiBjaGlsZCB9XCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gTGVhZiBDb2x1bW4gLS0+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1lLTJcIiBzdHlsZT1cIndpZHRoOiAxLjVyZW1cIj48L3NwYW4+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgIFtpZF09XCInY29sXycgKyBjb2wuZmllbGRcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwib25TaWRlTWVudUNvbHVtbnNWaXNpYmlsaXR5Q2hhbmdlKClcIlxyXG4gICAgICAvPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZ3JpZC0zeDItZ2FwLnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtZS0yXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgPGxhYmVsXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTAgdy0xMDBcIlxyXG4gICAgICAgIFtmb3JdPVwiJ2NvbF8nICsgY29sLmZpZWxkXCJcclxuICAgICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIENvbHVtbnMgU2lkZSBGaWx0ZXIgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjc2lkZUZpbHRlcnM+XHJcbiAgPGRpdiBjbGFzcz1cInB5LTMgcHgtMiBwZS0zIGgtMTAwXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlciBtZS0yXCIgKm5nSWY9XCJzaG93Q29sdW1uc0dyb3VwaW5nXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIGZpbHRlckFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xyXG4gICAgICAgICAgICAgID8gc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1kb3duLnN2ZydcclxuICAgICAgICAgICAgICA6IGZpbHRlckFjY29yZGlvblN0YXRlID09PSAnc29tZSdcclxuICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xyXG4gICAgICAgICAgICAgIDogc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEZpbHRlckFjY29yZGlvbnMoKVwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5TZWFyY2hcIlxyXG4gICAgICAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwib3ZlcmZsb3ctYXV0byBzaWRlLWZpbHRlci1jb2x1bW5zLXdyYXBwZXJcIlxyXG4gICAgICBzdHlsZT1cImhlaWdodDogY2FsYygxMDAlIC0gNzBweCk7IHNjcm9sbGJhci13aWR0aDogdGhpblwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IGNvbHVtblNlYXJjaCA6ICdoZWFkZXInO1xyXG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyUGFubmVsSXRlbTsgY29udGV4dDogeyBjb2w6IGNvbCB9XCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2ZpbHRlclBhbm5lbEl0ZW0gbGV0LWNvbD1cImNvbFwiPlxyXG4gIDwhLS0gR3JvdXAgQ29sdW1uIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuY2hpbGRyZW4/Lmxlbmd0aFwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNvbHVtbi1ncm91cCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIlxyXG4gICAgICAqbmdJZj1cImNvbC50eXBlICE9PSAnaW1hZ2UnXCJcclxuICAgID5cclxuICAgICAgPCEtLSBDaGV2cm9uIHRvZ2dsZSAtLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyIG1lLTJcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW2NsYXNzLnJvdGF0ZV09XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZEZpbHRlciA9ICFjb2wuZXhwYW5kZWRGaWx0ZXJcIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgIDwhLS0gR3JvdXAgbGFiZWwgdG9nZ2xlIC0tPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCB3LTEwMFwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCB0ZXh0LXRydW5jYXRlXCJcclxuICAgICAgICAgID57eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBtcy0xXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGggfHwgY29sPy5xdWVyeT8uX2ZpcnN0X3ZhbHVlXCJcclxuICAgICAgICAgICAgPio8L3NwYW5cclxuICAgICAgICAgID5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIENoaWxkcmVuIGNvbHVtbnMgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiY29sLmV4cGFuZGVkRmlsdGVyXCIgY2xhc3M9XCJwcy00XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNvbC5jaGlsZHJlbjsgdHJhY2tCeTogdHJhY2tCeUZpZWxkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWx0ZXJQYW5uZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY2hpbGQgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8IS0tIExlYWYgQ29sdW1uIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sLmNoaWxkcmVuPy5sZW5ndGhcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIiAqbmdJZj1cImNvbC50eXBlICE9PSAnaW1hZ2UnXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJtZS0yIGZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiXHJcbiAgICAgICAgKGNsaWNrKT1cImNvbC5leHBhbmRlZEZpbHRlciA9ICFjb2wuZXhwYW5kZWRGaWx0ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwidG9nZ2xlLWljb24gZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIFtjbGFzcy5yb3RhdGVdPVwiY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcblxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMCB3LTEwMFwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgIChjbGljayk9XCJjb2wuZXhwYW5kZWRGaWx0ZXIgPSAhY29sLmV4cGFuZGVkRmlsdGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZSBmdy1ib2xkXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgPC9sYWJlbD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2hvdyBmaWx0ZXIgd2hlbiBleHBhbmRlZCAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJjb2wuZXhwYW5kZWRGaWx0ZXJcIiBjbGFzcz1cInBzLTQgcGUtM1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaWRlTmVzdGVkRmlsdGVyOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gU2lkZSBOZXN0ZWQgRmlsdGVycyAtLT5cclxuPG5nLXRlbXBsYXRlICNzaWRlTmVzdGVkRmlsdGVyIGxldC1jb2w9XCJjb2xcIj5cclxuICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICA8IS0tIERyb3Bkb3duIFR5cGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT09ICdkcm9wZG93bic7IGVsc2UgdGV4dEZpbHRlclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicC0xXCI+XHJcbiAgICAgICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItMlwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNpZGVOZXN0ZWRGaWx0ZXJTZWFyY2hcIlxyXG4gICAgICAgIC8+XHJcblxyXG4gICAgICAgIDwhLS0gU2VsZWN0IEFsbCAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0xIG1zLTEgc2VsZWN0LWFsbC1maWx0ZXJcIj5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICBjb2wucXVlcnk/Ll9pZHM/Lmxlbmd0aCA9PSBjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZT8ubGVuZ3RoXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwidG9nZ2xlU2VsZWN0QWxsU2lkZUZpbHRlcnMoY29sLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgaWQ9XCJzZWxlY3RBbGxfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgZm9yPVwic2VsZWN0QWxsX3t7IGNvbC5maWVsZCB9fVwiPlxyXG4gICAgICAgICAgICBTZWxlY3QgQWxsXHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIE9wdGlvbnMgLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tb3B0aW9uc1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgbWItMSBtcy0xXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgICAgbGV0IG9wdGlvbiBvZiBjb2w/LmNvbHVtbl9kcm9wZG93bl92YWx1ZVxyXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXIgOiBzaWRlTmVzdGVkRmlsdGVyU2VhcmNoIDogJ3ZhbHVlJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiXHJcbiAgICAgICAgICAgICAgICBjb2wucXVlcnk/Ll9pZHM/LmluY2x1ZGVzKG9wdGlvbj8uX2lkIHx8IG9wdGlvbj8uaWQgfHwgb3B0aW9uKVxyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk9wdGlvblRvZ2dsZShjb2wsIG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgIGlkPVwib3B0aW9uX3t7IGNvbC5maWVsZCB9fV97e1xyXG4gICAgICAgICAgICAgICAgb3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb25cclxuICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgW2Zvcl09XCJcclxuICAgICAgICAgICAgICAgICdvcHRpb25fJyArXHJcbiAgICAgICAgICAgICAgICBjb2wuZmllbGQgK1xyXG4gICAgICAgICAgICAgICAgJ18nICtcclxuICAgICAgICAgICAgICAgIChvcHRpb24/LmlkIHx8IG9wdGlvbj8uX2lkIHx8IG9wdGlvbilcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3sgb3B0aW9uLnZhbHVlIHx8IG9wdGlvbiB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgICAgICAgICAgaXRlbVNpemU9XCIzMlwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tdmlld3BvcnRcIlxyXG4gICAgICAgICAgICBzdHlsZT1cImhlaWdodDogMTIwcHhcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIG1iLTEgbXMtMVwiXHJcbiAgICAgICAgICAgICAgKmNka1ZpcnR1YWxGb3I9XCJcclxuICAgICAgICAgICAgICAgIGxldCBvcHRpb24gb2YgY29sPy5jb2x1bW5fZHJvcGRvd25fdmFsdWVcclxuICAgICAgICAgICAgICAgICAgfCBmaWx0ZXIgOiBzaWRlTmVzdGVkRmlsdGVyU2VhcmNoIDogJ3ZhbHVlJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJcclxuICAgICAgICAgICAgICAgICAgY29sLnF1ZXJ5Py5faWRzPy5pbmNsdWRlcyhvcHRpb24/Ll9pZCB8fCBvcHRpb24/LmlkIHx8IG9wdGlvbilcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uT3B0aW9uVG9nZ2xlKGNvbCwgb3B0aW9uKVwiXHJcbiAgICAgICAgICAgICAgICBpZD1cIm9wdGlvbl97eyBjb2wuZmllbGQgfX1fe3tcclxuICAgICAgICAgICAgICAgICAgb3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb25cclxuICAgICAgICAgICAgICAgIH19XCJcclxuICAgICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICBbZm9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAnb3B0aW9uXycgK1xyXG4gICAgICAgICAgICAgICAgICBjb2wuZmllbGQgK1xyXG4gICAgICAgICAgICAgICAgICAnXycgK1xyXG4gICAgICAgICAgICAgICAgICAob3B0aW9uPy5pZCB8fCBvcHRpb24/Ll9pZCB8fCBvcHRpb24pXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi52YWx1ZSB8fCBvcHRpb24gfX1cclxuICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxyXG5cclxuXHJcbiAgICAgICAgPCEtLSBBY3Rpb25zIC0tPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMiBtdC0yXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMjJweDtcIlxyXG4gICAgICAgIChjbGljayk9XCJhcHBseVNpZGVGaWx0ZXIoY29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICBBcHBseVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiIFxyXG4gICAgICAgIHN0eWxlPVwiaGVpZ2h0OiAyMnB4O1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInJlc2V0U2lkZUZpbHRlcihjb2wpXCJcclxuICAgICAgPlxyXG4gICAgICAgIFJlc2V0XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gVGV4dCBGaWx0ZXIgU2VjdGlvbiAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjdGV4dEZpbHRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci10ZXh0LXNlY3Rpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0yXCI+XHJcbiAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc21cIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5xdWVyeS5maXJzdF9jb25kaXRpb25cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgIT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+QWZ0ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgW3R5cGVdPVwiY29sLnR5cGUgPT0gJ2RhdGUnID8gJ2RhdGUnIDogJ3RleHQnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtYi0zXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVmFsdWVcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5IS5maXJzdF92YWx1ZVwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWdyb3VwIG1iLTMgZC1mbGV4IGZsZXgtcm93IG11dGVkXCJcclxuICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxNHB4XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBtLTAgY29sLTQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBmaWx0ZXItcmFkaW8taW5wdXRzXCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sIS5xdWVyeS5jb25kaXRpb25cIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwiYW5kXCJcclxuICAgICAgICAgICAgICBpZD1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImFuZF97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAgID5BTkQ8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIm9yXCJcclxuICAgICAgICAgICAgICBpZD1cIm9yX3t7IGNvbC5maWVsZCB9fVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItMCBtdC0xXCIgZm9yPVwib3Jfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+T1I8L2xhYmVsXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1jaGVjay1pbmxpbmUgbS0wIGNvbC00IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTFcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgZmlsdGVyLXJhZGlvLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBuYW1lPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbCEucXVlcnkuY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgICB2YWx1ZT1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgIGlkPVwibm9uZV97eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICBjbGFzcz1cIm5ub25lbS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIlxyXG4gICAgICAgICAgICAgIGZvcj1cIm5vbmVfe3sgY29sLmZpZWxkIH19XCJcclxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nSWY9XCJjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSAmJiBjb2w/LnF1ZXJ5Py5jb25kaXRpb24gIT09ICdub25lJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItMlwiPlxyXG4gICAgICAgICAgICA8c2VsZWN0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LnNlY29uZF9jb25kaXRpb25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlICE9PSAnZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+U3RhcnRzIFdpdGg8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHMgVG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBbdHlwZV09XCJjb2wudHlwZSA9PSAnZGF0ZScgPyAnZGF0ZScgOiAndGV4dCdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbWItM1wiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2Vjb25kIFZhbHVlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2whLnF1ZXJ5LnNlY29uZF92YWx1ZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnkgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDIycHg7XCIgKGNsaWNrKT1cImFwcGx5RHJvcGRvd25GaWx0ZXIoKVwiPmFwcGx5PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc2Vjb25kYXJ5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiIHN0eWxlPVwiaGVpZ2h0OiAyMnB4O1wiIChjbGljayk9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIj5yZXNldDwvZGl2PlxyXG5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMiBib3JkZXItdG9wXCJcclxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IDM4cHhcIlxyXG4gICAgPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiAzMHB4XCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgYnRuLWxpZ2h0IGJvcmRlciB3LTEwMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMSBidG4tbGlnaHRcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHJlbW92ZVNpZGVGaWx0ZXIoY29sKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3Bhbj5DbGVhcjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IDMwcHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlTaWRlRmlsdGVyKGNvbClcIlxyXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIoY29sPy5xdWVyeS5jb25kaXRpb24gIT09ICdub25lJyAmJiAhY29sPy5xdWVyeT8uc2Vjb25kX3ZhbHVlKVwiXHJcbiAgICAgICAgW2NsYXNzLnBlLW5vbmVdPVwiKGNvbCE/LnF1ZXJ5LmNvbmRpdGlvbiAhPT0gJ25vbmUnICYmICFjb2w/LnF1ZXJ5Py5zZWNvbmRfdmFsdWUpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTFweFwiPkFwcGx5PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBDZW50ciBPdmVybGF5IGZvciBzaG93aW5nIHRoZSBjaG9zZSBjb2x1bW5zIC0tPlxyXG5cclxuPGRpdiAqbmdJZj1cInNob3dDb2x1bW5QYW5lbFwiIGNsYXNzPVwiY3VzdG9tLW1vZGFsLW92ZXJsYXlcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImN1c3RvbS1tb2RhbC1jb250ZW50XCJcclxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiZHJvcGRvd25zQmFja2dyb3VuZENvbG9yXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RhbENvbHVtblBhbm5lbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gVGhlIGV4aXN0aW5nIG5nLXRlbXBsYXRlIHlvdSBwcm92aWRlZCAtLT5cclxuPG5nLXRlbXBsYXRlICNtb2RhbENvbHVtblBhbm5lbD5cclxuICA8ZGl2IGNsYXNzPVwiY29sdW1uLXBhbmVsLWhlYWRlclwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMiBwcy0zIHJvdW5kZWQtdG9wLTIgbW9kYS1oZWFkZXJcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cIjQ4XCJcclxuICAgID5cclxuICAgICAgQ2hvb3NlIENvbHVtbnNcclxuICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItaWNvbi13cmFwcGVyXCIgKGNsaWNrKT1cImNsb3NlTW9kYWxDb2x1bW5QYW5lbCgpXCJcclxuICAgICAgICA+PHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMveC5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3BhblxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aHIgY2xhc3M9XCJteS0wXCIgLz5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHB4LTIgcGUtM1wiIFtzdHlsZS5oZWlnaHQucHhdPVwiNDhcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci1pY29uLXdyYXBwZXIgbWUtMlwiICpuZ0lmPVwic2hvd0NvbHVtbnNHcm91cGluZ1wiPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJ0b2dnbGUtaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIGFjY29yZGlvblN0YXRlID09PSAnYWxsJ1xyXG4gICAgICAgICAgICAgICAgPyBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLWRvd24uc3ZnJ1xyXG4gICAgICAgICAgICAgICAgOiBhY2NvcmRpb25TdGF0ZSA9PT0gJ3NvbWUnXHJcbiAgICAgICAgICAgICAgICA/IHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Rhc2guc3ZnJ1xyXG4gICAgICAgICAgICAgICAgOiBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGV2cm9uLXJpZ2h0LnN2ZydcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFsbEFjY29yZGlvbnMoKVwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXHJcbiAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1ucy4uLlwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNob3NlQ29sdW1uc1NlYXJjaFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8aHIgY2xhc3M9XCJtdC0wIG1iLTFcIiAvPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHgtMiBvdmVybGF5LXNjcm9sbGFibGVcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogY2hvc2VDb2x1bW5zU2VhcmNoIDogJ2hlYWRlcic7XHJcbiAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sdW1uUGFuZWxJdGVtOyBjb250ZXh0OiB7IGNvbDogY29sIH1cIlxyXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzaWRlTWVudVJvd0dyb3Vwcz5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGgtMTAwIGQtbm9uZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTMgaC0xMDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBtYi00XCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj5Sb3cgR3JvdXBzPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImgtNTBcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInB4LTMgcHktMiBib3JkZXItZGFzaGVkIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgRHJhZyBoZXJlIHRvIHNldCByb3cgR3JvdXBzXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGhyIGNsYXNzPVwibXQtNFwiIC8+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInB4LTMgaC0xMDBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMyBtYi00XCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvanVzdGlmeS5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8c3Bhbj5WYWx1ZXM8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaC01MCBkLWZsZXhcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cInB4LTMgcHktMiBib3JkZXItZGFzaGVkIGgtMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTRweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgRHJhZyBoZXJlIGFnZ3JlZ2F0ZVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+XHJcbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPCEtLSBEcmFnIFByZXZpZXcgVGVtcGxhdGUgLS0+XHJcbjwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPlxyXG48IS0tICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT5cclxuPG5nLXRlbXBsYXRlICNkcmFnUHJldmlldyBsZXQtY29sPlxyXG4gIDxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93cy1tb3ZlLnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+e3sgY29sLmhlYWRlciB9fTwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBEcmFnIFBsYWNlaG9sZGVyIFRlbXBsYXRlIC0tPlxyXG48bmctdGVtcGxhdGVcclxuICAjZHJhZ1BsYWNlaG9sZGVyXHJcbiAgbGV0LWNvbFxyXG4gIGxldC1pPVwiaW5kZXhcIlxyXG4gIGxldC1zZWN0aW9uPVwic2VjdGlvblwiXHJcbiAgbGV0LWRyYWdnaW5nSW5Hcm91cEFyZWE9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCJcclxuPlxyXG4gIDxkaXYgKm5nSWY9XCIhZHJhZ2dpbmdJbkdyb3VwQXJlYVwiPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgIGhlYWRlckNlbGw7XHJcbiAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbCwgaW5kZXg6IGksIHNlY3Rpb246IHNlY3Rpb24gfVxyXG4gICAgICBcIlxyXG4gICAgPjwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJkcmFnZ2luZ0luR3JvdXBBcmVhXCI+TmV3IFBsYWNlaG9sZGVyPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRvcCBHcm91cCBSb3cgUGxhY2Vob2xkZXIgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjdG9wR3JvdXBpbmdSb3dQbGFjZWhvbGRlciBsZXQtY29sIGxldC1zaG93Q2hldnJvbj1cInNob3dDaGV2cm9uXCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBnYXAtMiB0b3Atcm93LWdyb3VwaW5nLXBsYWNlaG9sZGVyXCJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJ0b3BHcm91cGVkQmFkZ2VzQmFja2dyb3VuZENvbG9yXCJcclxuICAgID5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjZGtEcmFnSGFuZGxlXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlkLTN4Mi1nYXAuc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgICAgPHNwYW4+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICAoY2xpY2spPVwidW5ncm91cENvbHVtbihjb2wpXCJcclxuICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3guc3ZnJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgPjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93Q2hldnJvblwiIHN0eWxlPVwib3BhY2l0eTogMC42OyBmb250LXNpemU6IDE0cHhcIj5cclxuICAgIDxzcGFuXHJcbiAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvY2hldnJvbi1yaWdodC5zdmcnXCJcclxuICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgID48L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGVcclxuICAjY2hpbGRIZWFkZXJQbGFjZWhvbGRlclxyXG4gIGxldC1jb2xcclxuICBsZXQtcGlubmVkUmlnaHQ9XCJwaW5uZWRSaWdodFwiXHJcbiAgbGV0LWk9XCJpbmRleFwiXHJcbiAgbGV0LXNlY3Rpb25zPVwic2VjdGlvbnNcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJoZWFkZXItY2VsbCBvbmUtcm93LWhlYWRlci1jZWxsc1wiXHJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiaGVhZGVyRm9udFdlaWdodFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBoLTEwMCBhbGlnbi1pdGVtcy1jZW50ZXIgdy0xMDBcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMFwiXHJcbiAgICAgICAgW2NsYXNzLmZsZXgtcm93LXJldmVyc2VdPVwicGlubmVkUmlnaHRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzIGgtMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgW3RpdGxlXT1cImNvbC5oZWFkZXJcIlxyXG4gICAgICAgICAgW2NsYXNzLnctMTAwXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4XCJcclxuICAgICAgICAgIFtjbGFzcy5mbGV4LXJvdy1yZXZlcnNlXT1cInBpbm5lZFJpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhyZWUtZG90cyBwLTFcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzaXplLWhhbmRsZVwiPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9yZXNpemUtaGFuZGxlLnN2ZydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInNob3dGaWx0ZXJSb3dcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgY2xhc3M9XCJoZWFkZXItY2VsbCBmaWx0ZXItY2VsbFwiXHJcbiAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XT1cInNob3dWZXJ0aWNhbEJvcmRlclwiXHJcbiAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVhZGVyUm93SGVpZ2h0XCJcclxuICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJoZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgW2NsYXNzLmJvcmRlci1yaWdodF09XCJzaG93VmVydGljYWxCb3JkZXJcIlxyXG4gICAgc3R5bGU9XCJncmlkLXJvdzogM1wiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImhlYWRlci1jZWxsIGZpbHRlci1jZWxsXCJcclxuICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoXCJcclxuICAgICAgW3N0eWxlLm1pbi13aWR0aC5weF09XCJjb2wud2lkdGhcIlxyXG4gICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgIFtzdHlsZS5taW4taGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0LnB4XT1cImhlYWRlclJvd0hlaWdodFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5maWx0ZXJWYWx1ZVwiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cImNvbD8udHlwZSA9PSAnZHJvcGRvd24nIHx8IGNvbD8udHlwZSA9PSAnaW1hZ2UnXCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWQtc2VhcmNoLWlucHV0XT1cIlxyXG4gICAgICAgICAgY29sPy50eXBlID09ICdkcm9wZG93bicgfHwgY29sPy50eXBlID09ICdpbWFnZSdcclxuICAgICAgICBcIlxyXG4gICAgICAvPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIGNsYXNzPVwiZmlsdGVyLWljb24td3JhcHBlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUZpbHRlckNlbGwgPSBjb2w7IGFjdGl2ZUNvbCA9IG51bGxcIlxyXG4gICAgICAgID48c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9maWx0ZXItMi5zdmcnXCJcclxuICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgPjwvc3BhblxyXG4gICAgICA+PC9zcGFuPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGVcIlxyXG4gICAgICAgICpuZ0lmPVwiYWN0aXZlRmlsdGVyQ2VsbCA9PT0gY29sXCJcclxuICAgICAgICBzdHlsZT1cInRvcDogMTAwJTsgcmlnaHQ6IDA7IHotaW5kZXg6IDEwOyBsZWZ0OiAwXCJcclxuICAgICAgPjwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RhYmxlTGF5b3V0PlxyXG4gIDxkaXZcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJwLTMgc2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBkcm9wZG93bi1tZW51IHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dFwiXHJcbiAgICBzdHlsZT1cIndpZHRoOiAzMjBweFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcC0wXCJcclxuICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMlwiXHJcbiAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxoNiBjbGFzcz1cIm1iLTAgbXMtMlwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMFwiPlRhYmxlIExheW91dDwvaDY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxociBjbGFzcz1cIm15LTJcIiAvPlxyXG4gICAgPGRpdiBjbGFzcz1cInctMTAwIG1iLTMgZC1mbGV4XCIgcm9sZT1cImdyb3VwXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXHJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxyXG4gICAgICAgIGlkPVwic21hbGxcIlxyXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdzbWFsbCcpXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdzbWFsbCdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImJvcmRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxyXG4gICAgICAgIGZvcj1cInNtYWxsXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnc21hbGwnID8gJyMwMDAnIDogJyM3MjcyNzInXHJcbiAgICAgICAgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogOHB4XCI+PC9kaXY+XHJcbiAgICAgICAgU21hbGxcclxuICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXHJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxyXG4gICAgICAgIGlkPVwibWVkaXVtXCJcclxuICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGVkVGFibGVMYXlvdXQgPT0gJ21lZGl1bSdcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGFibGVMYXlvdXQoJGV2ZW50LCAnbWVkaXVtJylcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImJvcmRlciBteC0zIGQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgbGF5b3V0LWJ1dHRvblwiXHJcbiAgICAgICAgZm9yPVwibWVkaXVtXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbWVkaXVtJyA/ICcjMDAwJyA6ICcjNzI3MjcyJ1xyXG4gICAgICAgIH1cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYm94IGJvcmRlciBtYi0xXCIgc3R5bGU9XCJoZWlnaHQ6IDEycHhcIj48L2Rpdj5cclxuICAgICAgICBNZWRpdW1cclxuICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgY2xhc3M9XCJidG4tY2hlY2sgbGF5b3V0LWJ1dHRvbi1jaGVja1wiXHJcbiAgICAgICAgbmFtZT1cImxheW91dFNpemVcIlxyXG4gICAgICAgIGlkPVwibGFyZ2VcIlxyXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUYWJsZUxheW91dCgkZXZlbnQsICdsYXJnZScpXCJcclxuICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3RlZFRhYmxlTGF5b3V0ID09ICdsYXJnZSdcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bGFiZWxcclxuICAgICAgICBjbGFzcz1cImJvcmRlciBkLWZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGxheW91dC1idXR0b25cIlxyXG4gICAgICAgIGZvcj1cImxhcmdlXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICBjb2xvcjogc2VsZWN0ZWRUYWJsZUxheW91dCA9PSAnbGFyZ2UnID8gJyMwMDAnIDogJyM3MjcyNzInXHJcbiAgICAgICAgfVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1ib3ggYm9yZGVyIG1iLTFcIiBzdHlsZT1cImhlaWdodDogMTZweFwiPjwvZGl2PlxyXG4gICAgICAgIExhcmdlXHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8aHIgY2xhc3M9XCJteS0yXCIgLz5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cclxuICAgICAgPHNwYW4+U2hvdyBzZXBhcmF0b3JzPC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJzZXBhcmF0b3JzXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd1ZlcnRpY2FsQm9yZGVyXCJcclxuICAgICAgICAgIChjaGFuZ2UpPVwib25Gb250Q2hhbmdlKClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICA8c3Bhbj5Sb3cgc2hhZGluZzwvc3Bhbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggbS0wXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dTaGFkaW5nRW5hYmxlZFwiXHJcbiAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVJvd1NoYWRpbmcoKVwiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XHJcbiAgICAgIDxzcGFuPlNob3cgU2lkZSBNZW51PC9zcGFuPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBtLTBcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNob3dTaWRlTWVudVwiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxyXG4gICAgICA8c3Bhbj5TaG93IEZpbHRlciBSb3c8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG0tMFwiPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2hvd0ZpbHRlclJvd1wiXHJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgaWQ9XCJyb3dTaGFkaW5nXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGFibGVQcmVzZXQ+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJhY3RpdmVTdWJCdXR0b24gIT09ICdzYXZlLXByZXNldCdcIlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICBjbGFzcz1cInAtMyBzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIGRyb3Bkb3duLW1lbnUgc2hvdyBzaGFkb3cgY3VzdG9tLW1lbnUgdGFibGUtbGF5b3V0XCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4XCJcclxuICA+XHJcbiAgICA8IS0tIEhlYWRlciAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBwLTBcIlxyXG4gICAgICAgICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogLTEwcHhcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUFjdGlvbnMoJ3NldHRpbmcnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvblwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNiBjbGFzcz1cIm1iLTAgbXMtMlwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMFwiPlRhYmxlIFByZXNldHM8L2g2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBTYXZlIFByZXNldCBCdXR0b24gd2l0aCBEcm9wZG93biAtLT5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8YVxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXByaW1hcnlcIlxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBpZD1cInNhdmVQcmVzZXREcm9wZG93blwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB0b2dnbGVTdWJBY3Rpb25zKCdzYXZlLXByZXNldCcpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/IFwiU2F2ZSBwcmVzZXRcIiA6IFwiVXBkYXRlIFByZXNldFwiIH19XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2VhcmNoIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcclxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFByZXNldFRhYmxlXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBQcmVzZXQgTGlzdCAtLT5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICB0YWJsZVZpZXcgfCBmaWx0ZXIgOiBzZWFyY2hUZXh0UHJlc2V0VGFibGUgOiAnbmFtZScgYXMgZmlsdGVyZWRMaXN0XHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDwhLS0gSWYgZmlsdGVyZWRMaXN0IGV4aXN0cyBhbmQgbm9uZSBpcyBkZWZhdWx0IC0+IHNob3cgZmFsbGJhY2sgLS0+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIiBwYi01IG92ZXJmbG93LWF1dG9cIlxyXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gMjUwXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICBjbGVhckFsbEZpbHRlcnMoKTtcclxuICAgICAgICAgICAgb3BlbkluZGV4ID0gbnVsbDtcclxuICAgICAgICAgICAgdGVtcF9zdGF0ZS5pZCA9ICcnO1xyXG4gICAgICAgICAgICBhY3RpdmVUb3BCdXR0b24gPSAnJztcclxuICAgICAgICAgICAgY3VycmV0YVRhYmxlUHJlc2V0Rm9yVXBkYXRlID0gbnVsbFxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5EZWZhdWx0IFZpZXc8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LWRhcmtcIj5DcmVhdGVkIGJ5IHN5c3RlbTwvc21hbGw+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAqbmdJZj1cIiF0YWJsZUZpbHRlclZpZXdJZCAmJiAhaGFzQW55RGVmYXVsdFZpZXcoKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgYmctbGlnaHQgdGV4dC1wcmltYXJ5IG1zLTJcIlxyXG4gICAgICAgICAgICA+RGVmYXVsdDwvc3BhblxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgKm5nSWY9XCIhdGFibGVGaWx0ZXJWaWV3SWQgJiYgIWhhc0FueURlZmF1bHRWaWV3KClcIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2NoZWNrLWJsdWUuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiXHJcbiAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZUZpbHRlclZpZXdJZFwiXHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gVGhlIGxpc3Q6IHJlbmRlciBlYWNoIHRhYmxlIGZyb20gZmlsdGVyZWRMaXN0IC0tPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcclxuICAgICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICBsZXQgdGFibGUgb2YgZmlsdGVyZWRMaXN0O1xyXG4gICAgICAgICAgICBsZXQgaSA9IGluZGV4O1xyXG4gICAgICAgICAgICB0cmFja0J5OiB0cmFja0J5VGFibGVcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSBJdGVtIC0tPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiXHJcbiAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyBvcGVuSW5kZXggPSBudWxsOyBhY3RpdmVUb3BCdXR0b24gPSAnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3RGaWx0ZXIodGFibGUpOyBvcGVuSW5kZXggPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIHt7IHRhYmxlPy5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICA8IS0tIHt7dGFibGU/LmlzX3RlbXB9fSAtLT5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHRhYmxlPy5pc190ZW1wICYmICF0ZW1wX3N0YXRlLmlkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBfc3RhdGUuaWQgPT0gdGFibGUuaWRcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGVjay1ibHVlLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInRhYmxlPy5pc19kZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSBiZy1saWdodCB0ZXh0LXByaW1hcnkgbXMtMlwiXHJcbiAgICAgICAgICAgICAgICAgID5EZWZhdWx0PC9zcGFuXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYXJrXCIgKm5nSWY9XCJ0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lc1wiIFt0aXRsZV09XCJ0YWJsZT8uY29uZmlnPy5maWx0ZXJOYW1lc1wiPlxyXG4gICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgdGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXM/Lmxlbmd0aCA+IDI1IFxyXG4gICAgICAgICAgICAgID8gKHRhYmxlPy5jb25maWc/LmZpbHRlck5hbWVzIHwgc2xpY2U6MDoyNSkgKyAnLi4uJ1xyXG4gICAgICAgICAgICAgIDogdGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICh7eyB0YWJsZT8uY29uZmlnPy50b3RhbENvdW50IH19KVxyXG4gICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1kYXJrXCIgKm5nSWY9XCIhdGFibGU/LmNvbmZpZz8uZmlsdGVyTmFtZXNcIj57eyB0YWJsZT8uY3JlYXRlZEF0IHwgZGF0ZSA6IFwiTU1NIGQsIHlcIiB9fTwvc21hbGw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0YWJsZT8uaXNfZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9jaGVjay1ibHVlLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiICpuZ0lmPVwiIXRhYmxlPy5pc19kZWZhdWx0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24td3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taWNvbiBtdXRlZC10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTWVudShpLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJvcGVuSW5kZXggPT09IGlcIlxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAnZGF0YS1ncmlkL2ljb25zL2hvcml6b250YWwtZG90cy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gbWVudSAtLT5cclxuICAgICAgICAgICAgICAgICA8dWxcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wZW5JbmRleCA9PT0gaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tZHJvcGRvd24tbWVudSBwb3NpdGlvbi1maXhlZCB0b3AtYXV0b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5yaWdodC5weF09XCInYXV0bydcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldFdpZHRoIC0gMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRvcDogdW5zZXQ7IHJpZ2h0OiB1bnNldFwiXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm1lbnVpdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblByZXNldCh0YWJsZSwgJ3NldFByZXNldCcpOyB0ZW1wX3N0YXRlLmlkID0gJydcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc3Rhci5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTZXQgYXMgZGVmYXVsdFxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJub25lXCIgKm5nSWY9XCIhdGFibGUuY29uZmlybURlbGV0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gdGV4dC1kYW5nZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogLTRweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90cmFzaC1yZWQuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRGVsZXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGFibGUuY29uZmlybURlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbmZpcm0tYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB5LTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIDxiciAvPjxiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+4oCce3sgdGFibGU/Lm5hbWUgfX3igJ08L2JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+P1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQgbWUtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidGFibGUuY29uZmlybURlbGV0ZSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5jZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRhbmdlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uUHJlc2V0KHRhYmxlLCAnZGVsZXRlUHJlc2V0JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAqbmdJZj1cImFjdGl2ZVN1YkJ1dHRvbiA9PSAnc2F2ZS1wcmVzZXQnXCJcclxuICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBwLTMgYmFkZ2UgbXQtNCBzYXZlLXByZXNldC1kcm9wZG93biBtdC0xXCJcclxuICAgIGFyaWEtbGFiZWxsZWRieT1cInNhdmVQcmVzZXREcm9wZG93blwiXHJcbiAgICBzdHlsZT1cIm1pbi13aWR0aDogMjUwcHhcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGZzLTE0cHggbWItMlwiPlxyXG4gICAgICB7eyBpc1RhYmxlUHJlc2V0Tm90Q2hhbmdlZCA/IFwiU2F2ZSBwcmVzZXRcIiA6IFwiVXBkYXRlIFByZXNldFwiIH19XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJmcy0xNHB4IG1iLTJcIiBzdHlsZT1cImxpbmUtaGVpZ2h0OiAyMHB4XCI+XHJcbiAgICAgIFRoaXMgd2lsbCBzYXZlIHRoZSBjdXJyZW50IHRhYmxlIGFkanVzdG1lbnRzIGFzIGEgcHJlc2V0LlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIElucHV0IC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgPGxhYmVsIGZvcj1cInByZXNldE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWwgZnMtMTJweCBmdy1ib2xkXCJcclxuICAgICAgICA+UHJlc2V0IE5hbWU8L2xhYmVsXHJcbiAgICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAjcHJlc2V0TmFtZUN0cmw9XCJuZ01vZGVsXCJcclxuICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInByZXNldE5hbWVcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnaXMtaW52YWxpZCc6XHJcbiAgICAgICAgICAgICAgcHJlc2V0TmFtZUN0cmwuaW52YWxpZCAmJlxyXG4gICAgICAgICAgICAgIChwcmVzZXROYW1lQ3RybC5kaXJ0eSB8fCBwcmVzZXROYW1lQ3RybC50b3VjaGVkKVxyXG4gICAgICAgICAgfVwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gcHMtMlwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByZXNldCBuYW1lXCJcclxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtYi0yXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJwcmVzZXRGaWx0ZXJcIlxyXG4gICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgaWQ9XCJzYXZlRmlsdGVyc1wiXHJcbiAgICAgIC8+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbXQtMVwiIGZvcj1cInNhdmVGaWx0ZXJzXCI+XHJcbiAgICAgICAgU2F2ZSBhY3RpdmUgZmlsdGVyc1xyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTYXZlIEJ1dHRvbiAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMlwiIHN0eWxlPVwiaGVpZ2h0OiAzMnB4XCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYm9yZGVyIHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBidG4tbGlnaHRcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IHRvZ2dsZUFjdGlvbnMoJ3RhYmxlLXByZXNldHMnKVwiXHJcbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiAtMnB4XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuPkNhbmNlbDwvc3Bhbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBbZGlzYWJsZWRdPVwiY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInNhdmVQcmVzZXQocHJlc2V0TmFtZUN0cmwpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiICpuZ0lmPVwiaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2xvc2VEcm9wZG93bi5wcmVzZXQubG9hZGluZ1wiXHJcbiAgICAgICAgICAgID5TYXZlPC9uZy1jb250YWluZXJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjbG9zZURyb3Bkb3duLnByZXNldC5sb2FkaW5nXCJcclxuICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIj48L3NwYW5cclxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gc3R5bGU9XCJ3aGl0ZS1zcGFjZTogbm93cmFwXCIgKm5nSWY9XCIhaXNUYWJsZVByZXNldE5vdENoYW5nZWRcIlxyXG4gICAgICAgICAgPlVwZGF0ZSBQcmVzZXQ8L3NwYW5cclxuICAgICAgICA+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nob3dIaWRlQ29sdW1ucz5cclxuICA8ZGl2XHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwicC0zIHNoYWRvdyBhY3Rpb25zLWRyb3Bkb3duIG10LTEgZHJvcGRvd24tbWVudSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXRcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHhcIlxyXG4gID5cclxuICAgIDwhLS0gSGVhZGVyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHAtMFwiXHJcbiAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTBweFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQWN0aW9ucygnc2V0dGluZycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cInNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Fycm93LWxlZnQuc3ZnJ1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGg2IGNsYXNzPVwibWItMCBtcy0yXCIgc3R5bGU9XCJmb250LXdlaWdodDogNTAwXCI+Q29sdW1uczwvaDY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8YVxyXG4gICAgICAgIChjbGljayk9XCJyZXNldENvbHVtbnMoKVwiXHJcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1kZWNvcmF0aW9uLW5vbmUgZC1ub25lXCJcclxuICAgICAgICA+UmVzZXQ8L2FcclxuICAgICAgPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGdsb2JhbC1zZWFyY2hcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9zZWFyY2guc3ZnJ1wiXHJcbiAgICAgICAgICBjbGFzcz1cIm14LTIgcG9zaXRpb24tYWJzb2x1dGUgaWNvbiBkYXRhLWdyaWQtc3ZnLWljb25cIlxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggY29sdW1uXCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ0b3BTaG93SGlkZUNvbHVtbnNcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tIFByZXNldCBMaXN0IC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiXHJcbiAgICAgIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IHNjcm9sbGJhci13aWR0aDogdGhpblwiXHJcbiAgICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC0gMjIwXCJcclxuICAgID5cclxuICAgICAgPGRpdiBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiICpuZ0lmPVwiaGFzQW55VmlzaWJsZUNvbHVtblwiPlxyXG4gICAgICAgIFNob3cgaW4gdGFibGVcclxuICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgIGlkPVwiaGlkZV9hbGxcIlxyXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbENvbHVtbnNTZWxlY3RlZCgpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZUFsbENvbHVtbnNWaXNpYmlsaXR5KClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgZm9yPVwiaGlkZV9hbGxcIj5cclxuICAgICAgICAgICAgICBTaG93L0hpZGUgQWxsIFxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIEl0ZW0gLS0+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2YgY29sdW1ucyB8IGZpbHRlciA6IHRvcFNob3dIaWRlQ29sdW1ucyA6ICdoZWFkZXInO1xyXG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUZpZWxkXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwiY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2dyaXAtdmVydGljYWwuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29sPy5waW5uZWRcIlxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvcGluLWJsdWUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3Vyc29yLWdyYXAgZGF0YS1ncmlkLXN2Zy1pY29uXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxyXG4gICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnctc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICB7eyBjb2wuaGVhZGVyIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlICYmICFjb2w/LnF1ZXJ5Py5faWRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29sdW1uVmlzaWJpbGl0eShjb2wsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBbY2xhc3MucGUtbm9uZV09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBbY2xhc3Mub3BhY2l0eS01MF09XCJ2aXNpYmxlQ29sdW1ucygpLmxlbmd0aCA8PSAyIHx8IGNvbD8uaXNfYWx3YXlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwiY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgfHwgY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJvcGFjaXR5OiAwLjVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLnN2ZydcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTJcIlxyXG4gICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgPCEtLSBJdGVtIEVuZCBIZXJlIC0tPlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiXHJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlWaXNpYmxlQ29sdW1uICYmIGhhc0FueUluVmlzaWJsZUNvbHVtblwiXHJcbiAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIm11dGVkLXRleHQgc2hvdy1oaWRlLXRhYmxlLWxhYmVsIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXHJcbiAgICAgICAgKm5nSWY9XCJoYXNBbnlJblZpc2libGVDb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgSGlkZSBpbiB0YWJsZVxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBpZD1cInNob3dfYWxsXCJcclxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxDb2x1bW5zU2VsZWN0ZWQoKVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxDb2x1bW5zVmlzaWJpbGl0eSgpXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBmdy1zZW1pYm9sZFwiIGZvcj1cInNob3dfYWxsXCI+XHJcbiAgICAgICAgICAgICAgU2hvdy9IaWRlIEFsbCBcclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImxpc3QtZ3JvdXAgbGlzdC1ncm91cC1mbHVzaFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5RmllbGRcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCIhY29sLmlzX3Zpc2libGVcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBib3JkZXItMCBweC0wIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0xXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9ncmlwLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gY3Vyc29yLWdyYXBcIlxyXG4gICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbD8ucGlubmVkXCJcclxuICAgICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9waW4tYmx1ZS5zdmcnXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIGN1cnNvci1ncmFwXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbHVtblZpc2liaWxpdHkoY29sLCB0cnVlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvZXllLWNyb3NzLnN2ZydcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBtZS0yXCJcclxuICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gSXRlbSBFbmQgSGVyZSAtLT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmaWx0ZXJDb2x1bW5zIGxldC1jb2w9XCJjb2x1bW5cIj5cclxuICA8ZGl2XHJcbiAgICBAc2xpZGVUb2dnbGVcclxuICAgICpuZ0lmPVwiIWlzRmlsdGVyT3BlbiAmJiBhY3RpdmVUb3BCdXR0b24gPT0gJ2ZpbHRlci1jb2x1bW5zJ1wiXHJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgIGNsYXNzPVwic2hhZG93IGFjdGlvbnMtZHJvcGRvd24gbXQtMSBzaG93IHNoYWRvdyBjdXN0b20tbWVudSB0YWJsZS1sYXlvdXQgZmlsdGVyLWNvbHVtbnNcIlxyXG4gICAgc3R5bGU9XCJ3aWR0aDogMjgwcHg7IHJpZ2h0OiB1bnNldDsgbWF4LXdpZHRoOiAyMzBweFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNoZWNrYm94ZXNCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0yIHB4LTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIFtpbmxpbmVTVkddPVwic2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvc2VhcmNoLnN2ZydcIlxyXG4gICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbXgtMiBwb3NpdGlvbi1hYnNvbHV0ZSBpY29uXCJcclxuICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIGJ5XCJcclxuICAgICAgICAgIHR5cGU9XCJzZWFyY2hcIlxyXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJhZGRGaWx0ZXJDb2x1bW5JbnB1dFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwIGxpc3QtZ3JvdXAtZmx1c2hcIlxyXG4gICAgICBzdHlsZT1cIm1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSA1MDBweCk7IG92ZXJmbG93OiBhdXRvXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgbGV0IGNvbCBvZiBjb2x1bW5zIHwgZmlsdGVyIDogYWRkRmlsdGVyQ29sdW1uSW5wdXQgOiAnaGVhZGVyJztcclxuICAgICAgICAgIHRyYWNrQnk6IHRyYWNrQnlGaWVsZFxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkZpbHRlcihjb2wpXCJcclxuICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgIGNvbC5pc192aXNpYmxlICYmXHJcbiAgICAgICAgICAgICFjb2w/LnF1ZXJ5Py5maXJzdF92YWx1ZSAmJlxyXG4gICAgICAgICAgICAhY29sPy5xdWVyeT8uX2lkcz8ubGVuZ3RoICYmIGNvbC50eXBlICE9PSAnaW1hZ2UnXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTFcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC0zcHhcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZ3LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIERyb3Bkb3duIC0tPlxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJpc0ZpbHRlck9wZW4gJiYgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnZHJvcGRvd24nXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDI4MHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBteS0yIGJvcmRlci1iZWxvdyBweS0xIHBiLTIgbWItMyBkLWZsZXggcHMtMVwiPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgIGNsYXNzPVwiZGF0YS1ncmlkLXN2Zy1pY29uIG1lLTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICA+PC9zcGFuXHJcbiAgICAgID48Yj57eyBzZWxlY3RlZENvbHVtbkZvckZpbHRlcj8uaGVhZGVyIH19PC9iPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMiBweC0zXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImNvbC0xMiBnbG9iYWwtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGJvcmRlciByb3VuZGVkIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwIHB4LTIgZmlsdGVyLXNlcmFjaC1pbnB0XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VsZWN0ZWQgb2Ygc2VsZWN0ZWRGaWx0ZXJPcHRpb25zXCJcclxuICAgICAgICAgIGNsYXNzPVwiYmFkZ2UgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMSBtZS0xIG1iLTEgdG9wLXJvdy1maWx0ZXItZHJvcGRvd25cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHNlbGVjdGVkPy52YWx1ZSA/IHNlbGVjdGVkLnZhbHVlIDogc2VsZWN0ZWQgfX1cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTZWxlY3Rpb25JbkZpbHRlcihzZWxlY3RlZClcIlxyXG4gICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL2Nyb3NzLXByaW1hcnkuc3ZnJ1xyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cIm1lLTJcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gYm9yZGVyLTAgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAwXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWxlY3RlZEZpbHRlck9wdGlvbnM/Lmxlbmd0aCA/ICcnIDogJ0ZpbHRlciBieSdcIlxyXG4gICAgICAgICAgdHlwZT1cInNlYXJjaFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRGb3JGaWx0ZXJEcm9wRG93blwiXHJcbiAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiaGFuZGxlQmFja3NwYWNlKCRldmVudClcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoXCJcclxuICAgICAgc3R5bGU9XCJtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjAwcHgpOyBvdmVyZmxvdzogYXV0b1wiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdGb3I9XCJcclxuICAgICAgICAgIGxldCBjb2wgb2Ygc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIuY29sdW1uX2Ryb3Bkb3duX3ZhbHVlXHJcbiAgICAgICAgICAgIHwgZmlsdGVyIDogc2VhcmNoVGV4dEZvckZpbHRlckRyb3BEb3duIDogJ3ZhbHVlJztcclxuICAgICAgICAgIGxldCBpID0gaW5kZXhcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYm9yZGVyLTAgcHgtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICBbaWRdPVwiaVwiXHJcbiAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiY3VycmVudEZpbHRlclNlbGVjdGVkSWRzLmhhcyhjb2wuaWQgfHwgY29sLl9pZCB8fCBjb2wpXCJcclxuICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZVNlbGVjdGlvbkluRmlsdGVyKGNvbClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIGZ3LXNlbWlib2xkXCIgW2Zvcl09XCJpXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sPy52YWx1ZSB8fCBjb2w/Lm5hbWUgfHwgY29sIH19XHJcbiAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBnYXAtMiBweC0yIGJvcmRlci10b3BcIlxyXG4gICAgICBzdHlsZT1cImhlaWdodDogMzhweFwiXHJcbiAgICA+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldEZpbHRlckNoYW5nZXMoKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3Bhbj5DYW5jZWw8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPlNhdmU8L3NwYW4+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDwhLS0gRm9yIFRleHQgZmllbGRzIGFuZCBudW1iZXIgZmllbGRzLS0+XHJcblxyXG4gIDxkaXZcclxuICAgIEBzbGlkZVRvZ2dsZVxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgaXNGaWx0ZXJPcGVuICYmXHJcbiAgICAgIChzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdzdHJpbmcnIHx8XHJcbiAgICAgICAgc2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSA9PSAnbnVtYmVyJyB8fFxyXG4gICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnKVxyXG4gICAgXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgY2xhc3M9XCJzaGFkb3cgYWN0aW9ucy1kcm9wZG93biBtdC0xIHNob3cgc2hhZG93IGN1c3RvbS1tZW51IHRhYmxlLWxheW91dCBmaWx0ZXItY29sdW1ucyBwYi0yXCJcclxuICAgIHN0eWxlPVwid2lkdGg6IDIxMHB4OyByaWdodDogdW5zZXQ7IG1heC13aWR0aDogMjMwcHhcIlxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjaGVja2JveGVzQmFja2dyb3VuZENvbG9yXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwicHgtMyBib3JkZXItYmVsb3cgcHktMSBwYi0yIGQtZmxleCBwcy0xXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy9hcnJvdy1sZWZ0LnN2ZydcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVBY3Rpb25zKCdmaWx0ZXItY29sdW1ucycpOyBpc0FjdGl2ZUZpbHRlck9wZW4gPSBmYWxzZVwiXHJcbiAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gbWUtMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgID48L3NwYW5cclxuICAgICAgPjxiPnt7IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyPy5oZWFkZXIgfX08L2I+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcG9zaXRpb24tcmVsYXRpdmUgcC0yIHRleHQtZmlsdGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPHNlbGVjdFxyXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBjdXN0b20tc2VsZWN0IGJvcmRlclwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0Q29uZGl0aW9uXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5Gb3JGaWx0ZXIudHlwZSAhPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjb250YWluXCI+Q29udGFpbnM8L29wdGlvbj5cclxuICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkb2VzX25vdF9jb250YWluXCI+RG9lcyBOb3QgQ29udGFpbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPlN0YXJ0cyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJhZnRlclwiPkVuZHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJlcXVhbFwiPkVxdWFscyBUbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5vdF9lcXVhbFwiPk5vdCBFcXVhbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYmVmb3JlXCI+QmVmb3JlPC9vcHRpb24+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBmaXJzdCB2YWx1ZVwiXHJcbiAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgIFt0eXBlXT1cIlxyXG4gICAgICAgICAgICBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdzdHJpbmcnXHJcbiAgICAgICAgICAgICAgPyAndGV4dCdcclxuICAgICAgICAgICAgICA6IHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGVcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpcnN0VmFsdWVcIlxyXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG15LTMgZC1mbGV4IGZsZXgtcm93XCIgc3R5bGU9XCJmb250LXNpemU6IDE0cHhcIj5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbEFuZFwiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJhbmRcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZGl0aW9uXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0wIG10LTFcIiBmb3I9XCJsb2dpY2FsQW5kXCJcclxuICAgICAgICAgICAgICA+QU5EPC9sYWJlbFxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLWNoZWNrLWlubGluZSBjb2wtNCBtLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcclxuICAgICAgICAgICAgICBpZD1cImxvZ2ljYWxPclwiXHJcbiAgICAgICAgICAgICAgbmFtZT1cImxvZ2ljYWxPcGVyYXRvclwiXHJcbiAgICAgICAgICAgICAgdmFsdWU9XCJvclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxPclwiPk9SPC9sYWJlbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tY2hlY2staW5saW5lIGNvbC00IG0tMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0xXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCJcclxuICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIlxyXG4gICAgICAgICAgICAgIGlkPVwibG9naWNhbE5vbmVcIlxyXG4gICAgICAgICAgICAgIG5hbWU9XCJsb2dpY2FsT3BlcmF0b3JcIlxyXG4gICAgICAgICAgICAgIHZhbHVlPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25kaXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1iLTAgbXQtMVwiIGZvcj1cImxvZ2ljYWxOb25lXCJcclxuICAgICAgICAgICAgICA+Tm9uZTwvbGFiZWxcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25kaXRpb24gIT09ICdub25lJyAmJiBmaXJzdFZhbHVlXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMiBtdC0zXCI+XHJcbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIGNvbmRpdGlvbiBzZWxlY3QgLS0+XHJcbiAgICAgICAgICAgIDxzZWxlY3RcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIGJvcmRlclwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWNvbmRDb25kaXRpb25cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgIT09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImNvbnRhaW5cIj5Db250YWluczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRvZXNfbm90X2NvbnRhaW5cIj5Eb2VzIE5vdCBDb250YWluPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiZXF1YWxcIj5FcXVhbHM8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJiZWZvcmVcIj5TdGFydHMgV2l0aDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImFmdGVyXCI+RW5kcyBXaXRoPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlID09ICdkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImVxdWFsXCI+RXF1YWxzIFRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibm90X2VxdWFsXCI+Tm90IEVxdWFsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiYWZ0ZXJcIj5BZnRlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImJlZm9yZVwiPkJlZm9yZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcbiAgICAgICAgICAgIDwhLS0gU2Vjb25kIHZhbHVlIGlucHV0IC0tPlxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBbdHlwZV09XCJcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1uRm9yRmlsdGVyLnR5cGUgPT0gJ3N0cmluZydcclxuICAgICAgICAgICAgICAgICAgPyAndGV4dCdcclxuICAgICAgICAgICAgICAgICAgOiBzZWxlY3RlZENvbHVtbkZvckZpbHRlci50eXBlXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgc2Vjb25kIHZhbHVlXCJcclxuICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlY29uZFZhbHVlXCJcclxuICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJhcHBseURyb3Bkb3duRmlsdGVyKClcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB4LTIgYm9yZGVyLXRvcFwiXHJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiAzOHB4XCJcclxuICAgID5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplICYmICFmaXJzdFZhbHVlXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogMzJweFwiXHJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1saWdodCBib3JkZXIgdy0xMDAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTEgYnRuLWxpZ2h0XCJcclxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyByZXNldFRleHRGaWx0ZXJDaGFuZ2VzKClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPHNwYW4+Q2FuY2VsPC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIoY3VycmVudEZpbHRlclNlbGVjdGVkSWRzPy5zaXplID09PSAwICYmICFmaXJzdFZhbHVlKSB8fCAoY29uZGl0aW9uICE9PSAnbm9uZScgJiYgIXNlY29uZFZhbHVlKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDMycHhcIlxyXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC0xXCJcclxuICAgICAgICAoY2xpY2spPVwiYXBwbHlEcm9wZG93bkZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxzcGFuIHN0eWxlPVwibWFyZ2luLXRvcDogLTJweFwiPkFwcGx5PC9zcGFuPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBFZGl0IGRyb3Bkb3duIGhlcmUgLS0+XHJcbjxuZy10ZW1wbGF0ZSBsZXQtY29sPlxyXG4gIDxkaXYgY2xhc3M9XCJkcm9wLWRvd24tZWRpdFwiPjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlXHJcbiAgI2Z1bGxUZXh0VGVtcGxhdGVcclxuICBsZXQtcm93PVwicm93XCJcclxuICBsZXQtY29sPVwiY29sXCJcclxuICBsZXQtaXNBcnJheT1cImlzQXJyYXlcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJmdWxsLXRleHQtYm94XCJcclxuICAgIChkYmxjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiZGF0YUdyaWRDb250YWluZXIub2Zmc2V0SGVpZ2h0IC8gMlwiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0VkaXRpbmcocm93LCBjb2wpXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIiFpc0FycmF5XCJcclxuICAgICAgICBjbGFzcz1cImZ1bGwtdGV4dC1jb250ZW50XCJcclxuICAgICAgICBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImRhdGFHcmlkQ29udGFpbmVyLm9mZnNldEhlaWdodCAvIDJcIlxyXG4gICAgICAgIChkYmxjbGljayk9XCJcclxuICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgZW5hYmxlRWRpdChyb3csIGNvbCwgdHJ1ZSlcclxuICAgICAgICBcIlxyXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7XHJcbiAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZCk/LnZhbHVlIHx8XHJcbiAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKT8ubmFtZSB8fFxyXG4gICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShyb3csIGNvbC5maWVsZClcclxuICAgICAgICB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiAqbmdJZj1cImlzQXJyYXlcIj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldE5lc3RlZFZhbHVlKHJvdywgY29sLmZpZWxkKTsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxsaSAqbmdJZj1cImkgIT09IDBcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgaXRlbT8uZGVwYXJ0bWVudF9uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbT8ucm9sZU5hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBpdGVtPy5mdWxsX25hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICBcIi1cIlxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNFZGl0aW5nKHJvdywgY29sKVwiPlxyXG4gICAgICA8dGV4dGFyZWFcclxuICAgICAgICAoZGJsY2xpY2spPVwiXHJcbiAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGVuYWJsZUVkaXQocm93LCBjb2wsIHRydWUpXHJcbiAgICAgICAgXCJcclxuICAgICAgICAjdGV4dE1vZGVsPVwibmdNb2RlbFwiXHJcbiAgICAgICAgcm93cz1cIjRcIlxyXG4gICAgICAgICN0ZXh0QXJlYWRJbnB1dFxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicm93W2NvbC5maWVsZF1cIlxyXG4gICAgICAgIG5hbWU9XCJ7eyBjb2wuZmllbGQgfX1cIlxyXG4gICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgKGJsdXIpPVwiZGlzYWJsZUVkaXQocm93LCBjb2wsIHRleHRNb2RlbClcIlxyXG4gICAgICAgIChrZXlkb3duLmVudGVyKT1cInRleHRBcmVhZElucHV0LmJsdXIoKVwiXHJcbiAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICdpcy1pbnZhbGlkJzogdGV4dE1vZGVsLmludmFsaWRcclxuICAgICAgICB9XCJcclxuICAgICAgICAobW91c2Vkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgID48L3RleHRhcmVhPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJbWFnZVBsYWNlaG9sZGVyIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgPHNwYW5cclxuICAgIGNsYXNzPVwicHgtMiBkLWZsZXggdy0xMDAgY2VsbC1jb250ZW50IGltYWdlLXBsYWNlaG9sZGVyXCJcclxuICAgIFt0aXRsZV09XCJyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUgfHwgJ04vQSdcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICByb3c/LmxvZ28gfHxcclxuICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxyXG4gICAgICAgICAgcm93Py5pbnZvaWNlPy5pbnZvaWNlX2ltYWdlIHx8XHJcbiAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2U7XHJcbiAgICAgICAgZWxzZSBwbGFjZWhvbGRlclxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIChjbGljayk9XCJmdWxsc2NyZWVuSW1hZ2UgPSByb3c/LnByb2ZpbGVfcGljdHVyZXM/Lls0XT8ucGF0aCB8fFxyXG4gICAgICAgICAgICByb3c/LmxvZ28gfHxcclxuICAgICAgICAgICAgcm93Py5hc3NldEltYWdlIHx8XHJcbiAgICAgICAgICAgIHJvdz8uaW52b2ljZV9pbWFnZVwiXHJcbiAgICAgICAgY2xhc3M9XCJwaWNcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJyb3dIZWlnaHQgLSAxMFwiXHJcbiAgICAgICAgW2NsYXNzLmFzc2V0cy1waWNdPVwiZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgW3dpZHRoXT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgIFtoZWlnaHRdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEwXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTBcIlxyXG4gICAgICAgICAgW3NyY109XCJcclxuICAgICAgICAgICAgcm93Py5wcm9maWxlX3BpY3R1cmVzPy5bNF0/LnBhdGggfHxcclxuICAgICAgICAgICAgcm93Py5sb2dvIHx8XHJcbiAgICAgICAgICAgIHJvdz8uYXNzZXRJbWFnZSB8fFxyXG4gICAgICAgICAgICByb3c/Lmludm9pY2VfaW1hZ2VcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBhbHQ9XCJpY29uXCJcclxuICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWljb25cIlxyXG4gICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPCEtLSA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZnVsbHNjcmVlbi1vdmVybGF5XCJcclxuICAgICAgKm5nSWY9XCJmdWxsc2NyZWVuSW1hZ2VcIlxyXG4gICAgICAoY2xpY2spPVwiZnVsbHNjcmVlbkltYWdlID0gbnVsbFwiXHJcbiAgICA+XHJcbiAgICAgIDxpbWcgW3NyY109XCJmdWxsc2NyZWVuSW1hZ2VcIiBjbGFzcz1cImZ1bGxzY3JlZW4taW1nXCIgLz5cclxuICAgIDwvZGl2PiAtLT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImdldER5bmFtaWNDbGFzcyhyb3c/LmZ1bGxfbmFtZSB8fCByb3c/Lm5hbWUpXCJcclxuICAgICAgICBjbGFzcz1cInBpYyBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHJvdW5kZWQtY2lyY2xlXCJcclxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgIFtzdHlsZS5mb250U2l6ZS5weF09XCJyb3dIZWlnaHQgLyAzXCJcclxuICAgICAgICBbY2xhc3MuYXNzZXRzLXBpY109XCJncmlkVHlwZSA9PSAnQXNzZXRzJ1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBnZXRJbml0aWFscyhyb3c/LmZ1bGxfbmFtZSkgfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFJpZ2h0IENsaWNrIE1lbnVlIC0tPlxyXG48ZGl2XHJcbiAgW2NsYXNzLmludmlzaWJsZV09XCIhcG9zaXRpb25lZFlldFwiXHJcbiAgY2xhc3M9XCJjb250ZXh0LW1lbnUgcC0yXCJcclxuICAqbmdJZj1cImFjdGlvbkhpZGUgJiYgYWN0aW9ucz8ubGVuZ3RoXCJcclxuICBbbmdTdHlsZV09XCJ7ICd0b3AucHgnOiB5UG9zLCAnbGVmdC5weCc6IHhQb3MgfVwiXHJcbiAgW2NsYXNzLnNob3ddPVwiaXNWaXNpYmxlXCJcclxuICBhcHBlbmRUbz1cImJvZHlcIlxyXG4+XHJcbiAgPHVsPlxyXG4gICAgPGxpXHJcbiAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiXHJcbiAgICAgIGNsYXNzPVwicm91bmRlZCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soYWN0aW9uKVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW2lubGluZVNWR109XCJzaW5nbGVTcGFBc3NldHNQYXRoICsgJ2RhdGEtZ3JpZC9pY29ucy8nICsgYWN0aW9uICsgJy5zdmcnXCJcclxuICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiByaWdodC1jbGljay1tZW51LWljb25zIG1lLTJcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZSBmdy01MDBcIj57eyBhY3Rpb24gfX08L3NwYW4+XHJcbiAgICA8L2xpPlxyXG4gIDwvdWw+XHJcbjwvZGl2PlxyXG5cclxuPCEtLSBEZXRhaWxzIFRvZ2dsZSBmcm9tIGJvdHRvbSAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbmVzdGVkVGFibGVUZW1wbGF0ZSBsZXQtcm93PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwibmVzdGVkLXRhYmxlIHRhYmxlIHRhYmxlLXNtIHctMTAwIG1iLTAgY2VudGVyLW5lc3RlZC10YWJsZSB3LTEwMFwiXHJcbiAgICBzdHlsZT1cInRhYmxlLWxheW91dDogZml4ZWQgIWltcG9ydGFudFwiXHJcbiAgICAjbmVzdGVkVGFibGVDb250YWluZXJcclxuICA+XHJcbiAgICA8dGhlYWRcclxuICAgICAgI25lc3RlZEhlYWRlclxyXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNka0Ryb3BMaXN0XHJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJyb3c/LmRldGFpbC5jb2x1bW5zXCJcclxuICAgICAgICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXHJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wQ29sdW1uKCRldmVudCwgcm93KVwiXHJcbiAgICAgICAgKGNka0Ryb3BMaXN0U29ydGVkKT1cIm9uTmVzdGVkQ29sU29ydCgkZXZlbnQsIHByZXZpZXdOZXN0ZWRDb2xzKVwiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZUhlYWRlclJvd0hlaWdodFwiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggdHIgYm9yZGVyLWJlbG93XCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2Ygcm93LmRldGFpbC5jb2x1bW5zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJjb2w/LndpZHRoIHx8IDI1MFwiXHJcbiAgICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwiY29sPy53aWR0aCB8fCAyNTBcIlxyXG4gICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgIGNsYXNzPVwicHgtNCB0aFwiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLWZpZWxkXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIm5lc3RlZFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgIGNka0RyYWdcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGgtMTAwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHBvc2l0aW9uLXJlbGF0aXZlIGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWVsbGlwc2lzXCIgKGNsaWNrKT1cInNvcnROZXN0ZWRDb2woY29sLCByb3cpXCI+XHJcbiAgICAgICAgICAgICAge3sgY29sLmhlYWRlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRTdWJTb3J0Q29sdW1uID09IGNvbC5maWVsZFwiXHJcbiAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICBzaW5nbGVTcGFBc3NldHNQYXRoICtcclxuICAgICAgICAgICAgICAgICAgKGNvbD8ub3JkZXJfYnkgPT0gJ2Rlc2MnXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnZGF0YS1ncmlkL2ljb25zL3NvcnQtZGVzYy5zdmcnXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnZGF0YS1ncmlkL2ljb25zL3NvcnQtYXNjLnN2ZycpXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG1zLTIgc3RhcnQtNTBcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRocmVlLWRvdHMgcC0xXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuVGhyZWVEb3RzTWVudSgkZXZlbnQsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArXHJcbiAgICAgICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9pY29ucy90aHJlZS1kb3RzLXZlcnRpY2FsLnN2ZydcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkYXRhLWdyaWQtc3ZnLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICAgICAgICA8IS0tIE9ubHkgc2hvdyBtZW51IGlmIHRoaXMgY29sdW1uIGlzIGFjdGl2ZSAtLT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlQ29sID09PSBjb2xcIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJ0b3A6IC01MCU7IHotaW5kZXg6IDIxOyBsZWZ0OiAwXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uTWVudTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2w6IGNvbCxcclxuICAgICAgICAgICAgICAgICAgICAgIGlzTmVzdGVkVGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiByb3c/LmRldGFpbC5jb2x1bW5zXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicmVzaXplLWhhbmRsZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiXHJcbiAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICBvblJlc2l6ZUNvbHVtbigkZXZlbnQsIGNvbCk7XHJcbiAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBbaW5saW5lU1ZHXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggKyAnZGF0YS1ncmlkL2ljb25zL3Jlc2l6ZS1oYW5kbGUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjZGtEcmFnUHJldmlldz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBib3JkZXIgZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIFtpbmxpbmVTVkddPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlU3BhQXNzZXRzUGF0aCArICdkYXRhLWdyaWQvaWNvbnMvYXJyb3dzLW1vdmUuc3ZnJ1xyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRhdGEtZ3JpZC1zdmctaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2Pnt7IGNvbC5oZWFkZXIgfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdGhlYWQ+XHJcbiAgICA8ZGl2XHJcbiAgICAgIFtzdHlsZS53aWR0aC5weF09XCJuZXN0ZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxMFwiXHJcbiAgICAgIFtzdHlsZS5taW5XaWR0aC5weF09XCJuZXN0ZWRIZWFkZXIub2Zmc2V0V2lkdGggLSAxMFwiXHJcbiAgICA+XHJcbiAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcclxuICAgICAgICBbaXRlbVNpemVdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxyXG4gICAgICAgIGNsYXNzPVwidmlld3BvcnRcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiXHJcbiAgICAgICAgICAocm93Py5kZXRhaWw/LnJlc3VsdD8ubGVuZ3RoIDwgNVxyXG4gICAgICAgICAgICA/IG5lc3RlZFRhYmxlcm93SGVpZ2h0ICogcm93Py5kZXRhaWw/LnJlc3VsdD8ubGVuZ3RoICsgNDBcclxuICAgICAgICAgICAgOiAzMDApICsgKGhhc0hvcml6b250YWxTY3JvbGwgPyAtMTIgOiAxKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm5lc3RlZEhlYWRlci5vZmZzZXRXaWR0aCAtIDEwXCJcclxuICAgICAgICBbc3R5bGUubWluV2lkdGgucHhdPVwibmVzdGVkSGVhZGVyLm9mZnNldFdpZHRoIC0gMTBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBib3JkZXItYmVsb3cgZC1mbGV4IHRyXCJcclxuICAgICAgICAgICpjZGtWaXJ0dWFsRm9yPVwibGV0IGQgb2Ygcm93Py5kZXRhaWw/LnJlc3VsdDsgdHJhY2tCeTogdHJhY2tCeUlkXCJcclxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cIm5lc3RlZEhlYWRlcj8ub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cIm5lc3RlZEhlYWRlcj8ub2Zmc2V0V2lkdGhcIlxyXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJib2R5QmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgIChjb250ZXh0bWVudSk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50LCBkKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cInB4LTQgcHktMCB0ZFwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgcHJldmlld05lc3RlZENvbHM7IGxldCBqID0gaW5kZXhcIlxyXG4gICAgICAgICAgICBbc3R5bGUuZm9udFNpemUucHhdPVwibmVzdGVkVGFibGVyb3dGb250c2l6ZVwiXHJcbiAgICAgICAgICAgIFthdHRyLmRhdGEtZmllbGRdPVwiY29sLmZpZWxkXCJcclxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgICAgW3N0eWxlLm1pbldpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgICAgW3N0eWxlLm1heFdpZHRoLnB4XT1cImNvbD8ud2lkdGggfHwgMjUwXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHQgLSAxXCJcclxuICAgICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cImNvbD8ud2lkdGhcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8IS0tIHt7IGRbY29sLmZpZWxkXSB8fCAoY29sLmlzX2Ftb3VudCA/IDAgOiBcIi1cIikgfX0gLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgI2NlbGxUZXh0XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtZWxsaXBzaXMgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cIlxyXG4gICAgICAgICAgICAgICAgICBjb2wudHlwZSA9PT0gJ2RhdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgPyAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8IGRhdGUgOiBkYXRlRm9ybWF0KVxyXG4gICAgICAgICAgICAgICAgICAgIDogZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8fCAnLSdcclxuICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC50eXBlICE9PSAnaW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2wuaXNfYW1vdW50XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeVN5bWJvbFxyXG4gICAgICAgICAgICAgICAgICB9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFpc05lc3RlZFZhbHVlQXJyYXkoZCwgY29sLmZpZWxkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjb2wudHlwZSA9PT0gJ2RhdGUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKGlzRGF0ZShnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8IGRhdGU6IGRhdGVGb3JtYXQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy52YWx1ZSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy5uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8udmFsdWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROZXN0ZWRWYWx1ZShkLCBjb2wuZmllbGQpPy5uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2wuaXNfYW1vdW50ID8gMDogJy0nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/LlswXT8uZGVwYXJ0bWVudF9uYW1lIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5lc3RlZFZhbHVlKGQsIGNvbC5maWVsZCk/LlswXT8ucm9sZU5hbWUgfHwgZ2V0TmVzdGVkVmFsdWUoZCwgY29sLmZpZWxkKT8uWzBdPy5mdWxsX25hbWUgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0nKVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAge3sgZ2V0VG90YWxBbW91bnQoY29sKSB9fVxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnR5cGUgPT0gJ2ltYWdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRJbWFnZVBsYWNlaG9sZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29udGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByb3c6IGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbDogY29sLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsZWZ0UmlnaHROZXN0ZWRQbGFjZWhvbGRlciBsZXQtcm93PlxyXG4gIDx0YWJsZVxyXG4gICAgY2xhc3M9XCJuZXN0ZWQtdGFibGUgdGFibGUgdGFibGUtc20gdy0xMDAgbWItMFwiXHJcbiAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImJvZHlCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJcclxuICAgICAgZ3JpZFR5cGUgPT0gJ0Fzc2V0cydcclxuICAgICAgICA/IChuZXN0ZWRUYWJsZUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ID8/IDApICsgMTJcclxuICAgICAgICA6ICh0YXNrTWFuYWdlbWVudENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8ub2Zmc2V0SGVpZ2h0ID8/IDApXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRoZWFkXCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInRyIGQtZmxleCBib3JkZXItYmVsb3dcIlxyXG4gICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwibmVzdGVkVGFibGVIZWFkZXJSb3dIZWlnaHRcIlxyXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiaGVhZGVyQmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0aFwiICpuZ0Zvcj1cImxldCBfIG9mIFsxLCAyLCAzLCA0LCA1XVwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAtLT5cclxuICAgIDwhLS0gPGRpdiBjbGFzcz1cInRib2R5XCI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInRyIGJvcmRlci1iZWxvd1wiXHJcbiAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IF8gb2Ygcm93Py5kZXRhaWw/LnJlc3VsdFwiXHJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJoZWFkZXJCYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRkXCIgKm5nRm9yPVwibGV0IF9fIG9mIFsxLCAyLCAzLCA0LCA1XVwiIGNsYXNzPVwicHktMFwiPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJuZXN0ZWRUYWJsZXJvd0hlaWdodFwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwibmVzdGVkVGFibGVyb3dIZWlnaHRcIlxyXG4gICAgICAgICAgPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgPC90YWJsZT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGFza01hbmFnZW1lbnRUZW1wbGF0ZSBsZXQtdGFza0RldGFpbHM9XCJ0YXNrRGV0YWlsc1wiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwicC00XCJcclxuICAgICN0YXNrTWFuYWdlbWVudENvbnRhaW5lclxyXG4gICAgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJuZXN0ZWRUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvclwiXHJcbiAgICBbc3R5bGUuZm9udEZhaW1seV09XCJmb250RmFpbWx5XCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXRpdGxlXCI+RGVzY3JpcHRpb248L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpdGVtLWNvbnRlbnQgZmlyc3REaXZcIj5cclxuICAgICAgICB7eyB0YXNrRGV0YWlscy5kZXNjcmlwdGlvbiB9fVxyXG4gICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPHBcclxuICAgICAgICAgIFtzdHlsZS5mb250U2l6ZV09XCJib2R5VGV4dEZvbnRzU2l6ZVwiXHJcbiAgICAgICAgICBjbGFzcz1cIml0ZW0tY29udGVudCBmaXJzdERpdiB0YXNrRGVzY3JpcHRpb24gcGUtNFwiXHJcbiAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldFNhZmVDb21tZW50KHRhc2tEZXRhaWxzPy5lZGl0b3JfZGVzY3JpcHRpb24pXCJcclxuICAgICAgICAgIChjbGljayk9XCJvcGVuRnVsbEltYWdlKCRldmVudClcIlxyXG4gICAgICAgID48L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPkF0dGFjaG1lbnRzPC9kaXY+XHJcbiAgICAgICAgPGg1ICpuZ0lmPVwidGFza0RldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgTm8gQXR0YWNobWVudHMgZm91bmRcclxuICAgICAgICA8L2g1PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICpuZ0lmPVwidGFza0RldGFpbHM/LmF0dGFjaG1lbnRzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgY2xhc3M9XCJpdGVtLWNvbnRlbnQgZC1mbGV4IGZsZXgtd3JhcFwiXHJcbiAgICAgICAgICBzdHlsZT1cImdhcDogMTBweFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGFcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGF0dGFjaGVtZW50IG9mIHRhc2tEZXRhaWxzPy5hdHRhY2htZW50czsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwic3ltYm9sLWxhYmVsIGZzLTIgZnctc2VtaWJvbGQgdGV4dC1zdWNjZXNzIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICB0aXRsZT1cInt7IHRhc2tEZXRhaWxzPy5hdHRhY2htZW50c19uYW1lW2ldIHx8ICdBdHRhY2htZW50JyB9fVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkQXR0Y2htZW50KGF0dGFjaGVtZW50KVwiXHJcbiAgICAgICAgICAgICAgW2lubGluZVNWR109XCJcclxuICAgICAgICAgICAgICAgIHNpbmdsZVNwYUFzc2V0c1BhdGggK1xyXG4gICAgICAgICAgICAgICAgJ2RhdGEtZ3JpZC9kb2N1bWVudC1pY29ucy8nICtcclxuICAgICAgICAgICAgICAgIGdldEV4dGVudGlvbihhdHRhY2hlbWVudCkgK1xyXG4gICAgICAgICAgICAgICAgJy5zdmcnXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbS10aXRsZVwiPlxyXG4gICAgICAgICAgQ29tbWVudHMgKHt7IHRhc2tEZXRhaWxzPy5jb21tZW50cz8ubGVuZ3RoIH19KVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxoNSAqbmdJZj1cInRhc2tEZXRhaWxzPy5jb21tZW50cz8ubGVuZ3RoID09IDBcIj5ObyBDb21tZW50cyBmb3VuZDwvaDU+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInRhc2tEZXRhaWxzPy5jb21tZW50cz8ubGVuZ3RoXCIgY2xhc3M9XCJpdGVtLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgdGFza0RldGFpbHMuY29tbWVudHNcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcGUtM1wiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGljIGltYWdlLWlucHV0LXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwie3sgY29tbWVudD8uY29tbWVudF9ieS5sb2dvIH19XCJcclxuICAgICAgICAgICAgICAgIGFsdD1cInt7IGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUgfX1cIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPCEtLSA8YXBwLWRlZmF1bHQtaW1hZ2UtcGxhY2Vob2xkZXIgKm5nSWY9XCIhY29tbWVudD8uY29tbWVudF9ieS5sb2dvXCIgdGl0bGU9XCJ7eyBjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XCIgW25hbWVdPVwiY29tbWVudC5jb21tZW50X2J5LmZ1bGxfbmFtZVwiPjwvYXBwLWRlZmF1bHQtaW1hZ2UtcGxhY2Vob2xkZXI+IC0tPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFjb21tZW50Py5jb21tZW50X2J5LmxvZ29cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0RHluYW1pY0NsYXNzKGNvbW1lbnQuY29tbWVudF9ieS5mdWxsX25hbWUpXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGljIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcm91bmRlZC1jaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInJvd0hlaWdodCAtIDEyXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicm93SGVpZ2h0IC0gMTJcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmZvbnRTaXplLnB4XT1cInJvd0hlaWdodCAvIDNcIlxyXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyBnZXRJbml0aWFscyhjb21tZW50LmNvbW1lbnRfYnkuZnVsbF9uYW1lKSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtYXV0aG9yIGZzLTE0cHhcIj5cclxuICAgICAgICAgICAgICAgIHt7IGNvbW1lbnQ/LmNvbW1lbnRfYnkuZnVsbF9uYW1lIH19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb21tZW50LWNvbnRlbnQgZm9yQ29tbWVudEltZ1wiXHJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImdldFNhZmVDb21tZW50KGNvbW1lbnQuY29tbWVudClcIlxyXG4gICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC10aW1lc3RhbXBcIj5cclxuICAgICAgICAgICAgICAgIHt7IGNvbW1lbnQuY29tbWVudF9kYXRlIHwgZGF0ZSB9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LXRpbWVzdGFtcFwiPlxyXG4gICAgICAgICAgICAgICAgUmVwbGllczogKHt7IGNvbW1lbnQucmVwbGllcy5sZW5ndGggfX0pXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==