@sunbird-cb/cbp-ai 0.1.28 → 0.1.31

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.
@@ -166,7 +166,7 @@ export class DesignationApprovalRequestFormComponent {
166
166
  "MDO_LEADER",
167
167
  "MDO_ADMIN"
168
168
  ],
169
- "rootOrgId": this.sharedService.cbpPlanFinalObj.departments
169
+ "rootOrgId": this.sharedService.cbpPlanFinalObj.departments ? this.sharedService.cbpPlanFinalObj.departments : this.sharedService.cbpPlanFinalObj.ministry.identifier
170
170
  },
171
171
  "fields": [
172
172
  "firstName",
@@ -389,4 +389,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
389
389
  type: ViewChild,
390
390
  args: ['mdo', { read: ElementRef }]
391
391
  }] } });
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduYXRpb24tYXBwcm92YWwtcmVxdWVzdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi9jYnAtYWkvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS9kZXNpZ25hdGlvbi1hcHByb3ZhbC1yZXF1ZXN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvZGVzaWduYXRpb24tYXBwcm92YWwtcmVxdWVzdC1mb3JtL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBcUMsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUYsT0FBTyxFQUFrRCxRQUFRLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUE7Ozs7Ozs7Ozs7QUFRdEIsTUFBTSxPQUFPLHVDQUF1QztJQWtCbEQsWUFBbUIsU0FBZ0UsRUFDakQsSUFBUyxFQUNqQyxFQUFlLEVBQ2YsS0FBd0IsRUFDeEIsYUFBNEIsRUFDNUIsUUFBcUI7UUFMWixjQUFTLEdBQVQsU0FBUyxDQUF1RDtRQUNqRCxTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qixh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QUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQTt3QkFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLElBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTs0QkFDckcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQTs0QkFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFBOzRCQUNqRSx3REFBd0Q7NEJBQ3hELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUE7NEJBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTt5QkFDdkM7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQWdCLENBQUM7SUFDbEUsQ0FBQzsrR0EzWlUsdUNBQXVDLDhDQW1CeEMsZUFBZTttR0FuQmQsdUNBQXVDLHVKQUl4QixVQUFVLDZCQ2pCdEMsa3dHQXNFTTs7NEZEekRPLHVDQUF1QztrQkFMbkQsU0FBUzsrQkFDRSx1Q0FBdUM7OzBCQXVCOUMsTUFBTTsyQkFBQyxlQUFlOzRKQWZlLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIEZvcm1BcnJheSwgVmFsaWRhdG9ycywgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaW5hbGl6ZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHsgZm9ya0pvaW4sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbW9kdWxlcy9zaGFyZWQvc2VydmljZXMvc2hhcmVkLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWRlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXNpZ25hdGlvbi1hcHByb3ZhbC1yZXF1ZXN0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kZXNpZ25hdGlvbi1hcHByb3ZhbC1yZXF1ZXN0LWZvcm0uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEZXNpZ25hdGlvbkFwcHJvdmFsUmVxdWVzdEZvcm1Db21wb25lbnQge1xuICBhcHByb3ZhbFJlcXVlc3RGb3JtOiBGb3JtR3JvdXA7XG4gIGNicFBsYW5GaW5hbE9iajogYW55XG4gIGxvYWRpbmcgPSBmYWxzZVxuICBAVmlld0NoaWxkKCdtZG8nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgbWRvUmVmPzogRWxlbWVudFJlZlxuICBtZG9GaWx0ZXJFbmFibGUgPSBmYWxzZVxuICBpc0xvYWRpbmdNb3JlbWRvcyA9IGZhbHNlO1xuICBtZG9PZmZzZXQgPSAwXG4gIG9kY3NtZG9Db3VudCA9IDBcbiAgZGVmYXVsdFNlYXJjaG1kb0NvdW50ID0gMFxuICBtZG9MaXN0TG9hZENvdW50ID0gNTBcbiAgbWRvRGVmYXVsdExvYWRDb3VudCA9IDUwXG4gIG5vTW9yZUxlZ2FjeW1kb3MgPSBmYWxzZVxuICBtZG9TZWFyY2hUZXh0ID0gJydcbiAgbWRvSW5pdEluUHJvZ3Jlc3MgPSBmYWxzZVxuICBzY3JvbGxMaXN0ZW5lckF0dGFjaGVkID0gZmFsc2VcbiAgbWFzdGVyRGF0YTogYW55ID0ge31cbiAgcm9sZV9tYXBwaW5nX2lkczphbnlcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERlc2lnbmF0aW9uQXBwcm92YWxSZXF1ZXN0Rm9ybUNvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyKSB7XG4gICAgICB0aGlzLnJvbGVfbWFwcGluZ19pZHMgPSBkYXRhXG4gICAgdGhpcy5tYXN0ZXJEYXRhID0ge1xuICAgICAgbWRvQmFja3VwOiBbXSxcbiAgICAgIG1kb0ZpbHRlcmVkOiBbXSwgLy8gZmlsdGVyZWQgc2VhcmNoIHJlc3VsdHNcbiAgICB9O1xuXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemVGb3JtKCk7XG4gICAgLy8gY29uc29sZS5sb2coJ3RoaXMucm9sZV9tYXBwaW5nX2lkcy0tJyx0aGlzLnJvbGVfbWFwcGluZ19pZHMpXG5cbiAgICAvLyBjb25zdCBzZWFyY2hDb250cm9sID0gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnc2VhcmNobWRvJyk7XG5cbiAgICAvLyBpZiAoc2VhcmNoQ29udHJvbCkge1xuICAgIC8vICAgc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAvLyAgICAgLnBpcGUoXG4gICAgLy8gICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgLy8gICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAvLyAgICAgICBzdGFydFdpdGgoJycpXG4gICAgLy8gICAgIClcbiAgICAvLyAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgIC8vICAgICAgIGNvbnN0IHR4dCA9IHJlcz8udG9TdHJpbmcoKT8udHJpbSgpID8/ICcnO1xuXG4gICAgLy8gICAgICAgaWYgKHR4dD8ubGVuZ3RoKSB7XG4gICAgLy8gICAgICAgICB0aGlzLm1kb0ZpbHRlckVuYWJsZSA9IHRydWU7XG4gICAgLy8gICAgICAgICB0aGlzLm1hc3RlckRhdGEubWRvRmlsdGVyZWQgPVxuICAgIC8vICAgICAgICAgICB0aGlzLm1hc3RlckRhdGEubWRvQmFja3VwLmZpbHRlcigoaXRlbTogYW55KSA9PlxuICAgIC8vICAgICAgICAgICAgIGl0ZW0ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHR4dC50b0xvd2VyQ2FzZSgpKVxuICAgIC8vICAgICAgICAgICApO1xuXG4gICAgLy8gICAgICAgICAvLyBzaG93IGluaXRpYWwgcGFnZSBvZiBmaWx0ZXJlZCByZXN1bHRzXG4gICAgLy8gICAgICAgICB0aGlzLm1hc3RlckRhdGEubWRvID0gdGhpcy5tYXN0ZXJEYXRhLm1kb0ZpbHRlcmVkLnNsaWNlKDAsIHRoaXMubWRvTGlzdExvYWRDb3VudCk7XG5cbiAgICAvLyAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgdGhpcy5tZG9GaWx0ZXJFbmFibGUgPSBmYWxzZTtcblxuICAgIC8vICAgICAgICAgLy8gc2hvdyBmaXJzdCBwYWdlIGZyb20gYmFja3VwXG4gICAgLy8gICAgICAgICB0aGlzLm1hc3RlckRhdGEubWRvID0gdGhpcy5tYXN0ZXJEYXRhLm1kb0JhY2t1cC5zbGljZSgwLCB0aGlzLm1kb0RlZmF1bHRMb2FkQ291bnQpO1xuICAgIC8vICAgICAgICAgdGhpcy5tZG9MaXN0TG9hZENvdW50ID0gdGhpcy5tZG9EZWZhdWx0TG9hZENvdW50O1xuICAgIC8vICAgICAgICAgdGhpcy5tZG9PZmZzZXQgPSAwO1xuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfSk7XG4gICAgLy8gfVxuXG5cbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddKVxuICAgIC8vIGlmICghdGhpcy5tYXN0ZXJEYXRhWydtZG9CYWNrdXAnXS5sZW5ndGgpIHtcbiAgICAvLyAgIHRoaXMuZ2V0bWRvU2FmZSgpXG4gICAgLy8gfVxuXG4gIH1cblxuICAvLyBwcml2YXRlIGdldG1kb1NhZmUoKTogdm9pZCB7XG4gIC8vICAgaWYgKHRoaXMubWRvSW5pdEluUHJvZ3Jlc3MgfHwgdGhpcy5pc0xvYWRpbmdNb3JlbWRvcykge1xuICAvLyAgICAgcmV0dXJuXG4gIC8vICAgfVxuICAvLyAgIHRoaXMubWRvSW5pdEluUHJvZ3Jlc3MgPSB0cnVlXG4gIC8vICAgdGhpcy5nZXRtZG8oKVxuICAvLyB9XG5cbiAgaW5pdGlhbGl6ZUZvcm0oKSB7XG4gICAgdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBkaXZpc2lvbl9uYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgcmVxdWVzdF9uYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgIC8vICBzZWFyY2htZG86IFsnJ10sXG4gICAgfSk7XG4gIH1cblxuXG5cbiAgY2FuY2VsRm9ybSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXG4gIH1cblxuICBzYXZlRGVzaWduYXRpb24oKSB7XG4gICAgY29uc3QgZGl2aXNpb25fbmFtZTogc3RyaW5nID0gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpPy52YWx1ZTtcblxuICAgIC8vIGlmICghc2VsZWN0ZWRtZG8pIHtcbiAgICAvLyAgIHRoaXMuc25hY2tCYXIub3BlbignUGxlYXNlIHNlbGVjdCBhbiBtZG8gbGVhZGVyL2FkbWluJywgJ1gnLCB7IGR1cmF0aW9uOiAzMDAwIH0pO1xuICAgIC8vICAgcmV0dXJuO1xuICAgIC8vIH1cblxuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBiYXNlT2JqID0ge1xuICAgICAgcm9sZW1hcHBpbmdfaWQ6IHRoaXMucm9sZV9tYXBwaW5nX2lkcz8uaWQsXG4gICAgICBkZXNpZ25hdGlvbl9uYW1lOiB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0udmFsdWUucmVxdWVzdF9uYW1lLFxuICAgICAgd2luZ19kaXZpc2lvbl9zZWN0aW9uOiB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0udmFsdWUuZGl2aXNpb25fbmFtZSxcbiAgICB9O1xuXG4gICAgLy8gaWYgKHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmo/Lm1pbmlzdHJ5Py5zYk9yZ1R5cGUgPT09ICdzdGF0ZScgJiYgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50X25hbWUpIHtcbiAgICAvLyAgIGJhc2VPYmpbJ2RlcGFydG1lbnRfaWQnXSA9IHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHM7XG4gICAgLy8gIC8vIGJhc2VPYmpbJ2RlcGFydG1lbnRfbmFtZSddID0gdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50X25hbWU7XG4gICAgLy8gfVxuXG4gICAgLy8gaWYgKHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmo/Lm1pbmlzdHJ5Py5zYk9yZ1R5cGUgPT09ICdtaW5pc3RyeScgJiYgdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50X25hbWUpIHtcbiAgICAvLyAgIGJhc2VPYmpbJ2RlcGFydG1lbnRfaWQnXSA9IHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHM7XG4gICAgLy8gIC8vIGJhc2VPYmpbJ2RlcGFydG1lbnRfbmFtZSddID0gdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50X25hbWU7XG4gICAgLy8gfVxuXG4gICAgLy8gQ3JlYXRlIGFuIGFycmF5IG9mIG9ic2VydmFibGVzLCBvbmUgcGVyIG1kb1xuICAgIGNvbnN0IHJlcSA9IHtcbiAgICAgIC4uLmJhc2VPYmosXG4gICAgIC8vIG1kb19pZDogc2VsZWN0ZWRtZG9cbiAgICB9O1xuXG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLnNhdmVEZXNpZ25hdGlvbkFwcHJvdmFsUmVxdWVzdChyZXEpXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmcgPSBmYWxzZSkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignRGVzaWduYXRpb24gUmVxdWVzdCBzZW50IHN1Y2Nlc3NmdWxseScsICdYJywge1xuICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLXN1Y2Nlc3MnXVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCdzYXZlZCcpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yJywgZXJyb3IpXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKChlcnJvcj8uZXJyb3I/LmRldGFpbCB8fCAnRmFpbGVkIHRvIHNlbmQgcmVxdWVzdCcpLCAnWCcsIHtcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICAgICAgcGFuZWxDbGFzczogWydzbmFja2Jhci1lcnJvciddXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgY2xvc2VEaWFsb2coKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICB9XG5cbiAgZ2V0bWRvKHNlYXJjaFRleHQ/OiBzdHJpbmcsIG9mZnNldD86IG51bWJlcik6IHZvaWQge1xuXG4gICAgLy8gY2xlYXIgYW55IHByZXZpb3VzIGRlYnVnIGhvb2tzXG4gICAgaWYgKCFzZWFyY2hUZXh0IHx8IHNlYXJjaFRleHQ/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm9vcFxuICAgIH1cblxuICAgIGNvbnN0IHJlcU9mZnNldCA9ICh0eXBlb2Ygb2Zmc2V0ID09PSAnbnVtYmVyJykgPyBvZmZzZXQgOiB0aGlzLm1kb09mZnNldFxuICAgIGxldCByZXFMaW1pdCA9IHRoaXMubWRvRGVmYXVsdExvYWRDb3VudFxuICAgIGNvbnN0IHBhZ2VJbmRleCA9IHJlcUxpbWl0ID4gMCA/IE1hdGguZmxvb3IocmVxT2Zmc2V0IC8gcmVxTGltaXQpIDogMFxuICAgIC8vIGlmIHdlJ3JlIHJlcXVlc3RpbmcgZnJvbSBmaXJzdCBwYWdlLCBjbGVhciB0aGUgbm8tbW9yZS1kYXRhIGd1YXJkXG4gICAgaWYgKHBhZ2VJbmRleCA9PT0gMCkge1xuICAgICAgdGhpcy5ub01vcmVMZWdhY3ltZG9zID0gZmFsc2VcbiAgICAgIHJlcUxpbWl0ID0gNTBcbiAgICB9XG4gICAgLy8gY29uc3QgcmVxdWVzdEJvZHk6IGFueSA9IHtcbiAgICAvLyAgIGZpbHRlckNyaXRlcmlhTWFwOiB7XG4gICAgLy8gICAgIHN0YXR1czogJ0FjdGl2ZSdcbiAgICAvLyAgIH0sXG4gICAgLy8gICByZXF1ZXN0ZWRGaWVsZHM6IFtdLFxuICAgIC8vICAgcGFnZU51bWJlcjogcGFnZUluZGV4LFxuICAgIC8vICAgcGFnZVNpemU6IHJlcUxpbWl0LFxuICAgIC8vIH1cblxuICAgIGNvbnN0IHJlcXVlc3RCb2R5OiBhbnkgPSB7XG4gICAgICBcInJlcXVlc3RcIjoge1xuICAgICAgICBcImZpbHRlcnNcIjoge1xuICAgICAgICAgIFwib3JnYW5pc2F0aW9ucy5yb2xlc1wiOiBbXG4gICAgICAgICAgICBcIk1ET19MRUFERVJcIixcbiAgICAgICAgICAgIFwiTURPX0FETUlOXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIFwicm9vdE9yZ0lkXCI6IHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHNcbiAgICAgICAgfSxcbiAgICAgICAgXCJmaWVsZHNcIjogW1xuICAgICAgICAgIFwiZmlyc3ROYW1lXCIsXG4gICAgICAgICAgXCJsYXN0TmFtZVwiLFxuICAgICAgICAgIFwiaWRcIixcbiAgICAgICAgICBcInJvb3RPcmdJZFwiLFxuICAgICAgICAgIFwib3JnYW5pc2F0aW9uc1wiLFxuICAgICAgICAgIFwicm9sZXNcIlxuICAgICAgICBdLFxuICAgICAgICBwYWdlTnVtYmVyOiBwYWdlSW5kZXgsXG4gICAgICAgIHBhZ2VTaXplOiByZXFMaW1pdCxcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNlYXJjaFRleHQ/Lmxlbmd0aCkge1xuICAgICAgcmVxdWVzdEJvZHlbJ3NlYXJjaFN0cmluZyddID0gc2VhcmNoVGV4dFxuICAgICAgLy8gd2hlbiBzZWFyY2hpbmcsIHN0YXJ0IGZyb20gZmlyc3QgcGFnZVxuICAgICAgcmVxdWVzdEJvZHkucGFnZU51bWJlciA9IDBcbiAgICAgIC8vIGFsbG93IGxhcmdlciBwYWdlIGZvciBzZWFyY2ggaWYgbmVlZGVkXG4gICAgICByZXF1ZXN0Qm9keS5wYWdlU2l6ZSA9IHBhZ2VJbmRleCA9PT0gMCA/IDUwIDogdGhpcy5tZG9MaXN0TG9hZENvdW50XG4gICAgICAvLyByZXNldCBndWFyZCB3aGVuIHBlcmZvcm1pbmcgYSBmcmVzaCBzZWFyY2hcbiAgICAgIHRoaXMubm9Nb3JlTGVnYWN5bWRvcyA9IGZhbHNlXG4gICAgfVxuXG4gICAgLy8gaW5kaWNhdGUgbG9hZGluZyBzdGF0ZSBzbyBzY3JvbGwgaGFuZGxlcnMgZG9uJ3QgdHJpZ2dlciBwYXJhbGxlbCBjYWxsc1xuICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSB0cnVlXG4gICAgY29uc29sZS5sb2coJ3JlcXVlc3RCb2R5JywgcmVxdWVzdEJvZHkpXG4gICAgdGhpcy5zaGFyZWRTZXJ2aWNlLnNlYXJjaFB1YmxpY21kbyhyZXF1ZXN0Qm9keSkucGlwZShmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICB0aGlzLmlzTG9hZGluZ01vcmVtZG9zID0gZmFsc2VcbiAgICAgIHRoaXMubWRvSW5pdEluUHJvZ3Jlc3MgPSBmYWxzZVxuICAgIH0pKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBfLmdldChyZXMsICdhZG1pbnMnLCBbXSlcbiAgICAgICAgICBjb25zb2xlLmxvZygnY29udGVudC0tJywgY29udGVudClcbiAgICAgICAgICBjb25zdCBtYXBwZWQgPSBjb250ZW50Lm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGl0ZW0/LmlkLFxuICAgICAgICAgICAgbmFtZTogYCR7aXRlbT8uZmlyc3RfbmFtZX0gJHtpdGVtPy5sYXN0X25hbWV9YCB8fCAnJyxcbiAgICAgICAgICAgIHN0YXR1czogaXRlbT8uc3RhdHVzIHx8ICdBY3RpdmUnLFxuICAgICAgICAgICAgcm9sZV90eXBlOiBpdGVtPy5yb2xlX3R5cGUsXG4gICAgICAgICAgICBkZXBhcnRtZW50X25hbWU6IGl0ZW0/LmRlcGFydG1lbnRfbmFtZVxuXG4gICAgICAgICAgfSkpXG5cbiAgICAgICAgICAvLyB0b3RhbCBjb3VudCBtYXkgYmUgcHJlc2VudCBpbiBkaWZmZXJlbnQga2V5cyBkZXBlbmRpbmcgb24gQVBJIHZlcnNpb24uXG4gICAgICAgICAgLy8gUHJlZmVyICdyZXN1bHQucmVzdWx0LnRvdGFsY291bnQnIChsZWdhY3kgbG93ZXItY2FzZSkgdGhlbiBkYXRhLnRvdGFsQ291bnQsIHRoZW4gdG90YWxDb3VudFxuICAgICAgICAgIGNvbnN0IHRvdGFsID0gXy5nZXQocmVzLCAnY291bnQnLCBfLmdldChyZXMsICdjb3VudCcsIF8uZ2V0KHJlcywgJ2NvdW50JywgMCkpKVxuICAgICAgICAgIHRoaXMuZGVmYXVsdFNlYXJjaG1kb0NvdW50ID0gdG90YWxcblxuICAgICAgICAgIC8vIElmIG9mZnNldCBpcyB6ZXJvIChmaXJzdCBwYWdlKSByZXBsYWNlIGJhY2t1cCwgb3RoZXJ3aXNlIGFwcGVuZCArIGRlZHVwZVxuICAgICAgICAgIGlmICghdGhpcy5tYXN0ZXJEYXRhWydtZG9CYWNrdXAnXSB8fCByZXFPZmZzZXQgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMubWFzdGVyRGF0YVsnbWRvQmFja3VwJ10gPSBtYXBwZWRcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29tYmluZWQgPSAodGhpcy5tYXN0ZXJEYXRhWydtZG9CYWNrdXAnXSB8fCBbXSkuY29uY2F0KG1hcHBlZClcbiAgICAgICAgICAgIHRoaXMubWFzdGVyRGF0YVsnbWRvQmFja3VwJ10gPSBfLnVuaXFCeShjb21iaW5lZCwgKGl0OiBhbnkpID0+IChpdD8ubmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZiBzZXJ2ZXIgcmV0dXJuZWQgbm8gbmV3IGl0ZW1zLCBtYXJrIGFzIG5vLW1vcmUtZGF0YSB0byBzdG9wIGZ1cnRoZXIgc2Nyb2xsIHJlcXVlc3RzXG4gICAgICAgICAgaWYgKCFtYXBwZWQgfHwgbWFwcGVkPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMubm9Nb3JlTGVnYWN5bWRvcyA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZiB3ZSd2ZSBsb2FkZWQgYXQgbGVhc3QgdGhlIHRvdGFsIGNvdW50LCBtYXJrIG5vLW1vcmUtZGF0YVxuICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRTZWFyY2htZG9Db3VudCAmJiAodGhpcy5tYXN0ZXJEYXRhWydtZG9CYWNrdXAnXSB8fCBbXSkubGVuZ3RoID49IHRoaXMuZGVmYXVsdFNlYXJjaG1kb0NvdW50KSB7XG4gICAgICAgICAgICB0aGlzLm5vTW9yZUxlZ2FjeW1kb3MgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRW5zdXJlIHZpc2libGUgbGlzdCBtYXRjaGVzIHRoZSByZXF1ZXN0ZWQgZGlzcGxheSBjb3VudFxuICAgICAgICAgIHRoaXMubWFzdGVyRGF0YVsnbWRvJ10gPSAodGhpcy5tYXN0ZXJEYXRhWydtZG9CYWNrdXAnXSB8fCBbXSkuc2xpY2UoMCwgdGhpcy5tZG9MaXN0TG9hZENvdW50KVxuICAgICAgICAgIC8vIGxvYWRpbmcgZmxhZyBjbGVhcmVkIGluIGZpbmFsaXplKClcbiAgICAgICAgICB0aGlzLmNoZWNrQ3VycmVudG1kb1ByZXNlbnQoKVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIC8vIFN0b3AgZnVydGhlciBhdXRvbWF0aWMgY2FsbHMgb24gcmVwZWF0ZWQgZXJyb3JzIHRvIGF2b2lkIHRpZ2h0IGxvb3BzXG4gICAgICAgICAgLy8gbG9hZGluZyBmbGFnIGNsZWFyZWQgaW4gZmluYWxpemUoKVxuICAgICAgICAgIHRoaXMubm9Nb3JlTGVnYWN5bWRvcyA9IHRydWVcbiAgICAgICAgICAvLyB0aGlzLm1hdFNuYWNrQmFyLm9wZW4oJ1VuYWJsZSB0byBmZXRjaCBtZG8gZGV0YWlscywgcGxlYXNlIHRyeSBhZ2FpbiBsYXRlciEnKVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5jaGVja0N1cnJlbnRtZG9QcmVzZW50KCkge1xuICBjb25zdCBzZWxlY3RlZG1kbyA9IHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ2RpdmlzaW9uX25hbWUnKT8udmFsdWU7XG5cbiAgaWYgKCFzZWxlY3RlZG1kbyB8fCAhdGhpcy5tYXN0ZXJEYXRhPy5tZG8pIHJldHVybjtcblxuICBjb25zdCBleGlzdHMgPSB0aGlzLm1hc3RlckRhdGEubWRvLnNvbWUoXG4gICAgKGl0ZW06IGFueSkgPT4gaXRlbT8ubmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gc2VsZWN0ZWRtZG8/LnRvTG93ZXJDYXNlKClcbiAgKTtcblxuICBpZiAoIWV4aXN0cykge1xuICAgIGNvbnN0IG5ld21kbyA9IHtcbiAgICAgIG5hbWU6IHNlbGVjdGVkbWRvLFxuICAgICAgc3RhdHVzOiAnQWN0aXZlJyxcbiAgICAgIGlkOiAnY3VzdG9tLScgKyBEYXRlLm5vdygpXG4gICAgfTtcblxuICAgIHRoaXMubWFzdGVyRGF0YS5tZG9CYWNrdXAgPSB0aGlzLm1hc3RlckRhdGEubWRvQmFja3VwIHx8IFtdO1xuICAgIHRoaXMubWFzdGVyRGF0YS5tZG9CYWNrdXAudW5zaGlmdChuZXdtZG8pO1xuICAgIHRoaXMubWFzdGVyRGF0YS5tZG8udW5zaGlmdChuZXdtZG8pO1xuICB9XG59XG4gIG9ubWRvRHJvcGRvd25DbG9zZWQoKTogdm9pZCB7XG4gICAgLy8gS2VlcCB0aGUgbWRvIHZhbHVlIGJ1dCBjbGVhciB0aGUgc2VhcmNoIGlucHV0XG4gICAgY29uc3QgY3VycmVudG1kbyA9IHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ2RpdmlzaW9uX25hbWUnKSEudmFsdWVcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdzZWFyY2htZG8nKSkge1xuICAgICAgICB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdzZWFyY2htZG8nKSEuc2V0VmFsdWUoJycpXG4gICAgICB9XG4gICAgICAvLyBFbnN1cmUgdGhlIG1kbyB2YWx1ZSByZW1haW5zIHNlbGVjdGVkXG4gICAgICBpZiAoY3VycmVudG1kbykge1xuICAgICAgICBjb25zdCBtZG9Db250cm9sID0gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpO1xuICAgICAgICBpZiAobWRvQ29udHJvbCkge1xuICAgICAgICAgIG1kb0NvbnRyb2wuc2V0VmFsdWUoY3VycmVudG1kbylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIDEwMClcbiAgfVxuXG4gIG1kb1NlYXJjaChldnQ6IGFueSkge1xuICAgIGNvbnN0IHNlYXJjaFRleHQgPSBldnQ/LnRhcmdldD8udmFsdWVcbiAgICBjb25zdCB0eHQgPSAoc2VhcmNoVGV4dCB8fCAnJykudG9TdHJpbmcoKS50cmltKClcbiAgICBpZiAodGhpcy5pc0xvYWRpbmdNb3JlbWRvcykgcmV0dXJuXG5cbiAgICB0aGlzLm1kb1NlYXJjaFRleHQgPSB0eHRcbiAgICBpZiAodHh0Py5sZW5ndGgpIHtcbiAgICAgIHRoaXMubWRvRmlsdGVyRW5hYmxlID0gdHJ1ZVxuICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlbWRvcyA9IHRydWVcbiAgICAgIHRoaXMuZ2V0bWRvKHR4dCwgMClcbiAgICB9IGVsc2UgaWYgKHRoaXMubWFzdGVyRGF0YSAmJiB0aGlzLm1hc3RlckRhdGE/Lm1kb0JhY2t1cCkge1xuICAgICAgdGhpcy5tYXN0ZXJEYXRhLm1kbyA9IHRoaXMubWFzdGVyRGF0YT8ubWRvQmFja3VwLnNsaWNlKDAsIHRoaXMubWRvRGVmYXVsdExvYWRDb3VudClcbiAgICAgIHRoaXMubWRvRmlsdGVyRW5hYmxlID0gZmFsc2VcbiAgICAgIHRoaXMuY2hlY2tDdXJyZW50bWRvUHJlc2VudCgpXG4gICAgfVxuICB9XG4gIHNldHVwU2Nyb2xsTGlzdGVuZXIob3BlbmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKG9wZW5lZCkge1xuICAgICAgaWYgKCF0aGlzLnNjcm9sbExpc3RlbmVyQXR0YWNoZWQpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxMaXN0ZW5lckF0dGFjaGVkID0gdHJ1ZVxuXG4gICAgICAgIHRoaXMubWRvRmlsdGVyRW5hYmxlID0gZmFsc2VcbiAgICAgICAgdGhpcy5tZG9MaXN0TG9hZENvdW50ID0gdGhpcy5tZG9EZWZhdWx0TG9hZENvdW50XG4gICAgICAgIHRoaXMubWRvT2Zmc2V0ID0gMFxuXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSB0cnVlXG4gICAgICAgIHRoaXMuZ2V0bWRvKHVuZGVmaW5lZCwgMClcblxuICAgICAgICAvLyBDbGVhciBzZWFyY2ggYm94IG9uY2VcbiAgICAgICAgaWYgKHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ3NlYXJjaG1kbycpKSB7XG4gICAgICAgICAgdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnc2VhcmNobWRvJykhLnNldFZhbHVlKCcnKVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VhcmNoSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuc2VhcmNoLWlucHV0JykgYXMgSFRNTElucHV0RWxlbWVudFxuICAgICAgICAgIGlmIChzZWFyY2hJbnB1dCkge1xuICAgICAgICAgICAgc2VhcmNoSW5wdXQuZm9jdXMoKVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKVxuXG4gICAgICAgIC8vIEF0dGFjaCBzY3JvbGwgbGlzdGVuZXIgc2FmZWx5XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhbmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1hdC1zZWxlY3QtcGFuZWwuc2VhcmNoLXBhbmVsJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsXG4gICAgICAgICAgaWYgKHBhbmVsKSB7XG4gICAgICAgICAgICAvLyBhbGlnbiBwYW5lbCB3aWR0aCB0byB0cmlnZ2VyXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCB0cmlnZ2VyRWwgPSB0aGlzLm1kb1JlZiAmJiB0aGlzLm1kb1JlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgICAgIGlmICh0cmlnZ2VyRWwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWN0ID0gdHJpZ2dlckVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgICAgICAgICAgLy8gc2V0IHdpZHRoIGFuZCBsZWZ0IHNvIHBhbmVsIGFsaWducyBleGFjdGx5IGJlbG93IHRoZSB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgcGFuZWwuc3R5bGUud2lkdGggPSBgJHtNYXRoLnJvdW5kKHJlY3Qud2lkdGgpfXB4YFxuICAgICAgICAgICAgICAgIC8vIGxlYXZlIGxlZnQgdG8gb3ZlcmxheSBwb3NpdGlvbmluZyBidXQgbnVkZ2UgaWYgbmVjZXNzYXJ5XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBsZWZ0IHJlbGF0aXZlIHRvIHZpZXdwb3J0IGFuZCBhcHBseSB0byBwYW5lbFxuICAgICAgICAgICAgICAgIGNvbnN0IG92ZXJsYXlMZWZ0ID0gcmVjdC5sZWZ0XG4gICAgICAgICAgICAgICAgcGFuZWwuc3R5bGUubGVmdCA9IGAke01hdGgucm91bmQob3ZlcmxheUxlZnQpfXB4YFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIC8vIGlnbm9yZSBET00gZXJyb3JzIGluIFNTUiBvciB1bmV4cGVjdGVkIGNhc2VzXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbEhhbmRsZXIgPSB0aGlzLm9ubWRvU2VsZWN0U2Nyb2xsLmJpbmQodGhpcylcbiAgICAgICAgICAgIHBhbmVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHNjcm9sbEhhbmRsZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTUwKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEcm9wZG93biBjbG9zZWQg4oCUIHJlc2V0IHNjcm9sbCBmbGFnIHNvIGl0IGNhbiByZWF0dGFjaCBuZXh0IHRpbWVcbiAgICAgIHRoaXMuc2Nyb2xsTGlzdGVuZXJBdHRhY2hlZCA9IGZhbHNlXG4gICAgfVxuICB9XG5cbiAgb25tZG9TZWxlY3RTY3JvbGwoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudD8udGFyZ2V0XG4gICAgaWYgKCF0aGlzLm1kb0ZpbHRlckVuYWJsZSkge1xuICAgICAgLy8gQ2hlY2sgaWYgdXNlciBoYXMgc2Nyb2xsZWQgdG8gdGhlIGJvdHRvbSAod2l0aCBhIHNtYWxsIHRocmVzaG9sZClcbiAgICAgIGlmIChlbGVtZW50LnNjcm9sbFRvcCArIGVsZW1lbnQ/LmNsaWVudEhlaWdodCA+PSBlbGVtZW50Py5zY3JvbGxIZWlnaHQgLSA1KSB7XG4gICAgICAgIC8vIE9ubHkgbG9hZCBtb3JlIGlmIG5vdCBhbHJlYWR5IGxvYWRpbmcgYW5kIGlmIHRoZXJlIGFyZSBwb3RlbnRpYWxseSBtb3JlIGl0ZW1zXG4gICAgICAgIGlmICghdGhpcy5pc0xvYWRpbmdNb3JlbWRvcykge1xuICAgICAgICAgIC8vIElmIG9yZyB1c2VzIElHT1QgbWRvIHRheG9ub215LCByZXF1ZXN0IG1vcmUgZnJvbSB0aGUgQVBJIGJ5IGluY3JlYXNpbmcgdGhlIGxpbWl0XG4gICAgICAgICAgaWYgKHRoaXMubWFzdGVyRGF0YT8ubWRvQmFja3VwPy5sZW5ndGggPiB0aGlzLm1hc3RlckRhdGE/Lm1kbz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBMb2NhbCBwYWdpbmF0aW9uOiBleHBhbmQgdGhlIHNsaWNlZCBsaXN0XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZ01vcmVtZG9zID0gdHJ1ZVxuICAgICAgICAgICAgdGhpcy5tZG9MaXN0TG9hZENvdW50ICs9IHRoaXMubWRvRGVmYXVsdExvYWRDb3VudFxuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBmaWx0ZXJlZCBsaXN0IHdpdGggbW9yZSBpdGVtc1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG8gPSB0aGlzLm1hc3RlckRhdGE/Lm1kb0JhY2t1cD8uc2xpY2UoMCwgdGhpcy5tZG9MaXN0TG9hZENvdW50KVxuICAgICAgICAgICAgICB0aGlzLmNoZWNrQ3VycmVudG1kb1ByZXNlbnQoKVxuICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZ01vcmVtZG9zID0gZmFsc2VcbiAgICAgICAgICAgIH0sIDUwMCkgLy8gU21hbGwgdGltZW91dCB0byBzaW11bGF0ZSBsb2FkaW5nIGFuZCBwcmV2ZW50IG11bHRpcGxlIHRyaWdnZXJzXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIExlZ2FjeSAoc2VydmVyKSBwYWdpbmF0aW9uOiByZXF1ZXN0IG5leHQgcGFnZSBpZiB0b3RhbCBub3QgcmVhY2hlZFxuICAgICAgICAgICAgY29uc3QgbG9hZGVkTGVnYWN5ID0gKHRoaXMubWFzdGVyRGF0YT8ubWRvQmFja3VwIHx8IFtdKS5sZW5ndGhcbiAgICAgICAgICAgIGlmICghdGhpcy5ub01vcmVMZWdhY3ltZG9zICYmIHRoaXMuZGVmYXVsdFNlYXJjaG1kb0NvdW50ICYmIGxvYWRlZExlZ2FjeSA8IHRoaXMuZGVmYXVsdFNlYXJjaG1kb0NvdW50KSB7XG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSB0cnVlXG4gICAgICAgICAgICAgIHRoaXMubWRvT2Zmc2V0ID0gKHRoaXMubWRvT2Zmc2V0IHx8IDApICsgdGhpcy5tZG9EZWZhdWx0TG9hZENvdW50XG4gICAgICAgICAgICAgIC8vIGluY3JlYXNlIGRpc3BsYXkgY291bnQgdG8gaW5jbHVkZSBuZXdseSBmZXRjaGVkIGl0ZW1zXG4gICAgICAgICAgICAgIHRoaXMubWRvTGlzdExvYWRDb3VudCArPSB0aGlzLm1kb0RlZmF1bHRMb2FkQ291bnRcbiAgICAgICAgICAgICAgdGhpcy5nZXRtZG8odW5kZWZpbmVkLCB0aGlzLm1kb09mZnNldClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgc2VhcmNobWRvQ29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ3NlYXJjaG1kbycpIGFzIEZvcm1Db250cm9sO1xuICB9XG5cblxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXctY2JwLXBsYW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwicG9wdXAtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5TZW5kIGZvciBEZXNpZ25hdGlvbiBOYW1lIEFwcHJvdmFsPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHNlbmQgdGhpcyBkZXNpZ25hdGlvbiBmb3IgYWRkaW5nIGluIGlHT1QgZGVzaWduYXRpb24gTWFzdGVyPzwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJhcHByb3ZhbFJlcXVlc3RGb3JtXCI+XG4gICAgICAgIDxtYXQtY2FyZCBjbGFzcz1cIm10LTFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIHNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPHA+RGVzaWduYXRpb24gTmFtZTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCBhZGRpdGlvbmFsLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwicmVxdWVzdF9uYW1lXCIgW3ZhbHVlXT1cIlwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgYSBuYW1lIGZvciB0aGlzIHJlcXVlc3QuLi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAyNXB4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOiA4cHggMTJweDsgd2lkdGg6MTAwJTtmb250LXNpemU6IDE0cHg7Zm9udC1mYW1pbHk6ICdMYXRvJztcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8cD5FbnRlciBEaXZpc2lvbi9XaW5nPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNCBhZGRpdGlvbmFsLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZGl2aXNpb25fbmFtZVwiIFt2YWx1ZV09XCJcIiBwbGFjZWhvbGRlcj1cIkVudGVyIERpdmlzaW9uL1dpbmcuLi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXItcmFkaXVzOiAyNXB4OyBib3JkZXI6IDFweCBzb2xpZCAjY2NjOyBwYWRkaW5nOiA4cHggMTJweDsgd2lkdGg6MTAwJTtmb250LXNpemU6IDE0cHg7Zm9udC1mYW1pbHk6ICdMYXRvJztcIj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm10LTIgc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8cD5VcGxvYWQgRG9jdW1lbnQgKFBERi9Xb3JkL0V4Y2VsL1RYVCk8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGUtdXBsb2FkLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInVwbG9hZERvY1wiIGNsYXNzPVwiZmlsZS11cGxvYWQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZS11cGxvYWQtaWNvblwiPvCfk448L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyB1cGxvYWRlZEZpbGU/Lm5hbWUgfHwgJ0Nob29zZSBhIGZpbGUgKFBERiwgV29yZCwgRXhjZWwsIFRYVCknIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZpbGUtdXBsb2FkLWhpbnRcIj5NYXggZmlsZSBzaXplOiAyNU1CPC9zbWFsbD5cblxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ1cGxvYWREb2NcIiB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwib25GaWxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiLnBkZiwuZG9jLC5kb2N4LC54bHMsLnhsc3gsLnR4dFwiIGNsYXNzPVwiZmlsZS11cGxvYWQtaW5wdXRcIiAvPlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ1cGxvYWRFcnJvclwiIGNsYXNzPVwiZXJyb3JcIj57eyB1cGxvYWRFcnJvciB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInBvcHVwLWZvb3RlclwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYnRuLWFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cIkNhbmNlbFwiIChjbGljayk9XCJjYW5jZWxGb3JtKClcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiYXBwcm92YWxSZXF1ZXN0Rm9ybT8uaW52YWxpZFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiYXBwcm92YWxSZXF1ZXN0Rm9ybT8uaW52YWxpZCA/ICdidG4tZGlzYWJsZSc6J2J0bi1hY3RpdmUnXCIgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVEZXNpZ25hdGlvbigpXCIgPjxtYXQtaWNvbj5zZW5kPC9tYXQtaWNvbj4gU2VuZCBSZXF1ZXN0PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwib3ZlcmxheS1sb2FkZXJcIiAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICA8bWF0LXNwaW5uZXIgZGlhbWV0ZXI9XCI1MFwiPjwvbWF0LXNwaW5uZXI+XG48L2Rpdj4iXX0=
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduYXRpb24tYXBwcm92YWwtcmVxdWVzdC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi9jYnAtYWkvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS9kZXNpZ25hdGlvbi1hcHByb3ZhbC1yZXF1ZXN0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL2NicC1haS9zcmMvbGliL2NvbXBvbmVudHMvZGVzaWduYXRpb24tYXBwcm92YWwtcmVxdWVzdC1mb3JtL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBcUMsVUFBVSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUYsT0FBTyxFQUFrRCxRQUFRLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUE7Ozs7Ozs7Ozs7QUFRdEIsTUFBTSxPQUFPLHVDQUF1QztJQWtCbEQsWUFBbUIsU0FBZ0UsRUFDakQsSUFBUyxFQUNqQyxFQUFlLEVBQ2YsS0FBd0IsRUFDeEIsYUFBNEIsRUFDNUIsUUFBcUI7UUFMWixjQUFTLEdBQVQsU0FBUyxDQUF1RDtRQUNqRCxTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1Qixh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fSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUFycmF5LCBWYWxpZGF0b3JzLCBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbmFsaXplLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnXG5pbXBvcnQgeyBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9tb2R1bGVzL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGVzaWduYXRpb24tYXBwcm92YWwtcmVxdWVzdC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rlc2lnbmF0aW9uLWFwcHJvdmFsLXJlcXVlc3QtZm9ybS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERlc2lnbmF0aW9uQXBwcm92YWxSZXF1ZXN0Rm9ybUNvbXBvbmVudCB7XG4gIGFwcHJvdmFsUmVxdWVzdEZvcm06IEZvcm1Hcm91cDtcbiAgY2JwUGxhbkZpbmFsT2JqOiBhbnlcbiAgbG9hZGluZyA9IGZhbHNlXG4gIEBWaWV3Q2hpbGQoJ21kbycsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBtZG9SZWY/OiBFbGVtZW50UmVmXG4gIG1kb0ZpbHRlckVuYWJsZSA9IGZhbHNlXG4gIGlzTG9hZGluZ01vcmVtZG9zID0gZmFsc2U7XG4gIG1kb09mZnNldCA9IDBcbiAgb2Rjc21kb0NvdW50ID0gMFxuICBkZWZhdWx0U2VhcmNobWRvQ291bnQgPSAwXG4gIG1kb0xpc3RMb2FkQ291bnQgPSA1MFxuICBtZG9EZWZhdWx0TG9hZENvdW50ID0gNTBcbiAgbm9Nb3JlTGVnYWN5bWRvcyA9IGZhbHNlXG4gIG1kb1NlYXJjaFRleHQgPSAnJ1xuICBtZG9Jbml0SW5Qcm9ncmVzcyA9IGZhbHNlXG4gIHNjcm9sbExpc3RlbmVyQXR0YWNoZWQgPSBmYWxzZVxuICBtYXN0ZXJEYXRhOiBhbnkgPSB7fVxuICByb2xlX21hcHBpbmdfaWRzOmFueVxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RGVzaWduYXRpb25BcHByb3ZhbFJlcXVlc3RGb3JtQ29tcG9uZW50PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIpIHtcbiAgICAgIHRoaXMucm9sZV9tYXBwaW5nX2lkcyA9IGRhdGFcbiAgICB0aGlzLm1hc3RlckRhdGEgPSB7XG4gICAgICBtZG9CYWNrdXA6IFtdLFxuICAgICAgbWRvRmlsdGVyZWQ6IFtdLCAvLyBmaWx0ZXJlZCBzZWFyY2ggcmVzdWx0c1xuICAgIH07XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm0oKTtcbiAgICAvLyBjb25zb2xlLmxvZygndGhpcy5yb2xlX21hcHBpbmdfaWRzLS0nLHRoaXMucm9sZV9tYXBwaW5nX2lkcylcblxuICAgIC8vIGNvbnN0IHNlYXJjaENvbnRyb2wgPSB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdzZWFyY2htZG8nKTtcblxuICAgIC8vIGlmIChzZWFyY2hDb250cm9sKSB7XG4gICAgLy8gICBzZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgIC8vICAgICAucGlwZShcbiAgICAvLyAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAvLyAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIC8vICAgICAgIHN0YXJ0V2l0aCgnJylcbiAgICAvLyAgICAgKVxuICAgIC8vICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgLy8gICAgICAgY29uc3QgdHh0ID0gcmVzPy50b1N0cmluZygpPy50cmltKCkgPz8gJyc7XG5cbiAgICAvLyAgICAgICBpZiAodHh0Py5sZW5ndGgpIHtcbiAgICAvLyAgICAgICAgIHRoaXMubWRvRmlsdGVyRW5hYmxlID0gdHJ1ZTtcbiAgICAvLyAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG9GaWx0ZXJlZCA9XG4gICAgLy8gICAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG9CYWNrdXAuZmlsdGVyKChpdGVtOiBhbnkpID0+XG4gICAgLy8gICAgICAgICAgICAgaXRlbS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModHh0LnRvTG93ZXJDYXNlKCkpXG4gICAgLy8gICAgICAgICAgICk7XG5cbiAgICAvLyAgICAgICAgIC8vIHNob3cgaW5pdGlhbCBwYWdlIG9mIGZpbHRlcmVkIHJlc3VsdHNcbiAgICAvLyAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG8gPSB0aGlzLm1hc3RlckRhdGEubWRvRmlsdGVyZWQuc2xpY2UoMCwgdGhpcy5tZG9MaXN0TG9hZENvdW50KTtcblxuICAgIC8vICAgICAgIH0gZWxzZSB7XG4gICAgLy8gICAgICAgICB0aGlzLm1kb0ZpbHRlckVuYWJsZSA9IGZhbHNlO1xuXG4gICAgLy8gICAgICAgICAvLyBzaG93IGZpcnN0IHBhZ2UgZnJvbSBiYWNrdXBcbiAgICAvLyAgICAgICAgIHRoaXMubWFzdGVyRGF0YS5tZG8gPSB0aGlzLm1hc3RlckRhdGEubWRvQmFja3VwLnNsaWNlKDAsIHRoaXMubWRvRGVmYXVsdExvYWRDb3VudCk7XG4gICAgLy8gICAgICAgICB0aGlzLm1kb0xpc3RMb2FkQ291bnQgPSB0aGlzLm1kb0RlZmF1bHRMb2FkQ291bnQ7XG4gICAgLy8gICAgICAgICB0aGlzLm1kb09mZnNldCA9IDA7XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICB9KTtcbiAgICAvLyB9XG5cblxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMubWFzdGVyRGF0YVsnbWRvQmFja3VwJ10pXG4gICAgLy8gaWYgKCF0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddLmxlbmd0aCkge1xuICAgIC8vICAgdGhpcy5nZXRtZG9TYWZlKClcbiAgICAvLyB9XG5cbiAgfVxuXG4gIC8vIHByaXZhdGUgZ2V0bWRvU2FmZSgpOiB2b2lkIHtcbiAgLy8gICBpZiAodGhpcy5tZG9Jbml0SW5Qcm9ncmVzcyB8fCB0aGlzLmlzTG9hZGluZ01vcmVtZG9zKSB7XG4gIC8vICAgICByZXR1cm5cbiAgLy8gICB9XG4gIC8vICAgdGhpcy5tZG9Jbml0SW5Qcm9ncmVzcyA9IHRydWVcbiAgLy8gICB0aGlzLmdldG1kbygpXG4gIC8vIH1cblxuICBpbml0aWFsaXplRm9ybSgpIHtcbiAgICB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGRpdmlzaW9uX25hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICByZXF1ZXN0X25hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgLy8gIHNlYXJjaG1kbzogWycnXSxcbiAgICB9KTtcbiAgfVxuXG5cblxuICBjYW5jZWxGb3JtKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKClcbiAgfVxuXG4gIHNhdmVEZXNpZ25hdGlvbigpIHtcbiAgICBjb25zdCBkaXZpc2lvbl9uYW1lOiBzdHJpbmcgPSB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdkaXZpc2lvbl9uYW1lJyk/LnZhbHVlO1xuXG4gICAgLy8gaWYgKCFzZWxlY3RlZG1kbykge1xuICAgIC8vICAgdGhpcy5zbmFja0Jhci5vcGVuKCdQbGVhc2Ugc2VsZWN0IGFuIG1kbyBsZWFkZXIvYWRtaW4nLCAnWCcsIHsgZHVyYXRpb246IDMwMDAgfSk7XG4gICAgLy8gICByZXR1cm47XG4gICAgLy8gfVxuXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGJhc2VPYmogPSB7XG4gICAgICByb2xlbWFwcGluZ19pZDogdGhpcy5yb2xlX21hcHBpbmdfaWRzPy5pZCxcbiAgICAgIGRlc2lnbmF0aW9uX25hbWU6IHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS52YWx1ZS5yZXF1ZXN0X25hbWUsXG4gICAgICB3aW5nX2RpdmlzaW9uX3NlY3Rpb246IHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS52YWx1ZS5kaXZpc2lvbl9uYW1lLFxuICAgIH07XG5cbiAgICAvLyBpZiAodGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/LnNiT3JnVHlwZSA9PT0gJ3N0YXRlJyAmJiB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRfbmFtZSkge1xuICAgIC8vICAgYmFzZU9ialsnZGVwYXJ0bWVudF9pZCddID0gdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50cztcbiAgICAvLyAgLy8gYmFzZU9ialsnZGVwYXJ0bWVudF9uYW1lJ10gPSB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRfbmFtZTtcbiAgICAvLyB9XG5cbiAgICAvLyBpZiAodGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iaj8ubWluaXN0cnk/LnNiT3JnVHlwZSA9PT0gJ21pbmlzdHJ5JyAmJiB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRfbmFtZSkge1xuICAgIC8vICAgYmFzZU9ialsnZGVwYXJ0bWVudF9pZCddID0gdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iai5kZXBhcnRtZW50cztcbiAgICAvLyAgLy8gYmFzZU9ialsnZGVwYXJ0bWVudF9uYW1lJ10gPSB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRfbmFtZTtcbiAgICAvLyB9XG5cbiAgICAvLyBDcmVhdGUgYW4gYXJyYXkgb2Ygb2JzZXJ2YWJsZXMsIG9uZSBwZXIgbWRvXG4gICAgY29uc3QgcmVxID0ge1xuICAgICAgLi4uYmFzZU9iaixcbiAgICAgLy8gbWRvX2lkOiBzZWxlY3RlZG1kb1xuICAgIH07XG5cbiAgICB0aGlzLnNoYXJlZFNlcnZpY2Uuc2F2ZURlc2lnbmF0aW9uQXBwcm92YWxSZXF1ZXN0KHJlcSlcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMubG9hZGluZyA9IGZhbHNlKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdEZXNpZ25hdGlvbiBSZXF1ZXN0IHNlbnQgc3VjY2Vzc2Z1bGx5JywgJ1gnLCB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItc3VjY2VzcyddXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoJ3NhdmVkJyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3InLCBlcnJvcilcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oKGVycm9yPy5lcnJvcj8uZGV0YWlsIHx8ICdGYWlsZWQgdG8gc2VuZCByZXF1ZXN0JyksICdYJywge1xuICAgICAgICAgICAgZHVyYXRpb246IDMwMDAsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLWVycm9yJ11cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBjbG9zZURpYWxvZygpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpXG4gIH1cblxuICBnZXRtZG8oc2VhcmNoVGV4dD86IHN0cmluZywgb2Zmc2V0PzogbnVtYmVyKTogdm9pZCB7XG4gICAgLy8gY2xlYXIgYW55IHByZXZpb3VzIGRlYnVnIGhvb2tzXG4gICAgaWYgKCFzZWFyY2hUZXh0IHx8IHNlYXJjaFRleHQ/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gbm9vcFxuICAgIH1cblxuICAgIGNvbnN0IHJlcU9mZnNldCA9ICh0eXBlb2Ygb2Zmc2V0ID09PSAnbnVtYmVyJykgPyBvZmZzZXQgOiB0aGlzLm1kb09mZnNldFxuICAgIGxldCByZXFMaW1pdCA9IHRoaXMubWRvRGVmYXVsdExvYWRDb3VudFxuICAgIGNvbnN0IHBhZ2VJbmRleCA9IHJlcUxpbWl0ID4gMCA/IE1hdGguZmxvb3IocmVxT2Zmc2V0IC8gcmVxTGltaXQpIDogMFxuICAgIC8vIGlmIHdlJ3JlIHJlcXVlc3RpbmcgZnJvbSBmaXJzdCBwYWdlLCBjbGVhciB0aGUgbm8tbW9yZS1kYXRhIGd1YXJkXG4gICAgaWYgKHBhZ2VJbmRleCA9PT0gMCkge1xuICAgICAgdGhpcy5ub01vcmVMZWdhY3ltZG9zID0gZmFsc2VcbiAgICAgIHJlcUxpbWl0ID0gNTBcbiAgICB9XG4gICAgLy8gY29uc3QgcmVxdWVzdEJvZHk6IGFueSA9IHtcbiAgICAvLyAgIGZpbHRlckNyaXRlcmlhTWFwOiB7XG4gICAgLy8gICAgIHN0YXR1czogJ0FjdGl2ZSdcbiAgICAvLyAgIH0sXG4gICAgLy8gICByZXF1ZXN0ZWRGaWVsZHM6IFtdLFxuICAgIC8vICAgcGFnZU51bWJlcjogcGFnZUluZGV4LFxuICAgIC8vICAgcGFnZVNpemU6IHJlcUxpbWl0LFxuICAgIC8vIH1cblxuICAgIGNvbnN0IHJlcXVlc3RCb2R5OiBhbnkgPSB7XG4gICAgICBcInJlcXVlc3RcIjoge1xuICAgICAgICBcImZpbHRlcnNcIjoge1xuICAgICAgICAgIFwib3JnYW5pc2F0aW9ucy5yb2xlc1wiOiBbXG4gICAgICAgICAgICBcIk1ET19MRUFERVJcIixcbiAgICAgICAgICAgIFwiTURPX0FETUlOXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIFwicm9vdE9yZ0lkXCI6IHRoaXMuc2hhcmVkU2VydmljZS5jYnBQbGFuRmluYWxPYmouZGVwYXJ0bWVudHMgPyB0aGlzLnNoYXJlZFNlcnZpY2UuY2JwUGxhbkZpbmFsT2JqLmRlcGFydG1lbnRzIDogdGhpcy5zaGFyZWRTZXJ2aWNlLmNicFBsYW5GaW5hbE9iai5taW5pc3RyeS5pZGVudGlmaWVyIFxuICAgICAgICB9LFxuICAgICAgICBcImZpZWxkc1wiOiBbXG4gICAgICAgICAgXCJmaXJzdE5hbWVcIixcbiAgICAgICAgICBcImxhc3ROYW1lXCIsXG4gICAgICAgICAgXCJpZFwiLFxuICAgICAgICAgIFwicm9vdE9yZ0lkXCIsXG4gICAgICAgICAgXCJvcmdhbmlzYXRpb25zXCIsXG4gICAgICAgICAgXCJyb2xlc1wiXG4gICAgICAgIF0sXG4gICAgICAgIHBhZ2VOdW1iZXI6IHBhZ2VJbmRleCxcbiAgICAgICAgcGFnZVNpemU6IHJlcUxpbWl0LFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2VhcmNoVGV4dD8ubGVuZ3RoKSB7XG4gICAgICByZXF1ZXN0Qm9keVsnc2VhcmNoU3RyaW5nJ10gPSBzZWFyY2hUZXh0XG4gICAgICAvLyB3aGVuIHNlYXJjaGluZywgc3RhcnQgZnJvbSBmaXJzdCBwYWdlXG4gICAgICByZXF1ZXN0Qm9keS5wYWdlTnVtYmVyID0gMFxuICAgICAgLy8gYWxsb3cgbGFyZ2VyIHBhZ2UgZm9yIHNlYXJjaCBpZiBuZWVkZWRcbiAgICAgIHJlcXVlc3RCb2R5LnBhZ2VTaXplID0gcGFnZUluZGV4ID09PSAwID8gNTAgOiB0aGlzLm1kb0xpc3RMb2FkQ291bnRcbiAgICAgIC8vIHJlc2V0IGd1YXJkIHdoZW4gcGVyZm9ybWluZyBhIGZyZXNoIHNlYXJjaFxuICAgICAgdGhpcy5ub01vcmVMZWdhY3ltZG9zID0gZmFsc2VcbiAgICB9XG5cbiAgICAvLyBpbmRpY2F0ZSBsb2FkaW5nIHN0YXRlIHNvIHNjcm9sbCBoYW5kbGVycyBkb24ndCB0cmlnZ2VyIHBhcmFsbGVsIGNhbGxzXG4gICAgdGhpcy5pc0xvYWRpbmdNb3JlbWRvcyA9IHRydWVcbiAgICBjb25zb2xlLmxvZygncmVxdWVzdEJvZHknLCByZXF1ZXN0Qm9keSlcbiAgICB0aGlzLnNoYXJlZFNlcnZpY2Uuc2VhcmNoUHVibGljbWRvKHJlcXVlc3RCb2R5KS5waXBlKGZpbmFsaXplKCgpID0+IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSBmYWxzZVxuICAgICAgdGhpcy5tZG9Jbml0SW5Qcm9ncmVzcyA9IGZhbHNlXG4gICAgfSkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGVudCA9IF8uZ2V0KHJlcywgJ2FkbWlucycsIFtdKVxuICAgICAgICAgIGNvbnNvbGUubG9nKCdjb250ZW50LS0nLCBjb250ZW50KVxuICAgICAgICAgIGNvbnN0IG1hcHBlZCA9IGNvbnRlbnQubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogaXRlbT8uaWQsXG4gICAgICAgICAgICBuYW1lOiBgJHtpdGVtPy5maXJzdF9uYW1lfSAke2l0ZW0/Lmxhc3RfbmFtZX1gIHx8ICcnLFxuICAgICAgICAgICAgc3RhdHVzOiBpdGVtPy5zdGF0dXMgfHwgJ0FjdGl2ZScsXG4gICAgICAgICAgICByb2xlX3R5cGU6IGl0ZW0/LnJvbGVfdHlwZSxcbiAgICAgICAgICAgIGRlcGFydG1lbnRfbmFtZTogaXRlbT8uZGVwYXJ0bWVudF9uYW1lXG5cbiAgICAgICAgICB9KSlcblxuICAgICAgICAgIC8vIHRvdGFsIGNvdW50IG1heSBiZSBwcmVzZW50IGluIGRpZmZlcmVudCBrZXlzIGRlcGVuZGluZyBvbiBBUEkgdmVyc2lvbi5cbiAgICAgICAgICAvLyBQcmVmZXIgJ3Jlc3VsdC5yZXN1bHQudG90YWxjb3VudCcgKGxlZ2FjeSBsb3dlci1jYXNlKSB0aGVuIGRhdGEudG90YWxDb3VudCwgdGhlbiB0b3RhbENvdW50XG4gICAgICAgICAgY29uc3QgdG90YWwgPSBfLmdldChyZXMsICdjb3VudCcsIF8uZ2V0KHJlcywgJ2NvdW50JywgXy5nZXQocmVzLCAnY291bnQnLCAwKSkpXG4gICAgICAgICAgdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQgPSB0b3RhbFxuXG4gICAgICAgICAgLy8gSWYgb2Zmc2V0IGlzIHplcm8gKGZpcnN0IHBhZ2UpIHJlcGxhY2UgYmFja3VwLCBvdGhlcndpc2UgYXBwZW5kICsgZGVkdXBlXG4gICAgICAgICAgaWYgKCF0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IHJlcU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhWydtZG9CYWNrdXAnXSA9IG1hcHBlZFxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjb21iaW5lZCA9ICh0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IFtdKS5jb25jYXQobWFwcGVkKVxuICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhWydtZG9CYWNrdXAnXSA9IF8udW5pcUJ5KGNvbWJpbmVkLCAoaXQ6IGFueSkgPT4gKGl0Py5uYW1lIHx8ICcnKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHNlcnZlciByZXR1cm5lZCBubyBuZXcgaXRlbXMsIG1hcmsgYXMgbm8tbW9yZS1kYXRhIHRvIHN0b3AgZnVydGhlciBzY3JvbGwgcmVxdWVzdHNcbiAgICAgICAgICBpZiAoIW1hcHBlZCB8fCBtYXBwZWQ/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5ub01vcmVMZWdhY3ltZG9zID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHdlJ3ZlIGxvYWRlZCBhdCBsZWFzdCB0aGUgdG90YWwgY291bnQsIG1hcmsgbm8tbW9yZS1kYXRhXG4gICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFNlYXJjaG1kb0NvdW50ICYmICh0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IFtdKS5sZW5ndGggPj0gdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMubm9Nb3JlTGVnYWN5bWRvcyA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFbnN1cmUgdmlzaWJsZSBsaXN0IG1hdGNoZXMgdGhlIHJlcXVlc3RlZCBkaXNwbGF5IGNvdW50XG4gICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhWydtZG8nXSA9ICh0aGlzLm1hc3RlckRhdGFbJ21kb0JhY2t1cCddIHx8IFtdKS5zbGljZSgwLCB0aGlzLm1kb0xpc3RMb2FkQ291bnQpXG4gICAgICAgICAgLy8gbG9hZGluZyBmbGFnIGNsZWFyZWQgaW4gZmluYWxpemUoKVxuICAgICAgICAgIHRoaXMuY2hlY2tDdXJyZW50bWRvUHJlc2VudCgpXG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgLy8gU3RvcCBmdXJ0aGVyIGF1dG9tYXRpYyBjYWxscyBvbiByZXBlYXRlZCBlcnJvcnMgdG8gYXZvaWQgdGlnaHQgbG9vcHNcbiAgICAgICAgICAvLyBsb2FkaW5nIGZsYWcgY2xlYXJlZCBpbiBmaW5hbGl6ZSgpXG4gICAgICAgICAgdGhpcy5ub01vcmVMZWdhY3ltZG9zID0gdHJ1ZVxuICAgICAgICAgIC8vIHRoaXMubWF0U25hY2tCYXIub3BlbignVW5hYmxlIHRvIGZldGNoIG1kbyBkZXRhaWxzLCBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyIScpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cbmNoZWNrQ3VycmVudG1kb1ByZXNlbnQoKSB7XG4gIGNvbnN0IHNlbGVjdGVkbWRvID0gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpPy52YWx1ZTtcblxuICBpZiAoIXNlbGVjdGVkbWRvIHx8ICF0aGlzLm1hc3RlckRhdGE/Lm1kbykgcmV0dXJuO1xuXG4gIGNvbnN0IGV4aXN0cyA9IHRoaXMubWFzdGVyRGF0YS5tZG8uc29tZShcbiAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBzZWxlY3RlZG1kbz8udG9Mb3dlckNhc2UoKVxuICApO1xuXG4gIGlmICghZXhpc3RzKSB7XG4gICAgY29uc3QgbmV3bWRvID0ge1xuICAgICAgbmFtZTogc2VsZWN0ZWRtZG8sXG4gICAgICBzdGF0dXM6ICdBY3RpdmUnLFxuICAgICAgaWQ6ICdjdXN0b20tJyArIERhdGUubm93KClcbiAgICB9O1xuXG4gICAgdGhpcy5tYXN0ZXJEYXRhLm1kb0JhY2t1cCA9IHRoaXMubWFzdGVyRGF0YS5tZG9CYWNrdXAgfHwgW107XG4gICAgdGhpcy5tYXN0ZXJEYXRhLm1kb0JhY2t1cC51bnNoaWZ0KG5ld21kbyk7XG4gICAgdGhpcy5tYXN0ZXJEYXRhLm1kby51bnNoaWZ0KG5ld21kbyk7XG4gIH1cbn1cbiAgb25tZG9Ecm9wZG93bkNsb3NlZCgpOiB2b2lkIHtcbiAgICAvLyBLZWVwIHRoZSBtZG8gdmFsdWUgYnV0IGNsZWFyIHRoZSBzZWFyY2ggaW5wdXRcbiAgICBjb25zdCBjdXJyZW50bWRvID0gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnZGl2aXNpb25fbmFtZScpIS52YWx1ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ3NlYXJjaG1kbycpKSB7XG4gICAgICAgIHRoaXMuYXBwcm92YWxSZXF1ZXN0Rm9ybS5nZXQoJ3NlYXJjaG1kbycpIS5zZXRWYWx1ZSgnJylcbiAgICAgIH1cbiAgICAgIC8vIEVuc3VyZSB0aGUgbWRvIHZhbHVlIHJlbWFpbnMgc2VsZWN0ZWRcbiAgICAgIGlmIChjdXJyZW50bWRvKSB7XG4gICAgICAgIGNvbnN0IG1kb0NvbnRyb2wgPSB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdkaXZpc2lvbl9uYW1lJyk7XG4gICAgICAgIGlmIChtZG9Db250cm9sKSB7XG4gICAgICAgICAgbWRvQ29udHJvbC5zZXRWYWx1ZShjdXJyZW50bWRvKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMTAwKVxuICB9XG5cbiAgbWRvU2VhcmNoKGV2dDogYW55KSB7XG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9IGV2dD8udGFyZ2V0Py52YWx1ZVxuICAgIGNvbnN0IHR4dCA9IChzZWFyY2hUZXh0IHx8ICcnKS50b1N0cmluZygpLnRyaW0oKVxuICAgIGlmICh0aGlzLmlzTG9hZGluZ01vcmVtZG9zKSByZXR1cm5cblxuICAgIHRoaXMubWRvU2VhcmNoVGV4dCA9IHR4dFxuICAgIGlmICh0eHQ/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5tZG9GaWx0ZXJFbmFibGUgPSB0cnVlXG4gICAgICB0aGlzLmlzTG9hZGluZ01vcmVtZG9zID0gdHJ1ZVxuICAgICAgdGhpcy5nZXRtZG8odHh0LCAwKVxuICAgIH0gZWxzZSBpZiAodGhpcy5tYXN0ZXJEYXRhICYmIHRoaXMubWFzdGVyRGF0YT8ubWRvQmFja3VwKSB7XG4gICAgICB0aGlzLm1hc3RlckRhdGEubWRvID0gdGhpcy5tYXN0ZXJEYXRhPy5tZG9CYWNrdXAuc2xpY2UoMCwgdGhpcy5tZG9EZWZhdWx0TG9hZENvdW50KVxuICAgICAgdGhpcy5tZG9GaWx0ZXJFbmFibGUgPSBmYWxzZVxuICAgICAgdGhpcy5jaGVja0N1cnJlbnRtZG9QcmVzZW50KClcbiAgICB9XG4gIH1cbiAgc2V0dXBTY3JvbGxMaXN0ZW5lcihvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAob3BlbmVkKSB7XG4gICAgICBpZiAoIXRoaXMuc2Nyb2xsTGlzdGVuZXJBdHRhY2hlZCkge1xuICAgICAgICB0aGlzLnNjcm9sbExpc3RlbmVyQXR0YWNoZWQgPSB0cnVlXG5cbiAgICAgICAgdGhpcy5tZG9GaWx0ZXJFbmFibGUgPSBmYWxzZVxuICAgICAgICB0aGlzLm1kb0xpc3RMb2FkQ291bnQgPSB0aGlzLm1kb0RlZmF1bHRMb2FkQ291bnRcbiAgICAgICAgdGhpcy5tZG9PZmZzZXQgPSAwXG5cbiAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlbWRvcyA9IHRydWVcbiAgICAgICAgdGhpcy5nZXRtZG8odW5kZWZpbmVkLCAwKVxuXG4gICAgICAgIC8vIENsZWFyIHNlYXJjaCBib3ggb25jZVxuICAgICAgICBpZiAodGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnc2VhcmNobWRvJykpIHtcbiAgICAgICAgICB0aGlzLmFwcHJvdmFsUmVxdWVzdEZvcm0uZ2V0KCdzZWFyY2htZG8nKSEuc2V0VmFsdWUoJycpXG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBjb25zdCBzZWFyY2hJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWFyY2gtaW5wdXQnKSBhcyBIVE1MSW5wdXRFbGVtZW50XG4gICAgICAgICAgaWYgKHNlYXJjaElucHV0KSB7XG4gICAgICAgICAgICBzZWFyY2hJbnB1dC5mb2N1cygpXG4gICAgICAgICAgfVxuICAgICAgICB9LCAxMDApXG5cbiAgICAgICAgLy8gQXR0YWNoIHNjcm9sbCBsaXN0ZW5lciBzYWZlbHlcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubWF0LXNlbGVjdC1wYW5lbC5zZWFyY2gtcGFuZWwnKSBhcyBIVE1MRWxlbWVudCB8IG51bGxcbiAgICAgICAgICBpZiAocGFuZWwpIHtcbiAgICAgICAgICAgIC8vIGFsaWduIHBhbmVsIHdpZHRoIHRvIHRyaWdnZXJcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJFbCA9IHRoaXMubWRvUmVmICYmIHRoaXMubWRvUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICAgICAgaWYgKHRyaWdnZXJFbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY3QgPSB0cmlnZ2VyRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICAgICAgICAvLyBzZXQgd2lkdGggYW5kIGxlZnQgc28gcGFuZWwgYWxpZ25zIGV4YWN0bHkgYmVsb3cgdGhlIHRyaWdnZXJcbiAgICAgICAgICAgICAgICBwYW5lbC5zdHlsZS53aWR0aCA9IGAke01hdGgucm91bmQocmVjdC53aWR0aCl9cHhgXG4gICAgICAgICAgICAgICAgLy8gbGVhdmUgbGVmdCB0byBvdmVybGF5IHBvc2l0aW9uaW5nIGJ1dCBudWRnZSBpZiBuZWNlc3NhcnlcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGxlZnQgcmVsYXRpdmUgdG8gdmlld3BvcnQgYW5kIGFwcGx5IHRvIHBhbmVsXG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxheUxlZnQgPSByZWN0LmxlZnRcbiAgICAgICAgICAgICAgICBwYW5lbC5zdHlsZS5sZWZ0ID0gYCR7TWF0aC5yb3VuZChvdmVybGF5TGVmdCl9cHhgXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgLy8gaWdub3JlIERPTSBlcnJvcnMgaW4gU1NSIG9yIHVuZXhwZWN0ZWQgY2FzZXNcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsSGFuZGxlciA9IHRoaXMub25tZG9TZWxlY3RTY3JvbGwuYmluZCh0aGlzKVxuICAgICAgICAgICAgcGFuZWwuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9LCAxNTApXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIERyb3Bkb3duIGNsb3NlZCDigJQgcmVzZXQgc2Nyb2xsIGZsYWcgc28gaXQgY2FuIHJlYXR0YWNoIG5leHQgdGltZVxuICAgICAgdGhpcy5zY3JvbGxMaXN0ZW5lckF0dGFjaGVkID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICBvbm1kb1NlbGVjdFNjcm9sbChldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2ZW50Py50YXJnZXRcbiAgICBpZiAoIXRoaXMubWRvRmlsdGVyRW5hYmxlKSB7XG4gICAgICAvLyBDaGVjayBpZiB1c2VyIGhhcyBzY3JvbGxlZCB0byB0aGUgYm90dG9tICh3aXRoIGEgc21hbGwgdGhyZXNob2xkKVxuICAgICAgaWYgKGVsZW1lbnQuc2Nyb2xsVG9wICsgZWxlbWVudD8uY2xpZW50SGVpZ2h0ID49IGVsZW1lbnQ/LnNjcm9sbEhlaWdodCAtIDUpIHtcbiAgICAgICAgLy8gT25seSBsb2FkIG1vcmUgaWYgbm90IGFscmVhZHkgbG9hZGluZyBhbmQgaWYgdGhlcmUgYXJlIHBvdGVudGlhbGx5IG1vcmUgaXRlbXNcbiAgICAgICAgaWYgKCF0aGlzLmlzTG9hZGluZ01vcmVtZG9zKSB7XG4gICAgICAgICAgLy8gSWYgb3JnIHVzZXMgSUdPVCBtZG8gdGF4b25vbXksIHJlcXVlc3QgbW9yZSBmcm9tIHRoZSBBUEkgYnkgaW5jcmVhc2luZyB0aGUgbGltaXRcbiAgICAgICAgICBpZiAodGhpcy5tYXN0ZXJEYXRhPy5tZG9CYWNrdXA/Lmxlbmd0aCA+IHRoaXMubWFzdGVyRGF0YT8ubWRvPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIC8vIExvY2FsIHBhZ2luYXRpb246IGV4cGFuZCB0aGUgc2xpY2VkIGxpc3RcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLm1kb0xpc3RMb2FkQ291bnQgKz0gdGhpcy5tZG9EZWZhdWx0TG9hZENvdW50XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGZpbHRlcmVkIGxpc3Qgd2l0aCBtb3JlIGl0ZW1zXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5tYXN0ZXJEYXRhLm1kbyA9IHRoaXMubWFzdGVyRGF0YT8ubWRvQmFja3VwPy5zbGljZSgwLCB0aGlzLm1kb0xpc3RMb2FkQ291bnQpXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tDdXJyZW50bWRvUHJlc2VudCgpXG4gICAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nTW9yZW1kb3MgPSBmYWxzZVxuICAgICAgICAgICAgfSwgNTAwKSAvLyBTbWFsbCB0aW1lb3V0IHRvIHNpbXVsYXRlIGxvYWRpbmcgYW5kIHByZXZlbnQgbXVsdGlwbGUgdHJpZ2dlcnNcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTGVnYWN5IChzZXJ2ZXIpIHBhZ2luYXRpb246IHJlcXVlc3QgbmV4dCBwYWdlIGlmIHRvdGFsIG5vdCByZWFjaGVkXG4gICAgICAgICAgICBjb25zdCBsb2FkZWRMZWdhY3kgPSAodGhpcy5tYXN0ZXJEYXRhPy5tZG9CYWNrdXAgfHwgW10pLmxlbmd0aFxuICAgICAgICAgICAgaWYgKCF0aGlzLm5vTW9yZUxlZ2FjeW1kb3MgJiYgdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQgJiYgbG9hZGVkTGVnYWN5IDwgdGhpcy5kZWZhdWx0U2VhcmNobWRvQ291bnQpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmdNb3JlbWRvcyA9IHRydWVcbiAgICAgICAgICAgICAgdGhpcy5tZG9PZmZzZXQgPSAodGhpcy5tZG9PZmZzZXQgfHwgMCkgKyB0aGlzLm1kb0RlZmF1bHRMb2FkQ291bnRcbiAgICAgICAgICAgICAgLy8gaW5jcmVhc2UgZGlzcGxheSBjb3VudCB0byBpbmNsdWRlIG5ld2x5IGZldGNoZWQgaXRlbXNcbiAgICAgICAgICAgICAgdGhpcy5tZG9MaXN0TG9hZENvdW50ICs9IHRoaXMubWRvRGVmYXVsdExvYWRDb3VudFxuICAgICAgICAgICAgICB0aGlzLmdldG1kbyh1bmRlZmluZWQsIHRoaXMubWRvT2Zmc2V0KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBzZWFyY2htZG9Db250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5hcHByb3ZhbFJlcXVlc3RGb3JtLmdldCgnc2VhcmNobWRvJykgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuXG59XG4iLCI8ZGl2IGNsYXNzPVwidmlldy1jYnAtcGxhblwiPlxuICAgIDxkaXYgY2xhc3M9XCJwb3B1cC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwLWhlYWRlclwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPlNlbmQgZm9yIERlc2lnbmF0aW9uIE5hbWUgQXBwcm92YWw8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ViLWhlYWRpbmdcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gc2VuZCB0aGlzIGRlc2lnbmF0aW9uIGZvciBhZGRpbmcgaW4gaUdPVCBkZXNpZ25hdGlvbiBNYXN0ZXI/PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1jb250YWluZXJcIiBbZm9ybUdyb3VwXT1cImFwcHJvdmFsUmVxdWVzdEZvcm1cIj5cbiAgICAgICAgPG1hdC1jYXJkIGNsYXNzPVwibXQtMVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWItaGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8cD5EZXNpZ25hdGlvbiBOYW1lPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00IGFkZGl0aW9uYWwtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJyZXF1ZXN0X25hbWVcIiBbdmFsdWVdPVwiXCIgcGxhY2Vob2xkZXI9XCJFbnRlciBhIG5hbWUgZm9yIHRoaXMgcmVxdWVzdC4uLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDI1cHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDhweCAxMnB4OyB3aWR0aDoxMDAlO2ZvbnQtc2l6ZTogMTRweDtmb250LWZhbWlseTogJ0xhdG8nO1wiPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPkVudGVyIERpdmlzaW9uL1dpbmc8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00IGFkZGl0aW9uYWwtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJkaXZpc2lvbl9uYW1lXCIgW3ZhbHVlXT1cIlwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgRGl2aXNpb24vV2luZy4uLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlci1yYWRpdXM6IDI1cHg7IGJvcmRlcjogMXB4IHNvbGlkICNjY2M7IHBhZGRpbmc6IDhweCAxMnB4OyB3aWR0aDoxMDAlO2ZvbnQtc2l6ZTogMTRweDtmb250LWZhbWlseTogJ0xhdG8nO1wiPlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXQtMiBzZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1oZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwPlVwbG9hZCBEb2N1bWVudCAoUERGL1dvcmQvRXhjZWwvVFhUKTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS11cGxvYWQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidXBsb2FkRG9jXCIgY2xhc3M9XCJmaWxlLXVwbG9hZC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlLXVwbG9hZC1pY29uXCI+8J+Tjjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHVwbG9hZGVkRmlsZT8ubmFtZSB8fCAnQ2hvb3NlIGEgZmlsZSAoUERGLCBXb3JkLCBFeGNlbCwgVFhUKScgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZmlsZS11cGxvYWQtaGludFwiPk1heCBmaWxlIHNpemU6IDI1TUI8L3NtYWxsPlxuXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInVwbG9hZERvY1wiIHR5cGU9XCJmaWxlXCIgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9XCIucGRmLC5kb2MsLmRvY3gsLnhscywueGxzeCwudHh0XCIgY2xhc3M9XCJmaWxlLXVwbG9hZC1pbnB1dFwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInVwbG9hZEVycm9yXCIgY2xhc3M9XCJlcnJvclwiPnt7IHVwbG9hZEVycm9yIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgICAgPC9tYXQtY2FyZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicG9wdXAtZm9vdGVyXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJidG4tYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIHZhbHVlPVwiQ2FuY2VsXCIgKGNsaWNrKT1cImNhbmNlbEZvcm0oKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJhcHByb3ZhbFJlcXVlc3RGb3JtPy5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJhcHByb3ZhbFJlcXVlc3RGb3JtPy5pbnZhbGlkID8gJ2J0bi1kaXNhYmxlJzonYnRuLWFjdGl2ZSdcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZURlc2lnbmF0aW9uKClcIiA+PG1hdC1pY29uPnNlbmQ8L21hdC1pY29uPiBTZW5kIFJlcXVlc3Q8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvdmVybGF5LWxvYWRlclwiICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgIDxtYXQtc3Bpbm5lciBkaWFtZXRlcj1cIjUwXCI+PC9tYXQtc3Bpbm5lcj5cbjwvZGl2PiJdfQ==