@sunbird-cb/cbp-ai 0.1.91 → 0.1.93

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.
@@ -746,12 +746,12 @@ export class ViewFinalCbpPlanComponent {
746
746
  const competencies = (c.competencies || [])
747
747
  .map((cc) => `${cc.competencyAreaName} → ${cc.competencyThemeName} → ${cc.competencySubThemeName}`)
748
748
  .join(" | ");
749
- return (`${i + 1}. Course Name: ${c.course}\n` +
750
- ` Identifier: ${c.identifier}\n` +
749
+ return (`${i + 1}. Course Name: ${c?.course}\n` +
750
+ ` Identifier: ${c?.identifier}\n` +
751
751
  ` Duration (mins): ${Math.round(+c.duration / 60)}\n` +
752
- ` Relevancy: ${c.relevancy}%\n` +
753
- ` Rationale: ${c.rationale}\n` +
754
- ` Organisation: ${(c.organisation || []).join(", ")}\n` +
752
+ ` Relevancy: ${c?.relevancy}%\n` +
753
+ ` Rationale: ${c?.rationale}\n` +
754
+ ` Organisation: ${(c?.organisation || []).join(", ")}\n` +
755
755
  ` Competencies: ${competencies}`);
756
756
  }).join("\n\n");
757
757
  return {
@@ -881,4 +881,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
881
881
  type: ViewChild,
882
882
  args: ['dialogContent']
883
883
  }] } });
884
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1maW5hbC1jYnAtcGxhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY2JwLWFpL3NyYy9saWIvY29tcG9uZW50cy92aWV3LWZpbmFsLWNicC1wbGFuL3ZpZXctZmluYWwtY2JwLXBsYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvdmlldy1maW5hbC1jYnAtcGxhbi92aWV3LWZpbmFsLWNicC1wbGFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBMkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVFuSCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQ1MsU0FBa0QsRUFDekIsSUFBUyxFQUNqQyxNQUFpQixFQUNqQixHQUFzQixFQUN2QixhQUE0QixFQUMzQixRQUFxQixFQUNyQixFQUFlO1FBTmhCLGNBQVMsR0FBVCxTQUFTLENBQXlDO1FBQ3pCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixhQUFRLEdBQVIs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QUM3RixNQUFNO1NBQ1Q7SUFDSCxDQUFDOytHQWxnQ1UseUJBQXlCLDhDQUcxQixlQUFlO21HQUhkLHlCQUF5QiwwUUNmdEMsbWkzQ0E0bUJVOzs0RkQ3bEJHLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx5QkFBeUI7OzBCQU9oQyxNQUFNOzJCQUFDLGVBQWU7b0xBd0JtQixVQUFVO3NCQUFyRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBYWQsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgSW5qZWN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IGh0bWwycGRmIGZyb20gJ2h0bWwycGRmLmpzJztcbmltcG9ydCBqc1BERiBmcm9tICdqc3BkZic7XG5pbXBvcnQgaHRtbDJjYW52YXMgZnJvbSAnaHRtbDJjYW52YXMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcbmltcG9ydCB7IERlbGV0ZVJvbGVNYXBwaW5nUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9kZWxldGUtcm9sZS1tYXBwaW5nLXBvcHVwL2RlbGV0ZS1yb2xlLW1hcHBpbmctcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbW9kdWxlcy9zaGFyZWQvc2VydmljZXMvc2hhcmVkLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXZpZXctZmluYWwtY2JwLXBsYW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy1maW5hbC1jYnAtcGxhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctZmluYWwtY2JwLXBsYW4uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBWaWV3RmluYWxDYnBQbGFuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFZpZXdGaW5hbENicFBsYW5Db21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXG4gICkge1xuICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbGFuZ3VhZ2U6IFsnZW4nXVxuICAgIH0pO1xuICAgIHRoaXMub3BlbmVkRnJvbSA9IGRhdGE/Lm9wZW5lZEZyb207XG4gICAgdGhpcy5nZXRNYXBwaW5nRGF0YSgpXG4gIH1cbiAgZmlsdGVyRm9ybSE6IEZvcm1Hcm91cDtcbiAgbGFuZ3VhZ2VzID0gW3sgXCJjb2RlXCI6IFwiZW5cIiwgbGFiZWw6IFwiRW5nbGlzaFwiIH0sXG4gIHsgXCJjb2RlXCI6IFwiaGlcIiwgbGFiZWw6IFwiSGluZGlcIiB9LFxuICB7IFwiY29kZVwiOiBcInRlXCIsIGxhYmVsOiBcIlRlbHVndVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwia25cIiwgbGFiZWw6IFwiS2FubmFkYVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwibXJcIiwgbGFiZWw6IFwiTWFyYXRoaVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwidGFcIiwgbGFiZWw6IFwiVGFtaWxcIiB9LFxuICB7IFwiY29kZVwiOiBcImd1XCIsIGxhYmVsOiBcIkd1amFyYXRpXCIgfSxcbiAgeyBcImNvZGVcIjogXCJtbFwiLCBsYWJlbDogXCJNYWxheWFsYW1cIiB9LFxuICB7IFwiY29kZVwiOiBcImJuXCIsIGxhYmVsOiBcIkJlbmdhbGlcIiB9LF07XG4gIGZpbHRlcmVkTGFuZ3VhZ2VzID0gWy4uLnRoaXMubGFuZ3VhZ2VzXTtcbiAgQFZpZXdDaGlsZCgncGRmQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwZGZDb250ZW50ITogRWxlbWVudFJlZjtcbiAgbG9hZGluZyA9IGZhbHNlXG4gIGRlc2lnbmF0aW9uRGF0YTogYW55ID0gW11cbiAgdG90YWxDb21wZXRlbmNpZU9iaiA9IHsgdG90YWw6IDAsIGJlaGF2aW9yYWw6IDAsIGZ1bmN0aW9uYWw6IDAsIGRvbWFpbjogMCB9XG4gIHBkZlRyaWdnZXIgPSBmYWxzZVxuICBqc29uRGF0YSA9IFtdXG4gIGZpbHRlcmRDb3Vyc2VzID0gW107XG4gIHBsYW5EYXRhOiBhbnlcbiAgcmVjb21tZW5kZWRfY291cnNlX2lkID0gJydcbiAgZXhwYW5kZWRDb21wZXRlbmNpZXM6IGFueSA9IHt9O1xuICBjb21wZXRlbmNpZXNDb3VudCA9IHsgdG90YWw6IDAsIHB1YmxpY19jb3Vyc2VzOiAwLCBpZ290OiAwIH07XG4gIG9wZW5lZEZyb20hOiBzdHJpbmc7XG4gIGlzUERGRG93bmxvYWQgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udGVudCcpIGRpYWxvZ0NvbnRlbnQhOiBFbGVtZW50UmVmO1xuICAvLyBkZXNpZ25hdGlvbkRhdGEgPSBbXG4gIC8vICAge1xuICAvLyAgICAgZGVzaWduYXRpb246IFwiU2VjcmV0YXJ5IChXQ0QpXCIsXG4gIC8vICAgICB3aW5nOiBcIk1pbmlzdHJ5IExlYWRlcnNoaXBcIixcbiAgLy8gICAgIHVwZGF0ZWQ6IFwiMTAvMDkvMjAyNVwiLFxuICAvLyAgICAgcm9sZXNSZXNwb25zaWJpbGl0aWVzOiBbXG4gIC8vICAgICAgIFwiUHJvdmlkZSBvdmVyYWxsIHN1cGVydmlzaW9uIG9mIG1pbmlzdHJ5IHByb2dyYW1tZXMgYW5kIHNjaGVtZXNcIixcbiAgLy8gICAgICAgXCJFbnN1cmUgZWZmZWN0aXZlIGNvb3JkaW5hdGlvbiB3aXRoIFN0YXRlIEdvdmVybm1lbnRzIGZvciBzY2hlbWUgaW1wbGVtZW50YXRpb25cIixcbiAgLy8gICAgICAgXCJTdHJhdGVnaWMgcG9saWN5IGZvcm11bGF0aW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBvdmVyc2lnaHRcIixcbiAgLy8gICAgICAgXCJJbnRlci1taW5pc3RlcmlhbCBjb29yZGluYXRpb24gYW5kIGxpYWlzb25cIixcbiAgLy8gICAgICAgXCJQYXJsaWFtZW50YXJ5IGFmZmFpcnMgbWFuYWdlbWVudFwiLFxuICAvLyAgICAgICBcIlNlbmlvciBsZWFkZXJzaGlwIGdvdmVybmFuY2UgYW5kIG92ZXJzaWdodFwiLFxuICAvLyAgICAgICBcIk5hdGlvbmFsIHByb2dyYW1tZSBzdHJhdGVnaWMgZGlyZWN0aW9uXCIsXG4gIC8vICAgICAgIFwiQ2FiaW5ldCBub3RlIHdyaXRpbmcgYW5kIHBvbGljeSBicmllZnNcIlxuICAvLyAgICAgXSxcbiAgLy8gICAgIGJlaGF2aW9yYWxDb21wZXRlbmNpZXM6IFtcbiAgLy8gICAgICAgXCJTdHJhdGVnaWMgTGVhZGVyc2hpcFwiLCBcIkV4ZWN1dGl2ZSBQcmVzZW5jZVwiLCBcIkluZmx1ZW5jaW5nIGFuZCBOZWdvdGlhdGlvblwiLFxuICAvLyAgICAgICBcIlJlbGF0aW9uc2hpcCBNYW5hZ2VtZW50XCIsIFwiVmVyYmFsICYgTm9uLVZlcmJhbCBGbHVlbmN5XCIsIFwiUGxhbm5pbmcgJiBQcmlvcml0aXphdGlvblwiLFxuICAvLyAgICAgICBcIkFjY291bnRhYmlsaXR5XCIsIFwiQ29uZmxpY3QgTWFuYWdlbWVudFwiXG4gIC8vICAgICBdLFxuICAvLyAgICAgZnVuY3Rpb25hbENvbXBldGVuY2llczogW1xuICAvLyAgICAgICBcIlJ1bGVzIG9mIGJ1c2luZXNzIChBb0IvVG9CKVwiLCBcIkNhYmluZXQgbm90ZSB3cml0aW5nXCIsIFwiU3VibWlzc2lvbiBvZiBicmllZnMsIHN1cHBseSBvZiBpbmZvcm1hdGlvblwiLFxuICAvLyAgICAgICBcIlBvbGljeSBkZXNpZ24vIGFtZW5kbWVudFwiLCBcIlBvbGljeSBpbXBsZW1lbnRhdGlvblwiLCBcIlBvbGljeSBtb25pdG9yaW5nICYgaW1wYWN0IGFzc2Vzc21lbnRcIixcbiAgLy8gICAgICAgXCJQcm9qZWN0IFBsYW5uaW5nXCIsIFwiUHJvamVjdCBFdmFsdWF0aW9uICYgTW9uaXRvcmluZ1wiLCBcIkNyZWF0aW9uIG9mIE0mRSBGcmFtZXdvcmtcIixcbiAgLy8gICAgICAgXCJDaXRpemVuIFBhcnRuZXJpbmcgJiBDb2xsYWJvcmF0aW9uXCIsIFwiUHVibGljIEdyaWV2YW5jZSBIYW5kbGluZ1wiXG4gIC8vICAgICBdLFxuICAvLyAgICAgZG9tYWluQ29tcGV0ZW5jaWVzOiBbXG4gIC8vICAgICAgIFwiU3RyYXRlZ2ljIFBvbGljeSBGb3JtdWxhdGlvblwiLCBcIkludGVyLW1pbmlzdGVyaWFsICYgU3RhdGUgR292ZXJubWVudCBDb29yZGluYXRpb25cIixcbiAgLy8gICAgICAgXCJTZW5pb3IgTGVhZGVyc2hpcCBHb3Zlcm5hbmNlICYgT3ZlcnNpZ2h0XCIsIFwiTGVnaXNsYXRpdmUgJiBQYXJsaWFtZW50YXJ5IEFmZmFpcnMgTWFuYWdlbWVudFwiLFxuICAvLyAgICAgICBcIk5hdGlvbmFsIFByb2dyYW1tZSBTdHJhdGVnaWMgRGlyZWN0aW9uXCJcbiAgLy8gICAgIF0sXG4gIC8vICAgICBjb21wbGV0aW9uUmF0ZTogeyBiZWhhdmlvcmFsOiA4NSwgZnVuY3Rpb25hbDogNzgsIGRvbWFpbjogOTIgfVxuICAvLyAgIH1cbiAgLy8gXTtcblxuICAvLyAvLyBDYWxjdWxhdGUgdGhlIHRvdGFscyBkeW5hbWljYWxseVxuICAvLyBwcml2YXRlIGJlaGF2aW9yYWxUb3RhbCA9IHRoaXMuZGVzaWduYXRpb25EYXRhLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLmJlaGF2aW9yYWxDb21wZXRlbmNpZXMubGVuZ3RoLCAwKTtcbiAgLy8gcHJpdmF0ZSBmdW5jdGlvbmFsVG90YWwgPSB0aGlzLmRlc2lnbmF0aW9uRGF0YS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgaXRlbS5mdW5jdGlvbmFsQ29tcGV0ZW5jaWVzLmxlbmd0aCwgMCk7XG4gIC8vIHByaXZhdGUgZG9tYWluVG90YWwgPSB0aGlzLmRlc2lnbmF0aW9uRGF0YS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgaXRlbS5kb21haW5Db21wZXRlbmNpZXMubGVuZ3RoLCAwKTtcblxuICAvLyAvLyBDYWxjdWxhdGUgdGhlIGF2ZXJhZ2VzIGR5bmFtaWNhbGx5XG4gIC8vIHByaXZhdGUgYmVoYXZpb3JhbEF2ZyA9IE1hdGgucm91bmQodGhpcy5kZXNpZ25hdGlvbkRhdGEucmVkdWNlKChhY2MsIGl0ZW0pID0+IGFjYyArIGl0ZW0uY29tcGxldGlvblJhdGUuYmVoYXZpb3JhbCwgMCkgLyB0aGlzLmRlc2lnbmF0aW9uRGF0YS5sZW5ndGgpO1xuICAvLyBwcml2YXRlIGZ1bmN0aW9uYWxBdmcgPSBNYXRoLnJvdW5kKHRoaXMuZGVzaWduYXRpb25EYXRhLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLmNvbXBsZXRpb25SYXRlLmZ1bmN0aW9uYWwsIDApIC8gdGhpcy5kZXNpZ25hdGlvbkRhdGEubGVuZ3RoKTtcbiAgLy8gcHJpdmF0ZSBkb21haW5BdmcgPSBNYXRoLnJvdW5kKHRoaXMuZGVzaWduYXRpb25EYXRhLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLmNvbXBsZXRpb25SYXRlLmRvbWFpbiwgMCkgLyB0aGlzLmRlc2lnbmF0aW9uRGF0YS5sZW5ndGgpO1xuXG4gIC8vIG92ZXJhbGxLUElzID0gW1xuICAvLyAgIHtcbiAgLy8gICAgIG5hbWU6ICdCZWhhdmlvcmFsIENvbXBldGVuY2llcycsXG4gIC8vICAgICB0b3RhbDogdGhpcy5iZWhhdmlvcmFsVG90YWwsXG4gIC8vICAgICBhdmdDb21wbGV0aW9uOiB0aGlzLmJlaGF2aW9yYWxBdmcsXG4gIC8vICAgICBjb2xvcjogJyMzQjgyRjYnLFxuICAvLyAgICAgYmdDb2xvcjogJ2JnLWJsdWUtNTAnLFxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgbmFtZTogJ0Z1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzJyxcbiAgLy8gICAgIHRvdGFsOiB0aGlzLmZ1bmN0aW9uYWxUb3RhbCxcbiAgLy8gICAgIGF2Z0NvbXBsZXRpb246IHRoaXMuZnVuY3Rpb25hbEF2ZyxcbiAgLy8gICAgIGNvbG9yOiAnIzEwQjk4MScsXG4gIC8vICAgICBiZ0NvbG9yOiAnYmctZ3JlZW4tNTAnLFxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgbmFtZTogJ0RvbWFpbiBDb21wZXRlbmNpZXMnLFxuICAvLyAgICAgdG90YWw6IHRoaXMuZG9tYWluVG90YWwsXG4gIC8vICAgICBhdmdDb21wbGV0aW9uOiB0aGlzLmRvbWFpbkF2ZyxcbiAgLy8gICAgIGNvbG9yOiAnIzhCNUNGNicsXG4gIC8vICAgICBiZ0NvbG9yOiAnYmctcHVycGxlLTUwJyxcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIG5hbWU6ICdUb3RhbCBDb21wZXRlbmNpZXMnLFxuICAvLyAgICAgdG90YWw6IHRoaXMuYmVoYXZpb3JhbFRvdGFsICsgdGhpcy5mdW5jdGlvbmFsVG90YWwgKyB0aGlzLmRvbWFpblRvdGFsLFxuICAvLyAgICAgYXZnQ29tcGxldGlvbjogTWF0aC5yb3VuZCgodGhpcy5iZWhhdmlvcmFsQXZnICsgdGhpcy5mdW5jdGlvbmFsQXZnICsgdGhpcy5kb21haW5BdmcpIC8gMyksXG4gIC8vICAgICBjb2xvcjogJyM0QjU1NjMnLFxuICAvLyAgICAgYmdDb2xvcjogJ2JnLWdyYXktMjAwJyxcbiAgLy8gICB9XG4gIC8vIF07XG5cbiAgY2xvc2VEaWFsb2coKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICB9XG5cbiAgY2FuY2VsRm9ybSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXG4gIH1cblxuICBzYXZlUm9sZU1hcHBpbmcoKSB7XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zb2xlLmxvZygndGhpcy5kYXRhJywgdGhpcy5kYXRhKVxuICAgIHRoaXMuanNvbkRhdGEgPSB0aGlzLmRhdGE/LnBheWxvYWRcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmRpYWxvZ0NvbnRlbnQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmRpYWxvZ0NvbnRlbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUbyh7XG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgICB9KTtcbiAgICAgIH0sIDUwMClcblxuICAgIH1cbiAgfVxuXG4gIGdldE1hcHBpbmdEYXRhKCkge1xuICAgIGNvbnNvbGUubG9nKCdoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaicsIHRoaXMuc2hhcmVkU2VydmljZS5nZXRDYnBQbGFuc1dpdGhTZWxlY3RlZENvdXJzZXMoKSlcbiAgICBpZiAodGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuc2JPcmdUeXBlID09PSAnbWluaXN0cnknKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgICBsZXQgc3RhdGVfY2VudGVyX2lkID0gdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuaWRlbnRpZmllclxuXG4gICAgICBpZiAodGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHM/Lmxlbmd0aCkge1xuXG4gICAgICAgIGxldCBkZXBhcnRtZW50X2lkID0gdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHNcbiAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFJvbGVNYXBwaW5nQnlTdGF0ZUNlbnRlckFuZERlcGFydG1lbnQoc3RhdGVfY2VudGVyX2lkLCBkZXBhcnRtZW50X2lkKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcbiAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhID0gW107XG5cbiAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFNFVFMgKGZvciBvdmVyYWxsIHVuaXF1ZSBjb3VudClcbiAgICAgICAgICAgIGNvbnN0IGdsb2JhbFRvdGFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxCZWhhdmlvcmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxGdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxEb21haW5TZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAvLyDinIUgTE9DQUwgVU5JUVVFIFNFVFMgKHBlciBkZXNpZ25hdGlvbilcbiAgICAgICAgICAgICAgY29uc3QgdG90YWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgY29uc3QgYmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICAgIGNvbnN0IGRvbWFpblNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgICAgICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcblxuICAgICAgICAgICAgICByZXNbaV0/LmNvbXBldGVuY2llcz8uZm9yRWFjaChjID0+IHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRoZW1lID0gKGM/LnRoZW1lIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJUaGVtZSA9IChjPy5zdWJfdGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAoYz8udHlwZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoZW1lICYmICFzdWJUaGVtZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9LSR7c3ViVGhlbWV9YDtcblxuICAgICAgICAgICAgICAgIC8vIOKchSBQRVIgREVTSUdOQVRJT04gVU5JUVVFXG4gICAgICAgICAgICAgICAgaWYgKCF0b3RhbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgdG90YWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmoudG90YWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnICYmICFiZWhhdmlvcmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBiZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmJlaGF2aW9yYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uYWwnICYmICFmdW5jdGlvbmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RvbWFpbicgJiYgIWRvbWFpblNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgZG9tYWluU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmRvbWFpbisrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFRSQUNLSU5HXG4gICAgICAgICAgICAgICAgZ2xvYmFsVG90YWxTZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnKSBnbG9iYWxCZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZnVuY3Rpb25hbCcpIGdsb2JhbEZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkb21haW4nKSBnbG9iYWxEb21haW5TZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkRhdGEucHVzaCh7XG4gICAgICAgICAgICAgICAgZGVzaWduYXRpb246IHJlc1tpXS5kZXNpZ25hdGlvbl9uYW1lLFxuICAgICAgICAgICAgICAgIHdpbmc6IHJlc1tpXS53aW5nX2RpdmlzaW9uX3NlY3Rpb24sXG4gICAgICAgICAgICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgICAgICAgcm9sZXNSZXNwb25zaWJpbGl0aWVzOiByZXNbaV0ucm9sZV9yZXNwb25zaWJpbGl0aWVzLFxuICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHJlc1tpXS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iaixcbiAgICAgICAgICAgICAgICBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzOiBbLi4uYmVoYXZpb3JhbFNldF0sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25hbENvbXBldGVuY2llczogWy4uLmZ1bmN0aW9uYWxTZXRdLFxuICAgICAgICAgICAgICAgIGRvbWFpbkNvbXBldGVuY2llczogWy4uLmRvbWFpblNldF0sXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3Vyc2VzOiByZXNbaV0/LmNicF9wbGFucz8uYXQoLTEpPy5zZWxlY3RlZF9jb3Vyc2VzIHx8IFtdXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBTRVQgR0xPQkFMIENPVU5UUyBBRlRFUiBMT09QXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmoudG90YWwgPSBnbG9iYWxUb3RhbFNldC5zaXplO1xuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmJlaGF2aW9yYWwgPSBnbG9iYWxCZWhhdmlvcmFsU2V0LnNpemU7XG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouZnVuY3Rpb25hbCA9IGdsb2JhbEZ1bmN0aW9uYWxTZXQuc2l6ZTtcbiAgICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5kb21haW4gPSBnbG9iYWxEb21haW5TZXQuc2l6ZTtcblxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKVxuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy5kZXNpZ25hdGlvbkRhdGEnLCB0aGlzLmRlc2lnbmF0aW9uRGF0YSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmonLCB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmopXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGVycm9yPy5lcnJvcj8uZGV0YWlsLCAnWCcsIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFJvbGVNYXBwaW5nQnlTdGF0ZUNlbnRlcihzdGF0ZV9jZW50ZXJfaWQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZXMnLCByZXMpXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcbiAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhID0gW107XG5cbiAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFNFVFMgKGZvciBvdmVyYWxsIHVuaXF1ZSBjb3VudClcbiAgICAgICAgICAgIGNvbnN0IGdsb2JhbFRvdGFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxCZWhhdmlvcmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxGdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxEb21haW5TZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAvLyDinIUgTE9DQUwgVU5JUVVFIFNFVFMgKHBlciBkZXNpZ25hdGlvbilcbiAgICAgICAgICAgICAgY29uc3QgdG90YWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgY29uc3QgYmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICAgIGNvbnN0IGRvbWFpblNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgICAgICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcblxuICAgICAgICAgICAgICByZXNbaV0/LmNvbXBldGVuY2llcz8uZm9yRWFjaChjID0+IHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRoZW1lID0gKGM/LnRoZW1lIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJUaGVtZSA9IChjPy5zdWJfdGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAoYz8udHlwZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoZW1lICYmICFzdWJUaGVtZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9LSR7c3ViVGhlbWV9YDtcblxuICAgICAgICAgICAgICAgIC8vIOKchSBQRVIgREVTSUdOQVRJT04gVU5JUVVFXG4gICAgICAgICAgICAgICAgaWYgKCF0b3RhbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgdG90YWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmoudG90YWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnICYmICFiZWhhdmlvcmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBiZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmJlaGF2aW9yYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uYWwnICYmICFmdW5jdGlvbmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RvbWFpbicgJiYgIWRvbWFpblNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgZG9tYWluU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmRvbWFpbisrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFRSQUNLSU5HXG4gICAgICAgICAgICAgICAgZ2xvYmFsVG90YWxTZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnKSBnbG9iYWxCZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZnVuY3Rpb25hbCcpIGdsb2JhbEZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkb21haW4nKSBnbG9iYWxEb21haW5TZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkRhdGEucHVzaCh7XG4gICAgICAgICAgICAgICAgZGVzaWduYXRpb246IHJlc1tpXS5kZXNpZ25hdGlvbl9uYW1lLFxuICAgICAgICAgICAgICAgIHdpbmc6IHJlc1tpXS53aW5nX2RpdmlzaW9uX3NlY3Rpb24sXG4gICAgICAgICAgICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgICAgICAgcm9sZXNSZXNwb25zaWJpbGl0aWVzOiByZXNbaV0ucm9sZV9yZXNwb25zaWJpbGl0aWVzLFxuICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHJlc1tpXS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iaixcbiAgICAgICAgICAgICAgICBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzOiBbLi4uYmVoYXZpb3JhbFNldF0sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25hbENvbXBldGVuY2llczogWy4uLmZ1bmN0aW9uYWxTZXRdLFxuICAgICAgICAgICAgICAgIGRvbWFpbkNvbXBldGVuY2llczogWy4uLmRvbWFpblNldF0sXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3Vyc2VzOiByZXNbaV0/LmNicF9wbGFucz8uYXQoLTEpPy5zZWxlY3RlZF9jb3Vyc2VzIHx8IFtdXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBTRVQgR0xPQkFMIENPVU5UUyBBRlRFUiBMT09QXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmoudG90YWwgPSBnbG9iYWxUb3RhbFNldC5zaXplO1xuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmJlaGF2aW9yYWwgPSBnbG9iYWxCZWhhdmlvcmFsU2V0LnNpemU7XG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouZnVuY3Rpb25hbCA9IGdsb2JhbEZ1bmN0aW9uYWxTZXQuc2l6ZTtcbiAgICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5kb21haW4gPSBnbG9iYWxEb21haW5TZXQuc2l6ZTtcblxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKVxuICAgICAgICAgICAgfSwgMTAwMCk7XG5cbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihlcnJvcj8uZXJyb3I/LmRldGFpbCwgJ1gnLCB7XG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cblxuXG4gICAgfVxuICAgIGlmICh0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5zYk9yZ1R5cGUgPT09ICdzdGF0ZScpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaicsIHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqKVxuICAgICAgbGV0IHN0YXRlX2NlbnRlcl9pZCA9IHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXJcbiAgICAgIGxldCBkZXBhcnRtZW50X2lkID0gdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHNcbiAgICAgIC8vIHRoaXMuc2hhcmVkU2VydmljZS5nZXRSb2xlTWFwcGluZ0J5U3RhdGVDZW50ZXJBbmREZXBhcnRtZW50KHN0YXRlX2NlbnRlcl9pZCwgZGVwYXJ0bWVudF9pZCkuc3Vic2NyaWJlKChyZXMpPT57XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCdyZXMnLCByZXMpXG4gICAgICAvLyAgIGxldCBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzID1bXVxuICAgICAgLy8gICBsZXQgZnVuY3Rpb25hbENvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgbGV0IGRvbWFpbkNvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgZm9yKGxldCBpPTA7IGk8cmVzLmxlbmd0aDtpKyspIHtcbiAgICAgIC8vICAgIGJlaGF2aW9yYWxDb21wZXRlbmNpZXMgPSBbXVxuICAgICAgLy8gICAgZnVuY3Rpb25hbENvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgIGRvbWFpbkNvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7dG90YWw6MCwgYmVoYXZpb3JhbDowLCBmdW5jdGlvbmFsOjAsIGRvbWFpbjowfVxuICAgICAgLy8gICByZXNbaV0uY29tcGV0ZW5jaWVzLmZvckVhY2goYyA9PiB7XG4gICAgICAvLyAgICBjb21wZXRlbmNpZXNPYmoudG90YWwrKztcbiAgICAgIC8vICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai50b3RhbCsrXG4gICAgICAvLyAgICAgaWYgKGMudHlwZS50b0xvd2VyQ2FzZSgpID09PSAnYmVoYXZpb3JhbCcpIHsgXG5cbiAgICAgIC8vICAgICAgYmVoYXZpb3JhbENvbXBldGVuY2llcy5wdXNoKGAke2MudGhlbWV9IC0gJHtjLnN1Yl90aGVtZX1gKVxuICAgICAgLy8gICAgICBjb21wZXRlbmNpZXNPYmouYmVoYXZpb3JhbCsrO1xuICAgICAgLy8gICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouYmVoYXZpb3JhbCsrXG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICAgIGlmIChjLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ2Z1bmN0aW9uYWwnKSB7XG4gICAgICAvLyAgICAgIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXMucHVzaChgJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YClcbiAgICAgIC8vICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgIC8vICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmZ1bmN0aW9uYWwrK1xuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgICBpZiAoYy50eXBlLnRvTG93ZXJDYXNlKCkgPT09ICdkb21haW4nKSB7IFxuICAgICAgLy8gICAgICBkb21haW5Db21wZXRlbmNpZXMucHVzaChgJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YClcbiAgICAgIC8vICAgICAgY29tcGV0ZW5jaWVzT2JqLmRvbWFpbisrO1xuICAgICAgLy8gICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouZG9tYWluKytcblxuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgfSk7XG4gICAgICAvLyAgICBsZXQgb2JqOmFueSA9ICB7XG4gICAgICAvLyAgICAgIGRlc2lnbmF0aW9uOiByZXNbaV0uZGVzaWduYXRpb25fbmFtZSxcbiAgICAgIC8vICAgICAgd2luZzogcmVzW2ldLndpbmdfZGl2aXNpb25fc2VjdGlvbixcbiAgICAgIC8vICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAvLyAgICAgIHJvbGVzUmVzcG9uc2liaWxpdGllczogcmVzW2ldLnJvbGVfcmVzcG9uc2liaWxpdGllcyxcbiAgICAgIC8vICAgICAgYWN0aXZpdGllczpyZXNbaV0uYWN0aXZpdGllcyxcbiAgICAgIC8vICAgICAgY29tcGV0ZW5jaWVzT2JqOiBjb21wZXRlbmNpZXNPYmosXG4gICAgICAvLyAgICAgIGJlaGF2aW9yYWxDb21wZXRlbmNpZXM6IGJlaGF2aW9yYWxDb21wZXRlbmNpZXMsXG4gICAgICAvLyAgICAgIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXM6IGZ1bmN0aW9uYWxDb21wZXRlbmNpZXMsXG4gICAgICAvLyAgICAgIGRvbWFpbkNvbXBldGVuY2llczogZG9tYWluQ29tcGV0ZW5jaWVzXG4gICAgICAvLyAgICAgIC8vIGJlaGF2aW9yYWxDb21wZXRlbmNpZXM6IFtcbiAgICAgIC8vICAgICAgLy8gICBcIlN0cmF0ZWdpYyBMZWFkZXJzaGlwXCIsIFwiRXhlY3V0aXZlIFByZXNlbmNlXCIsIFwiSW5mbHVlbmNpbmcgYW5kIE5lZ290aWF0aW9uXCIsXG4gICAgICAvLyAgICAgIC8vICAgXCJSZWxhdGlvbnNoaXAgTWFuYWdlbWVudFwiLCBcIlZlcmJhbCAmIE5vbi1WZXJiYWwgRmx1ZW5jeVwiLCBcIlBsYW5uaW5nICYgUHJpb3JpdGl6YXRpb25cIixcbiAgICAgIC8vICAgICAgLy8gICBcIkFjY291bnRhYmlsaXR5XCIsIFwiQ29uZmxpY3QgTWFuYWdlbWVudFwiXG4gICAgICAvLyAgICAgIC8vIF0sXG4gICAgICAvLyAgICAgIC8vIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXM6IFtcbiAgICAgIC8vICAgICAgLy8gICBcIlJ1bGVzIG9mIGJ1c2luZXNzIChBb0IvVG9CKVwiLCBcIkNhYmluZXQgbm90ZSB3cml0aW5nXCIsIFwiU3VibWlzc2lvbiBvZiBicmllZnMsIHN1cHBseSBvZiBpbmZvcm1hdGlvblwiLFxuICAgICAgLy8gICAgICAvLyAgIFwiUG9saWN5IGRlc2lnbi8gYW1lbmRtZW50XCIsIFwiUG9saWN5IGltcGxlbWVudGF0aW9uXCIsIFwiUG9saWN5IG1vbml0b3JpbmcgJiBpbXBhY3QgYXNzZXNzbWVudFwiLFxuICAgICAgLy8gICAgICAvLyAgIFwiUHJvamVjdCBQbGFubmluZ1wiLCBcIlByb2plY3QgRXZhbHVhdGlvbiAmIE1vbml0b3JpbmdcIiwgXCJDcmVhdGlvbiBvZiBNJkUgRnJhbWV3b3JrXCIsXG4gICAgICAvLyAgICAgIC8vICAgXCJDaXRpemVuIFBhcnRuZXJpbmcgJiBDb2xsYWJvcmF0aW9uXCIsIFwiUHVibGljIEdyaWV2YW5jZSBIYW5kbGluZ1wiXG4gICAgICAvLyAgICAgIC8vIF0sXG4gICAgICAvLyAgICAgIC8vIGRvbWFpbkNvbXBldGVuY2llczogW1xuICAgICAgLy8gICAgICAvLyAgIFwiU3RyYXRlZ2ljIFBvbGljeSBGb3JtdWxhdGlvblwiLCBcIkludGVyLW1pbmlzdGVyaWFsICYgU3RhdGUgR292ZXJubWVudCBDb29yZGluYXRpb25cIixcbiAgICAgIC8vICAgICAgLy8gICBcIlNlbmlvciBMZWFkZXJzaGlwIEdvdmVybmFuY2UgJiBPdmVyc2lnaHRcIiwgXCJMZWdpc2xhdGl2ZSAmIFBhcmxpYW1lbnRhcnkgQWZmYWlycyBNYW5hZ2VtZW50XCIsXG4gICAgICAvLyAgICAgIC8vICAgXCJOYXRpb25hbCBQcm9ncmFtbWUgU3RyYXRlZ2ljIERpcmVjdGlvblwiXG4gICAgICAvLyAgICAgIC8vIF0sXG4gICAgICAvLyAgICAgIC8vIGNvbXBsZXRpb25SYXRlOiB7IGJlaGF2aW9yYWw6IDg1LCBmdW5jdGlvbmFsOiA3OCwgZG9tYWluOiA5MiB9XG4gICAgICAvLyAgICB9XG5cblxuICAgICAgLy8gICB0aGlzLmRlc2lnbmF0aW9uRGF0YS5wdXNoKG9iailcbiAgICAgIC8vICAgfVxuICAgICAgLy8gICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAvLyAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gICAgdGhpcy5zY3JvbGxUb1RvcCgpXG4gICAgICAvLyAgIH0sIDEwMDApO1xuICAgICAgLy8gICBjb25zb2xlLmxvZygndGhpcy5kZXNpZ25hdGlvbkRhdGEnLCB0aGlzLmRlc2lnbmF0aW9uRGF0YSlcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ3RoaXMudG90YWxDb21wZXRlbmNpZU9iaicsIHRoaXMudG90YWxDb21wZXRlbmNpZU9iaiApXG5cbiAgICAgIC8vICB9KVxuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFJvbGVNYXBwaW5nQnlTdGF0ZUNlbnRlckFuZERlcGFydG1lbnQoc3RhdGVfY2VudGVyX2lkLCBkZXBhcnRtZW50X2lkKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICBjb25zb2xlLmxvZygncmVzJywgcmVzKVxuICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iaiA9IHsgdG90YWw6IDAsIGJlaGF2aW9yYWw6IDAsIGZ1bmN0aW9uYWw6IDAsIGRvbWFpbjogMCB9O1xuICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhID0gW107XG5cbiAgICAgICAgICAvLyDinIUgR0xPQkFMIFVOSVFVRSBTRVRTIChmb3Igb3ZlcmFsbCB1bmlxdWUgY291bnQpXG4gICAgICAgICAgY29uc3QgZ2xvYmFsVG90YWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICBjb25zdCBnbG9iYWxCZWhhdmlvcmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsRnVuY3Rpb25hbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgIGNvbnN0IGdsb2JhbERvbWFpblNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgLy8g4pyFIExPQ0FMIFVOSVFVRSBTRVRTIChwZXIgZGVzaWduYXRpb24pXG4gICAgICAgICAgICBjb25zdCB0b3RhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgYmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25hbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZG9tYWluU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAgICAgICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcblxuICAgICAgICAgICAgcmVzW2ldPy5jb21wZXRlbmNpZXM/LmZvckVhY2goYyA9PiB7XG5cbiAgICAgICAgICAgICAgY29uc3QgdGhlbWUgPSAoYz8udGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBjb25zdCBzdWJUaGVtZSA9IChjPy5zdWJfdGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBjb25zdCB0eXBlID0gKGM/LnR5cGUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAgIGlmICghdGhlbWUgJiYgIXN1YlRoZW1lKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9LSR7c3ViVGhlbWV9YDtcblxuICAgICAgICAgICAgICAvLyDinIUgUEVSIERFU0lHTkFUSU9OIFVOSVFVRVxuICAgICAgICAgICAgICBpZiAoIXRvdGFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgdG90YWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLnRvdGFsKys7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnICYmICFiZWhhdmlvcmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgYmVoYXZpb3JhbFNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmouYmVoYXZpb3JhbCsrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdmdW5jdGlvbmFsJyAmJiAhZnVuY3Rpb25hbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZG9tYWluJyAmJiAhZG9tYWluU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgZG9tYWluU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iai5kb21haW4rKztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFRSQUNLSU5HXG4gICAgICAgICAgICAgIGdsb2JhbFRvdGFsU2V0LmFkZChrZXkpO1xuXG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnYmVoYXZpb3JhbCcpIGdsb2JhbEJlaGF2aW9yYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZnVuY3Rpb25hbCcpIGdsb2JhbEZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZG9tYWluJykgZ2xvYmFsRG9tYWluU2V0LmFkZChrZXkpO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkRhdGEucHVzaCh7XG4gICAgICAgICAgICAgIGRlc2lnbmF0aW9uOiByZXNbaV0uZGVzaWduYXRpb25fbmFtZSxcbiAgICAgICAgICAgICAgd2luZzogcmVzW2ldLndpbmdfZGl2aXNpb25fc2VjdGlvbixcbiAgICAgICAgICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgICAgIHJvbGVzUmVzcG9uc2liaWxpdGllczogcmVzW2ldLnJvbGVfcmVzcG9uc2liaWxpdGllcyxcbiAgICAgICAgICAgICAgYWN0aXZpdGllczogcmVzW2ldLmFjdGl2aXRpZXMsXG4gICAgICAgICAgICAgIGNvbXBldGVuY2llc09iaixcbiAgICAgICAgICAgICAgYmVoYXZpb3JhbENvbXBldGVuY2llczogWy4uLmJlaGF2aW9yYWxTZXRdLFxuICAgICAgICAgICAgICBmdW5jdGlvbmFsQ29tcGV0ZW5jaWVzOiBbLi4uZnVuY3Rpb25hbFNldF0sXG4gICAgICAgICAgICAgIGRvbWFpbkNvbXBldGVuY2llczogWy4uLmRvbWFpblNldF0sXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ291cnNlczogcmVzW2ldPy5jYnBfcGxhbnM/LmF0KC0xKT8uc2VsZWN0ZWRfY291cnNlcyB8fCBbXVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyDinIUgU0VUIEdMT0JBTCBDT1VOVFMgQUZURVIgTE9PUFxuICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai50b3RhbCA9IGdsb2JhbFRvdGFsU2V0LnNpemU7XG4gICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmJlaGF2aW9yYWwgPSBnbG9iYWxCZWhhdmlvcmFsU2V0LnNpemU7XG4gICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmZ1bmN0aW9uYWwgPSBnbG9iYWxGdW5jdGlvbmFsU2V0LnNpemU7XG4gICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmRvbWFpbiA9IGdsb2JhbERvbWFpblNldC5zaXplO1xuXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG5cbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKClcbiAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy5kZXNpZ25hdGlvbkRhdGEnLCB0aGlzLmRlc2lnbmF0aW9uRGF0YSlcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy50b3RhbENvbXBldGVuY2llT2JqJywgdGhpcy50b3RhbENvbXBldGVuY2llT2JqKVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oZXJyb3I/LmVycm9yPy5kZXRhaWwsICdYJywge1xuICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG5cblxuICB9XG4gIGdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlOiBzdHJpbmcsIGNvdXJzZTogYW55KTogYW55W10ge1xuICAgIGlmICghY291cnNlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IGNvbXBldGVuY2llczogYW55W10gPSBbXTtcblxuICAgIC8vIEFJIFJlY29tbWVuZGVkIC8gUHVibGljIC8gVXNlciBBZGRlZFxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvdXJzZS5jb21wZXRlbmNpZXMpKSB7XG4gICAgICBjb21wZXRlbmNpZXMgPSBjb3Vyc2UuY29tcGV0ZW5jaWVzO1xuICAgIH1cbiAgICAvLyBNYW51YWxseSBTdWdnZXN0ZWQgLSBpR09UICh2NilcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvdXJzZS5jb21wZXRlbmNpZXNfdjYpKSB7XG4gICAgICBjb21wZXRlbmNpZXMgPSBjb3Vyc2UuY29tcGV0ZW5jaWVzX3Y2O1xuICAgIH1cblxuICAgIGlmICghY29tcGV0ZW5jaWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRUeXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcblxuICAgIHJldHVybiBjb21wZXRlbmNpZXMuZmlsdGVyKGMgPT4ge1xuICAgICAgaWYgKCFjPy5jb21wZXRlbmN5QXJlYU5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhcmVhID0gYy5jb21wZXRlbmN5QXJlYU5hbWUudG9Mb3dlckNhc2UoKS50cmltKCk7XG5cbiAgICAgIC8vIGhhbmRsZSBiZWhhdmlvdXJhbCAvIGJlaGF2aW9yYWxcbiAgICAgIGlmIChub3JtYWxpemVkVHlwZSA9PT0gJ2JlaGF2aW91cmFsJyB8fCBub3JtYWxpemVkVHlwZSA9PT0gJ2JlaGF2aW9yYWwnKSB7XG4gICAgICAgIHJldHVybiBhcmVhID09PSAnYmVoYXZpb3VyYWwnIHx8IGFyZWEgPT09ICdiZWhhdmlvcmFsJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFyZWEgPT09IG5vcm1hbGl6ZWRUeXBlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGlzcGxheWVkQ29tcGV0ZW5jaWVzKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGFueVtdIHtcbiAgICBjb25zdCBjb21wZXRlbmNpZXMgPSB0aGlzLmdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlLCBpbmRleCk7XG4gICAgY29uc3Qga2V5ID0gYCR7aW5kZXh9LSR7dHlwZX1gO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRDb21wZXRlbmNpZXNba2V5XSkge1xuICAgICAgcmV0dXJuIGNvbXBldGVuY2llcztcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGV0ZW5jaWVzLnNsaWNlKDAsIDIpO1xuICB9XG5cbiAgdG9nZ2xlQ29tcGV0ZW5jaWVzKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9IGAke2luZGV4fS0ke3R5cGV9YDtcbiAgICB0aGlzLmV4cGFuZGVkQ29tcGV0ZW5jaWVzW2tleV0gPSAhdGhpcy5leHBhbmRlZENvbXBldGVuY2llc1trZXldO1xuICB9XG5cbiAgaXNFeHBhbmRlZCh0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBrZXkgPSBgJHtpbmRleH0tJHt0eXBlfWA7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDb21wZXRlbmNpZXNba2V5XSB8fCBmYWxzZTtcbiAgfVxuXG4gIGhhc01vcmVUaGFuVHdvKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlLCBpbmRleCkubGVuZ3RoID4gMjtcbiAgfVxuICBnZXRSZW1haW5pbmdDb3VudCh0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsQ291bnQgPSB0aGlzLmdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlLCBpbmRleCkubGVuZ3RoO1xuICAgIHJldHVybiB0b3RhbENvdW50IC0gMjtcbiAgfVxuICB1cGRhdGVDb21wZXRlbmN5Q291bnRzKCkge1xuICAgIC8vIGNvbnN0IGNvbXBzID0gdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZTtcbiAgICB0aGlzLmNvbXBldGVuY2llc0NvdW50ID0geyB0b3RhbDogMCwgcHVibGljX2NvdXJzZXM6IDAsIGlnb3Q6IDAgfTtcbiAgICB0aGlzLmZpbHRlcmRDb3Vyc2VzLmZvckVhY2goYyA9PiB7XG4gICAgICB0aGlzLmNvbXBldGVuY2llc0NvdW50LnRvdGFsKys7XG4gICAgICBpZiAoYy5pc19wdWJsaWMpIHRoaXMuY29tcGV0ZW5jaWVzQ291bnQucHVibGljX2NvdXJzZXMrKztcbiAgICAgIGlmICghYy5pc19wdWJsaWMpIHRoaXMuY29tcGV0ZW5jaWVzQ291bnQuaWdvdCsrO1xuICAgIH0pO1xuICB9XG5cbiAgY29uZmlybURlbGV0ZUNvdXJzZShpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCByb2xlTWFwcGluZ0lkID0gdGhpcy5yZWNvbW1lbmRlZF9jb3Vyc2VfaWQ7XG4gICAgY29uc3QgY291cnNlSWRlbnRpZmllciA9XG4gICAgICBpdGVtPy5jb3Vyc2VfaWRlbnRpZmllciB8fCBpdGVtPy5pZCB8fCBpdGVtPy5pZGVudGlmaWVyO1xuXG4gICAgaWYgKCFyb2xlTWFwcGluZ0lkIHx8ICFjb3Vyc2VJZGVudGlmaWVyKSB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1VuYWJsZSB0byBkZWxldGUgY291cnNlJywgJ1gnLCB7XG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICB0aGlzLnNoYXJlZFNlcnZpY2VcbiAgICAgIC5kZWxldGVSZWNvbW1lbmRlZENvdXJzZShyb2xlTWFwcGluZ0lkLCBjb3Vyc2VJZGVudGlmaWVyKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBSZW1vdmUgZnJvbSBVSVxuICAgICAgICAgIHRoaXMuZmlsdGVyZENvdXJzZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSBjb3VudHNcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbXBldGVuY3lDb3VudHMoKTtcblxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdDb3Vyc2UgZGVsZXRlZCBzdWNjZXNzZnVsbHknLCAnWCcsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1zdWNjZXNzJ11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFxuICAgICAgICAgICAgZXJyb3I/LmVycm9yPy5kZXRhaWwgfHwgJ0ZhaWxlZCB0byBkZWxldGUgY291cnNlJyxcbiAgICAgICAgICAgICdYJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlQ2FyZChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zb2xlLmxvZyhcIml0ZW0sIGluZGV4XCIsIGl0ZW0sIGluZGV4KVxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlUm9sZU1hcHBpbmdQb3B1cENvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc2MDBweCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHBsYW5JZDogdGhpcy5wbGFuRGF0YT8uaWQsICAgLy8gcm9sZSBtYXBwaW5nIGlkXG4gICAgICAgIGNvdXJzZTogaXRlbSwgICAgICAgICAgICAgICAgLy8gY291cnNlIG9iamVjdFxuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGZyb206ICd2aWV3Q291cnNlJyAgICAgICAgICAgICAgICAgLy8gaW5kZXggZm9yIFVJIHJlbW92YWxcbiAgICAgIH0sXG4gICAgICBwYW5lbENsYXNzOiAndmlldy1jYnAtcGxhbi1wb3B1cCcsXG4gICAgICBtaW5IZWlnaHQ6ICczMDBweCcsXG4gICAgICBtYXhIZWlnaHQ6ICc5MHZoJyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0ID09PSAnc2F2ZWQnKSB7XG4gICAgICAgIHRoaXMuY29uZmlybURlbGV0ZUNvdXJzZShpdGVtLCBpbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgc2Nyb2xsVG9Ub3AoKTogdm9pZCB7XG5cbiAgICAvLyBpZiAodGhpcy5wZGZDb250ZW50ICYmIHRoaXMucGRmQ29udGVudC5uYXRpdmVFbGVtZW50ICYmIHRoaXMucGRmQ29udGVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gICB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAvLyB9XG4gICAgLy8gY29uc3QgZGlhbG9nQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWF0LWRpYWxvZy1jb250YWluZXInKTtcbiAgICAvLyBpZiAoZGlhbG9nQ29udGFpbmVyKSB7XG4gICAgLy8gICBkaWFsb2dDb250YWluZXIuc2Nyb2xsVG9wID0gMDtcbiAgICAvLyB9XG4gIH1cblxuICBkb3dubG9hZFBERigpIHtcbiAgICB0aGlzLnBkZlRyaWdnZXIgPSB0cnVlXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAvLyAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudDtcblxuICAgIC8vIC8vIFdhaXQgZm9yIGltYWdlcyB0byBsb2FkXG4gICAgLy8gY29uc3QgaW1hZ2VzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbWcnKTtcbiAgICAvLyBjb25zdCBwcm9taXNlcyA9IEFycmF5LmZyb20oaW1hZ2VzKS5tYXAoKGltZzogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xuICAgIC8vICAgaWYgKGltZy5jb21wbGV0ZSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIC8vICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gaW1nLm9ubG9hZCA9IHJlc29sdmUpO1xuICAgIC8vIH0pO1xuXG4gICAgLy8gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgIC8vICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAvLyAgICAgbWFyZ2luOiAwLjUsXG4gICAgLy8gICAgIGZpbGVuYW1lOiAnRmluYWwgQ0JQIFBsYW4ucGRmJyxcbiAgICAvLyAgICAgaW1hZ2U6IHsgdHlwZTogJ2pwZWcnLCBxdWFsaXR5OiAwLjk4IH0sXG4gICAgLy8gICAgIGh0bWwyY2FudmFzOiB7XG4gICAgLy8gICAgICAgc2NhbGU6IDIsXG4gICAgLy8gICAgICAgdXNlQ09SUzogdHJ1ZSxcbiAgICAvLyAgICAgICBzY3JvbGxZOiAwLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgICBqc1BERjoge1xuICAgIC8vICAgICAgIHVuaXQ6ICdpbicsXG4gICAgLy8gICAgICAgZm9ybWF0OiAnYTQnLFxuICAgIC8vICAgICAgIG9yaWVudGF0aW9uOiAncG9ydHJhaXQnXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHBhZ2VicmVhazoge1xuICAgIC8vICAgICAgIG1vZGU6IFsnY3NzJywgJ2xlZ2FjeScsICdhdm9pZC1hbGwnXVxuICAgIC8vICAgICB9XG4gICAgLy8gICB9O1xuXG4gICAgLy8gICBodG1sMnBkZigpLmZyb20oZWxlbWVudCkuc2V0KG9wdGlvbnMpLnNhdmUoKTtcbiAgICAvLyB9KTtcbiAgICAvL2NvbnN0IGVsZW1lbnQgPSB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMucGRmQ29udGVudC5uYXRpdmVFbGVtZW50O1xuICAgIGh0bWwyY2FudmFzKGVsZW1lbnQsIHtcbiAgICAgIHNjYWxlOiAxLjI1LFxuICAgICAgdXNlQ09SUzogdHJ1ZSxcbiAgICAgIHNjcm9sbFk6IDAsXG4gICAgICBsb2dnaW5nOiB0cnVlLFxuICAgIH0pLnRoZW4oKGNhbnZhcykgPT4ge1xuICAgICAgY29uc3QgcGRmID0gbmV3IGpzUERGKCdwJywgJ21tJywgJ2E0Jyk7XG4gICAgICBjb25zdCBwZGZXaWR0aCA9IHBkZi5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRXaWR0aCgpO1xuICAgICAgY29uc3QgcGRmSGVpZ2h0ID0gcGRmLmludGVybmFsLnBhZ2VTaXplLmdldEhlaWdodCgpO1xuXG4gICAgICAvLyBNYXJnaW5zXG4gICAgICBjb25zdCBtYXJnaW5MZWZ0ID0gNTtcbiAgICAgIGNvbnN0IG1hcmdpblRvcCA9IDE1O1xuICAgICAgY29uc3QgbWFyZ2luUmlnaHQgPSA1O1xuICAgICAgY29uc3QgbWFyZ2luQm90dG9tID0gMTU7XG5cbiAgICAgIGNvbnN0IHVzYWJsZVdpZHRoID0gcGRmV2lkdGggLSBtYXJnaW5MZWZ0IC0gbWFyZ2luUmlnaHQ7XG4gICAgICBjb25zdCB1c2FibGVIZWlnaHQgPSBwZGZIZWlnaHQgLSBtYXJnaW5Ub3AgLSBtYXJnaW5Cb3R0b207XG5cbiAgICAgIGNvbnN0IGNhbnZhc1dpZHRoID0gY2FudmFzLndpZHRoO1xuICAgICAgY29uc3QgY2FudmFzSGVpZ2h0ID0gY2FudmFzLmhlaWdodDtcblxuICAgICAgY29uc3QgcmF0aW8gPSBjYW52YXNXaWR0aCAvIHVzYWJsZVdpZHRoO1xuICAgICAgY29uc3QgcGFnZUhlaWdodFB4ID0gdXNhYmxlSGVpZ2h0ICogcmF0aW87XG5cbiAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwoY2FudmFzSGVpZ2h0IC8gcGFnZUhlaWdodFB4KTtcblxuICAgICAgZm9yIChsZXQgcGFnZSA9IDA7IHBhZ2UgPCB0b3RhbFBhZ2VzOyBwYWdlKyspIHtcbiAgICAgICAgY29uc3QgY2FudmFzUGFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjYW52YXNQYWdlLndpZHRoID0gY2FudmFzV2lkdGg7XG4gICAgICAgIGNhbnZhc1BhZ2UuaGVpZ2h0ID0gTWF0aC5taW4ocGFnZUhlaWdodFB4LCBjYW52YXNIZWlnaHQgLSBwYWdlICogcGFnZUhlaWdodFB4KTtcblxuICAgICAgICBjb25zdCBjdHggPSBjYW52YXNQYWdlLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICBjdHguZmlsbFN0eWxlID0gJyNmZmZmZmYnO1xuICAgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBjYW52YXNQYWdlLndpZHRoLCBjYW52YXNQYWdlLmhlaWdodCk7XG5cbiAgICAgICAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgICAgICAgY2FudmFzLFxuICAgICAgICAgICAgMCwgcGFnZSAqIHBhZ2VIZWlnaHRQeCxcbiAgICAgICAgICAgIGNhbnZhc1dpZHRoLCBjYW52YXNQYWdlLmhlaWdodCxcbiAgICAgICAgICAgIDAsIDAsXG4gICAgICAgICAgICBjYW52YXNXaWR0aCwgY2FudmFzUGFnZS5oZWlnaHRcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW1nRGF0YSA9IGNhbnZhc1BhZ2UudG9EYXRhVVJMKCdpbWFnZS9wbmcnLCAxKTtcbiAgICAgICAgaWYgKHBhZ2UgPiAwKSBwZGYuYWRkUGFnZSgpO1xuICAgICAgICBjb25zdCBpbWdIZWlnaHRNTSA9IGNhbnZhc1BhZ2UuaGVpZ2h0IC8gcmF0aW87XG4gICAgICAgIHBkZi5hZGRJbWFnZShpbWdEYXRhLCAnUE5HJywgbWFyZ2luTGVmdCwgbWFyZ2luVG9wLCB1c2FibGVXaWR0aCwgaW1nSGVpZ2h0TU0pO1xuICAgICAgfVxuXG4gICAgICBwZGYuc2F2ZSgnRmluYWxfQ0JQLnBkZicpO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdQREYgZ2VuZXJhdGlvbiBlcnJvcjonLCBlcnJvcik7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuXG5cblxuXG5cblxuICB9XG5cbiAgZG93bmxvYWRQREZOZXcoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IG9wdCA9IHtcbiAgICAgIG1hcmdpbjogWzEwLCA1LCA1LCAxMF0sIC8vIHRvcCwgbGVmdCwgYm90dG9tLCByaWdodCBpbiBtbVxuICAgICAgZmlsZW5hbWU6ICdDQlBfUGxhbi5wZGYnLFxuICAgICAgaW1hZ2U6IHsgdHlwZTogJ2pwZWcnLCBxdWFsaXR5OiAwLjg1IH0sXG4gICAgICBodG1sMmNhbnZhczogeyBzY2FsZTogMS41LCB1c2VDT1JTOiB0cnVlLCBsb2dnaW5nOiBmYWxzZSB9LFxuICAgICAganNQREY6IHsgdW5pdDogJ21tJywgZm9ybWF0OiAnYTQnLCBvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScgfSxcbiAgICAgIHBhZ2VicmVhazogeyBtb2RlOiBbJ2F2b2lkLWFsbCcsICdjc3MnLCAnbGVnYWN5J10gfSAvLyBhdm9pZCBjdXR0aW5nIHRleHRcbiAgICB9O1xuXG4gICAgaHRtbDJwZGYoKVxuICAgICAgLnNldChvcHQpXG4gICAgICAuZnJvbShlbGVtZW50KVxuICAgICAgLnNhdmUoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAvLyBQREYgZG93bmxvYWQgZmluaXNoZWRcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gSGFuZGxlIGVycm9ycyBhbmQgc3RvcCBsb2FkaW5nXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH0sIDIwMDApO1xuXG5cblxuICB9XG5cblxuXG4gIGdlbmVyYXRlRXhjZWwoanNvbkFycmF5OiBhbnlbXSwgZmlsZW5hbWU6IHN0cmluZyA9IFwiZmluYWwueGxzeFwiKSB7XG4gICAgY29uc29sZS5sb2coJ2pzb25BcnJheScsIGpzb25BcnJheSlcblxuICAgIGlmICghanNvbkFycmF5IHx8IGpzb25BcnJheS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIC8vIC0tLS0tLS0tIE1BSU4gSEVBREVSIEZST00gRklSU1QgT0JKRUNUIC0tLS0tLS0tLVxuICAgIGNvbnN0IGZpcnN0T2JqID0ganNvbkFycmF5WzBdO1xuICAgIGxldCB0aXRsZSA9IGZpcnN0T2JqLnN0YXRlX2NlbnRlcl9uYW1lIHx8IFwiXCI7XG4gICAgaWYgKGZpcnN0T2JqLmRlcGFydG1lbnRfbmFtZSkgdGl0bGUgKz0gXCIgLyBcIiArIGZpcnN0T2JqLmRlcGFydG1lbnRfbmFtZTtcblxuICAgIC8vIC0tLS0tLS0tIENPTFVNTiBIRUFERVJTIC0tLS0tLS0tLVxuICAgIGNvbnN0IGhlYWRlcnMgPSBbXG4gICAgICBcIkRlc2lnbmF0aW9uXCIsXG4gICAgICBcIlJvbGUgJiBSZXNwb25zaWJpbGl0aWVzXCIsXG4gICAgICBcIkFjdGl2aXRpZXNcIixcbiAgICAgIFwiQmVoYXZpb3JhbCBDb21wZXRlbmNpZXNcIixcbiAgICAgIFwiRnVuY3Rpb25hbCBDb21wZXRlbmNpZXNcIixcbiAgICAgIFwiRG9tYWluIENvbXBldGVuY2llc1wiLFxuICAgICAgJ2NvdXJzZURldGFpbHMnXG4gICAgXTtcblxuICAgIC8vIC0tLS0tLS0tIERBVEEgUk9XUyAtLS0tLS0tLS1cbiAgICBjb25zdCBkYXRhUm93cyA9IGpzb25BcnJheS5tYXAoanNvbiA9PiB7XG4gICAgICBjb25zdCBjb3Vyc2VzID1cbiAgICAgICAganNvbj8uY2JwX3BsYW5zPy5sZW5ndGhcbiAgICAgICAgICA/IGpzb24uY2JwX3BsYW5zW2pzb24uY2JwX3BsYW5zLmxlbmd0aCAtIDFdPy5zZWxlY3RlZF9jb3Vyc2VzIHx8IFtdXG4gICAgICAgICAgOiBbXTtcblxuICAgICAgY29uc3QgY291cnNlRGV0YWlscyA9IGNvdXJzZXMubWFwKChjOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBjb21wZXRlbmNpZXMgPSAoYy5jb21wZXRlbmNpZXMgfHwgW10pXG4gICAgICAgICAgLm1hcCgoY2M6IGFueSkgPT5cbiAgICAgICAgICAgIGAke2NjLmNvbXBldGVuY3lBcmVhTmFtZX0g4oaSICR7Y2MuY29tcGV0ZW5jeVRoZW1lTmFtZX0g4oaSICR7Y2MuY29tcGV0ZW5jeVN1YlRoZW1lTmFtZX1gXG4gICAgICAgICAgKVxuICAgICAgICAgIC5qb2luKFwiIHwgXCIpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgYCR7aSArIDF9LiBDb3Vyc2UgTmFtZTogJHtjLmNvdXJzZX1cXG5gICtcbiAgICAgICAgICBgICAgSWRlbnRpZmllcjogJHtjLmlkZW50aWZpZXJ9XFxuYCArXG4gICAgICAgICAgYCAgIER1cmF0aW9uIChtaW5zKTogJHtNYXRoLnJvdW5kKCtjLmR1cmF0aW9uIC8gNjApfVxcbmAgK1xuICAgICAgICAgIGAgICBSZWxldmFuY3k6ICR7Yy5yZWxldmFuY3l9JVxcbmAgK1xuICAgICAgICAgIGAgICBSYXRpb25hbGU6ICR7Yy5yYXRpb25hbGV9XFxuYCArXG4gICAgICAgICAgYCAgIE9yZ2FuaXNhdGlvbjogJHsoYy5vcmdhbmlzYXRpb24gfHwgW10pLmpvaW4oXCIsIFwiKX1cXG5gICtcbiAgICAgICAgICBgICAgQ29tcGV0ZW5jaWVzOiAke2NvbXBldGVuY2llc31gXG4gICAgICAgICk7XG4gICAgICB9KS5qb2luKFwiXFxuXFxuXCIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgXCJEZXNpZ25hdGlvblwiOiBgJHtqc29uLmRlc2lnbmF0aW9uX25hbWV9IDogV2luZy9EaXZpc2lvbiAtICR7anNvbi53aW5nX2RpdmlzaW9uX3NlY3Rpb259YCxcbiAgICAgICAgXCJSb2xlICYgUmVzcG9uc2liaWxpdGllc1wiOiAoanNvbi5yb2xlX3Jlc3BvbnNpYmlsaXRpZXMgfHwgW10pXG4gICAgICAgICAgLm1hcCgodjogc3RyaW5nLCBpOiBudW1iZXIpID0+IGAke2kgKyAxfS4gJHt2fWApLmpvaW4oXCJcXG5cXG5cIiksXG4gICAgICAgIFwiQWN0aXZpdGllc1wiOiAoanNvbi5hY3Rpdml0aWVzIHx8IFtdKVxuICAgICAgICAgIC5tYXAoKHY6IHN0cmluZywgaTogbnVtYmVyKSA9PiBgJHtpICsgMX0uICR7dn1gKS5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgICBcIkJlaGF2aW9yYWwgQ29tcGV0ZW5jaWVzXCI6IChqc29uLmNvbXBldGVuY2llcyB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChjOiBhbnkpID0+IGMudHlwZSA9PT0gXCJCZWhhdmlvcmFsXCIpXG4gICAgICAgICAgLm1hcCgoYzogYW55LCBpOiBudW1iZXIpID0+IGAke2kgKyAxfS4gJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YCkuam9pbihcIlxcblxcblwiKSxcbiAgICAgICAgXCJGdW5jdGlvbmFsIENvbXBldGVuY2llc1wiOiAoanNvbi5jb21wZXRlbmNpZXMgfHwgW10pXG4gICAgICAgICAgLmZpbHRlcigoYzogYW55KSA9PiBjLnR5cGUgPT09IFwiRnVuY3Rpb25hbFwiKVxuICAgICAgICAgIC5tYXAoKGM6IGFueSwgaTogbnVtYmVyKSA9PiBgJHtpICsgMX0uICR7Yy50aGVtZX0gLSAke2Muc3ViX3RoZW1lfWApLmpvaW4oXCJcXG5cXG5cIiksXG4gICAgICAgIFwiRG9tYWluIENvbXBldGVuY2llc1wiOiAoanNvbi5jb21wZXRlbmNpZXMgfHwgW10pXG4gICAgICAgICAgLmZpbHRlcigoYzogYW55KSA9PiBjLnR5cGUgPT09IFwiRG9tYWluXCIpXG4gICAgICAgICAgLm1hcCgoYzogYW55LCBpOiBudW1iZXIpID0+IGAke2kgKyAxfS4gJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YCkuam9pbihcIlxcblxcblwiKSxcbiAgICAgICAgXCJDb3Vyc2UgRGV0YWlsc1wiOiBjb3Vyc2VEZXRhaWxzXG4gICAgICB9O1xuICAgIH0pO1xuXG5cbiAgICAvLyAtLS0tLS0tLSBDUkVBVEUgV09SS1NIRUVUIC0tLS0tLS0tLVxuICAgIGNvbnN0IHdzID0gWExTWC51dGlscy5hb2FfdG9fc2hlZXQoW10pO1xuXG4gICAgLy8gTWFpbiBoZWFkZXIgKG1lcmdlZClcbiAgICBYTFNYLnV0aWxzLnNoZWV0X2FkZF9hb2Eod3MsIFtbdGl0bGVdXSwgeyBvcmlnaW46IFwiQTFcIiB9KTtcbiAgICB3c1snIW1lcmdlcyddID0gW3tcbiAgICAgIHM6IHsgcjogMCwgYzogMCB9LFxuICAgICAgZTogeyByOiAwLCBjOiBoZWFkZXJzLmxlbmd0aCAtIDEgfVxuICAgIH1dO1xuXG4gICAgLy8gQ29sdW1uIGhlYWRlcnMgYXQgcm93IDJcbiAgICBYTFNYLnV0aWxzLnNoZWV0X2FkZF9hb2Eod3MsIFtoZWFkZXJzXSwgeyBvcmlnaW46IFwiQTJcIiB9KTtcblxuICAgIC8vIFN0eWxlIGNvbHVtbiBoZWFkZXJzXG4gICAgaGVhZGVycy5mb3JFYWNoKChoZWFkZXIsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBjZWxsQWRkcmVzcyA9IFhMU1gudXRpbHMuZW5jb2RlX2NlbGwoeyByOiAxLCBjOiBpbmRleCB9KTtcbiAgICAgIGlmICh3c1tjZWxsQWRkcmVzc10pIHtcbiAgICAgICAgd3NbY2VsbEFkZHJlc3NdLnMgPSB7XG4gICAgICAgICAgZm9udDogeyBib2xkOiB0cnVlIH0sXG4gICAgICAgICAgZmlsbDogeyBwYXR0ZXJuVHlwZTogXCJzb2xpZFwiLCBmZ0NvbG9yOiB7IHJnYjogXCJGRkZGMDBcIiB9IH0sXG4gICAgICAgICAgYWxpZ25tZW50OiB7IGhvcml6b250YWw6IFwiY2VudGVyXCIsIHZlcnRpY2FsOiBcImNlbnRlclwiLCB3cmFwVGV4dDogdHJ1ZSB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBJbnNlcnQgZGF0YSByb3dzIHN0YXJ0aW5nIGZyb20gcm93IDNcbiAgICBYTFNYLnV0aWxzLnNoZWV0X2FkZF9qc29uKHdzLCBkYXRhUm93cywgeyBvcmlnaW46IFwiQTNcIiwgc2tpcEhlYWRlcjogdHJ1ZSB9KTtcblxuICAgIC8vIEF1dG8gY29sdW1uIHdpZHRocyBiYXNlZCBvbiBsb25nZXN0IGxpbmUgaW4gZWFjaCBjb2x1bW5cbiAgICBjb25zdCBjb2xXaWR0aHMgPSBoZWFkZXJzLm1hcCgoaGVhZGVyLCBpZHgpID0+IHtcbiAgICAgIGNvbnN0IG1heExlbiA9IE1hdGgubWF4KFxuICAgICAgICBoZWFkZXIubGVuZ3RoLFxuICAgICAgICAuLi5kYXRhUm93cy5tYXAocm93ID0+IChyb3dbaGVhZGVyXSB8fCBcIlwiKS5zcGxpdChcIlxcblwiKS5yZWR1Y2UoKGEsIGIpID0+IE1hdGgubWF4KGEsIGIubGVuZ3RoKSwgMCkpXG4gICAgICApO1xuICAgICAgcmV0dXJuIHsgd2NoOiBNYXRoLm1pbihNYXRoLm1heChtYXhMZW4gKyA1LCAyMCksIDgwKSB9OyAvLyBtaW4gMjAsIG1heCA4MFxuICAgIH0pO1xuICAgIHdzWychY29scyddID0gY29sV2lkdGhzO1xuXG4gICAgLy8gV3JhcCB0ZXh0IGluIGRhdGEgcm93c1xuICAgIGRhdGFSb3dzLmZvckVhY2goKHJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgIGhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBjb2xJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBjZWxsQWRkcmVzcyA9IFhMU1gudXRpbHMuZW5jb2RlX2NlbGwoeyByOiByb3dJbmRleCArIDIsIGM6IGNvbEluZGV4IH0pO1xuICAgICAgICBpZiAod3NbY2VsbEFkZHJlc3NdKSB7XG4gICAgICAgICAgd3NbY2VsbEFkZHJlc3NdLnMgPSB7IGFsaWdubWVudDogeyB3cmFwVGV4dDogdHJ1ZSwgdmVydGljYWw6IFwidG9wXCIgfSB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIFN0eWxlIG1haW4gaGVhZGVyXG4gICAgaWYgKHdzW1wiQTFcIl0pIHtcbiAgICAgIHdzW1wiQTFcIl0ucyA9IHtcbiAgICAgICAgZm9udDogeyBib2xkOiB0cnVlLCBzejogMTYgfSxcbiAgICAgICAgYWxpZ25tZW50OiB7IGhvcml6b250YWw6IFwiY2VudGVyXCIsIHZlcnRpY2FsOiBcImNlbnRlclwiIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0gQ1JFQVRFIFdPUktCT09LIC0tLS0tLS0tLVxuICAgIGNvbnN0IHdiID0gWExTWC51dGlscy5ib29rX25ldygpO1xuICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQod2IsIHdzLCBcIlNoZWV0MVwiKTtcblxuICAgIC8vIEV4cG9ydCBFeGNlbFxuICAgIFhMU1gud3JpdGVGaWxlKHdiLCBmaWxlbmFtZSk7XG4gIH1cblxuXG5cblxuICBkb3dubG9hZENTVigpIHtcbiAgICBsZXQgZmlsZU5hbWUgPSAnJ1xuICAgIGlmICghdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHMpIHtcbiAgICAgIGZpbGVOYW1lID0gYENCUF9SZXBvcnRfJHt0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5pZGVudGlmaWVyfV8ke3RoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzfS54bHN4YFxuICAgIH0gZWxzZSB7XG4gICAgICBmaWxlTmFtZSA9IGBDQlBfUmVwb3J0XyR7dGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuaWRlbnRpZmllcn0ueGxzeGBcbiAgICB9XG4gICAgdGhpcy5nZW5lcmF0ZUV4Y2VsKHRoaXMuanNvbkRhdGEsIGZpbGVOYW1lKTtcbiAgfVxuXG4gIGRvd25sb2FkUGRmRnJvbUJFKGNvbnRleHQ6IHN0cmluZykge1xuICAgIGxldCBzZWxlY3RlZExhbmd1YWdlID0gdGhpcy5maWx0ZXJGb3JtLmdldCgnbGFuZ3VhZ2UnKT8udmFsdWUgfHwgJ2VuJztcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgLy8gIHRoaXMuc2hhcmVkU2VydmljZS5kb3dubG9hZFBkZih0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5pZGVudGlmaWVyKVxuICAgIGlmICghdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHMpIHtcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5kb3dubG9hZFBkZih0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5pZGVudGlmaWVyLCBjb250ZXh0LCBzZWxlY3RlZExhbmd1YWdlKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuZG93bmxvYWRQZGZGb3JEZXBhcnRtZW50KHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXIsIHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzLCBjb250ZXh0LCBzZWxlY3RlZExhbmd1YWdlKVxuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICB9LCA1MDAwKVxuICB9XG4gIGdldFNlbGVjdGVkQ291cnNlcyhkZXBhcnRtZW50OiBhbnkpOiBhbnlbXSB7XG4gICAgaWYgKCFkZXBhcnRtZW50Py5jYnBfcGxhbnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIC8vIHRha2UgbGF0ZXN0IENCUCBwbGFuIChvciBhZGp1c3QgbG9naWMgaWYgbmVlZGVkKVxuICAgIGNvbnN0IGxhdGVzdFBsYW4gPSBkZXBhcnRtZW50LmNicF9wbGFuc1tkZXBhcnRtZW50LmNicF9wbGFucy5sZW5ndGggLSAxXTtcblxuICAgIHJldHVybiBsYXRlc3RQbGFuPy5zZWxlY3RlZF9jb3Vyc2VzIHx8IFtdO1xuICB9XG5cbiAgYXBwbHlGaWx0ZXJzKCkge1xuXG4gIH1cblxuICBmaWx0ZXJMaXN0KHZhbHVlOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IHNlYXJjaCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcblxuICAgICAgY2FzZSAnbGFuZ3VhZ2UnOlxuICAgICAgICB0aGlzLmZpbHRlcmVkTGFuZ3VhZ2VzID0gdGhpcy5sYW5ndWFnZXMuZmlsdGVyKHYgPT4gdi5sYWJlbD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2gpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbn0iLCI8ZGl2IGNsYXNzPVwidmlldy1jYnAtcGxhblwiICNkaWFsb2dDb250ZW50IHN0eWxlPVwibWF4LWhlaWdodDogODB2aDsgb3ZlcmZsb3c6IGF1dG87XCI+XG4gICAgPGRpdiBjbGFzcz1cInBvcHVwLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+VmlldyBGaW5hbCA8c3BhbiAqbmdJZj1cIm9wZW5lZEZyb20gPT09ICdjYnAnXCI+Q0JQPC9zcGFuPjxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcGVuZWRGcm9tID09PSAnYWNicCdcIj5BQ0JQPC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodC1zaWRlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWFuZC1idXR0b25zLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJsYW5ndWFnZS1zZWxlY3RcIiBzdHlsZT1cIiBoZWlnaHQ6IDM0cHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIHN0eWxlPVwiZm9udC13ZWlnaHQ6IG5vcm1hbDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXJGb3JtLmdldCgnbGFuZ3VhZ2UnKT8udmFsdWUgPyAnJyA6ICdTZWxlY3QgTGFuZ3VhZ2UnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwibGFuZ3VhZ2VcIiBwYW5lbENsYXNzPVwic2VsZWN0LXNlYXJjaC1wYW5lbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJhcHBseUZpbHRlcnMoKVwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWFyY2ggYm94IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBzdHlsZT1cImJvcmRlcjoxcHggc29saWQgI2NjYzsgcGFkZGluZzogNXB4O3dpZHRoOiA5MiU7bWFyZ2luOiA1cHg7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJTZWFyY2ggTGFuZ3VhZ2VzXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJmaWx0ZXJMaXN0KCRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUsICdsYW5ndWFnZScpXCIgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVmFsdWVzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCByIG9mIGZpbHRlcmVkTGFuZ3VhZ2VzXCIgW3ZhbHVlXT1cInI/LmNvZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcj8ubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tY29udGFpbmVyXCIgI3BkZkNvbnRlbnQ+XG4gICAgICAgICAgICA8aGVhZGVyIGNsYXNzPVwiYmctd2hpdGUgaGVhZGVyLWJvcmRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItZmxleCBqdXN0aWZ5LWJldHdlZW5cIiBzdHlsZT1cIndpZHRoOjEwMCVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNFwiIHN0eWxlPVwid2lkdGg6NTAlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2UtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvZG9wdC1sb2dvLnBuZ1wiIGFsdD1cIkRlcGFydG1lbnQgb2YgUGVyc29ubmVsICYgVHJhaW5pbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTE1XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9DQkNfbG9nby5zdmdcIiBhbHQ9XCJDYXBhY2l0eSBCdWlsZGluZyBDb21taXNzaW9uIExvZ29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9rYXJtYXlvZ2lMb2dvLW1pbi5wbmdcIiBhbHQ9XCJLYXJtYXlvZ2kgQmhhcmF0IExvZ29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLTEwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIiBzdHlsZT1cIndpZHRoOjUwJVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/LnNiT3JnVHlwZSA9PT0gJ3N0YXRlJ1wiPnt7c2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqPy5taW5pc3RyeT8ub3JnTmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqPy5taW5pc3RyeT8uc2JPcmdUeXBlID09PSAnbWluaXN0cnknXCI+e3tzaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmo/Lm1pbmlzdHJ5Py5vcmdOYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmo/LmRlcGFydG1lbnRfbmFtZVwiPi97e3NoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaj8uZGVwYXJ0bWVudF9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBDYXBhY2l0eSBCdWlsZGluZyBQbGFuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWdyYXktNjAwXCI+Q29tcHJlaGVuc2l2ZSBSb2xlLUJhc2VkIENvbXBldGVuY3kgQW5hbHlzaXM8L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9oZWFkZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWluLWgtc2NyZWVuIGJnLWdyYWRpZW50LXRvLWJyIGZyb20tc2xhdGUtNTAgdmlhLWJsdWUtNTAgdG8taW5kaWdvLTEwMFwiPlxuICAgICAgICAgICAgICAgIDwhLS0gSGVhZGVyIC0tPlxuXG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWF4LXctN3hsIG14LWF1dG8gcHgtNiBweS04IG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBLUEkgRGFzaGJvYXJkIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1jb250YWluZXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItdG90YWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1mbGV4IG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTggdy04IGljb24tc21cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAydjZoNlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNiAxM0g4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDE3SDhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgOUg4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPnt7dG90YWxDb21wZXRlbmNpZU9iaj8udG90YWx9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VG90YWwgQ29tcGV0ZW5jaWVzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhci1maWxsXCIgc3R5bGU9XCJ3aWR0aDogNjAlO1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPlRvdGFsIENvbXBldGVuY2llczoge3t0b3RhbENvbXBldGVuY2llT2JqPy50b3RhbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0ge3tjb21wZXRlbmNpZXNDb3VudD8udG90YWx9fSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItYmVoYXZpb3JhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWZsZXggbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtOCB3LTggaWNvbi1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuNSAxN2E0IDQgMCAwIDEtNSAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDE0aC4wMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMSAxMWguMDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcgMTRoLjAxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDEwaC4wMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAxOGguMDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgNmguMDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcgMThoLjAxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3IDZoLjAxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxIDEyYTkgOSAwIDAgMS05IDlhOSA5IDAgMCAxLTktOWE5IDkgMCAwIDEgOS05YTkgOSAwIDAgMSA5IDl6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPnt7dG90YWxDb21wZXRlbmNpZU9iaj8uYmVoYXZpb3JhbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5CZWhhdmlvcmFsIENvbXBldGVuY2llczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXItZmlsbC1iZWhhdmlvdXJhbFwiIHN0eWxlPVwid2lkdGg6IDYwJTtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5CZWhhdmlvcmFsIENvbXBldGVuY2llczoge3t0b3RhbENvbXBldGVuY2llT2JqPy5iZWhhdmlvcmFsfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItZnVuY3Rpb25hbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWZsZXggbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtOCB3LTggaWNvbi1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiAzaDZhNCA0IDAgMCAxIDQgNHYxNGEzIDMgMCAwIDAtMy0zSDJ6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIyIDNoLTZhNCA0IDAgMCAwLTQgNHYxNGEzIDMgMCAwIDEgMy0zaDd6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudFwiPnt7dG90YWxDb21wZXRlbmNpZU9iaj8uZnVuY3Rpb25hbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5GdW5jdGlvbmFsIENvbXBldGVuY2llczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXItZmlsbC1mdW5jdGlvbmFsXCIgc3R5bGU9XCJ3aWR0aDogNjAlO1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkZ1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzOiB7e3RvdGFsQ29tcGV0ZW5jaWVPYmo/LmZ1bmN0aW9uYWx9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dHNpZGUtbGF5ZXItZG9tYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZmxleCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCI2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjJcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+e3t0b3RhbENvbXBldGVuY2llT2JqPy5kb21haW59fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+RG9tYWluIENvbXBldGVuY2llczwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXItZmlsbC1kb21haW5cIiBzdHlsZT1cIndpZHRoOiA2MCU7XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+RG9tYWluIENvbXBldGVuY2llczoge3t0b3RhbENvbXBldGVuY2llT2JqPy5kb21haW59fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1iLThcIj5cbiAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMCBtYi02bmhlYWRpbmdcIj5Db21wZXRlbmN5IE92ZXJ2aWV3PC9oMj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1ncmlkXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrcGkgb2Ygb3ZlcmFsbEtQSXM7XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSByb3VuZGVkLXhsICBvdXRzaWRlLWxheWVyLXRvdGFsIHAtNiBib3JkZXItbC00IGhvdmVyOnNoYWRvdy14bCB0cmFuc2l0aW9uLXNoYWRvd1wiIFtzdHlsZS5ib3JkZXItbGVmdC1jb2xvcl09XCJrcGkuY29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTQgaW5zaWRlLWxheWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCIncC0zIHJvdW5kZWQtbGcgJyArIGtwaS5iZ0NvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImtwaS5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ0JlaGF2aW9yYWwgQ29tcGV0ZW5jaWVzJ1wiIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUuNSAxN2E0IDQgMCAwIDEtNSAwXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyAxNGguMDFcIi8+PHBhdGggZD1cIk0xMSAxMWguMDFcIi8+PHBhdGggZD1cIk0xNyAxNGguMDFcIi8+PHBhdGggZD1cIk0xMyAxMGguMDFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDE4aC4wMVwiLz48cGF0aCBkPVwiTTEzIDZoLjAxXCIvPjxwYXRoIGQ9XCJNMTcgMThoLjAxXCIvPjxwYXRoIGQ9XCJNMTcgNmguMDFcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxIDEyYTkgOSAwIDAgMS05IDlhOSA5IDAgMCAxLTktOWE5IDkgMCAwIDEgOS05YTkgOSAwIDAgMSA5IDl6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidGdW5jdGlvbmFsIENvbXBldGVuY2llcydcIiBjbGFzcz1cImgtOCB3LTggaWNvbi1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIgM2g2YTQgNCAwIDAgMSA0IDR2MTRhMyAzIDAgMCAwLTMtM0gyelwiLz48cGF0aCBkPVwiTTIyIDNoLTZhNCA0IDAgMCAwLTQgNHYxNGEzIDMgMCAwIDEgMy0zaDd6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidEb21haW4gQ29tcGV0ZW5jaWVzJ1wiIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIi8+PGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCI2XCIvPjxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMlwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInVG90YWwgQ29tcGV0ZW5jaWVzJ1wiIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAydjZoNlwiLz48cGF0aCBkPVwiTTE2IDEzSDhcIi8+PHBhdGggZD1cIk0xNiAxN0g4XCIvPjxwYXRoIGQ9XCJNMTAgOUg4XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwXCI+e3trcGkudG90YWx9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC1ncmF5LTkwMCBmb250LXNlbWlib2xkIG1iLTIgaGVhZGluZ1wiPnt7a3BpLm5hbWV9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbCBiZy1ncmF5LTIwMCByb3VuZGVkLWZ1bGwgaC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0zIHJvdW5kZWQtZnVsbCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGguJV09XCJrcGkuYXZnQ29tcGxldGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImtwaS5jb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDAgbXQtMlwiPlRvdGFsIENvbXBldGVuY2llczoge3trcGkudG90YWx9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGVzaWduYXRpb24gUmVwb3J0cyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktOCBtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMCBtYi02IGhlYWRpbmdcIj5EZXRhaWxlZCBDb21wZXRlbmN5IEZyYW1ld29yayBieVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2lnbmF0aW9uPC9oMj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGVzaWduYXRpb24gb2YgZGVzaWduYXRpb25EYXRhO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSByb3VuZGVkLXhsICBvdmVyZmxvdy1oaWRkZW4gc2VjdGlvbi1zaGFkb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JhZGllbnQtdG8tciBmcm9tLWluZGlnby02MDAgdG8tYmx1ZS02MDAgdGV4dC13aGl0ZSBwLTYgaGVhZGluZy13aXRoLWJnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIG1iLTIgaGVhZGluZy1iZ1wiPnt7ZGVzaWduYXRpb24uZGVzaWduYXRpb259fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtaW5kaWdvLTEwMCBtYi0xXCI+V2luZy9EaXZpc2lvbjoge3tkZXNpZ25hdGlvbi53aW5nfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHNwYWNlLXgtNCBjb21wZXRlbmN5LWNvdW50LWJ5LWRlc2lnbmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtXCI+QmVoYXZpb3JhbDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24uYmVoYXZpb3JhbENvbXBldGVuY2llcy5sZW5ndGh9fSB0b3RhbDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc21cIj5GdW5jdGlvbmFsOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkZXNpZ25hdGlvbi5mdW5jdGlvbmFsQ29tcGV0ZW5jaWVzLmxlbmd0aH19IHRvdGFsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbVwiPkRvbWFpbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24uZG9tYWluQ29tcGV0ZW5jaWVzLmxlbmd0aH19IHRvdGFsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQm9keSAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNCBzZWN0aW9uLXNoYWRvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSb2xlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi02XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgbWItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC01IHctNSBtci0yIHRleHQtaW5kaWdvLTYwMCBpY29uLXNtXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNiA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNMTIgMTRhNyA3IDAgMDAtNyA3aDE0YTcgNyAwIDAwLTctN3pcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9sZXMgJiBSZXNwb25zaWJpbGl0aWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMyBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb2xlIG9mIGRlc2lnbmF0aW9uLnJvbGVzUmVzcG9uc2liaWxpdGllczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJnLWdyYXktNTAgcC0yIHJvdW5kZWQgYm9yZGVyLWwtMyBib3JkZXItaW5kaWdvLTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS03MDAgbGVhZGluZy1yZWxheGVkXCI+e3tyb2xlfX08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2aXRpZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNiBtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgbWItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC01IHctNSBtci0yIHRleHQtaW5kaWdvLTYwMCBpY29uLXNtXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNiA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNMTIgMTRhNyA3IDAgMDAtNyA3aDE0YTcgNyAwIDAwLTctN3pcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdGllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm9sZSBvZiBkZXNpZ25hdGlvbi5hY3Rpdml0aWVzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JheS01MCBwLTIgcm91bmRlZCBib3JkZXItbC0zIGJvcmRlci1pbmRpZ28tNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTcwMCBsZWFkaW5nLXJlbGF4ZWRcIj57e3JvbGV9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWdlLWJyZWFrXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvbXBldGVuY2llcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmNpcy1ncmlkIG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEJlaGF2aW9yYWwgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLWJsdWUtNTAgcm91bmRlZC1sZyBwLTMgY29tcGV0ZW5jaWVzLWdyaWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtYmx1ZS04MDAgdGV4dC1iYXNlIG1iLTJcIj5CZWhhdmlvcmFsPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktMSBncmlkLWxpc3QtaXRlbSBncmlkLWxpc3QtaXRlbS1iZWhhdmlvcmFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb21wIG9mIGRlc2lnbmF0aW9uLmJlaGF2aW9yYWxDb21wZXRlbmNpZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctd2hpdGUgcC0xLjUgcm91bmRlZCB0ZXh0LXNtIHRleHQtZ3JheS03MDAgYm9yZGVyLWwtMiBib3JkZXItYmx1ZS00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbXB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiB0ZXh0LXNtIHRleHQtYmx1ZS02MDAgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24uYmVoYXZpb3JhbENvbXBldGVuY2llcy5sZW5ndGh9fSB0b3RhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRnVuY3Rpb25hbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctZ3JlZW4tNTAgcm91bmRlZC1sZyBwLTMgY29tcGV0ZW5jaWVzLWdyaWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtZ3JlZW4tODAwIHRleHQtYmFzZSBtYi0yXCI+RnVuY3Rpb25hbDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTEgZ3JpZC1saXN0LWl0ZW0gZ3JpZC1saXN0LWl0ZW0tZnVuY3Rpb25hbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgY29tcCBvZiBkZXNpZ25hdGlvbi5mdW5jdGlvbmFsQ29tcGV0ZW5jaWVzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJnLXdoaXRlIHAtMS41IHJvdW5kZWQgdGV4dC1zbSB0ZXh0LWdyYXktNzAwIGJvcmRlci1sLTIgYm9yZGVyLWdyZWVuLTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tcH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIHRleHQtc20gdGV4dC1ncmVlbi02MDAgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24uZnVuY3Rpb25hbENvbXBldGVuY2llcy5sZW5ndGh9fSB0b3RhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRG9tYWluIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1wdXJwbGUtNTAgcm91bmRlZC1sZyBwLTMgY29tcGV0ZW5jaWVzLWdyaWQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtcHVycGxlLTgwMCB0ZXh0LWJhc2UgbWItMlwiPkRvbWFpbjwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGFjZS15LTEgZ3JpZC1saXN0LWl0ZW0gZ3JpZC1saXN0LWl0ZW0tZG9tYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb21wIG9mIGRlc2lnbmF0aW9uLmRvbWFpbkNvbXBldGVuY2llczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy13aGl0ZSBwLTEuNSByb3VuZGVkIHRleHQtc20gdGV4dC1ncmF5LTcwMCBib3JkZXItbC0yIGJvcmRlci1wdXJwbGUtNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21wfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LXB1cnBsZS02MDAgZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGVzaWduYXRpb24uZG9tYWluQ29tcGV0ZW5jaWVzLmxlbmd0aH19IHRvdGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFkZGluZyBjb3Vyc2VzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNicCBtdC00XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRlc2lnbmF0aW9uLnNlbGVjdGVkQ291cnNlcz8ubGVuZ3RoICYmIG9wZW5lZEZyb20gPT09ICdhY2JwJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cInRleHQteGwgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktOTAwIG1iLTMgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtNSB3LTUgbXItMiB0ZXh0LWluZGlnby02MDAgaWNvbi1zbVwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHN0cm9rZS13aWR0aD1cIjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYgN2E0IDQgMCAxMS04IDAgNCA0IDAgMDE4IDB6TTEyIDE0YTcgNyAwIDAwLTcgN2gxNGE3IDcgMCAwMC03LTd6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdXJzZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3Vyc2UtbGlzdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXJzZS1saXN0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGVzaWduYXRpb24uc2VsZWN0ZWRDb3Vyc2VzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cnNlLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2VkLWNvdXJzZS1jb250YWluZXJcIj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXJzZS1waWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXJzZS1waWxsLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9jb3Vyc2Uuc3ZnXCI+PC9zcGFuPiZuYnNwOzxzcGFuPkNvdXJzZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5yYXRpb25hbGUgJiYgIWl0ZW0/LmlzX3B1YmxpY1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLWdyZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLWdyZWVuLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BSSBSZWNvbW1lbmRlZCAtIGlHT1QgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlIG10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5wbGF0Zm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktbG9hZGVyLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvYWktbG9hZGVyLmdpZlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgW2hyZWZdPVwiaXRlbT8ucHVibGljX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIj48c3Bhbj5QbGF0Zm9ybSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LnBsYXRmb3JtfX08L3NwYW4+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZSBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8ub3JnYW5pc2F0aW9uPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UHJvdmlkZXIgLSB7e2l0ZW0/Lm9yZ2FuaXNhdGlvblswXX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5yYXRpb25hbGUgJiYgaXRlbT8uaXNfcHVibGljXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtcHVibGljXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLXB1YmxpYy10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1sb2FkZXItaWNvblwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9haS1sb2FkZXIuZ2lmXCI+PC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+QUkgUmVjb21tZW5kZWQgLSBQdWJsaWMgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlIG10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5wbGF0Zm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktbG9hZGVyLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvYWktbG9hZGVyLmdpZlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgW2hyZWZdPVwiaXRlbT8ucHVibGljX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIj48c3Bhbj5QbGF0Zm9ybSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LnBsYXRmb3JtfX08L3NwYW4+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZSBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8ub3JnYW5pc2F0aW9uPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UHJvdmlkZXIgLSB7e2l0ZW0/Lm9yZ2FuaXNhdGlvblswXX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXRlbT8ucmF0aW9uYWxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtZ3JheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1ncmF5LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5NYW51YWxseSBTdWdnZXN0ZWQgLSBpR09UIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZSBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8ucGxhdGZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIFtocmVmXT1cIml0ZW0/LnB1YmxpY19saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+PHNwYW4+UGxhdGZvcm0gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5wbGF0Zm9ybX19PC9zcGFuPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UgbXQtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/Lm9yZ2FuaXNhdGlvbj8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1sb2FkZXItaWNvblwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9haS1sb2FkZXIuZ2lmXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlByb3ZpZGVyIC0ge3tpdGVtPy5vcmdhbmlzYXRpb25bMF19fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXJzZS10aXRsZSBtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/LmNvdXJzZVwiPnt7aXRlbT8uY291cnNlfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/Lm5hbWVcIj57e2l0ZW0/Lm5hbWV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cnNlLWRlc2MgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1BERkRvd25sb2FkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tpdGVtPy5yYXRpb25hbGV9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRDb21wZXRlbmNpZXNCeVR5cGUoJ0JlaGF2aW91cmFsJyxpdGVtKT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktc3ViLWhlYWRpbmdcIj5CZWhhdmlvcmFsIENvbXBldGVuY2llczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNvbXBldGVuY3ktbGlzdCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImJlaGF2aW91cmFsLXBpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbXAgb2YgZ2V0RGlzcGxheWVkQ29tcGV0ZW5jaWVzKCdCZWhhdmlvdXJhbCcsaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tcGV0ZW5jeS10ZXh0XCI+IHt7IGNvbXAuY29tcGV0ZW5jeVRoZW1lTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuY29tcGV0ZW5jeVN1YlRoZW1lTmFtZSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImhhc01vcmVUaGFuVHdvKCdCZWhhdmlvdXJhbCcsaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaG93LW1vcmUtY29tcGV0ZW5jeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaG93LW1vcmUtbGluayBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbXBldGVuY2llcygnQmVoYXZpb3VyYWwnLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXNFeHBhbmRlZCgnQmVoYXZpb3VyYWwnLGl0ZW0pID8gJ1Nob3cgTGVzcycgOiAnKycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlbWFpbmluZ0NvdW50KCdCZWhhdmlvdXJhbCcsaXRlbSkgKyAnIE1vcmUnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0Q29tcGV0ZW5jaWVzQnlUeXBlKCdGdW5jdGlvbmFsJyxpdGVtKT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktc3ViLWhlYWRpbmdcIj5GdW5jdGlvbmFsIENvbXBldGVuY2llczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImNvbXBldGVuY3ktbGlzdCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImZ1bmN0aW9uYWwtcGlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tcCBvZiBnZXREaXNwbGF5ZWRDb21wZXRlbmNpZXMoJ0Z1bmN0aW9uYWwnLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBldGVuY3ktdGV4dFwiPiB7eyBjb21wLmNvbXBldGVuY3lUaGVtZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmNvbXBldGVuY3lTdWJUaGVtZU5hbWUgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJoYXNNb3JlVGhhblR3bygnRnVuY3Rpb25hbCcsaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzaG93LW1vcmUtY29tcGV0ZW5jeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaG93LW1vcmUtbGluayBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbXBldGVuY2llcygnRnVuY3Rpb25hbCcsaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpc0V4cGFuZGVkKCdGdW5jdGlvbmFsJyxpdGVtKSA/ICdTaG93IExlc3MnIDogJysnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZW1haW5pbmdDb3VudCgnRnVuY3Rpb25hbCcsaXRlbSkgKyAnIE1vcmUnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cImdldENvbXBldGVuY2llc0J5VHlwZSgnRG9tYWluJyxpdGVtKT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY3ktc3ViLWhlYWRpbmdcIj5Eb21haW4gQ29tcGV0ZW5jaWVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiY29tcGV0ZW5jeS1saXN0IG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZG9tYWluLXBpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbXAgb2YgZ2V0RGlzcGxheWVkQ29tcGV0ZW5jaWVzKCdEb21haW4nLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbXBldGVuY3ktdGV4dFwiPiB7eyBjb21wLmNvbXBldGVuY3lUaGVtZU5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmNvbXBldGVuY3lTdWJUaGVtZU5hbWUgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJoYXNNb3JlVGhhblR3bygnRG9tYWluJyxpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNob3ctbW9yZS1jb21wZXRlbmN5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNob3ctbW9yZS1saW5rIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29tcGV0ZW5jaWVzKCdEb21haW4nLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXNFeHBhbmRlZCgnRG9tYWluJyxpdGVtKSA/ICdTaG93IExlc3MnIDogJysnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRSZW1haW5pbmdDb3VudCgnRG9tYWluJyxpdGVtKSArICcgTW9yZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxldmFuY3ktY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxldmFuY3lcIj5SZWxldmFuY3k8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhc2hcIj4tPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJjZW50YWdlXCIgKm5nSWY9XCJpdGVtPy5yZWxldmFuY3lcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8ucmVsZXZhbmN5fX0lPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXJjZW50YWdlXCIgKm5nSWY9XCIhaXRlbT8ucmVsZXZhbmN5XCI+Ti9BPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBhZGRpbmcgY291cnNlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciAtLT5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8Zm9vdGVyIGNsYXNzPVwib3JnLWZvb3RlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXgtdy03eGwgbXgtYXV0byBweC02IGZsZXggZmxleC1jb2wgbWQ6ZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00IG1iLTQgbXQtNCBtZDptYi0wIGZvb3Rlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItbG9nby1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9rYXJtYXlvZ2lMb2dvLW1pbi5wbmdcIiBhbHQ9XCJLYXJtYXlvZ2kgQmhhcmF0IExvZ29cIiBjbGFzcz1cImgtMTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1sZWZ0OjIwcHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwMHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL2thcm1heW9naWJoYXJhdC5nb3YuaW5cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdHJhbnNpdGlvbi1jb2xvcnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2FybWF5b2dpYmhhcmF0Lmdvdi5pblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtIHRleHQtY2VudGVyIG1kOnRleHQtcmlnaHQgbWItNFwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDEwMHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+JmNvcHk7IDIwMjUgQWxsIFJpZ2h0cyBSZXNlcnZlZC48L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb290ZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZm9vdGVyXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1hY3RpdmVcIiB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCJEb3dubG9hZCBhcyBFeGNlbFwiIChjbGljayk9XCJkb3dubG9hZENTVigpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiRG93bmxvYWQgYXMgUERGXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkUGRmRnJvbUJFKG9wZW5lZEZyb20pXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiQ2FuY2VsXCIgKGNsaWNrKT1cImNhbmNlbEZvcm0oKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktbG9hZGVyXCIgKm5nSWY9XCJsb2FkaW5nXCI+XG4gICAgICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8L2Rpdj4iXX0=
884
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1maW5hbC1jYnAtcGxhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvY2JwLWFpL3NyYy9saWIvY29tcG9uZW50cy92aWV3LWZpbmFsLWNicC1wbGFuL3ZpZXctZmluYWwtY2JwLXBsYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvdmlldy1maW5hbC1jYnAtcGxhbi92aWV3LWZpbmFsLWNicC1wbGFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWlDLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGVBQWUsRUFBMkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRixPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUM7QUFDbkMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sV0FBVyxNQUFNLGFBQWEsQ0FBQztBQUV0QyxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUM3QixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVFuSCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQ1MsU0FBa0QsRUFDekIsSUFBUyxFQUNqQyxNQUFpQixFQUNqQixHQUFzQixFQUN2QixhQUE0QixFQUMzQixRQUFxQixFQUNyQixFQUFlO1FBTmhCLGNBQVMsR0FBVCxTQUFTLENBQXlDO1FBQ3pCLFNBQUksR0FBSixJQUFJLENBQUs7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixhQUFRLEdBQVIs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QUM3RixNQUFNO1NBQ1Q7SUFDSCxDQUFDOytHQWxnQ1UseUJBQXlCLDhDQUcxQixlQUFlO21HQUhkLHlCQUF5QiwwUUNmdEMsbWkzQ0E0bUJVOzs0RkQ3bEJHLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx5QkFBeUI7OzBCQU9oQyxNQUFNOzJCQUFDLGVBQWU7b0xBd0JtQixVQUFVO3NCQUFyRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBYWQsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgSW5qZWN0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IGh0bWwycGRmIGZyb20gJ2h0bWwycGRmLmpzJztcbmltcG9ydCBqc1BERiBmcm9tICdqc3BkZic7XG5pbXBvcnQgaHRtbDJjYW52YXMgZnJvbSAnaHRtbDJjYW52YXMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcbmltcG9ydCB7IERlbGV0ZVJvbGVNYXBwaW5nUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9kZWxldGUtcm9sZS1tYXBwaW5nLXBvcHVwL2RlbGV0ZS1yb2xlLW1hcHBpbmctcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbW9kdWxlcy9zaGFyZWQvc2VydmljZXMvc2hhcmVkLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXZpZXctZmluYWwtY2JwLXBsYW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy1maW5hbC1jYnAtcGxhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctZmluYWwtY2JwLXBsYW4uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBWaWV3RmluYWxDYnBQbGFuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFZpZXdGaW5hbENicFBsYW5Db21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyXG4gICkge1xuICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgbGFuZ3VhZ2U6IFsnZW4nXVxuICAgIH0pO1xuICAgIHRoaXMub3BlbmVkRnJvbSA9IGRhdGE/Lm9wZW5lZEZyb207XG4gICAgdGhpcy5nZXRNYXBwaW5nRGF0YSgpXG4gIH1cbiAgZmlsdGVyRm9ybSE6IEZvcm1Hcm91cDtcbiAgbGFuZ3VhZ2VzID0gW3sgXCJjb2RlXCI6IFwiZW5cIiwgbGFiZWw6IFwiRW5nbGlzaFwiIH0sXG4gIHsgXCJjb2RlXCI6IFwiaGlcIiwgbGFiZWw6IFwiSGluZGlcIiB9LFxuICB7IFwiY29kZVwiOiBcInRlXCIsIGxhYmVsOiBcIlRlbHVndVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwia25cIiwgbGFiZWw6IFwiS2FubmFkYVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwibXJcIiwgbGFiZWw6IFwiTWFyYXRoaVwiIH0sXG4gIHsgXCJjb2RlXCI6IFwidGFcIiwgbGFiZWw6IFwiVGFtaWxcIiB9LFxuICB7IFwiY29kZVwiOiBcImd1XCIsIGxhYmVsOiBcIkd1amFyYXRpXCIgfSxcbiAgeyBcImNvZGVcIjogXCJtbFwiLCBsYWJlbDogXCJNYWxheWFsYW1cIiB9LFxuICB7IFwiY29kZVwiOiBcImJuXCIsIGxhYmVsOiBcIkJlbmdhbGlcIiB9LF07XG4gIGZpbHRlcmVkTGFuZ3VhZ2VzID0gWy4uLnRoaXMubGFuZ3VhZ2VzXTtcbiAgQFZpZXdDaGlsZCgncGRmQ29udGVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwZGZDb250ZW50ITogRWxlbWVudFJlZjtcbiAgbG9hZGluZyA9IGZhbHNlXG4gIGRlc2lnbmF0aW9uRGF0YTogYW55ID0gW11cbiAgdG90YWxDb21wZXRlbmNpZU9iaiA9IHsgdG90YWw6IDAsIGJlaGF2aW9yYWw6IDAsIGZ1bmN0aW9uYWw6IDAsIGRvbWFpbjogMCB9XG4gIHBkZlRyaWdnZXIgPSBmYWxzZVxuICBqc29uRGF0YSA9IFtdXG4gIGZpbHRlcmRDb3Vyc2VzID0gW107XG4gIHBsYW5EYXRhOiBhbnlcbiAgcmVjb21tZW5kZWRfY291cnNlX2lkID0gJydcbiAgZXhwYW5kZWRDb21wZXRlbmNpZXM6IGFueSA9IHt9O1xuICBjb21wZXRlbmNpZXNDb3VudCA9IHsgdG90YWw6IDAsIHB1YmxpY19jb3Vyc2VzOiAwLCBpZ290OiAwIH07XG4gIG9wZW5lZEZyb20hOiBzdHJpbmc7XG4gIGlzUERGRG93bmxvYWQgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZGlhbG9nQ29udGVudCcpIGRpYWxvZ0NvbnRlbnQhOiBFbGVtZW50UmVmO1xuICAvLyBkZXNpZ25hdGlvbkRhdGEgPSBbXG4gIC8vICAge1xuICAvLyAgICAgZGVzaWduYXRpb246IFwiU2VjcmV0YXJ5IChXQ0QpXCIsXG4gIC8vICAgICB3aW5nOiBcIk1pbmlzdHJ5IExlYWRlcnNoaXBcIixcbiAgLy8gICAgIHVwZGF0ZWQ6IFwiMTAvMDkvMjAyNVwiLFxuICAvLyAgICAgcm9sZXNSZXNwb25zaWJpbGl0aWVzOiBbXG4gIC8vICAgICAgIFwiUHJvdmlkZSBvdmVyYWxsIHN1cGVydmlzaW9uIG9mIG1pbmlzdHJ5IHByb2dyYW1tZXMgYW5kIHNjaGVtZXNcIixcbiAgLy8gICAgICAgXCJFbnN1cmUgZWZmZWN0aXZlIGNvb3JkaW5hdGlvbiB3aXRoIFN0YXRlIEdvdmVybm1lbnRzIGZvciBzY2hlbWUgaW1wbGVtZW50YXRpb25cIixcbiAgLy8gICAgICAgXCJTdHJhdGVnaWMgcG9saWN5IGZvcm11bGF0aW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBvdmVyc2lnaHRcIixcbiAgLy8gICAgICAgXCJJbnRlci1taW5pc3RlcmlhbCBjb29yZGluYXRpb24gYW5kIGxpYWlzb25cIixcbiAgLy8gICAgICAgXCJQYXJsaWFtZW50YXJ5IGFmZmFpcnMgbWFuYWdlbWVudFwiLFxuICAvLyAgICAgICBcIlNlbmlvciBsZWFkZXJzaGlwIGdvdmVybmFuY2UgYW5kIG92ZXJzaWdodFwiLFxuICAvLyAgICAgICBcIk5hdGlvbmFsIHByb2dyYW1tZSBzdHJhdGVnaWMgZGlyZWN0aW9uXCIsXG4gIC8vICAgICAgIFwiQ2FiaW5ldCBub3RlIHdyaXRpbmcgYW5kIHBvbGljeSBicmllZnNcIlxuICAvLyAgICAgXSxcbiAgLy8gICAgIGJlaGF2aW9yYWxDb21wZXRlbmNpZXM6IFtcbiAgLy8gICAgICAgXCJTdHJhdGVnaWMgTGVhZGVyc2hpcFwiLCBcIkV4ZWN1dGl2ZSBQcmVzZW5jZVwiLCBcIkluZmx1ZW5jaW5nIGFuZCBOZWdvdGlhdGlvblwiLFxuICAvLyAgICAgICBcIlJlbGF0aW9uc2hpcCBNYW5hZ2VtZW50XCIsIFwiVmVyYmFsICYgTm9uLVZlcmJhbCBGbHVlbmN5XCIsIFwiUGxhbm5pbmcgJiBQcmlvcml0aXphdGlvblwiLFxuICAvLyAgICAgICBcIkFjY291bnRhYmlsaXR5XCIsIFwiQ29uZmxpY3QgTWFuYWdlbWVudFwiXG4gIC8vICAgICBdLFxuICAvLyAgICAgZnVuY3Rpb25hbENvbXBldGVuY2llczogW1xuICAvLyAgICAgICBcIlJ1bGVzIG9mIGJ1c2luZXNzIChBb0IvVG9CKVwiLCBcIkNhYmluZXQgbm90ZSB3cml0aW5nXCIsIFwiU3VibWlzc2lvbiBvZiBicmllZnMsIHN1cHBseSBvZiBpbmZvcm1hdGlvblwiLFxuICAvLyAgICAgICBcIlBvbGljeSBkZXNpZ24vIGFtZW5kbWVudFwiLCBcIlBvbGljeSBpbXBsZW1lbnRhdGlvblwiLCBcIlBvbGljeSBtb25pdG9yaW5nICYgaW1wYWN0IGFzc2Vzc21lbnRcIixcbiAgLy8gICAgICAgXCJQcm9qZWN0IFBsYW5uaW5nXCIsIFwiUHJvamVjdCBFdmFsdWF0aW9uICYgTW9uaXRvcmluZ1wiLCBcIkNyZWF0aW9uIG9mIE0mRSBGcmFtZXdvcmtcIixcbiAgLy8gICAgICAgXCJDaXRpemVuIFBhcnRuZXJpbmcgJiBDb2xsYWJvcmF0aW9uXCIsIFwiUHVibGljIEdyaWV2YW5jZSBIYW5kbGluZ1wiXG4gIC8vICAgICBdLFxuICAvLyAgICAgZG9tYWluQ29tcGV0ZW5jaWVzOiBbXG4gIC8vICAgICAgIFwiU3RyYXRlZ2ljIFBvbGljeSBGb3JtdWxhdGlvblwiLCBcIkludGVyLW1pbmlzdGVyaWFsICYgU3RhdGUgR292ZXJubWVudCBDb29yZGluYXRpb25cIixcbiAgLy8gICAgICAgXCJTZW5pb3IgTGVhZGVyc2hpcCBHb3Zlcm5hbmNlICYgT3ZlcnNpZ2h0XCIsIFwiTGVnaXNsYXRpdmUgJiBQYXJsaWFtZW50YXJ5IEFmZmFpcnMgTWFuYWdlbWVudFwiLFxuICAvLyAgICAgICBcIk5hdGlvbmFsIFByb2dyYW1tZSBTdHJhdGVnaWMgRGlyZWN0aW9uXCJcbiAgLy8gICAgIF0sXG4gIC8vICAgICBjb21wbGV0aW9uUmF0ZTogeyBiZWhhdmlvcmFsOiA4NSwgZnVuY3Rpb25hbDogNzgsIGRvbWFpbjogOTIgfVxuICAvLyAgIH1cbiAgLy8gXTtcblxuICAvLyAvLyBDYWxjdWxhdGUgdGhlIHRvdGFscyBkeW5hbWljYWxseVxuICAvLyBwcml2YXRlIGJlaGF2aW9yYWxUb3RhbCA9IHRoaXMuZGVzaWduYXRpb25EYXRhLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLmJlaGF2aW9yYWxDb21wZXRlbmNpZXMubGVuZ3RoLCAwKTtcbiAgLy8gcHJpdmF0ZSBmdW5jdGlvbmFsVG90YWwgPSB0aGlzLmRlc2lnbmF0aW9uRGF0YS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgaXRlbS5mdW5jdGlvbmFsQ29tcGV0ZW5jaWVzLmxlbmd0aCwgMCk7XG4gIC8vIHByaXZhdGUgZG9tYWluVG90YWwgPSB0aGlzLmRlc2lnbmF0aW9uRGF0YS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICsgaXRlbS5kb21haW5Db21wZXRlbmNpZXMubGVuZ3RoLCAwKTtcblxuICAvLyAvLyBDYWxjdWxhdGUgdGhlIGF2ZXJhZ2VzIGR5bmFtaWNhbGx5XG4gIC8vIHByaXZhdGUgYmVoYXZpb3JhbEF2ZyA9IE1hdGgucm91bmQodGhpcy5kZXNpZ25hdGlvbkRhdGEucmVkdWNlKChhY2MsIGl0ZW0pID0+IGFjYyArIGl0ZW0uY29tcGxldGlvblJhdGUuYmVoYXZpb3JhbCwgMCkgLyB0aGlzLmRlc2lnbmF0aW9uRGF0YS5sZW5ndGgpO1xuICAvLyBwcml2YXRlIGZ1bmN0aW9uYWxBdmcgPSBNYXRoLnJvdW5kKHRoaXMuZGVzaWduYXRpb25EYXRhLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLmNvbXBsZXRpb25SYXRlLmZ1bmN0aW9uYWwsIDApIC8gdGhpcy5kZXNpZ25hdGlvbkRhdGEubGVuZ3RoKTtcbiAgLy8gcHJpdmF0ZSBkb21haW5BdmcgPSBNYXRoLnJvdW5kKHRoaXMuZGVzaWduYXRpb25EYXRhLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgKyBpdGVtLmNvbXBsZXRpb25SYXRlLmRvbWFpbiwgMCkgLyB0aGlzLmRlc2lnbmF0aW9uRGF0YS5sZW5ndGgpO1xuXG4gIC8vIG92ZXJhbGxLUElzID0gW1xuICAvLyAgIHtcbiAgLy8gICAgIG5hbWU6ICdCZWhhdmlvcmFsIENvbXBldGVuY2llcycsXG4gIC8vICAgICB0b3RhbDogdGhpcy5iZWhhdmlvcmFsVG90YWwsXG4gIC8vICAgICBhdmdDb21wbGV0aW9uOiB0aGlzLmJlaGF2aW9yYWxBdmcsXG4gIC8vICAgICBjb2xvcjogJyMzQjgyRjYnLFxuICAvLyAgICAgYmdDb2xvcjogJ2JnLWJsdWUtNTAnLFxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgbmFtZTogJ0Z1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzJyxcbiAgLy8gICAgIHRvdGFsOiB0aGlzLmZ1bmN0aW9uYWxUb3RhbCxcbiAgLy8gICAgIGF2Z0NvbXBsZXRpb246IHRoaXMuZnVuY3Rpb25hbEF2ZyxcbiAgLy8gICAgIGNvbG9yOiAnIzEwQjk4MScsXG4gIC8vICAgICBiZ0NvbG9yOiAnYmctZ3JlZW4tNTAnLFxuICAvLyAgIH0sXG4gIC8vICAge1xuICAvLyAgICAgbmFtZTogJ0RvbWFpbiBDb21wZXRlbmNpZXMnLFxuICAvLyAgICAgdG90YWw6IHRoaXMuZG9tYWluVG90YWwsXG4gIC8vICAgICBhdmdDb21wbGV0aW9uOiB0aGlzLmRvbWFpbkF2ZyxcbiAgLy8gICAgIGNvbG9yOiAnIzhCNUNGNicsXG4gIC8vICAgICBiZ0NvbG9yOiAnYmctcHVycGxlLTUwJyxcbiAgLy8gICB9LFxuICAvLyAgIHtcbiAgLy8gICAgIG5hbWU6ICdUb3RhbCBDb21wZXRlbmNpZXMnLFxuICAvLyAgICAgdG90YWw6IHRoaXMuYmVoYXZpb3JhbFRvdGFsICsgdGhpcy5mdW5jdGlvbmFsVG90YWwgKyB0aGlzLmRvbWFpblRvdGFsLFxuICAvLyAgICAgYXZnQ29tcGxldGlvbjogTWF0aC5yb3VuZCgodGhpcy5iZWhhdmlvcmFsQXZnICsgdGhpcy5mdW5jdGlvbmFsQXZnICsgdGhpcy5kb21haW5BdmcpIC8gMyksXG4gIC8vICAgICBjb2xvcjogJyM0QjU1NjMnLFxuICAvLyAgICAgYmdDb2xvcjogJ2JnLWdyYXktMjAwJyxcbiAgLy8gICB9XG4gIC8vIF07XG5cbiAgY2xvc2VEaWFsb2coKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICB9XG5cbiAgY2FuY2VsRm9ybSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXG4gIH1cblxuICBzYXZlUm9sZU1hcHBpbmcoKSB7XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zb2xlLmxvZygndGhpcy5kYXRhJywgdGhpcy5kYXRhKVxuICAgIHRoaXMuanNvbkRhdGEgPSB0aGlzLmRhdGE/LnBheWxvYWRcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmRpYWxvZ0NvbnRlbnQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmRpYWxvZ0NvbnRlbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUbyh7XG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJ1xuICAgICAgICB9KTtcbiAgICAgIH0sIDUwMClcblxuICAgIH1cbiAgfVxuXG4gIGdldE1hcHBpbmdEYXRhKCkge1xuICAgIGNvbnNvbGUubG9nKCdoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaicsIHRoaXMuc2hhcmVkU2VydmljZS5nZXRDYnBQbGFuc1dpdGhTZWxlY3RlZENvdXJzZXMoKSlcbiAgICBpZiAodGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuc2JPcmdUeXBlID09PSAnbWluaXN0cnknKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgICBsZXQgc3RhdGVfY2VudGVyX2lkID0gdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuaWRlbnRpZmllclxuXG4gICAgICBpZiAodGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHM/Lmxlbmd0aCkge1xuXG4gICAgICAgIGxldCBkZXBhcnRtZW50X2lkID0gdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHNcbiAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFJvbGVNYXBwaW5nQnlTdGF0ZUNlbnRlckFuZERlcGFydG1lbnQoc3RhdGVfY2VudGVyX2lkLCBkZXBhcnRtZW50X2lkKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcbiAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhID0gW107XG5cbiAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFNFVFMgKGZvciBvdmVyYWxsIHVuaXF1ZSBjb3VudClcbiAgICAgICAgICAgIGNvbnN0IGdsb2JhbFRvdGFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxCZWhhdmlvcmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxGdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxEb21haW5TZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAvLyDinIUgTE9DQUwgVU5JUVVFIFNFVFMgKHBlciBkZXNpZ25hdGlvbilcbiAgICAgICAgICAgICAgY29uc3QgdG90YWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgY29uc3QgYmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICAgIGNvbnN0IGRvbWFpblNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgICAgICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcblxuICAgICAgICAgICAgICByZXNbaV0/LmNvbXBldGVuY2llcz8uZm9yRWFjaChjID0+IHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRoZW1lID0gKGM/LnRoZW1lIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJUaGVtZSA9IChjPy5zdWJfdGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAoYz8udHlwZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoZW1lICYmICFzdWJUaGVtZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9LSR7c3ViVGhlbWV9YDtcblxuICAgICAgICAgICAgICAgIC8vIOKchSBQRVIgREVTSUdOQVRJT04gVU5JUVVFXG4gICAgICAgICAgICAgICAgaWYgKCF0b3RhbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgdG90YWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmoudG90YWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnICYmICFiZWhhdmlvcmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBiZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmJlaGF2aW9yYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uYWwnICYmICFmdW5jdGlvbmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RvbWFpbicgJiYgIWRvbWFpblNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgZG9tYWluU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmRvbWFpbisrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFRSQUNLSU5HXG4gICAgICAgICAgICAgICAgZ2xvYmFsVG90YWxTZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnKSBnbG9iYWxCZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZnVuY3Rpb25hbCcpIGdsb2JhbEZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkb21haW4nKSBnbG9iYWxEb21haW5TZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkRhdGEucHVzaCh7XG4gICAgICAgICAgICAgICAgZGVzaWduYXRpb246IHJlc1tpXS5kZXNpZ25hdGlvbl9uYW1lLFxuICAgICAgICAgICAgICAgIHdpbmc6IHJlc1tpXS53aW5nX2RpdmlzaW9uX3NlY3Rpb24sXG4gICAgICAgICAgICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgICAgICAgcm9sZXNSZXNwb25zaWJpbGl0aWVzOiByZXNbaV0ucm9sZV9yZXNwb25zaWJpbGl0aWVzLFxuICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHJlc1tpXS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iaixcbiAgICAgICAgICAgICAgICBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzOiBbLi4uYmVoYXZpb3JhbFNldF0sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25hbENvbXBldGVuY2llczogWy4uLmZ1bmN0aW9uYWxTZXRdLFxuICAgICAgICAgICAgICAgIGRvbWFpbkNvbXBldGVuY2llczogWy4uLmRvbWFpblNldF0sXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3Vyc2VzOiByZXNbaV0/LmNicF9wbGFucz8uYXQoLTEpPy5zZWxlY3RlZF9jb3Vyc2VzIHx8IFtdXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBTRVQgR0xPQkFMIENPVU5UUyBBRlRFUiBMT09QXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmoudG90YWwgPSBnbG9iYWxUb3RhbFNldC5zaXplO1xuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmJlaGF2aW9yYWwgPSBnbG9iYWxCZWhhdmlvcmFsU2V0LnNpemU7XG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouZnVuY3Rpb25hbCA9IGdsb2JhbEZ1bmN0aW9uYWxTZXQuc2l6ZTtcbiAgICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5kb21haW4gPSBnbG9iYWxEb21haW5TZXQuc2l6ZTtcblxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKVxuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy5kZXNpZ25hdGlvbkRhdGEnLCB0aGlzLmRlc2lnbmF0aW9uRGF0YSlcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmonLCB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmopXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKGVycm9yPy5lcnJvcj8uZGV0YWlsLCAnWCcsIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFJvbGVNYXBwaW5nQnlTdGF0ZUNlbnRlcihzdGF0ZV9jZW50ZXJfaWQpLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZXMnLCByZXMpXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcbiAgICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhID0gW107XG5cbiAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFNFVFMgKGZvciBvdmVyYWxsIHVuaXF1ZSBjb3VudClcbiAgICAgICAgICAgIGNvbnN0IGdsb2JhbFRvdGFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxCZWhhdmlvcmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxGdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICBjb25zdCBnbG9iYWxEb21haW5TZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAvLyDinIUgTE9DQUwgVU5JUVVFIFNFVFMgKHBlciBkZXNpZ25hdGlvbilcbiAgICAgICAgICAgICAgY29uc3QgdG90YWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICAgICAgY29uc3QgYmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgICAgIGNvbnN0IGRvbWFpblNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgICAgICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcblxuICAgICAgICAgICAgICByZXNbaV0/LmNvbXBldGVuY2llcz8uZm9yRWFjaChjID0+IHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRoZW1lID0gKGM/LnRoZW1lIHx8ICcnKS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdWJUaGVtZSA9IChjPy5zdWJfdGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSAoYz8udHlwZSB8fCAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoZW1lICYmICFzdWJUaGVtZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9LSR7c3ViVGhlbWV9YDtcblxuICAgICAgICAgICAgICAgIC8vIOKchSBQRVIgREVTSUdOQVRJT04gVU5JUVVFXG4gICAgICAgICAgICAgICAgaWYgKCF0b3RhbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgdG90YWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmoudG90YWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnICYmICFiZWhhdmlvcmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBiZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmJlaGF2aW9yYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uYWwnICYmICFmdW5jdGlvbmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICBmdW5jdGlvbmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2RvbWFpbicgJiYgIWRvbWFpblNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgZG9tYWluU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmRvbWFpbisrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFRSQUNLSU5HXG4gICAgICAgICAgICAgICAgZ2xvYmFsVG90YWxTZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnKSBnbG9iYWxCZWhhdmlvcmFsU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZnVuY3Rpb25hbCcpIGdsb2JhbEZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkb21haW4nKSBnbG9iYWxEb21haW5TZXQuYWRkKGtleSk7XG5cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkRhdGEucHVzaCh7XG4gICAgICAgICAgICAgICAgZGVzaWduYXRpb246IHJlc1tpXS5kZXNpZ25hdGlvbl9uYW1lLFxuICAgICAgICAgICAgICAgIHdpbmc6IHJlc1tpXS53aW5nX2RpdmlzaW9uX3NlY3Rpb24sXG4gICAgICAgICAgICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgICAgICAgcm9sZXNSZXNwb25zaWJpbGl0aWVzOiByZXNbaV0ucm9sZV9yZXNwb25zaWJpbGl0aWVzLFxuICAgICAgICAgICAgICAgIGFjdGl2aXRpZXM6IHJlc1tpXS5hY3Rpdml0aWVzLFxuICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iaixcbiAgICAgICAgICAgICAgICBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzOiBbLi4uYmVoYXZpb3JhbFNldF0sXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25hbENvbXBldGVuY2llczogWy4uLmZ1bmN0aW9uYWxTZXRdLFxuICAgICAgICAgICAgICAgIGRvbWFpbkNvbXBldGVuY2llczogWy4uLmRvbWFpblNldF0sXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3Vyc2VzOiByZXNbaV0/LmNicF9wbGFucz8uYXQoLTEpPy5zZWxlY3RlZF9jb3Vyc2VzIHx8IFtdXG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOKchSBTRVQgR0xPQkFMIENPVU5UUyBBRlRFUiBMT09QXG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmoudG90YWwgPSBnbG9iYWxUb3RhbFNldC5zaXplO1xuICAgICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmJlaGF2aW9yYWwgPSBnbG9iYWxCZWhhdmlvcmFsU2V0LnNpemU7XG4gICAgICAgICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouZnVuY3Rpb25hbCA9IGdsb2JhbEZ1bmN0aW9uYWxTZXQuc2l6ZTtcbiAgICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai5kb21haW4gPSBnbG9iYWxEb21haW5TZXQuc2l6ZTtcblxuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKVxuICAgICAgICAgICAgfSwgMTAwMCk7XG5cbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbihlcnJvcj8uZXJyb3I/LmRldGFpbCwgJ1gnLCB7XG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cblxuXG4gICAgfVxuICAgIGlmICh0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5zYk9yZ1R5cGUgPT09ICdzdGF0ZScpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICAgIGNvbnNvbGUubG9nKCd0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaicsIHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqKVxuICAgICAgbGV0IHN0YXRlX2NlbnRlcl9pZCA9IHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXJcbiAgICAgIGxldCBkZXBhcnRtZW50X2lkID0gdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHNcbiAgICAgIC8vIHRoaXMuc2hhcmVkU2VydmljZS5nZXRSb2xlTWFwcGluZ0J5U3RhdGVDZW50ZXJBbmREZXBhcnRtZW50KHN0YXRlX2NlbnRlcl9pZCwgZGVwYXJ0bWVudF9pZCkuc3Vic2NyaWJlKChyZXMpPT57XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKCdyZXMnLCByZXMpXG4gICAgICAvLyAgIGxldCBiZWhhdmlvcmFsQ29tcGV0ZW5jaWVzID1bXVxuICAgICAgLy8gICBsZXQgZnVuY3Rpb25hbENvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgbGV0IGRvbWFpbkNvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgZm9yKGxldCBpPTA7IGk8cmVzLmxlbmd0aDtpKyspIHtcbiAgICAgIC8vICAgIGJlaGF2aW9yYWxDb21wZXRlbmNpZXMgPSBbXVxuICAgICAgLy8gICAgZnVuY3Rpb25hbENvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgIGRvbWFpbkNvbXBldGVuY2llcyA9W11cbiAgICAgIC8vICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7dG90YWw6MCwgYmVoYXZpb3JhbDowLCBmdW5jdGlvbmFsOjAsIGRvbWFpbjowfVxuICAgICAgLy8gICByZXNbaV0uY29tcGV0ZW5jaWVzLmZvckVhY2goYyA9PiB7XG4gICAgICAvLyAgICBjb21wZXRlbmNpZXNPYmoudG90YWwrKztcbiAgICAgIC8vICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai50b3RhbCsrXG4gICAgICAvLyAgICAgaWYgKGMudHlwZS50b0xvd2VyQ2FzZSgpID09PSAnYmVoYXZpb3JhbCcpIHsgXG5cbiAgICAgIC8vICAgICAgYmVoYXZpb3JhbENvbXBldGVuY2llcy5wdXNoKGAke2MudGhlbWV9IC0gJHtjLnN1Yl90aGVtZX1gKVxuICAgICAgLy8gICAgICBjb21wZXRlbmNpZXNPYmouYmVoYXZpb3JhbCsrO1xuICAgICAgLy8gICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouYmVoYXZpb3JhbCsrXG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICAgIGlmIChjLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ2Z1bmN0aW9uYWwnKSB7XG4gICAgICAvLyAgICAgIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXMucHVzaChgJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YClcbiAgICAgIC8vICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgIC8vICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmZ1bmN0aW9uYWwrK1xuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgICBpZiAoYy50eXBlLnRvTG93ZXJDYXNlKCkgPT09ICdkb21haW4nKSB7IFxuICAgICAgLy8gICAgICBkb21haW5Db21wZXRlbmNpZXMucHVzaChgJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YClcbiAgICAgIC8vICAgICAgY29tcGV0ZW5jaWVzT2JqLmRvbWFpbisrO1xuICAgICAgLy8gICAgICB0aGlzLnRvdGFsQ29tcGV0ZW5jaWVPYmouZG9tYWluKytcblxuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgfSk7XG4gICAgICAvLyAgICBsZXQgb2JqOmFueSA9ICB7XG4gICAgICAvLyAgICAgIGRlc2lnbmF0aW9uOiByZXNbaV0uZGVzaWduYXRpb25fbmFtZSxcbiAgICAgIC8vICAgICAgd2luZzogcmVzW2ldLndpbmdfZGl2aXNpb25fc2VjdGlvbixcbiAgICAgIC8vICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAvLyAgICAgIHJvbGVzUmVzcG9uc2liaWxpdGllczogcmVzW2ldLnJvbGVfcmVzcG9uc2liaWxpdGllcyxcbiAgICAgIC8vICAgICAgYWN0aXZpdGllczpyZXNbaV0uYWN0aXZpdGllcyxcbiAgICAgIC8vICAgICAgY29tcGV0ZW5jaWVzT2JqOiBjb21wZXRlbmNpZXNPYmosXG4gICAgICAvLyAgICAgIGJlaGF2aW9yYWxDb21wZXRlbmNpZXM6IGJlaGF2aW9yYWxDb21wZXRlbmNpZXMsXG4gICAgICAvLyAgICAgIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXM6IGZ1bmN0aW9uYWxDb21wZXRlbmNpZXMsXG4gICAgICAvLyAgICAgIGRvbWFpbkNvbXBldGVuY2llczogZG9tYWluQ29tcGV0ZW5jaWVzXG4gICAgICAvLyAgICAgIC8vIGJlaGF2aW9yYWxDb21wZXRlbmNpZXM6IFtcbiAgICAgIC8vICAgICAgLy8gICBcIlN0cmF0ZWdpYyBMZWFkZXJzaGlwXCIsIFwiRXhlY3V0aXZlIFByZXNlbmNlXCIsIFwiSW5mbHVlbmNpbmcgYW5kIE5lZ290aWF0aW9uXCIsXG4gICAgICAvLyAgICAgIC8vICAgXCJSZWxhdGlvbnNoaXAgTWFuYWdlbWVudFwiLCBcIlZlcmJhbCAmIE5vbi1WZXJiYWwgRmx1ZW5jeVwiLCBcIlBsYW5uaW5nICYgUHJpb3JpdGl6YXRpb25cIixcbiAgICAgIC8vICAgICAgLy8gICBcIkFjY291bnRhYmlsaXR5XCIsIFwiQ29uZmxpY3QgTWFuYWdlbWVudFwiXG4gICAgICAvLyAgICAgIC8vIF0sXG4gICAgICAvLyAgICAgIC8vIGZ1bmN0aW9uYWxDb21wZXRlbmNpZXM6IFtcbiAgICAgIC8vICAgICAgLy8gICBcIlJ1bGVzIG9mIGJ1c2luZXNzIChBb0IvVG9CKVwiLCBcIkNhYmluZXQgbm90ZSB3cml0aW5nXCIsIFwiU3VibWlzc2lvbiBvZiBicmllZnMsIHN1cHBseSBvZiBpbmZvcm1hdGlvblwiLFxuICAgICAgLy8gICAgICAvLyAgIFwiUG9saWN5IGRlc2lnbi8gYW1lbmRtZW50XCIsIFwiUG9saWN5IGltcGxlbWVudGF0aW9uXCIsIFwiUG9saWN5IG1vbml0b3JpbmcgJiBpbXBhY3QgYXNzZXNzbWVudFwiLFxuICAgICAgLy8gICAgICAvLyAgIFwiUHJvamVjdCBQbGFubmluZ1wiLCBcIlByb2plY3QgRXZhbHVhdGlvbiAmIE1vbml0b3JpbmdcIiwgXCJDcmVhdGlvbiBvZiBNJkUgRnJhbWV3b3JrXCIsXG4gICAgICAvLyAgICAgIC8vICAgXCJDaXRpemVuIFBhcnRuZXJpbmcgJiBDb2xsYWJvcmF0aW9uXCIsIFwiUHVibGljIEdyaWV2YW5jZSBIYW5kbGluZ1wiXG4gICAgICAvLyAgICAgIC8vIF0sXG4gICAgICAvLyAgICAgIC8vIGRvbWFpbkNvbXBldGVuY2llczogW1xuICAgICAgLy8gICAgICAvLyAgIFwiU3RyYXRlZ2ljIFBvbGljeSBGb3JtdWxhdGlvblwiLCBcIkludGVyLW1pbmlzdGVyaWFsICYgU3RhdGUgR292ZXJubWVudCBDb29yZGluYXRpb25cIixcbiAgICAgIC8vICAgICAgLy8gICBcIlNlbmlvciBMZWFkZXJzaGlwIEdvdmVybmFuY2UgJiBPdmVyc2lnaHRcIiwgXCJMZWdpc2xhdGl2ZSAmIFBhcmxpYW1lbnRhcnkgQWZmYWlycyBNYW5hZ2VtZW50XCIsXG4gICAgICAvLyAgICAgIC8vICAgXCJOYXRpb25hbCBQcm9ncmFtbWUgU3RyYXRlZ2ljIERpcmVjdGlvblwiXG4gICAgICAvLyAgICAgIC8vIF0sXG4gICAgICAvLyAgICAgIC8vIGNvbXBsZXRpb25SYXRlOiB7IGJlaGF2aW9yYWw6IDg1LCBmdW5jdGlvbmFsOiA3OCwgZG9tYWluOiA5MiB9XG4gICAgICAvLyAgICB9XG5cblxuICAgICAgLy8gICB0aGlzLmRlc2lnbmF0aW9uRGF0YS5wdXNoKG9iailcbiAgICAgIC8vICAgfVxuICAgICAgLy8gICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAvLyAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgLy8gICAgdGhpcy5zY3JvbGxUb1RvcCgpXG4gICAgICAvLyAgIH0sIDEwMDApO1xuICAgICAgLy8gICBjb25zb2xlLmxvZygndGhpcy5kZXNpZ25hdGlvbkRhdGEnLCB0aGlzLmRlc2lnbmF0aW9uRGF0YSlcbiAgICAgIC8vICAgY29uc29sZS5sb2coJ3RoaXMudG90YWxDb21wZXRlbmNpZU9iaicsIHRoaXMudG90YWxDb21wZXRlbmNpZU9iaiApXG5cbiAgICAgIC8vICB9KVxuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmdldFJvbGVNYXBwaW5nQnlTdGF0ZUNlbnRlckFuZERlcGFydG1lbnQoc3RhdGVfY2VudGVyX2lkLCBkZXBhcnRtZW50X2lkKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICBjb25zb2xlLmxvZygncmVzJywgcmVzKVxuICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iaiA9IHsgdG90YWw6IDAsIGJlaGF2aW9yYWw6IDAsIGZ1bmN0aW9uYWw6IDAsIGRvbWFpbjogMCB9O1xuICAgICAgICAgIHRoaXMuZGVzaWduYXRpb25EYXRhID0gW107XG5cbiAgICAgICAgICAvLyDinIUgR0xPQkFMIFVOSVFVRSBTRVRTIChmb3Igb3ZlcmFsbCB1bmlxdWUgY291bnQpXG4gICAgICAgICAgY29uc3QgZ2xvYmFsVG90YWxTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgICBjb25zdCBnbG9iYWxCZWhhdmlvcmFsU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsRnVuY3Rpb25hbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgIGNvbnN0IGdsb2JhbERvbWFpblNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgLy8g4pyFIExPQ0FMIFVOSVFVRSBTRVRTIChwZXIgZGVzaWduYXRpb24pXG4gICAgICAgICAgICBjb25zdCB0b3RhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgYmVoYXZpb3JhbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZnVuY3Rpb25hbFNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICAgICAgY29uc3QgZG9tYWluU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICAgICAgICAgIGxldCBjb21wZXRlbmNpZXNPYmogPSB7IHRvdGFsOiAwLCBiZWhhdmlvcmFsOiAwLCBmdW5jdGlvbmFsOiAwLCBkb21haW46IDAgfTtcblxuICAgICAgICAgICAgcmVzW2ldPy5jb21wZXRlbmNpZXM/LmZvckVhY2goYyA9PiB7XG5cbiAgICAgICAgICAgICAgY29uc3QgdGhlbWUgPSAoYz8udGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBjb25zdCBzdWJUaGVtZSA9IChjPy5zdWJfdGhlbWUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBjb25zdCB0eXBlID0gKGM/LnR5cGUgfHwgJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgICAgICAgIGlmICghdGhlbWUgJiYgIXN1YlRoZW1lKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7dGhlbWV9LSR7c3ViVGhlbWV9YDtcblxuICAgICAgICAgICAgICAvLyDinIUgUEVSIERFU0lHTkFUSU9OIFVOSVFVRVxuICAgICAgICAgICAgICBpZiAoIXRvdGFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgdG90YWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLnRvdGFsKys7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2JlaGF2aW9yYWwnICYmICFiZWhhdmlvcmFsU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgYmVoYXZpb3JhbFNldC5hZGQoa2V5KTtcbiAgICAgICAgICAgICAgICBjb21wZXRlbmNpZXNPYmouYmVoYXZpb3JhbCsrO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdmdW5jdGlvbmFsJyAmJiAhZnVuY3Rpb25hbFNldC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgICAgY29tcGV0ZW5jaWVzT2JqLmZ1bmN0aW9uYWwrKztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZG9tYWluJyAmJiAhZG9tYWluU2V0LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgZG9tYWluU2V0LmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIGNvbXBldGVuY2llc09iai5kb21haW4rKztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIC8vIOKchSBHTE9CQUwgVU5JUVVFIFRSQUNLSU5HXG4gICAgICAgICAgICAgIGdsb2JhbFRvdGFsU2V0LmFkZChrZXkpO1xuXG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnYmVoYXZpb3JhbCcpIGdsb2JhbEJlaGF2aW9yYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZnVuY3Rpb25hbCcpIGdsb2JhbEZ1bmN0aW9uYWxTZXQuYWRkKGtleSk7XG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnZG9tYWluJykgZ2xvYmFsRG9tYWluU2V0LmFkZChrZXkpO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5kZXNpZ25hdGlvbkRhdGEucHVzaCh7XG4gICAgICAgICAgICAgIGRlc2lnbmF0aW9uOiByZXNbaV0uZGVzaWduYXRpb25fbmFtZSxcbiAgICAgICAgICAgICAgd2luZzogcmVzW2ldLndpbmdfZGl2aXNpb25fc2VjdGlvbixcbiAgICAgICAgICAgICAgdXBkYXRlZDogcmVzW2ldLnVwZGF0ZWRfYXQsXG4gICAgICAgICAgICAgIHJvbGVzUmVzcG9uc2liaWxpdGllczogcmVzW2ldLnJvbGVfcmVzcG9uc2liaWxpdGllcyxcbiAgICAgICAgICAgICAgYWN0aXZpdGllczogcmVzW2ldLmFjdGl2aXRpZXMsXG4gICAgICAgICAgICAgIGNvbXBldGVuY2llc09iaixcbiAgICAgICAgICAgICAgYmVoYXZpb3JhbENvbXBldGVuY2llczogWy4uLmJlaGF2aW9yYWxTZXRdLFxuICAgICAgICAgICAgICBmdW5jdGlvbmFsQ29tcGV0ZW5jaWVzOiBbLi4uZnVuY3Rpb25hbFNldF0sXG4gICAgICAgICAgICAgIGRvbWFpbkNvbXBldGVuY2llczogWy4uLmRvbWFpblNldF0sXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ291cnNlczogcmVzW2ldPy5jYnBfcGxhbnM/LmF0KC0xKT8uc2VsZWN0ZWRfY291cnNlcyB8fCBbXVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyDinIUgU0VUIEdMT0JBTCBDT1VOVFMgQUZURVIgTE9PUFxuICAgICAgICAgIHRoaXMudG90YWxDb21wZXRlbmNpZU9iai50b3RhbCA9IGdsb2JhbFRvdGFsU2V0LnNpemU7XG4gICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmJlaGF2aW9yYWwgPSBnbG9iYWxCZWhhdmlvcmFsU2V0LnNpemU7XG4gICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmZ1bmN0aW9uYWwgPSBnbG9iYWxGdW5jdGlvbmFsU2V0LnNpemU7XG4gICAgICAgICAgdGhpcy50b3RhbENvbXBldGVuY2llT2JqLmRvbWFpbiA9IGdsb2JhbERvbWFpblNldC5zaXplO1xuXG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG5cbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKClcbiAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy5kZXNpZ25hdGlvbkRhdGEnLCB0aGlzLmRlc2lnbmF0aW9uRGF0YSlcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhpcy50b3RhbENvbXBldGVuY2llT2JqJywgdGhpcy50b3RhbENvbXBldGVuY2llT2JqKVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oZXJyb3I/LmVycm9yPy5kZXRhaWwsICdYJywge1xuICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG5cblxuICB9XG4gIGdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlOiBzdHJpbmcsIGNvdXJzZTogYW55KTogYW55W10ge1xuICAgIGlmICghY291cnNlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgbGV0IGNvbXBldGVuY2llczogYW55W10gPSBbXTtcblxuICAgIC8vIEFJIFJlY29tbWVuZGVkIC8gUHVibGljIC8gVXNlciBBZGRlZFxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvdXJzZS5jb21wZXRlbmNpZXMpKSB7XG4gICAgICBjb21wZXRlbmNpZXMgPSBjb3Vyc2UuY29tcGV0ZW5jaWVzO1xuICAgIH1cbiAgICAvLyBNYW51YWxseSBTdWdnZXN0ZWQgLSBpR09UICh2NilcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvdXJzZS5jb21wZXRlbmNpZXNfdjYpKSB7XG4gICAgICBjb21wZXRlbmNpZXMgPSBjb3Vyc2UuY29tcGV0ZW5jaWVzX3Y2O1xuICAgIH1cblxuICAgIGlmICghY29tcGV0ZW5jaWVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRUeXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcblxuICAgIHJldHVybiBjb21wZXRlbmNpZXMuZmlsdGVyKGMgPT4ge1xuICAgICAgaWYgKCFjPy5jb21wZXRlbmN5QXJlYU5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhcmVhID0gYy5jb21wZXRlbmN5QXJlYU5hbWUudG9Mb3dlckNhc2UoKS50cmltKCk7XG5cbiAgICAgIC8vIGhhbmRsZSBiZWhhdmlvdXJhbCAvIGJlaGF2aW9yYWxcbiAgICAgIGlmIChub3JtYWxpemVkVHlwZSA9PT0gJ2JlaGF2aW91cmFsJyB8fCBub3JtYWxpemVkVHlwZSA9PT0gJ2JlaGF2aW9yYWwnKSB7XG4gICAgICAgIHJldHVybiBhcmVhID09PSAnYmVoYXZpb3VyYWwnIHx8IGFyZWEgPT09ICdiZWhhdmlvcmFsJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFyZWEgPT09IG5vcm1hbGl6ZWRUeXBlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0RGlzcGxheWVkQ29tcGV0ZW5jaWVzKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGFueVtdIHtcbiAgICBjb25zdCBjb21wZXRlbmNpZXMgPSB0aGlzLmdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlLCBpbmRleCk7XG4gICAgY29uc3Qga2V5ID0gYCR7aW5kZXh9LSR7dHlwZX1gO1xuXG4gICAgaWYgKHRoaXMuZXhwYW5kZWRDb21wZXRlbmNpZXNba2V5XSkge1xuICAgICAgcmV0dXJuIGNvbXBldGVuY2llcztcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcGV0ZW5jaWVzLnNsaWNlKDAsIDIpO1xuICB9XG5cbiAgdG9nZ2xlQ29tcGV0ZW5jaWVzKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9IGAke2luZGV4fS0ke3R5cGV9YDtcbiAgICB0aGlzLmV4cGFuZGVkQ29tcGV0ZW5jaWVzW2tleV0gPSAhdGhpcy5leHBhbmRlZENvbXBldGVuY2llc1trZXldO1xuICB9XG5cbiAgaXNFeHBhbmRlZCh0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCBrZXkgPSBgJHtpbmRleH0tJHt0eXBlfWA7XG4gICAgcmV0dXJuIHRoaXMuZXhwYW5kZWRDb21wZXRlbmNpZXNba2V5XSB8fCBmYWxzZTtcbiAgfVxuXG4gIGhhc01vcmVUaGFuVHdvKHR5cGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlLCBpbmRleCkubGVuZ3RoID4gMjtcbiAgfVxuICBnZXRSZW1haW5pbmdDb3VudCh0eXBlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsQ291bnQgPSB0aGlzLmdldENvbXBldGVuY2llc0J5VHlwZSh0eXBlLCBpbmRleCkubGVuZ3RoO1xuICAgIHJldHVybiB0b3RhbENvdW50IC0gMjtcbiAgfVxuICB1cGRhdGVDb21wZXRlbmN5Q291bnRzKCkge1xuICAgIC8vIGNvbnN0IGNvbXBzID0gdGhpcy5jb21wZXRlbmNpZXNBcnJheS52YWx1ZTtcbiAgICB0aGlzLmNvbXBldGVuY2llc0NvdW50ID0geyB0b3RhbDogMCwgcHVibGljX2NvdXJzZXM6IDAsIGlnb3Q6IDAgfTtcbiAgICB0aGlzLmZpbHRlcmRDb3Vyc2VzLmZvckVhY2goYyA9PiB7XG4gICAgICB0aGlzLmNvbXBldGVuY2llc0NvdW50LnRvdGFsKys7XG4gICAgICBpZiAoYy5pc19wdWJsaWMpIHRoaXMuY29tcGV0ZW5jaWVzQ291bnQucHVibGljX2NvdXJzZXMrKztcbiAgICAgIGlmICghYy5pc19wdWJsaWMpIHRoaXMuY29tcGV0ZW5jaWVzQ291bnQuaWdvdCsrO1xuICAgIH0pO1xuICB9XG5cbiAgY29uZmlybURlbGV0ZUNvdXJzZShpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCByb2xlTWFwcGluZ0lkID0gdGhpcy5yZWNvbW1lbmRlZF9jb3Vyc2VfaWQ7XG4gICAgY29uc3QgY291cnNlSWRlbnRpZmllciA9XG4gICAgICBpdGVtPy5jb3Vyc2VfaWRlbnRpZmllciB8fCBpdGVtPy5pZCB8fCBpdGVtPy5pZGVudGlmaWVyO1xuXG4gICAgaWYgKCFyb2xlTWFwcGluZ0lkIHx8ICFjb3Vyc2VJZGVudGlmaWVyKSB7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ1VuYWJsZSB0byBkZWxldGUgY291cnNlJywgJ1gnLCB7XG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICB0aGlzLnNoYXJlZFNlcnZpY2VcbiAgICAgIC5kZWxldGVSZWNvbW1lbmRlZENvdXJzZShyb2xlTWFwcGluZ0lkLCBjb3Vyc2VJZGVudGlmaWVyKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAvLyBSZW1vdmUgZnJvbSBVSVxuICAgICAgICAgIHRoaXMuZmlsdGVyZENvdXJzZXMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSBjb3VudHNcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbXBldGVuY3lDb3VudHMoKTtcblxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdDb3Vyc2UgZGVsZXRlZCBzdWNjZXNzZnVsbHknLCAnWCcsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1zdWNjZXNzJ11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKFxuICAgICAgICAgICAgZXJyb3I/LmVycm9yPy5kZXRhaWwgfHwgJ0ZhaWxlZCB0byBkZWxldGUgY291cnNlJyxcbiAgICAgICAgICAgICdYJyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItZXJyb3InXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlQ2FyZChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zb2xlLmxvZyhcIml0ZW0sIGluZGV4XCIsIGl0ZW0sIGluZGV4KVxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oRGVsZXRlUm9sZU1hcHBpbmdQb3B1cENvbXBvbmVudCwge1xuICAgICAgd2lkdGg6ICc2MDBweCcsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHBsYW5JZDogdGhpcy5wbGFuRGF0YT8uaWQsICAgLy8gcm9sZSBtYXBwaW5nIGlkXG4gICAgICAgIGNvdXJzZTogaXRlbSwgICAgICAgICAgICAgICAgLy8gY291cnNlIG9iamVjdFxuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGZyb206ICd2aWV3Q291cnNlJyAgICAgICAgICAgICAgICAgLy8gaW5kZXggZm9yIFVJIHJlbW92YWxcbiAgICAgIH0sXG4gICAgICBwYW5lbENsYXNzOiAndmlldy1jYnAtcGxhbi1wb3B1cCcsXG4gICAgICBtaW5IZWlnaHQ6ICczMDBweCcsXG4gICAgICBtYXhIZWlnaHQ6ICc5MHZoJyxcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZVxuICAgIH0pO1xuXG4gICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICBpZiAocmVzdWx0ID09PSAnc2F2ZWQnKSB7XG4gICAgICAgIHRoaXMuY29uZmlybURlbGV0ZUNvdXJzZShpdGVtLCBpbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgc2Nyb2xsVG9Ub3AoKTogdm9pZCB7XG5cbiAgICAvLyBpZiAodGhpcy5wZGZDb250ZW50ICYmIHRoaXMucGRmQ29udGVudC5uYXRpdmVFbGVtZW50ICYmIHRoaXMucGRmQ29udGVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gICB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgIC8vIH0gZWxzZSB7XG4gICAgLy8gICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICAvLyB9XG4gICAgLy8gY29uc3QgZGlhbG9nQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWF0LWRpYWxvZy1jb250YWluZXInKTtcbiAgICAvLyBpZiAoZGlhbG9nQ29udGFpbmVyKSB7XG4gICAgLy8gICBkaWFsb2dDb250YWluZXIuc2Nyb2xsVG9wID0gMDtcbiAgICAvLyB9XG4gIH1cblxuICBkb3dubG9hZFBERigpIHtcbiAgICB0aGlzLnBkZlRyaWdnZXIgPSB0cnVlXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAvLyAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudDtcblxuICAgIC8vIC8vIFdhaXQgZm9yIGltYWdlcyB0byBsb2FkXG4gICAgLy8gY29uc3QgaW1hZ2VzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbWcnKTtcbiAgICAvLyBjb25zdCBwcm9taXNlcyA9IEFycmF5LmZyb20oaW1hZ2VzKS5tYXAoKGltZzogSFRNTEltYWdlRWxlbWVudCkgPT4ge1xuICAgIC8vICAgaWYgKGltZy5jb21wbGV0ZSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIC8vICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gaW1nLm9ubG9hZCA9IHJlc29sdmUpO1xuICAgIC8vIH0pO1xuXG4gICAgLy8gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgIC8vICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAvLyAgICAgbWFyZ2luOiAwLjUsXG4gICAgLy8gICAgIGZpbGVuYW1lOiAnRmluYWwgQ0JQIFBsYW4ucGRmJyxcbiAgICAvLyAgICAgaW1hZ2U6IHsgdHlwZTogJ2pwZWcnLCBxdWFsaXR5OiAwLjk4IH0sXG4gICAgLy8gICAgIGh0bWwyY2FudmFzOiB7XG4gICAgLy8gICAgICAgc2NhbGU6IDIsXG4gICAgLy8gICAgICAgdXNlQ09SUzogdHJ1ZSxcbiAgICAvLyAgICAgICBzY3JvbGxZOiAwLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgICBqc1BERjoge1xuICAgIC8vICAgICAgIHVuaXQ6ICdpbicsXG4gICAgLy8gICAgICAgZm9ybWF0OiAnYTQnLFxuICAgIC8vICAgICAgIG9yaWVudGF0aW9uOiAncG9ydHJhaXQnXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICAgIHBhZ2VicmVhazoge1xuICAgIC8vICAgICAgIG1vZGU6IFsnY3NzJywgJ2xlZ2FjeScsICdhdm9pZC1hbGwnXVxuICAgIC8vICAgICB9XG4gICAgLy8gICB9O1xuXG4gICAgLy8gICBodG1sMnBkZigpLmZyb20oZWxlbWVudCkuc2V0KG9wdGlvbnMpLnNhdmUoKTtcbiAgICAvLyB9KTtcbiAgICAvL2NvbnN0IGVsZW1lbnQgPSB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudDtcblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMucGRmQ29udGVudC5uYXRpdmVFbGVtZW50O1xuICAgIGh0bWwyY2FudmFzKGVsZW1lbnQsIHtcbiAgICAgIHNjYWxlOiAxLjI1LFxuICAgICAgdXNlQ09SUzogdHJ1ZSxcbiAgICAgIHNjcm9sbFk6IDAsXG4gICAgICBsb2dnaW5nOiB0cnVlLFxuICAgIH0pLnRoZW4oKGNhbnZhcykgPT4ge1xuICAgICAgY29uc3QgcGRmID0gbmV3IGpzUERGKCdwJywgJ21tJywgJ2E0Jyk7XG4gICAgICBjb25zdCBwZGZXaWR0aCA9IHBkZi5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRXaWR0aCgpO1xuICAgICAgY29uc3QgcGRmSGVpZ2h0ID0gcGRmLmludGVybmFsLnBhZ2VTaXplLmdldEhlaWdodCgpO1xuXG4gICAgICAvLyBNYXJnaW5zXG4gICAgICBjb25zdCBtYXJnaW5MZWZ0ID0gNTtcbiAgICAgIGNvbnN0IG1hcmdpblRvcCA9IDE1O1xuICAgICAgY29uc3QgbWFyZ2luUmlnaHQgPSA1O1xuICAgICAgY29uc3QgbWFyZ2luQm90dG9tID0gMTU7XG5cbiAgICAgIGNvbnN0IHVzYWJsZVdpZHRoID0gcGRmV2lkdGggLSBtYXJnaW5MZWZ0IC0gbWFyZ2luUmlnaHQ7XG4gICAgICBjb25zdCB1c2FibGVIZWlnaHQgPSBwZGZIZWlnaHQgLSBtYXJnaW5Ub3AgLSBtYXJnaW5Cb3R0b207XG5cbiAgICAgIGNvbnN0IGNhbnZhc1dpZHRoID0gY2FudmFzLndpZHRoO1xuICAgICAgY29uc3QgY2FudmFzSGVpZ2h0ID0gY2FudmFzLmhlaWdodDtcblxuICAgICAgY29uc3QgcmF0aW8gPSBjYW52YXNXaWR0aCAvIHVzYWJsZVdpZHRoO1xuICAgICAgY29uc3QgcGFnZUhlaWdodFB4ID0gdXNhYmxlSGVpZ2h0ICogcmF0aW87XG5cbiAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwoY2FudmFzSGVpZ2h0IC8gcGFnZUhlaWdodFB4KTtcblxuICAgICAgZm9yIChsZXQgcGFnZSA9IDA7IHBhZ2UgPCB0b3RhbFBhZ2VzOyBwYWdlKyspIHtcbiAgICAgICAgY29uc3QgY2FudmFzUGFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjYW52YXNQYWdlLndpZHRoID0gY2FudmFzV2lkdGg7XG4gICAgICAgIGNhbnZhc1BhZ2UuaGVpZ2h0ID0gTWF0aC5taW4ocGFnZUhlaWdodFB4LCBjYW52YXNIZWlnaHQgLSBwYWdlICogcGFnZUhlaWdodFB4KTtcblxuICAgICAgICBjb25zdCBjdHggPSBjYW52YXNQYWdlLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGlmIChjdHgpIHtcbiAgICAgICAgICBjdHguZmlsbFN0eWxlID0gJyNmZmZmZmYnO1xuICAgICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBjYW52YXNQYWdlLndpZHRoLCBjYW52YXNQYWdlLmhlaWdodCk7XG5cbiAgICAgICAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgICAgICAgY2FudmFzLFxuICAgICAgICAgICAgMCwgcGFnZSAqIHBhZ2VIZWlnaHRQeCxcbiAgICAgICAgICAgIGNhbnZhc1dpZHRoLCBjYW52YXNQYWdlLmhlaWdodCxcbiAgICAgICAgICAgIDAsIDAsXG4gICAgICAgICAgICBjYW52YXNXaWR0aCwgY2FudmFzUGFnZS5oZWlnaHRcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW1nRGF0YSA9IGNhbnZhc1BhZ2UudG9EYXRhVVJMKCdpbWFnZS9wbmcnLCAxKTtcbiAgICAgICAgaWYgKHBhZ2UgPiAwKSBwZGYuYWRkUGFnZSgpO1xuICAgICAgICBjb25zdCBpbWdIZWlnaHRNTSA9IGNhbnZhc1BhZ2UuaGVpZ2h0IC8gcmF0aW87XG4gICAgICAgIHBkZi5hZGRJbWFnZShpbWdEYXRhLCAnUE5HJywgbWFyZ2luTGVmdCwgbWFyZ2luVG9wLCB1c2FibGVXaWR0aCwgaW1nSGVpZ2h0TU0pO1xuICAgICAgfVxuXG4gICAgICBwZGYuc2F2ZSgnRmluYWxfQ0JQLnBkZicpO1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdQREYgZ2VuZXJhdGlvbiBlcnJvcjonLCBlcnJvcik7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB9KTtcblxuXG5cblxuXG5cblxuICB9XG5cbiAgZG93bmxvYWRQREZOZXcoKSB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnBkZkNvbnRlbnQubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IG9wdCA9IHtcbiAgICAgIG1hcmdpbjogWzEwLCA1LCA1LCAxMF0sIC8vIHRvcCwgbGVmdCwgYm90dG9tLCByaWdodCBpbiBtbVxuICAgICAgZmlsZW5hbWU6ICdDQlBfUGxhbi5wZGYnLFxuICAgICAgaW1hZ2U6IHsgdHlwZTogJ2pwZWcnLCBxdWFsaXR5OiAwLjg1IH0sXG4gICAgICBodG1sMmNhbnZhczogeyBzY2FsZTogMS41LCB1c2VDT1JTOiB0cnVlLCBsb2dnaW5nOiBmYWxzZSB9LFxuICAgICAganNQREY6IHsgdW5pdDogJ21tJywgZm9ybWF0OiAnYTQnLCBvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScgfSxcbiAgICAgIHBhZ2VicmVhazogeyBtb2RlOiBbJ2F2b2lkLWFsbCcsICdjc3MnLCAnbGVnYWN5J10gfSAvLyBhdm9pZCBjdXR0aW5nIHRleHRcbiAgICB9O1xuXG4gICAgaHRtbDJwZGYoKVxuICAgICAgLnNldChvcHQpXG4gICAgICAuZnJvbShlbGVtZW50KVxuICAgICAgLnNhdmUoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAvLyBQREYgZG93bmxvYWQgZmluaXNoZWRcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgLy8gSGFuZGxlIGVycm9ycyBhbmQgc3RvcCBsb2FkaW5nXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH0sIDIwMDApO1xuXG5cblxuICB9XG5cblxuXG4gIGdlbmVyYXRlRXhjZWwoanNvbkFycmF5OiBhbnlbXSwgZmlsZW5hbWU6IHN0cmluZyA9IFwiZmluYWwueGxzeFwiKSB7XG4gICAgY29uc29sZS5sb2coJ2pzb25BcnJheScsIGpzb25BcnJheSlcblxuICAgIGlmICghanNvbkFycmF5IHx8IGpzb25BcnJheS5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIC8vIC0tLS0tLS0tIE1BSU4gSEVBREVSIEZST00gRklSU1QgT0JKRUNUIC0tLS0tLS0tLVxuICAgIGNvbnN0IGZpcnN0T2JqID0ganNvbkFycmF5WzBdO1xuICAgIGxldCB0aXRsZSA9IGZpcnN0T2JqLnN0YXRlX2NlbnRlcl9uYW1lIHx8IFwiXCI7XG4gICAgaWYgKGZpcnN0T2JqLmRlcGFydG1lbnRfbmFtZSkgdGl0bGUgKz0gXCIgLyBcIiArIGZpcnN0T2JqLmRlcGFydG1lbnRfbmFtZTtcblxuICAgIC8vIC0tLS0tLS0tIENPTFVNTiBIRUFERVJTIC0tLS0tLS0tLVxuICAgIGNvbnN0IGhlYWRlcnMgPSBbXG4gICAgICBcIkRlc2lnbmF0aW9uXCIsXG4gICAgICBcIlJvbGUgJiBSZXNwb25zaWJpbGl0aWVzXCIsXG4gICAgICBcIkFjdGl2aXRpZXNcIixcbiAgICAgIFwiQmVoYXZpb3JhbCBDb21wZXRlbmNpZXNcIixcbiAgICAgIFwiRnVuY3Rpb25hbCBDb21wZXRlbmNpZXNcIixcbiAgICAgIFwiRG9tYWluIENvbXBldGVuY2llc1wiLFxuICAgICAgJ2NvdXJzZURldGFpbHMnXG4gICAgXTtcblxuICAgIC8vIC0tLS0tLS0tIERBVEEgUk9XUyAtLS0tLS0tLS1cbiAgICBjb25zdCBkYXRhUm93cyA9IGpzb25BcnJheS5tYXAoanNvbiA9PiB7XG4gICAgICBjb25zdCBjb3Vyc2VzID1cbiAgICAgICAganNvbj8uY2JwX3BsYW5zPy5sZW5ndGhcbiAgICAgICAgICA/IGpzb24uY2JwX3BsYW5zW2pzb24uY2JwX3BsYW5zLmxlbmd0aCAtIDFdPy5zZWxlY3RlZF9jb3Vyc2VzIHx8IFtdXG4gICAgICAgICAgOiBbXTtcblxuICAgICAgY29uc3QgY291cnNlRGV0YWlscyA9IGNvdXJzZXMubWFwKChjOiBhbnksIGk6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBjb21wZXRlbmNpZXMgPSAoYy5jb21wZXRlbmNpZXMgfHwgW10pXG4gICAgICAgICAgLm1hcCgoY2M6IGFueSkgPT5cbiAgICAgICAgICAgIGAke2NjLmNvbXBldGVuY3lBcmVhTmFtZX0g4oaSICR7Y2MuY29tcGV0ZW5jeVRoZW1lTmFtZX0g4oaSICR7Y2MuY29tcGV0ZW5jeVN1YlRoZW1lTmFtZX1gXG4gICAgICAgICAgKVxuICAgICAgICAgIC5qb2luKFwiIHwgXCIpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgYCR7aSArIDF9LiBDb3Vyc2UgTmFtZTogJHtjPy5jb3Vyc2V9XFxuYCArXG4gICAgICAgICAgYCAgIElkZW50aWZpZXI6ICR7Yz8uaWRlbnRpZmllcn1cXG5gICtcbiAgICAgICAgICBgICAgRHVyYXRpb24gKG1pbnMpOiAke01hdGgucm91bmQoK2MuZHVyYXRpb24gLyA2MCl9XFxuYCArXG4gICAgICAgICAgYCAgIFJlbGV2YW5jeTogJHtjPy5yZWxldmFuY3l9JVxcbmAgK1xuICAgICAgICAgIGAgICBSYXRpb25hbGU6ICR7Yz8ucmF0aW9uYWxlfVxcbmAgK1xuICAgICAgICAgIGAgICBPcmdhbmlzYXRpb246ICR7KGM/Lm9yZ2FuaXNhdGlvbiB8fCBbXSkuam9pbihcIiwgXCIpfVxcbmAgK1xuICAgICAgICAgIGAgICBDb21wZXRlbmNpZXM6ICR7Y29tcGV0ZW5jaWVzfWBcbiAgICAgICAgKTtcbiAgICAgIH0pLmpvaW4oXCJcXG5cXG5cIik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBcIkRlc2lnbmF0aW9uXCI6IGAke2pzb24uZGVzaWduYXRpb25fbmFtZX0gOiBXaW5nL0RpdmlzaW9uIC0gJHtqc29uLndpbmdfZGl2aXNpb25fc2VjdGlvbn1gLFxuICAgICAgICBcIlJvbGUgJiBSZXNwb25zaWJpbGl0aWVzXCI6IChqc29uLnJvbGVfcmVzcG9uc2liaWxpdGllcyB8fCBbXSlcbiAgICAgICAgICAubWFwKCh2OiBzdHJpbmcsIGk6IG51bWJlcikgPT4gYCR7aSArIDF9LiAke3Z9YCkuam9pbihcIlxcblxcblwiKSxcbiAgICAgICAgXCJBY3Rpdml0aWVzXCI6IChqc29uLmFjdGl2aXRpZXMgfHwgW10pXG4gICAgICAgICAgLm1hcCgodjogc3RyaW5nLCBpOiBudW1iZXIpID0+IGAke2kgKyAxfS4gJHt2fWApLmpvaW4oXCJcXG5cXG5cIiksXG4gICAgICAgIFwiQmVoYXZpb3JhbCBDb21wZXRlbmNpZXNcIjogKGpzb24uY29tcGV0ZW5jaWVzIHx8IFtdKVxuICAgICAgICAgIC5maWx0ZXIoKGM6IGFueSkgPT4gYy50eXBlID09PSBcIkJlaGF2aW9yYWxcIilcbiAgICAgICAgICAubWFwKChjOiBhbnksIGk6IG51bWJlcikgPT4gYCR7aSArIDF9LiAke2MudGhlbWV9IC0gJHtjLnN1Yl90aGVtZX1gKS5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgICBcIkZ1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzXCI6IChqc29uLmNvbXBldGVuY2llcyB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChjOiBhbnkpID0+IGMudHlwZSA9PT0gXCJGdW5jdGlvbmFsXCIpXG4gICAgICAgICAgLm1hcCgoYzogYW55LCBpOiBudW1iZXIpID0+IGAke2kgKyAxfS4gJHtjLnRoZW1lfSAtICR7Yy5zdWJfdGhlbWV9YCkuam9pbihcIlxcblxcblwiKSxcbiAgICAgICAgXCJEb21haW4gQ29tcGV0ZW5jaWVzXCI6IChqc29uLmNvbXBldGVuY2llcyB8fCBbXSlcbiAgICAgICAgICAuZmlsdGVyKChjOiBhbnkpID0+IGMudHlwZSA9PT0gXCJEb21haW5cIilcbiAgICAgICAgICAubWFwKChjOiBhbnksIGk6IG51bWJlcikgPT4gYCR7aSArIDF9LiAke2MudGhlbWV9IC0gJHtjLnN1Yl90aGVtZX1gKS5qb2luKFwiXFxuXFxuXCIpLFxuICAgICAgICBcIkNvdXJzZSBEZXRhaWxzXCI6IGNvdXJzZURldGFpbHNcbiAgICAgIH07XG4gICAgfSk7XG5cblxuICAgIC8vIC0tLS0tLS0tIENSRUFURSBXT1JLU0hFRVQgLS0tLS0tLS0tXG4gICAgY29uc3Qgd3MgPSBYTFNYLnV0aWxzLmFvYV90b19zaGVldChbXSk7XG5cbiAgICAvLyBNYWluIGhlYWRlciAobWVyZ2VkKVxuICAgIFhMU1gudXRpbHMuc2hlZXRfYWRkX2FvYSh3cywgW1t0aXRsZV1dLCB7IG9yaWdpbjogXCJBMVwiIH0pO1xuICAgIHdzWychbWVyZ2VzJ10gPSBbe1xuICAgICAgczogeyByOiAwLCBjOiAwIH0sXG4gICAgICBlOiB7IHI6IDAsIGM6IGhlYWRlcnMubGVuZ3RoIC0gMSB9XG4gICAgfV07XG5cbiAgICAvLyBDb2x1bW4gaGVhZGVycyBhdCByb3cgMlxuICAgIFhMU1gudXRpbHMuc2hlZXRfYWRkX2FvYSh3cywgW2hlYWRlcnNdLCB7IG9yaWdpbjogXCJBMlwiIH0pO1xuXG4gICAgLy8gU3R5bGUgY29sdW1uIGhlYWRlcnNcbiAgICBoZWFkZXJzLmZvckVhY2goKGhlYWRlciwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGNlbGxBZGRyZXNzID0gWExTWC51dGlscy5lbmNvZGVfY2VsbCh7IHI6IDEsIGM6IGluZGV4IH0pO1xuICAgICAgaWYgKHdzW2NlbGxBZGRyZXNzXSkge1xuICAgICAgICB3c1tjZWxsQWRkcmVzc10ucyA9IHtcbiAgICAgICAgICBmb250OiB7IGJvbGQ6IHRydWUgfSxcbiAgICAgICAgICBmaWxsOiB7IHBhdHRlcm5UeXBlOiBcInNvbGlkXCIsIGZnQ29sb3I6IHsgcmdiOiBcIkZGRkYwMFwiIH0gfSxcbiAgICAgICAgICBhbGlnbm1lbnQ6IHsgaG9yaXpvbnRhbDogXCJjZW50ZXJcIiwgdmVydGljYWw6IFwiY2VudGVyXCIsIHdyYXBUZXh0OiB0cnVlIH1cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIEluc2VydCBkYXRhIHJvd3Mgc3RhcnRpbmcgZnJvbSByb3cgM1xuICAgIFhMU1gudXRpbHMuc2hlZXRfYWRkX2pzb24od3MsIGRhdGFSb3dzLCB7IG9yaWdpbjogXCJBM1wiLCBza2lwSGVhZGVyOiB0cnVlIH0pO1xuXG4gICAgLy8gQXV0byBjb2x1bW4gd2lkdGhzIGJhc2VkIG9uIGxvbmdlc3QgbGluZSBpbiBlYWNoIGNvbHVtblxuICAgIGNvbnN0IGNvbFdpZHRocyA9IGhlYWRlcnMubWFwKChoZWFkZXIsIGlkeCkgPT4ge1xuICAgICAgY29uc3QgbWF4TGVuID0gTWF0aC5tYXgoXG4gICAgICAgIGhlYWRlci5sZW5ndGgsXG4gICAgICAgIC4uLmRhdGFSb3dzLm1hcChyb3cgPT4gKHJvd1toZWFkZXJdIHx8IFwiXCIpLnNwbGl0KFwiXFxuXCIpLnJlZHVjZSgoYSwgYikgPT4gTWF0aC5tYXgoYSwgYi5sZW5ndGgpLCAwKSlcbiAgICAgICk7XG4gICAgICByZXR1cm4geyB3Y2g6IE1hdGgubWluKE1hdGgubWF4KG1heExlbiArIDUsIDIwKSwgODApIH07IC8vIG1pbiAyMCwgbWF4IDgwXG4gICAgfSk7XG4gICAgd3NbJyFjb2xzJ10gPSBjb2xXaWR0aHM7XG5cbiAgICAvLyBXcmFwIHRleHQgaW4gZGF0YSByb3dzXG4gICAgZGF0YVJvd3MuZm9yRWFjaCgocm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgaGVhZGVycy5mb3JFYWNoKChoZWFkZXIsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGNlbGxBZGRyZXNzID0gWExTWC51dGlscy5lbmNvZGVfY2VsbCh7IHI6IHJvd0luZGV4ICsgMiwgYzogY29sSW5kZXggfSk7XG4gICAgICAgIGlmICh3c1tjZWxsQWRkcmVzc10pIHtcbiAgICAgICAgICB3c1tjZWxsQWRkcmVzc10ucyA9IHsgYWxpZ25tZW50OiB7IHdyYXBUZXh0OiB0cnVlLCB2ZXJ0aWNhbDogXCJ0b3BcIiB9IH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gU3R5bGUgbWFpbiBoZWFkZXJcbiAgICBpZiAod3NbXCJBMVwiXSkge1xuICAgICAgd3NbXCJBMVwiXS5zID0ge1xuICAgICAgICBmb250OiB7IGJvbGQ6IHRydWUsIHN6OiAxNiB9LFxuICAgICAgICBhbGlnbm1lbnQ6IHsgaG9yaXpvbnRhbDogXCJjZW50ZXJcIiwgdmVydGljYWw6IFwiY2VudGVyXCIgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLSBDUkVBVEUgV09SS0JPT0sgLS0tLS0tLS0tXG4gICAgY29uc3Qgd2IgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XG4gICAgWExTWC51dGlscy5ib29rX2FwcGVuZF9zaGVldCh3Yiwgd3MsIFwiU2hlZXQxXCIpO1xuXG4gICAgLy8gRXhwb3J0IEV4Y2VsXG4gICAgWExTWC53cml0ZUZpbGUod2IsIGZpbGVuYW1lKTtcbiAgfVxuXG5cblxuXG4gIGRvd25sb2FkQ1NWKCkge1xuICAgIGxldCBmaWxlTmFtZSA9ICcnXG4gICAgaWYgKCF0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50cykge1xuICAgICAgZmlsZU5hbWUgPSBgQ0JQX1JlcG9ydF8ke3RoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXJ9XyR7dGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHN9Lnhsc3hgXG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbGVOYW1lID0gYENCUF9SZXBvcnRfJHt0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5pZGVudGlmaWVyfS54bHN4YFxuICAgIH1cbiAgICB0aGlzLmdlbmVyYXRlRXhjZWwodGhpcy5qc29uRGF0YSwgZmlsZU5hbWUpO1xuICB9XG5cbiAgZG93bmxvYWRQZGZGcm9tQkUoY29udGV4dDogc3RyaW5nKSB7XG4gICAgbGV0IHNlbGVjdGVkTGFuZ3VhZ2UgPSB0aGlzLmZpbHRlckZvcm0uZ2V0KCdsYW5ndWFnZScpPy52YWx1ZSB8fCAnZW4nO1xuICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICAvLyAgdGhpcy5zaGFyZWRTZXJ2aWNlLmRvd25sb2FkUGRmKHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXIpXG4gICAgaWYgKCF0aGlzLnNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50cykge1xuICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmRvd25sb2FkUGRmKHRoaXMuc2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqLm1pbmlzdHJ5LmlkZW50aWZpZXIsIGNvbnRleHQsIHNlbGVjdGVkTGFuZ3VhZ2UpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5kb3dubG9hZFBkZkZvckRlcGFydG1lbnQodGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmoubWluaXN0cnkuaWRlbnRpZmllciwgdGhpcy5zaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHMsIGNvbnRleHQsIHNlbGVjdGVkTGFuZ3VhZ2UpXG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgIH0sIDUwMDApXG4gIH1cbiAgZ2V0U2VsZWN0ZWRDb3Vyc2VzKGRlcGFydG1lbnQ6IGFueSk6IGFueVtdIHtcbiAgICBpZiAoIWRlcGFydG1lbnQ/LmNicF9wbGFucz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLy8gdGFrZSBsYXRlc3QgQ0JQIHBsYW4gKG9yIGFkanVzdCBsb2dpYyBpZiBuZWVkZWQpXG4gICAgY29uc3QgbGF0ZXN0UGxhbiA9IGRlcGFydG1lbnQuY2JwX3BsYW5zW2RlcGFydG1lbnQuY2JwX3BsYW5zLmxlbmd0aCAtIDFdO1xuXG4gICAgcmV0dXJuIGxhdGVzdFBsYW4/LnNlbGVjdGVkX2NvdXJzZXMgfHwgW107XG4gIH1cblxuICBhcHBseUZpbHRlcnMoKSB7XG5cbiAgfVxuXG4gIGZpbHRlckxpc3QodmFsdWU6IHN0cmluZywgdHlwZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VhcmNoID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuXG4gICAgICBjYXNlICdsYW5ndWFnZSc6XG4gICAgICAgIHRoaXMuZmlsdGVyZWRMYW5ndWFnZXMgPSB0aGlzLmxhbmd1YWdlcy5maWx0ZXIodiA9PiB2LmxhYmVsPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaCkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxufSIsIjxkaXYgY2xhc3M9XCJ2aWV3LWNicC1wbGFuXCIgI2RpYWxvZ0NvbnRlbnQgc3R5bGU9XCJtYXgtaGVpZ2h0OiA4MHZoOyBvdmVyZmxvdzogYXV0bztcIj5cbiAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5WaWV3IEZpbmFsIDxzcGFuICpuZ0lmPVwib3BlbmVkRnJvbSA9PT0gJ2NicCdcIj5DQlA8L3NwYW4+PHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wZW5lZEZyb20gPT09ICdhY2JwJ1wiPkFDQlA8L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0LXNpZGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYW5kLWJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cImxhbmd1YWdlLXNlbGVjdFwiIHN0eWxlPVwiIGhlaWdodDogMzRweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgc3R5bGU9XCJmb250LXdlaWdodDogbm9ybWFsO1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpbHRlckZvcm0uZ2V0KCdsYW5ndWFnZScpPy52YWx1ZSA/ICcnIDogJ1NlbGVjdCBMYW5ndWFnZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJsYW5ndWFnZVwiIHBhbmVsQ2xhc3M9XCJzZWxlY3Qtc2VhcmNoLXBhbmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImFwcGx5RmlsdGVycygpXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlYXJjaCBib3ggLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOiA1cHg7d2lkdGg6IDkyJTttYXJnaW46IDVweDtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cIlNlYXJjaCBMYW5ndWFnZXNcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cImZpbHRlckxpc3QoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSwgJ2xhbmd1YWdlJylcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBWYWx1ZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHIgb2YgZmlsdGVyZWRMYW5ndWFnZXNcIiBbdmFsdWVdPVwicj8uY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByPy5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1jb250YWluZXJcIiAjcGRmQ29udGVudD5cbiAgICAgICAgICAgIDxoZWFkZXIgY2xhc3M9XCJiZy13aGl0ZSBoZWFkZXItYm9yZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1mbGV4IGp1c3RpZnktYmV0d2VlblwiIHN0eWxlPVwid2lkdGg6MTAwJVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00XCIgc3R5bGU9XCJ3aWR0aDo1MCVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pY29ucy9kb3B0LWxvZ28ucG5nXCIgYWx0PVwiRGVwYXJ0bWVudCBvZiBQZXJzb25uZWwgJiBUcmFpbmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMTVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL0NCQ19sb2dvLnN2Z1wiIGFsdD1cIkNhcGFjaXR5IEJ1aWxkaW5nIENvbW1pc3Npb24gTG9nb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMTBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2thcm1heW9naUxvZ28tbWluLnBuZ1wiIGFsdD1cIkthcm1heW9naSBCaGFyYXQgTG9nb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtMTBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiIHN0eWxlPVwid2lkdGg6NTAlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1ncmF5LTkwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqPy5taW5pc3RyeT8uc2JPcmdUeXBlID09PSAnc3RhdGUnXCI+e3tzaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmo/Lm1pbmlzdHJ5Py5vcmdOYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaGFyZWRTZXJ2aWNlPy5jYnBQbGFuRmluYWxPYmo/Lm1pbmlzdHJ5Py5zYk9yZ1R5cGUgPT09ICdtaW5pc3RyeSdcIj57e3NoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/Lm9yZ05hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNoYXJlZFNlcnZpY2U/LmNicFBsYW5GaW5hbE9iaj8uZGVwYXJ0bWVudF9uYW1lXCI+L3t7c2hhcmVkU2VydmljZT8uY2JwUGxhbkZpbmFsT2JqPy5kZXBhcnRtZW50X25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIENhcGFjaXR5IEJ1aWxkaW5nIFBsYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtZ3JheS02MDBcIj5Db21wcmVoZW5zaXZlIFJvbGUtQmFzZWQgQ29tcGV0ZW5jeSBBbmFseXNpczwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2hlYWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaW4taC1zY3JlZW4gYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1zbGF0ZS01MCB2aWEtYmx1ZS01MCB0by1pbmRpZ28tMTAwXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBIZWFkZXIgLS0+XG5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXgtdy03eGwgbXgtYXV0byBweC02IHB5LTggbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIEtQSSBEYXNoYm9hcmQgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LWNvbnRhaW5lciBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0c2lkZS1sYXllci10b3RhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWZsZXggbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtOCB3LTggaWNvbi1zbVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDJ2Nmg2XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2IDEzSDhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYgMTdIOFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCA5SDhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+e3t0b3RhbENvbXBldGVuY2llT2JqPy50b3RhbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Ub3RhbCBDb21wZXRlbmNpZXM8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcy1iYXIgbXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyLWZpbGxcIiBzdHlsZT1cIndpZHRoOiA2MCU7XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+VG90YWwgQ29tcGV0ZW5jaWVzOiB7e3RvdGFsQ29tcGV0ZW5jaWVPYmo/LnRvdGFsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSB7e2NvbXBldGVuY2llc0NvdW50Py50b3RhbH19IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0c2lkZS1sYXllci1iZWhhdmlvcmFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZmxleCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS41IDE3YTQgNCAwIDAgMS01IDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgMTRoLjAxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExIDExaC4wMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNyAxNGguMDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgMTBoLjAxXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDE4aC4wMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMyA2aC4wMVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNyAxOGguMDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTcgNmguMDFcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjEgMTJhOSA5IDAgMCAxLTkgOWE5IDkgMCAwIDEtOS05YTkgOSAwIDAgMSA5LTlhOSA5IDAgMCAxIDkgOXpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+e3t0b3RhbENvbXBldGVuY2llT2JqPy5iZWhhdmlvcmFsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkJlaGF2aW9yYWwgQ29tcGV0ZW5jaWVzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhci1maWxsLWJlaGF2aW91cmFsXCIgc3R5bGU9XCJ3aWR0aDogNjAlO1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItdGV4dFwiPkJlaGF2aW9yYWwgQ29tcGV0ZW5jaWVzOiB7e3RvdGFsQ29tcGV0ZW5jaWVPYmo/LmJlaGF2aW9yYWx9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0c2lkZS1sYXllci1mdW5jdGlvbmFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZmxleCBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0yIDNoNmE0IDQgMCAwIDEgNCA0djE0YTMgMyAwIDAgMC0zLTNIMnpcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjIgM2gtNmE0IDQgMCAwIDAtNCA0djE0YTMgMyAwIDAgMSAzLTNoN3pcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50XCI+e3t0b3RhbENvbXBldGVuY2llT2JqPy5mdW5jdGlvbmFsfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkZ1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhci1maWxsLWZ1bmN0aW9uYWxcIiBzdHlsZT1cIndpZHRoOiA2MCU7XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi10ZXh0XCI+RnVuY3Rpb25hbCBDb21wZXRlbmNpZXM6IHt7dG90YWxDb21wZXRlbmNpZU9iaj8uZnVuY3Rpb25hbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3V0c2lkZS1sYXllci1kb21haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG9yaXpvbnRhbC1mbGV4IG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTggdy04IGljb24tc21cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjEwXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291bnRcIj57e3RvdGFsQ29tcGV0ZW5jaWVPYmo/LmRvbWFpbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Eb21haW4gQ29tcGV0ZW5jaWVzPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYmFyIG10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzLWJhci1maWxsLWRvbWFpblwiIHN0eWxlPVwid2lkdGg6IDYwJTtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHRcIj5Eb21haW4gQ29tcGV0ZW5jaWVzOiB7e3RvdGFsQ29tcGV0ZW5jaWVPYmo/LmRvbWFpbn19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibWItOFwiPlxuICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwIG1iLTZuaGVhZGluZ1wiPkNvbXBldGVuY3kgT3ZlcnZpZXc8L2gyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21wZXRlbmN5LWdyaWRcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtwaSBvZiBvdmVyYWxsS1BJcztcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIHJvdW5kZWQteGwgIG91dHNpZGUtbGF5ZXItdG90YWwgcC02IGJvcmRlci1sLTQgaG92ZXI6c2hhZG93LXhsIHRyYW5zaXRpb24tc2hhZG93XCIgW3N0eWxlLmJvcmRlci1sZWZ0LWNvbG9yXT1cImtwaS5jb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItNCBpbnNpZGUtbGF5ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIidwLTMgcm91bmRlZC1sZyAnICsga3BpLmJnQ29sb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwia3BpLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInQmVoYXZpb3JhbCBDb21wZXRlbmNpZXMnXCIgY2xhc3M9XCJoLTggdy04IGljb24tc21cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS41IDE3YTQgNCAwIDAgMS01IDBcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEzIDE0aC4wMVwiLz48cGF0aCBkPVwiTTExIDExaC4wMVwiLz48cGF0aCBkPVwiTTE3IDE0aC4wMVwiLz48cGF0aCBkPVwiTTEzIDEwaC4wMVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTMgMThoLjAxXCIvPjxwYXRoIGQ9XCJNMTMgNmguMDFcIi8+PHBhdGggZD1cIk0xNyAxOGguMDFcIi8+PHBhdGggZD1cIk0xNyA2aC4wMVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMjEgMTJhOSA5IDAgMCAxLTkgOWE5IDkgMCAwIDEtOS05YTkgOSAwIDAgMSA5LTlhOSA5IDAgMCAxIDkgOXpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ0Z1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzJ1wiIGNsYXNzPVwiaC04IHctOCBpY29uLXNtXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMiAzaDZhNCA0IDAgMCAxIDQgNHYxNGEzIDMgMCAwIDAtMy0zSDJ6XCIvPjxwYXRoIGQ9XCJNMjIgM2gtNmE0IDQgMCAwIDAtNCA0djE0YTMgMyAwIDAgMSAzLTNoN3pcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdTd2l0Y2hDYXNlPVwiJ0RvbWFpbiBDb21wZXRlbmNpZXMnXCIgY2xhc3M9XCJoLTggdy04IGljb24tc21cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIxMFwiLz48Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjEyXCIgcj1cIjZcIi8+PGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCIyXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidUb3RhbCBDb21wZXRlbmNpZXMnXCIgY2xhc3M9XCJoLTggdy04IGljb24tc21cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHpcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE0IDJ2Nmg2XCIvPjxwYXRoIGQ9XCJNMTYgMTNIOFwiLz48cGF0aCBkPVwiTTE2IDE3SDhcIi8+PHBhdGggZD1cIk0xMCA5SDhcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDBcIj57e2twaS50b3RhbH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LWdyYXktOTAwIGZvbnQtc2VtaWJvbGQgbWItMiBoZWFkaW5nXCI+e3trcGkubmFtZX19PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsIGJnLWdyYXktMjAwIHJvdW5kZWQtZnVsbCBoLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTMgcm91bmRlZC1mdWxsIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC4lXT1cImtwaS5hdmdDb21wbGV0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwia3BpLmNvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTUwMCBtdC0yXCI+VG90YWwgQ29tcGV0ZW5jaWVzOiB7e2twaS50b3RhbH19PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEZXNpZ25hdGlvbiBSZXBvcnRzIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS04IG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwIG1iLTYgaGVhZGluZ1wiPkRldGFpbGVkIENvbXBldGVuY3kgRnJhbWV3b3JrIGJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzaWduYXRpb248L2gyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkZXNpZ25hdGlvbiBvZiBkZXNpZ25hdGlvbkRhdGE7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIHJvdW5kZWQteGwgIG92ZXJmbG93LWhpZGRlbiBzZWN0aW9uLXNoYWRvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEhlYWRlciAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmFkaWVudC10by1yIGZyb20taW5kaWdvLTYwMCB0by1ibHVlLTYwMCB0ZXh0LXdoaXRlIHAtNiBoZWFkaW5nLXdpdGgtYmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgbWItMiBoZWFkaW5nLWJnXCI+e3tkZXNpZ25hdGlvbi5kZXNpZ25hdGlvbn19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1pbmRpZ28tMTAwIG1iLTFcIj5XaW5nL0RpdmlzaW9uOiB7e2Rlc2lnbmF0aW9uLndpbmd9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgc3BhY2UteC00IGNvbXBldGVuY3ktY291bnQtYnktZGVzaWduYXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtc21cIj5CZWhhdmlvcmFsOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkZXNpZ25hdGlvbi5iZWhhdmlvcmFsQ29tcGV0ZW5jaWVzLmxlbmd0aH19IHRvdGFsPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbVwiPkZ1bmN0aW9uYWw6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Rlc2lnbmF0aW9uLmZ1bmN0aW9uYWxDb21wZXRlbmNpZXMubGVuZ3RofX0gdG90YWw8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LXNtXCI+RG9tYWluOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkZXNpZ25hdGlvbi5kb21haW5Db21wZXRlbmNpZXMubGVuZ3RofX0gdG90YWw8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCb2R5IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC00IHNlY3Rpb24tc2hhZG93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJvbGVzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0zIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTUgdy01IG1yLTIgdGV4dC1pbmRpZ28tNjAwIGljb24tc21cIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSb2xlcyAmIFJlc3BvbnNpYmlsaXRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJvbGUgb2YgZGVzaWduYXRpb24ucm9sZXNSZXNwb25zaWJpbGl0aWVzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctZ3JheS01MCBwLTIgcm91bmRlZCBib3JkZXItbC0zIGJvcmRlci1pbmRpZ28tNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTcwMCBsZWFkaW5nLXJlbGF4ZWRcIj57e3JvbGV9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZpdGllcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi02IG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdGV4dC1ncmF5LTkwMCBtYi0zIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLTUgdy01IG1yLTIgdGV4dC1pbmRpZ28tNjAwIGljb24tc21cIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBzdHJva2Utd2lkdGg9XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03elwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0aWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMiBsZzpncmlkLWNvbHMtMyBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByb2xlIG9mIGRlc2lnbmF0aW9uLmFjdGl2aXRpZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy1ncmF5LTUwIHAtMiByb3VuZGVkIGJvcmRlci1sLTMgYm9yZGVyLWluZGlnby01MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWdyYXktNzAwIGxlYWRpbmctcmVsYXhlZFwiPnt7cm9sZX19PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhZ2UtYnJlYWtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ29tcGV0ZW5jaWVzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbXBldGVuY2lzLWdyaWQgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQmVoYXZpb3JhbCAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctYmx1ZS01MCByb3VuZGVkLWxnIHAtMyBjb21wZXRlbmNpZXMtZ3JpZC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1ibHVlLTgwMCB0ZXh0LWJhc2UgbWItMlwiPkJlaGF2aW9yYWw8L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3BhY2UteS0xIGdyaWQtbGlzdC1pdGVtIGdyaWQtbGlzdC1pdGVtLWJlaGF2aW9yYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbXAgb2YgZGVzaWduYXRpb24uYmVoYXZpb3JhbENvbXBldGVuY2llczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiZy13aGl0ZSBwLTEuNSByb3VuZGVkIHRleHQtc20gdGV4dC1ncmF5LTcwMCBib3JkZXItbC0yIGJvcmRlci1ibHVlLTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tcH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIHRleHQtc20gdGV4dC1ibHVlLTYwMCBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkZXNpZ25hdGlvbi5iZWhhdmlvcmFsQ29tcGV0ZW5jaWVzLmxlbmd0aH19IHRvdGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBGdW5jdGlvbmFsIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmVlbi01MCByb3VuZGVkLWxnIHAtMyBjb21wZXRlbmNpZXMtZ3JpZC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1ncmVlbi04MDAgdGV4dC1iYXNlIG1iLTJcIj5GdW5jdGlvbmFsPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktMSBncmlkLWxpc3QtaXRlbSBncmlkLWxpc3QtaXRlbS1mdW5jdGlvbmFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjb21wIG9mIGRlc2lnbmF0aW9uLmZ1bmN0aW9uYWxDb21wZXRlbmNpZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmctd2hpdGUgcC0xLjUgcm91bmRlZCB0ZXh0LXNtIHRleHQtZ3JheS03MDAgYm9yZGVyLWwtMiBib3JkZXItZ3JlZW4tNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21wfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgdGV4dC1zbSB0ZXh0LWdyZWVuLTYwMCBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkZXNpZ25hdGlvbi5mdW5jdGlvbmFsQ29tcGV0ZW5jaWVzLmxlbmd0aH19IHRvdGFsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBEb21haW4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXB1cnBsZS01MCByb3VuZGVkLWxnIHAtMyBjb21wZXRlbmNpZXMtZ3JpZC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1wdXJwbGUtODAwIHRleHQtYmFzZSBtYi0yXCI+RG9tYWluPC9oND5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwYWNlLXktMSBncmlkLWxpc3QtaXRlbSBncmlkLWxpc3QtaXRlbS1kb21haW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNvbXAgb2YgZGVzaWduYXRpb24uZG9tYWluQ29tcGV0ZW5jaWVzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJnLXdoaXRlIHAtMS41IHJvdW5kZWQgdGV4dC1zbSB0ZXh0LWdyYXktNzAwIGJvcmRlci1sLTIgYm9yZGVyLXB1cnBsZS00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbXB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiB0ZXh0LXNtIHRleHQtcHVycGxlLTYwMCBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkZXNpZ25hdGlvbi5kb21haW5Db21wZXRlbmNpZXMubGVuZ3RofX0gdG90YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQWRkaW5nIGNvdXJzZXMgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2JwIG10LTRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGVzaWduYXRpb24uc2VsZWN0ZWRDb3Vyc2VzPy5sZW5ndGggJiYgb3BlbmVkRnJvbSA9PT0gJ2FjYnAnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGV4dC14bCBmb250LXNlbWlib2xkIHRleHQtZ3JheS05MDAgbWItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC01IHctNSBtci0yIHRleHQtaW5kaWdvLTYwMCBpY29uLXNtXCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNiA3YTQgNCAwIDExLTggMCA0IDQgMCAwMTggMHpNMTIgMTRhNyA3IDAgMDAtNyA3aDE0YTcgNyAwIDAwLTctN3pcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291cnNlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdXJzZS1saXN0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cnNlLWxpc3QtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZXNpZ25hdGlvbi5zZWxlY3RlZENvdXJzZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3Vyc2UtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrZWQtY291cnNlLWNvbnRhaW5lclwiPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cnNlLXBpbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cnNlLXBpbGwtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2NvdXJzZS5zdmdcIj48L3NwYW4+Jm5ic3A7PHNwYW4+Q291cnNlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/LnJhdGlvbmFsZSAmJiAhaXRlbT8uaXNfcHVibGljXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtZ3JlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtZ3JlZW4tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktbG9hZGVyLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvYWktbG9hZGVyLmdpZlwiPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkFJIFJlY29tbWVuZGVkIC0gaUdPVCA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UgbXQtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LnBsYXRmb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1sb2FkZXItaWNvblwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9haS1sb2FkZXIuZ2lmXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBbaHJlZl09XCJpdGVtPy5wdWJsaWNfbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPjxzcGFuPlBsYXRmb3JtIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8ucGxhdGZvcm19fTwvc3Bhbj48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlIG10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5vcmdhbmlzYXRpb24/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktbG9hZGVyLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvYWktbG9hZGVyLmdpZlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Qcm92aWRlciAtIHt7aXRlbT8ub3JnYW5pc2F0aW9uWzBdfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0/LnJhdGlvbmFsZSAmJiBpdGVtPy5pc19wdWJsaWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1wdWJsaWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtcHVibGljLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BSSBSZWNvbW1lbmRlZCAtIFB1YmxpYyA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UgbXQtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LnBsYXRmb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZS10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhaS1sb2FkZXItaWNvblwiPjxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9haS1sb2FkZXIuZ2lmXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBbaHJlZl09XCJpdGVtPy5wdWJsaWNfbGlua1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPjxzcGFuPlBsYXRmb3JtIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8ucGxhdGZvcm19fTwvc3Bhbj48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlIG10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5vcmdhbmlzYXRpb24/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktbG9hZGVyLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvYWktbG9hZGVyLmdpZlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Qcm92aWRlciAtIHt7aXRlbT8ub3JnYW5pc2F0aW9uWzBdfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpdGVtPy5yYXRpb25hbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1ncmF5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLWdyYXktdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktbG9hZGVyLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvYWktbG9hZGVyLmdpZlwiPjwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk1hbnVhbGx5IFN1Z2dlc3RlZCAtIGlHT1QgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlIG10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5wbGF0Zm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpLXJlY29tbWVuZWQtcGlsbC1vcmFuZ2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYWktbG9hZGVyLWljb25cIj48aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvYWktbG9hZGVyLmdpZlwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgW2hyZWZdPVwiaXRlbT8ucHVibGljX2xpbmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIj48c3Bhbj5QbGF0Zm9ybSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LnBsYXRmb3JtfX08L3NwYW4+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWktcmVjb21tZW5lZC1waWxsLW9yYW5nZSBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8ub3JnYW5pc2F0aW9uPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaS1yZWNvbW1lbmVkLXBpbGwtb3JhbmdlLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFpLWxvYWRlci1pY29uXCI+PGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2FpLWxvYWRlci5naWZcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+UHJvdmlkZXIgLSB7e2l0ZW0/Lm9yZ2FuaXNhdGlvblswXX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY291cnNlLXRpdGxlIG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uY291cnNlXCI+e3tpdGVtPy5jb3Vyc2V9fTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8ubmFtZVwiPnt7aXRlbT8ubmFtZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3Vyc2UtZGVzYyBtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUERGRG93bmxvYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e2l0ZW0/LnJhdGlvbmFsZX19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdldENvbXBldGVuY2llc0J5VHlwZSgnQmVoYXZpb3VyYWwnLGl0ZW0pPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1zdWItaGVhZGluZ1wiPkJlaGF2aW9yYWwgQ29tcGV0ZW5jaWVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiY29tcGV0ZW5jeS1saXN0IG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiYmVoYXZpb3VyYWwtcGlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tcCBvZiBnZXREaXNwbGF5ZWRDb21wZXRlbmNpZXMoJ0JlaGF2aW91cmFsJyxpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb21wZXRlbmN5LXRleHRcIj4ge3sgY29tcC5jb21wZXRlbmN5VGhlbWVOYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5jb21wZXRlbmN5U3ViVGhlbWVOYW1lIH19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiaGFzTW9yZVRoYW5Ud28oJ0JlaGF2aW91cmFsJyxpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNob3ctbW9yZS1jb21wZXRlbmN5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNob3ctbW9yZS1saW5rIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29tcGV0ZW5jaWVzKCdCZWhhdmlvdXJhbCcsaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpc0V4cGFuZGVkKCdCZWhhdmlvdXJhbCcsaXRlbSkgPyAnU2hvdyBMZXNzJyA6ICcrJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVtYWluaW5nQ291bnQoJ0JlaGF2aW91cmFsJyxpdGVtKSArICcgTW9yZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRDb21wZXRlbmNpZXNCeVR5cGUoJ0Z1bmN0aW9uYWwnLGl0ZW0pPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1zdWItaGVhZGluZ1wiPkZ1bmN0aW9uYWwgQ29tcGV0ZW5jaWVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiY29tcGV0ZW5jeS1saXN0IG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZnVuY3Rpb25hbC1waWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21wIG9mIGdldERpc3BsYXllZENvbXBldGVuY2llcygnRnVuY3Rpb25hbCcsaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tcGV0ZW5jeS10ZXh0XCI+IHt7IGNvbXAuY29tcGV0ZW5jeVRoZW1lTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuY29tcGV0ZW5jeVN1YlRoZW1lTmFtZSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImhhc01vcmVUaGFuVHdvKCdGdW5jdGlvbmFsJyxpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNob3ctbW9yZS1jb21wZXRlbmN5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNob3ctbW9yZS1saW5rIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQ29tcGV0ZW5jaWVzKCdGdW5jdGlvbmFsJyxpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGlzRXhwYW5kZWQoJ0Z1bmN0aW9uYWwnLGl0ZW0pID8gJ1Nob3cgTGVzcycgOiAnKycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlbWFpbmluZ0NvdW50KCdGdW5jdGlvbmFsJyxpdGVtKSArICcgTW9yZScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0lmPVwiZ2V0Q29tcGV0ZW5jaWVzQnlUeXBlKCdEb21haW4nLGl0ZW0pPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tcGV0ZW5jeS1zdWItaGVhZGluZ1wiPkRvbWFpbiBDb21wZXRlbmNpZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJjb21wZXRlbmN5LWxpc3QgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJkb21haW4tcGlsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29tcCBvZiBnZXREaXNwbGF5ZWRDb21wZXRlbmNpZXMoJ0RvbWFpbicsaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29tcGV0ZW5jeS10ZXh0XCI+IHt7IGNvbXAuY29tcGV0ZW5jeVRoZW1lTmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19IC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuY29tcGV0ZW5jeVN1YlRoZW1lTmFtZSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImhhc01vcmVUaGFuVHdvKCdEb21haW4nLGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2hvdy1tb3JlLWNvbXBldGVuY3lcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2hvdy1tb3JlLWxpbmsgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVDb21wZXRlbmNpZXMoJ0RvbWFpbicsaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpc0V4cGFuZGVkKCdEb21haW4nLGl0ZW0pID8gJ1Nob3cgTGVzcycgOiAnKycgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlbWFpbmluZ0NvdW50KCdEb21haW4nLGl0ZW0pICsgJyBNb3JlJyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGV2YW5jeS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGV2YW5jeVwiPlJlbGV2YW5jeTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFzaFwiPi08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmNlbnRhZ2VcIiAqbmdJZj1cIml0ZW0/LnJlbGV2YW5jeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5yZWxldmFuY3l9fSU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcmNlbnRhZ2VcIiAqbmdJZj1cIiFpdGVtPy5yZWxldmFuY3lcIj5OL0E8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGFkZGluZyBjb3Vyc2VzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDwhLS0gRm9vdGVyIC0tPlxuXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxmb290ZXIgY2xhc3M9XCJvcmctZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1heC13LTd4bCBteC1hdXRvIHB4LTYgZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBzcGFjZS14LTQgbWItNCBtdC00IG1kOm1iLTAgZm9vdGVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1sb2dvLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ljb25zL2thcm1heW9naUxvZ28tbWluLnBuZ1wiIGFsdD1cIkthcm1heW9naSBCaGFyYXQgTG9nb1wiIGNsYXNzPVwiaC0xMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6MjBweFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTAwcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8va2FybWF5b2dpYmhhcmF0Lmdvdi5pblwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrYXJtYXlvZ2liaGFyYXQuZ292LmluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gdGV4dC1jZW50ZXIgbWQ6dGV4dC1yaWdodCBtYi00XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMTAwcHg7XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cD4mY29weTsgMjAyNSBBbGwgUmlnaHRzIFJlc2VydmVkLjwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1mb290ZXJcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLWFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIkRvd25sb2FkIGFzIEV4Y2VsXCIgKGNsaWNrKT1cImRvd25sb2FkQ1NWKClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1hY3RpdmVcIiB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCJEb3dubG9hZCBhcyBQREZcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRQZGZGcm9tQkUob3BlbmVkRnJvbSlcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImJ0bi1hY3RpdmVcIiB0eXBlPVwiYnV0dG9uXCIgdmFsdWU9XCJDYW5jZWxcIiAoY2xpY2spPVwiY2FuY2VsRm9ybSgpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1sb2FkZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgICAgPG1hdC1zcGlubmVyIGRpYW1ldGVyPVwiNTBcIj48L21hdC1zcGlubmVyPlxuICAgIDwvZGl2PiJdfQ==