@gsp-svc/formdoc-upload 0.2.0 → 0.2.1

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.
@@ -156,6 +156,7 @@ var FileUploadComponent = /** @class */ (function () {
156
156
  if (this.oldIdList != null && this.oldIdList.length > 0) {
157
157
  // this.uploadService.cancel(this.oldIdList, this.rootId).subscribe();
158
158
  }
159
+ this.radioButtonGroupValue = 'showByGroup';
159
160
  };
160
161
  /**
161
162
  * @return {?}
@@ -1196,8 +1197,8 @@ var FileUploadComponent = /** @class */ (function () {
1196
1197
  FileUploadComponent.decorators = [
1197
1198
  { type: Component, args: [{
1198
1199
  selector: 'app-file-upload',
1199
- template: "<div *ngIf=\"hasSelectedFile\">\n\n <div class=\"farris-header\" style=\"height: 50px; width: 100%\">\n <div class=\"btn btn-secondary upload_button\">\n <img [src]=\"uploadLittleIconAddress\">\n <span>{{'uploadFile' | locale}} </span>\n <input type=\"file\" (focus)=\"showLoading()\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\"\n title=\"\" [accept]=\"fileType\">\n </div>\n\n\n <button *ngIf=\"showType==0 && !fileAllSelected && files.length >0 \" style=\"padding-left: 20px\"\n class=\"btn-link btn ng-star-inserted\" (click)=\"selectAllFile()\">{{'selectAll' | locale}}</button>\n <button *ngIf=\"showType==0 && fileAllSelected && files.length >0 \" style=\"padding-left: 20px\"\n class=\"btn-link btn ng-star-inserted\" (click)=\"selectAllFile()\">{{'selectNull' | locale}}</button>\n <button *ngIf=\"showType==0 && selectedFileCount>0\" style=\"padding-left: 20px\"\n class=\"btn-link btn ng-star-inserted\" (click)=\"listMultipleDeleteFile()\">{{'delete' | locale}}</button>\n\n <button *ngIf=\"showType==1 && selectedFileCount>0\" style=\"padding-left: 20px\"\n class=\"btn-link btn ng-star-inserted\" (click)=\"listMultipleDeleteFile()\">{{'delete' | locale}}</button>\n\n <kendo-buttongroup [selection]=\"'single'\" class=\"button_group_upload \"\n style=\"background-color: #ffffff; color: #388FFF;border: 1px solid #ddd;\" look=\"flat\">\n <button kendoButton [selected]=\"true\" [toggleable]=\"true\"\n [imageUrl]=\"'/platform/runtime/dfs/images/piclist.png'\" (click)=\"showByGroup()\"></button>\n <button kendoButton [toggleable]=\"true\" [imageUrl]=\"'/platform/runtime/dfs/images/queuelist.png'\"\n (click)=\"showByList()\"></button>\n </kendo-buttongroup>\n\n\n </div>\n\n <!-- <div class=\"progress\" style=\"height: 12px;\">\n <div class=\"progress-bar\" role=\"progressbar\" [ngStyle]=\"uploadProcess\"></div>\n </div> -->\n\n <div class=\"pic_list\" *ngIf=\"showType==0\">\n <ul *ngFor=\"let file of files\">\n <li (mouseenter)=\"mouseOver(file)\" (mouseleave)=\"mouseOut(file)\">\n <div *ngIf=\"file.isUploading\">\n <farris-progress [type]=\"'circle'\" [percent]=\"file.uploadProcess\" [strokeLinecap]=\"'square'\"\n [status]=\"'active'\"></farris-progress>\n </div>\n\n <table *ngIf=\"!file.uploadResult && !file.isUploading\"\n style=\"margin: 0 auto; border: 1px solid #ddd; width: 135px; height: 160px;\">\n <tr style=\"margin: 0 auto ; height: 80px;\">\n <td style=\"text-align: center\"><span class=\"f-icon f-icon-warn\"></span></td>\n </tr>\n <tr style=\"margin: 0 auto ; height: 30px;\">\n <td style=\"text-align: center\"> {{'uploadFailure' | locale}} </td>\n </tr>\n <tr>\n <td style=\"text-align: center\"><button style=\"margin: 0 auto ; height: 20px; \"\n class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">{{'detail' |\n locale}}</button></td>\n </tr>\n </table>\n <div *ngIf=\"!file.isUploading && file.uploadResult\" style=\"border: 1px solid #ddd;\">\n <img [src]='file.source'>\n <div *ngIf=\"haveExtensionProperty\"\n style=\"width: 133px; height: 25px; background-color: white; position: absolute;bottom: 0; \">\n\n <div style=\"width: 100px;height: 25px;position:absolute;margin: 0 17px;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"propertiesNames\"\n [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"typeChange($event,file)\"\n [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </div>\n </div>\n <div *ngIf=\"haveSecurityInfo\"\n style=\"width: 133px; height: 25px; background-color: white; position: absolute;bottom: 0; \">\n\n <div style=\"width: 100px;height: 25px;position:absolute;margin: 0 17px;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"securityInfoList\"\n [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"securityChange($event,file)\"\n [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </div>\n </div>\n </div>\n <table *ngIf=\"!file.isUploading\">\n <tr style=\"height: 20px\">\n <td style=\"width: 15px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" [id]=\"file.name\" (click)=\"checkoutSelectFile(file.name)\"> -->\n <div class=\"farris-input-wrap\" style=\"height: 20px\" (click)=\"checkoutSelectFile(file)\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0;height: 20px;\"\n [ngStyle]=\"checkboxPos\">\n <input class=\"custom-control-input\" type=\"checkbox\" [id]=\"file.name\"\n [(ngModel)]=\"file.selectd\">\n <label class=\"custom-control-label\"\n style=\"padding: 0 0 10px 0; position: relative; top: -8px;\"></label>\n </div>\n </div>\n </td>\n <td style=\"width: 120px; vertical-align: middle; text-align: center\" [title]=\"file.name\">\n {{file.picListDisplayName}}</td>\n </tr>\n </table>\n <!-- <span>{{file.picListDisplayName}}</span> -->\n <!-- <p class=\"filename\">{{file.picListDisplayName}}</p> -->\n <button *ngIf=\"!file.isUploading && file.mouseOn\"\n style=\"position: absolute; top: 0; right: 0px; width: 24px; height: 24px;\" kendoButton\n [icon]=\"'delete'\" (click)=\"listDeleteFile(file)\"></button>\n <!-- <button *ngIf=\"file.hasUploaded\" class=\"k-primary\" kendoButton [icon]=\"'check'\" [disabled]=\"true\"></button> -->\n </li>\n </ul>\n <br>\n </div>\n\n <div class=\"queue_list\" *ngIf=\"showType==1\">\n <table>\n <tr style=\"height: 50px; table-layout:fixed;\">\n <th style=\"width: 40px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" id=\"allCheckBox\" (click)=\"selectAllFile()\"> -->\n <div class=\"farris-input-wrap\" (click)=\"selectAllFile()\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0\">\n <input class=\"custom-control-input\" type=\"checkbox\" id=\"allCheckBox\"\n [(ngModel)]=\"fileAllSelected\">\n <label class=\"custom-control-label\" style=\"padding: 0\"></label>\n </div>\n </div>\n </th>\n <th style=\"vertical-align: middle\" [ngStyle]=\"queueListStyle\">{{'fileName' | locale}}</th>\n <th style=\"width: 100px; vertical-align: middle\">{{'size' | locale}}</th>\n <th style=\"width: 170px; vertical-align: middle; text-align: center\">{{'state' | locale}}</th>\n <th *ngIf=\"haveExtensionProperty\" style=\"width: 100px; vertical-align: middle; text-align: center\">\n {{storageExtension.extensionName}}\n </th>\n <th style=\"width: 140px; vertical-align: middle; text-align: center\">{{'operation' | locale}}</th>\n </tr>\n </table>\n <div style=\"height: 370px; overflow: auto;\">\n <table>\n <tr *ngFor=\"let file of files\" style=\"height: 40px\">\n <td colspan=\"5\" *ngIf=\"file.isUploading\">\n <!-- <div style=\"width:100%; display: table-cell; vertical-align: middle; text-align: center; \"> -->\n <div style=\"width: 500px;margin:0 auto\">\n <farris-progress [percent]=\"file.uploadProcess\" [status]=\"'active'\">\n </farris-progress>\n </div>\n\n </td>\n <td *ngIf=\"!file.isUploading\" style=\" width: 40px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" [id]=\"file.name\" (click)=\"checkoutSelectFile(file.name)\"> -->\n <div class=\"farris-input-wrap\" (click)=\"checkoutSelectFile(file)\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0\">\n <input class=\"custom-control-input\" type=\"checkbox\" [id]=\"file.name\"\n [(ngModel)]=\"file.selectd\">\n <label class=\"custom-control-label\" style=\"padding: 0\"></label>\n </div>\n </div>\n </td>\n <td *ngIf=\"!file.isUploading\" style=\"vertical-align: middle\" [ngStyle]=\"queueListStyle\">\n {{file.queueListDisplayName}}</td>\n <td *ngIf=\"!file.isUploading\" style=\"width: 100px; vertical-align: middle\">{{file.size}}</td>\n <td *ngIf=\"!file.isUploading\" style=\"text-align: center; width: 170px; vertical-align: middle;\">\n <table *ngIf=\"!file.uploadResult\" style=\"margin: 0 auto\">\n <tr style=\"margin: 0 auto\">\n <td><span class=\"f-icon f-icon-error\"></span></td>\n <td> {{'uploadFailure' | locale}} </td>\n <td><button style=\"height: 24px\" class=\"btn-link btn ng-star-inserted\"\n (click)=\"showErrorMessage(file)\">{{'detail' | locale}}</button></td>\n </tr>\n </table>\n <!-- <span *ngIf=\"!file.uploadResult\"><span class=\"f-icon f-icon-error\"></span> \u4E0A\u4F20\u5931\u8D25 <button\n class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">\u8BE6\u60C5</button></span> -->\n <span *ngIf=\"file.uploadResult\"><span class=\"f-icon f-icon-success\"></span> {{'uploadSucceed' |\n locale}}</span>\n </td>\n <td *ngIf=\"!file.isUploading&&haveExtensionProperty\"\n style=\"text-align: center; width: 100px; vertical-align: middle;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"propertiesNames\"\n [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"typeChange($event,file)\"\n [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </td>\n <td *ngIf=\"!file.isUploading&&haveSecurityInfo\"\n style=\"text-align: center; width: 100px; vertical-align: middle;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"securityInfoList\"\n [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"securityChange($event,file)\"\n [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </td>\n\n <td *ngIf=\"!file.isUploading\" style=\"text-align: center; width: 140px; vertical-align: middle;\">\n <!-- <button *ngIf=\"file.uploadResult\" class=\"btn-link btn ng-star-inserted\" (click)=\"retryUploadFile(file.name)\">\u91CD\u8BD5</button> -->\n <button class=\"btn-link btn ng-star-inserted\" style=\"margin: 0 auto\"\n (click)=\"listDeleteFile(file)\">{{'delete' | locale}}</button>\n </td>\n\n </tr>\n </table>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"!hasSelectedFile\" class='home_page'>\n <img [src]=\"uploadIconAddress\">\n <div>\n <span class=\"btn btn-primary btn-lg\">{{'uploadFile' | locale}} </span>\n <input type=\"file\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\" title=\"\" [accept]=\"fileType\">\n <!-- <input type=\"file\" (focus)=\"showLoading()\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\" title=\"\" [accept]=\"fileType\"> -->\n </div>\n</div>",
1200
- styles: [".home_page{text-align:center}.home_page img{position:absolute;top:180px;margin-left:-35px;width:70px;height:56px}.home_page div{position:absolute;left:50%;top:255px;margin-left:-75px;width:150px;height:32px;overflow:hidden}.home_page div span{width:150px;height:32px;position:absolute;z-index:10;left:0}.home_page div input{position:absolute;left:0;top:0;opacity:0;filter:'alpha(opacity=0)';z-index:11}.upload_button{width:110px;height:32px;overflow:hidden}.upload_button span{position:relative;right:-4px;top:4px;width:56px;height:22px;font-size:14px}.upload_button input{height:32px;width:110px;position:absolute;left:22px;top:12px;opacity:0;filter:'alpha(opacity=0)';overflow:hidden}.upload_button img{position:relative;left:-6px;top:3px;width:14px;height:14px}.button_group_upload{position:absolute;right:18px;top:12px;height:26px;width:53px}.button_group_upload button{height:26px;width:26px}.fileinput-button{position:absolute;right:60px;bottom:40px;overflow:hidden;width:24px;height:24px;border-radius:12px;transform:scale(2.5);-ms-transform:scale(2.5);-moz-transform:scale(2.5);-webkit-transform:scale(2.5);-o-transform:scale(2.5);color:#0686fd}.fileinput-button input{position:absolute;left:0;top:0;opacity:0;filter:'alpha(opacity=0)'}.pic-droplist{height:24px;color:#e0e1e2;background-color:#e0e1e2}.pic-droplist input-group{display:table-cell;width:100px;text-align:center;border:0}.pic-droplist input-group div{border:0}.pic-droplist input-group div div,.pic-droplist input-group div input{background-color:#e0e1e2}.pic_list{padding:0;height:415px;overflow-y:auto;overflow-x:hidden}.pic_list ul{padding:0;list-style:none;width:100%;margin:20px 0 0 20px}.pic_list ul li{height:179px;width:135px;margin:8px 0 8px 12px;float:left;overflow:hidden;align-items:center;position:relative}.pic_list ul li div{width:135px;height:159px;margin:auto;display:table-cell;vertical-align:middle;text-align:center;position:relative}.pic_list ul li div img{max-width:120px;max-height:118px;align-items:center;margin:auto;vertical-align:middle;text-align:center}.pic_list ul li span.filename{width:100px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue_list{display:block;height:420px;overflow-y:auto}.file_list{list-style:none;margin:0;padding:0;overflow-x:hidden;overflow-y:auto}.file_list li{height:50px;line-height:35px;font-size:16px;position:relative}.file_list li button{float:right;top:6px;right:10px;width:20px}.file_list li p.title{padding:0 0 0 6px;margin:0 210px 0 0}.file_list li p.size{position:absolute;width:100px;top:0;right:100px}"]
1200
+ template: "<div *ngIf=\"hasSelectedFile\">\n\n <div class=\"farris-header\" style=\"height: 50px; width: 100%\">\n <div class=\"btn btn-secondary upload_button\">\n <img [src]=\"uploadLittleIconAddress\">\n <span>{{'uploadFile' | locale}} </span>\n <input type=\"file\" (focus)=\"showLoading()\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\"\n title=\"\" [accept]=\"fileType\">\n </div>\n\n\n <button *ngIf=\"showType==0 && !fileAllSelected && files.length >0 \" style=\"padding-left: 20px\"\n class=\"btn-link btn ng-star-inserted\" (click)=\"selectAllFile()\">{{'selectAll' | locale}}</button>\n <button *ngIf=\"showType==0 && fileAllSelected && files.length >0 \" style=\"padding-left: 20px\"\n class=\"btn-link btn ng-star-inserted\" (click)=\"selectAllFile()\">{{'selectNull' | locale}}</button>\n <button *ngIf=\"showType==0 && selectedFileCount>0\" style=\"padding-left: 20px\"\n class=\"btn-link btn ng-star-inserted\" (click)=\"listMultipleDeleteFile()\">{{'delete' | locale}}</button>\n\n <button *ngIf=\"showType==1 && selectedFileCount>0\" style=\"padding-left: 20px\"\n class=\"btn-link btn ng-star-inserted\" (click)=\"listMultipleDeleteFile()\">{{'delete' | locale}}</button>\n\n <farris-radio-group class=\"button_group_upload\" [(model)]=\"radioButtonGroupValue\" [horizontal]=\"false\">\n <farris-radio-button [label]=\"'showByGroup'\" (click)=\"showByGroup()\">\n <span class=\"f-icon f-icon-sudoku-new\"> </span>\n </farris-radio-button>\n <farris-radio-button [label]=\"'showByList'\" (click)=\"showByList()\">\n <span class=\"f-icon f-icon-page-title-define\"> </span>\n </farris-radio-button>\n\n </farris-radio-group>\n\n <!-- <kendo-buttongroup [selection]=\"'single'\" class=\"button_group_upload \"\n style=\"background-color: #ffffff; color: #388FFF;border: 1px solid #ddd;\" look=\"flat\">\n <button kendoButton [selected]=\"true\" [toggleable]=\"true\"\n [imageUrl]=\"'/platform/runtime/dfs/images/piclist.png'\" (click)=\"showByGroup()\"></button>\n <button kendoButton [toggleable]=\"true\" [imageUrl]=\"'/platform/runtime/dfs/images/queuelist.png'\"\n (click)=\"showByList()\"></button>\n </kendo-buttongroup> -->\n\n\n </div>\n\n <!-- <div class=\"progress\" style=\"height: 12px;\">\n <div class=\"progress-bar\" role=\"progressbar\" [ngStyle]=\"uploadProcess\"></div>\n </div> -->\n\n <div class=\"pic_list\" *ngIf=\"showType==0\">\n <ul *ngFor=\"let file of files\">\n <li (mouseenter)=\"mouseOver(file)\" (mouseleave)=\"mouseOut(file)\">\n <div *ngIf=\"file.isUploading\">\n <farris-progress [type]=\"'circle'\" [percent]=\"file.uploadProcess\" [strokeLinecap]=\"'square'\"\n [status]=\"'active'\"></farris-progress>\n </div>\n\n <table *ngIf=\"!file.uploadResult && !file.isUploading\"\n style=\"margin: 0 auto; border: 1px solid #ddd; width: 135px; height: 160px;\">\n <tr style=\"margin: 0 auto ; height: 80px;\">\n <td style=\"text-align: center\"><span class=\"f-icon f-icon-warn\"></span></td>\n </tr>\n <tr style=\"margin: 0 auto ; height: 30px;\">\n <td style=\"text-align: center\"> {{'uploadFailure' | locale}} </td>\n </tr>\n <tr>\n <td style=\"text-align: center\"><button style=\"margin: 0 auto ; height: 20px; \"\n class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">{{'detail' |\n locale}}</button></td>\n </tr>\n </table>\n <div *ngIf=\"!file.isUploading && file.uploadResult\" style=\"border: 1px solid #ddd;\">\n <img [src]='file.source'>\n <div *ngIf=\"haveExtensionProperty\"\n style=\"width: 133px; height: 25px; background-color: white; position: absolute;bottom: 0; \">\n\n <div style=\"width: 100px;height: 25px;position:absolute;margin: 0 17px;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"propertiesNames\"\n [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"typeChange($event,file)\"\n [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </div>\n </div>\n <div *ngIf=\"haveSecurityInfo\"\n style=\"width: 133px; height: 25px; background-color: white; position: absolute;bottom: 0; \">\n\n <div style=\"width: 100px;height: 25px;position:absolute;margin: 0 17px;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"securityInfoList\"\n [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"securityChange($event,file)\"\n [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </div>\n </div>\n </div>\n <table *ngIf=\"!file.isUploading\">\n <tr style=\"height: 20px\">\n <td style=\"width: 15px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" [id]=\"file.name\" (click)=\"checkoutSelectFile(file.name)\"> -->\n <div class=\"farris-input-wrap\" style=\"height: 20px\" (click)=\"checkoutSelectFile(file)\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0;height: 20px;\"\n [ngStyle]=\"checkboxPos\">\n <input class=\"custom-control-input\" type=\"checkbox\" [id]=\"file.name\"\n [(ngModel)]=\"file.selectd\">\n <label class=\"custom-control-label\"\n style=\"padding: 0 0 10px 0; position: relative; top: -8px;\"></label>\n </div>\n </div>\n </td>\n <td style=\"width: 120px; vertical-align: middle; text-align: center\" [title]=\"file.name\">\n {{file.picListDisplayName}}</td>\n </tr>\n </table>\n <!-- <span>{{file.picListDisplayName}}</span> -->\n <!-- <p class=\"filename\">{{file.picListDisplayName}}</p> -->\n <button *ngIf=\"!file.isUploading && file.mouseOn\"\n style=\"position: absolute; top: 0; right: 0px; width: 24px; height: 24px; border: none;\"\n (click)=\"listDeleteFile(file)\">\n <span style=\"position: relative; right: 2px; \" class=\"f-icon f-icon-delete\"> </span>\n </button>\n <!-- <button *ngIf=\"file.hasUploaded\" class=\"k-primary\" kendoButton [icon]=\"'check'\" [disabled]=\"true\"></button> -->\n </li>\n </ul>\n <br>\n </div>\n\n <div class=\"queue_list\" *ngIf=\"showType==1\">\n <table>\n <tr style=\"height: 50px; table-layout:fixed;\">\n <th style=\"width: 40px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" id=\"allCheckBox\" (click)=\"selectAllFile()\"> -->\n <div class=\"farris-input-wrap\" (click)=\"selectAllFile()\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0\">\n <input class=\"custom-control-input\" type=\"checkbox\" id=\"allCheckBox\"\n [(ngModel)]=\"fileAllSelected\">\n <label class=\"custom-control-label\" style=\"padding: 0\"></label>\n </div>\n </div>\n </th>\n <th style=\"vertical-align: middle\" [ngStyle]=\"queueListStyle\">{{'fileName' | locale}}</th>\n <th style=\"width: 100px; vertical-align: middle\">{{'size' | locale}}</th>\n <th style=\"width: 170px; vertical-align: middle; text-align: center\">{{'state' | locale}}</th>\n <th *ngIf=\"haveExtensionProperty\" style=\"width: 100px; vertical-align: middle; text-align: center\">\n {{storageExtension.extensionName}}\n </th>\n <th style=\"width: 140px; vertical-align: middle; text-align: center\">{{'operation' | locale}}</th>\n </tr>\n </table>\n <div style=\"height: 370px; overflow: auto;\">\n <table>\n <tr *ngFor=\"let file of files\" style=\"height: 40px\">\n <td colspan=\"5\" *ngIf=\"file.isUploading\">\n <!-- <div style=\"width:100%; display: table-cell; vertical-align: middle; text-align: center; \"> -->\n <div style=\"width: 500px;margin:0 auto\">\n <farris-progress [percent]=\"file.uploadProcess\" [status]=\"'active'\">\n </farris-progress>\n </div>\n\n </td>\n <td *ngIf=\"!file.isUploading\" style=\" width: 40px; vertical-align: middle; text-align: center\">\n <!-- <input type=\"checkbox\" [id]=\"file.name\" (click)=\"checkoutSelectFile(file.name)\"> -->\n <div class=\"farris-input-wrap\" (click)=\"checkoutSelectFile(file)\">\n <div class=\"custom-control custom-checkbox\" style=\"margin: 4px 0 0\">\n <input class=\"custom-control-input\" type=\"checkbox\" [id]=\"file.name\"\n [(ngModel)]=\"file.selectd\">\n <label class=\"custom-control-label\" style=\"padding: 0\"></label>\n </div>\n </div>\n </td>\n <td *ngIf=\"!file.isUploading\" style=\"vertical-align: middle\" [ngStyle]=\"queueListStyle\">\n {{file.queueListDisplayName}}</td>\n <td *ngIf=\"!file.isUploading\" style=\"width: 100px; vertical-align: middle\">{{file.size}}</td>\n <td *ngIf=\"!file.isUploading\" style=\"text-align: center; width: 170px; vertical-align: middle;\">\n <table *ngIf=\"!file.uploadResult\" style=\"margin: 0 auto\">\n <tr style=\"margin: 0 auto\">\n <td><span class=\"f-icon f-icon-error\"></span></td>\n <td> {{'uploadFailure' | locale}} </td>\n <td><button style=\"height: 24px\" class=\"btn-link btn ng-star-inserted\"\n (click)=\"showErrorMessage(file)\">{{'detail' | locale}}</button></td>\n </tr>\n </table>\n <!-- <span *ngIf=\"!file.uploadResult\"><span class=\"f-icon f-icon-error\"></span> \u4E0A\u4F20\u5931\u8D25 <button\n class=\"btn-link btn ng-star-inserted\" (click)=\"showErrorMessage(file)\">\u8BE6\u60C5</button></span> -->\n <span *ngIf=\"file.uploadResult\"><span class=\"f-icon f-icon-success\"></span> {{'uploadSucceed' |\n locale}}</span>\n </td>\n <td *ngIf=\"!file.isUploading&&haveExtensionProperty\"\n style=\"text-align: center; width: 100px; vertical-align: middle;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"propertiesNames\"\n [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"typeChange($event,file)\"\n [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </td>\n <td *ngIf=\"!file.isUploading&&haveSecurityInfo\"\n style=\"text-align: center; width: 100px; vertical-align: middle;\">\n <farris-combo-list [(ngModel)]=\"file.extensionDropListId\" [data]=\"securityInfoList\"\n [idField]=\"'id'\" [textField]=\"'name'\" (selectChange)=\"securityChange($event,file)\"\n [enableClear]=\"false\">\n <!-- <ng-template #itemTemp let-item>\n <div class=\"combo-list\">\n <span [class]=\"'combo-list-circle combo-list-'+item.state\"></span>\n <span class=\"combo-list-label\">{{item.label}}</span>\n </div>\n </ng-template> -->\n </farris-combo-list>\n </td>\n\n <td *ngIf=\"!file.isUploading\" style=\"text-align: center; width: 140px; vertical-align: middle;\">\n <!-- <button *ngIf=\"file.uploadResult\" class=\"btn-link btn ng-star-inserted\" (click)=\"retryUploadFile(file.name)\">\u91CD\u8BD5</button> -->\n <button class=\"btn-link btn ng-star-inserted\" style=\"margin: 0 auto\"\n (click)=\"listDeleteFile(file)\">{{'delete' | locale}}</button>\n </td>\n\n </tr>\n </table>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"!hasSelectedFile\" class='home_page'>\n <img [src]=\"uploadIconAddress\">\n <div>\n <span class=\"btn btn-primary btn-lg\">{{'uploadFile' | locale}} </span>\n <input type=\"file\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\" title=\"\" [accept]=\"fileType\">\n <!-- <input type=\"file\" (focus)=\"showLoading()\" (change)=\"fileSelected($event)\" id=\"file\" multiple=\"multiple\" title=\"\" [accept]=\"fileType\"> -->\n </div>\n</div>",
1201
+ styles: [".home_page{text-align:center}.home_page img{position:absolute;top:180px;margin-left:-35px;width:70px;height:56px}.home_page div{position:absolute;left:50%;top:255px;margin-left:-75px;width:150px;height:32px;overflow:hidden}.home_page div span{width:150px;height:32px;position:absolute;z-index:10;left:0}.home_page div input{position:absolute;left:0;top:0;opacity:0;filter:'alpha(opacity=0)';z-index:11}.upload_button{width:110px;height:32px;overflow:hidden}.upload_button span{position:relative;right:-4px;top:4px;width:56px;height:22px;font-size:14px}.upload_button input{height:32px;width:110px;position:absolute;left:22px;top:12px;opacity:0;filter:'alpha(opacity=0)';overflow:hidden}.upload_button img{position:relative;left:-6px;top:3px;width:14px;height:14px}.button_group_upload{position:absolute;right:18px;top:12px;height:26px;width:90px}.button_group_upload button{height:26px;width:26px}.fileinput-button{position:absolute;right:60px;bottom:40px;overflow:hidden;width:24px;height:24px;border-radius:12px;transform:scale(2.5);-ms-transform:scale(2.5);-moz-transform:scale(2.5);-webkit-transform:scale(2.5);-o-transform:scale(2.5);color:#0686fd}.fileinput-button input{position:absolute;left:0;top:0;opacity:0;filter:'alpha(opacity=0)'}.pic-droplist{height:24px;color:#e0e1e2;background-color:#e0e1e2}.pic-droplist input-group{display:table-cell;width:100px;text-align:center;border:0}.pic-droplist input-group div{border:0}.pic-droplist input-group div div,.pic-droplist input-group div input{background-color:#e0e1e2}.pic_list{padding:0;height:415px;overflow-y:auto;overflow-x:hidden}.pic_list ul{padding:0;list-style:none;width:100%;margin:20px 0 0 20px}.pic_list ul li{height:179px;width:135px;margin:8px 0 8px 12px;float:left;overflow:hidden;align-items:center;position:relative}.pic_list ul li div{width:135px;height:159px;margin:auto;display:table-cell;vertical-align:middle;text-align:center;position:relative}.pic_list ul li div img{max-width:120px;max-height:118px;align-items:center;margin:auto;vertical-align:middle;text-align:center}.pic_list ul li span.filename{width:100px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue_list{display:block;height:420px;overflow-y:auto}.file_list{list-style:none;margin:0;padding:0;overflow-x:hidden;overflow-y:auto}.file_list li{height:50px;line-height:35px;font-size:16px;position:relative}.file_list li button{float:right;top:6px;right:10px;width:20px}.file_list li p.title{padding:0 0 0 6px;margin:0 210px 0 0}.file_list li p.size{position:absolute;width:100px;top:0;right:100px}"]
1201
1202
  }] }
1202
1203
  ];
1203
1204
  /** @nocollapse */
@@ -1243,6 +1244,8 @@ if (false) {
1243
1244
  /** @type {?} */
1244
1245
  FileUploadComponent.prototype.selectedFiles;
1245
1246
  /** @type {?} */
1247
+ FileUploadComponent.prototype.radioButtonGroupValue;
1248
+ /** @type {?} */
1246
1249
  FileUploadComponent.prototype.selectedFileCount;
1247
1250
  /** @type {?} */
1248
1251
  FileUploadComponent.prototype.uploadIconAddress;
@@ -1340,4 +1343,4 @@ if (false) {
1340
1343
  FileUploadComponent.prototype.injector;
1341
1344
  /* Skipping unhandled member: ;*/
1342
1345
  }
1343
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdzcC1zdmMvZm9ybWRvYy11cGxvYWQvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxRSxP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SUFFbEMsbURBQTBCOztJQUMxQixrREFBeUI7O0lBR3pCLDhDQUF1Qjs7SUFDdkIsMENBQXdCOztJQUN4Qix1Q0FBaUI7O0lBQ2pCLHlDQUEwQjs7SUFDMUIseUNBQXVCOztJQUN2QiwwQ0FBNEI7O0lBUzVCLHFDQUF3Qjs7SUFDeEIscUNBQXdCOztJQUN4Qix1Q0FBZ0M7O0lBQ2hDLHdDQUErQjs7SUFDL0Isd0NBQWtDOztJQUNsQywyQ0FBcUQ7O0lBRXJELHFDQUE4Qzs7SUE0RDlDLHdDQUFzQjs7SUEya0J0QixnREFBNEM7Ozs7O0lBcnBCaEMseUNBQW1DOzs7OztJQUFFLDRDQUFvQzs7Ozs7SUFBRSwwQ0FBbUM7Ozs7O0lBQUUsdUNBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBJbmplY3RvciwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWxlSW5mbyB9IGZyb20gJy4uL2VudGl0eS9maWxlaW5mbyc7XG5pbXBvcnQgeyBEb2NUeXBlIH0gZnJvbSAnLi4vZW50aXR5L2RvY3R5cGUnO1xuaW1wb3J0IHsgR3NwRm9ybURvY0luZm8gfSBmcm9tICcuLi9lbnRpdHkvZ3NwZm9ybWRvY2luZm8nO1xuaW1wb3J0IHsgT3BlcmF0aW5nTW9kZXMgfSBmcm9tICcuLi9lbnRpdHkvb3BlcmF0aW5nbW9kZXMnO1xuaW1wb3J0IHsgVXBsb2FkU2VydmljZSB9IGZyb20gJy4uL3VwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IFVwbG9hZEZpbGVJbmZvIH0gZnJvbSAnLi4vZW50aXR5L3VwbG9hZGZpbGVpbmZvJztcbmltcG9ydCB7IE1lc3NhZ2VyU2VydmljZSB9IGZyb20gJ0BmYXJyaXMvdWktbWVzc2FnZXInO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3NwRm9ybVVwbG9hZEVudGl0eSB9IGZyb20gJy4uL2VudGl0eS9nc3Bmb3JtdXBsb2FkZW50aXR5JztcbmltcG9ydCB7IFVVSUQgfSBmcm9tICdhbmd1bGFyMi11dWlkJztcbmltcG9ydCB7IFN0b3JhZ2VFeHRlbnNpb24gfSBmcm9tICcuLi9lbnRpdHkvc3RvcmFnZWV4dGVuc2lvbic7XG5pbXBvcnQgeyBFeFN0b3JhZ2VGaWxlSW5mbyB9IGZyb20gJy4uL2VudGl0eS9leHRlbnNpb25zdG9yYWdlZmlsZWluZm8nO1xuaW1wb3J0IHsgRHJvcExpc3RFbnRpdHkgfSBmcm9tICcuLi9lbnRpdHkvZHJvcGxpc3RlbnRpdHknO1xuaW1wb3J0IHsgTG9hZGluZ1NlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLWxvYWRpbmcnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBGaWxlU3RhdGUgfSBmcm9tICcuLi9lbnRpdHkvZmlsZXN0YXRlJztcbmltcG9ydCB7IExvY2FsTGFuZ1BpcGUgfSBmcm9tICcuLi8uLi9sb2NhbC5waXBlJztcbmltcG9ydCB7IEdzcERvY1NlY3VyaXR5QmFzZUluZm8gfSBmcm9tICcuLi9lbnRpdHkvZ3NwZG9jc2VjdXJpdHliYXNlaW5mbyc7XG5pbXBvcnQgeyBTZWN1cml0eUVudGl0eSB9IGZyb20gJy4uL2VudGl0eS9zZWN1cml0eWVudGl0eSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluaXRNdWx0aVVwbG9hZFJlcXVlc3QgfSBmcm9tICcuLi9lbnRpdHkvaW5pdG11bHRpdXBsb2FkcmVxdWVzdCc7XG5pbXBvcnQgeyBDb21wbGV0ZU11bHRpVXBsb2FkUmVxdWVzdCB9IGZyb20gJy4uL2VudGl0eS9jb21wbGV0ZW11bHRpdXBsb2FkcmVxdWVzdCc7XG5pbXBvcnQgeyBHc3BGb3JtU3RyZWFtRW50aXR5IH0gZnJvbSAnLi4vZW50aXR5L2dzcGZvcm1zdHJlYW1lbnRpdHknO1xuaW1wb3J0IHsgTXVsdGlVcGxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZW50aXR5L211bHRpdXBsb2FkcmVxdWVzdCc7XG5pbXBvcnQgeyBNdWx0aVVwbG9hZFJlc3VsdCB9IGZyb20gJy4uL2VudGl0eS9tdWx0aXVwbG9hZHJlc3VsdCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbGUtdXBsb2FkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBmaWxlczogRmlsZUluZm9bXSA9IFtdO1xuICBtZXRhZGF0YUlkTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgdXBsb2FkRmlsZUluZm9MaXN0OiBVcGxvYWRGaWxlSW5mb1tdID0gW107XG4gIGVyckZpbGVMaXN0OiBzdHJpbmdbXSA9IFtdO1xuICBlcnJUeXBlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgbnVsbEZpbGVMaXN0OiBzdHJpbmdbXSA9IFtdO1xuICBiZXlvbmRGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgc2hvd1R5cGU6IG51bWJlciA9IDA7XG4gIG1vdXNlT246IGJvb2xlYW4gPSBmYWxzZTtcbiAgYnVmZmVyU2l6ZSA9IDUgKiAxMDI0ICogMTAyNDtcbiAgc2VsZWN0ZWRGaWxlczogYW55O1xuXG4gIHNlbGVjdGVkRmlsZUNvdW50OiBudW1iZXIgPSAwO1xuXG4gIHVwbG9hZEljb25BZGRyZXNzID0gJy9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvdXBsb2FkLnN2Zyc7XG4gIHVwbG9hZExpdHRsZUljb25BZGRyZXNzID0gJy9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvdXBsb2FkSWNvbi5zdmcnO1xuXG4gIGhhc1NlbGVjdGVkRmlsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGZpbGVBbGxTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHVwbG9hZFByb2Nlc3MgPSB7IHdpZHRoOiAnMCUnIH07XG5cbiAgZmlsZVRvdGFsQ2h1bms6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcblxuICByZXF1ZXN0QXJyYXk6IEFycmF5PE9ic2VydmFibGU8YW55Pj4gPSBuZXcgQXJyYXk7XG5cbiAgcmVxdWVzdEJvZHlBcnJheTogQXJyYXk8R3NwRm9ybVVwbG9hZEVudGl0eT4gPSBuZXcgQXJyYXk7XG5cbiAgdXBsb2FkZWRDaHVuazogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICB1cGxvYWRlZFByb2Nlc3M6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcblxuICAvL2FsbFNlbGVjdGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgc3RvcmFnZUV4dGVuc2lvbjogU3RvcmFnZUV4dGVuc2lvbjtcblxuICBkZWZhdWx0UHJvcGVydHlOYW1lOiBzdHJpbmcgPSBcIlwiO1xuICBwcm9wZXJ0aWVzTmFtZXM6IERyb3BMaXN0RW50aXR5W10gPSBbXTtcblxuICBzZWN1cml0eUluZm9MaXN0OiBTZWN1cml0eUVudGl0eVtdID0gW107XG5cbiAgcXVldWVMaXN0U3R5bGUgPSB7IHdpZHRoOiAnNDgwcHgnIH07XG5cbiAgZHJvcExpc3RWYWx1ZTogc3RyaW5nID0gXCJcIjtcblxuICB1cGxvYWRlZEZpbGVUb3RhbDogbnVtYmVyID0gMDtcblxuICBhbGxvd2VkTXVsdGlVcGxvYWQ6IGJvb2xlYW47XG5cbiAgaGF2ZUV4dGVuc2lvblByb3BlcnR5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgaGF2ZVNlY3VyaXR5SW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHVwbG9hZGVkRmlsZUluZm9MaXN0ID0gW107XG4gIG9sZFVwbG9hZGVkRmlsZUxpc3QgPSBbXTtcbiAgLy91cGxvYWRlZE5hbWVMaXN0ID0gW107XG5cbiAgc2FtZU5hbWVBbGxvd2VkID0gdHJ1ZTtcbiAgbWF4RmlsZVNpemU6IG51bWJlciA9IDA7O1xuICBsb2NhbGVpZDogc3RyaW5nO1xuICBsb2NhbGVwaXBlOiBMb2NhbExhbmdQaXBlO1xuICBodHRwY2xpZW50OiBIdHRwQ2xpZW50O1xuICBjaGVja2JveFBvcyA9IHsgdG9wOiAnMHB4JyB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtc2dTZXJ2aWNlOiBNZXNzYWdlclNlcnZpY2UsIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkU2VydmljZSwgcHJpdmF0ZSBsb2FkU2VydmljZTogTG9hZGluZ1NlcnZpY2UsIHByaXZhdGUgaW5qZWN0b3I/OiBJbmplY3Rvcikge1xuICAgIGlmICh0aGlzLmluamVjdG9yKSB7XG4gICAgICB0aGlzLmh0dHBjbGllbnQgPSB0aGlzLmluamVjdG9yLmdldChIdHRwQ2xpZW50KTtcbiAgICAgIHRoaXMubG9jYWxlaWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlQ29kZVwiKSB8fCB0aGlzLmluamVjdG9yLmdldChMT0NBTEVfSUQpO1xuICAgICAgdGhpcy5sb2NhbGVwaXBlID0gbmV3IExvY2FsTGFuZ1BpcGUodGhpcy5sb2NhbGVpZCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIGZvcm1JZDogc3RyaW5nO1xuICBASW5wdXQoKSByb290SWQ6IHN0cmluZztcbiAgQElucHV0KCkgZmlsZVR5cGU6IHN0cmluZyA9IFwiKlwiO1xuICBASW5wdXQoKSBmaWxlQ291bnQ6IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIG9sZElkTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgQElucHV0KCkgc2VjdXJpdHlJbmZvOiBHc3BEb2NTZWN1cml0eUJhc2VJbmZvID0gbnVsbDtcblxuICBAVmlld0NoaWxkKCdvcENlbGwnKSBvcENlbGw6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID49IDApXG4gICAgICB0aGlzLmNoZWNrYm94UG9zLnRvcCA9ICcxNHB4JztcbiAgICAvL2lmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlICE9IG51bGwpIHtcbiAgICBpZiAodGhpcy5zZWN1cml0eUluZm8gIT0gbnVsbCkge1xuICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmdldFNlY3VyaXR5SW5mb0xpc3QodGhpcy5zZWN1cml0eUluZm8pLnN1YnNjcmliZShcbiAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICB0aGlzLmhhdmVTZWN1cml0eUluZm8gPSB0cnVlO1xuICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICByZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VjdXJpdHlJbmZvTGlzdC5wdXNoKHsgaWQ6IGkudG9TdHJpbmcoKSwgc2VjdXJpdHlJZDogZWxlbWVudC5zZWN1cml0eUlkLCBzZWN1cml0eUxldmVsOiBlbGVtZW50LnNlY3VyaXR5TGV2ZWwsIG5hbWU6IGVsZW1lbnQubmFtZSB9KTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZ2V0U3RvcmFnZUV4dGVuc2lvbkluZm8oKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLmVycm9yID09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VFeHRlbnNpb24gPSByZXM7XG4gICAgICAgICAgdGhpcy5kZWZhdWx0UHJvcGVydHlOYW1lID0gdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWU7XG4gICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzTmFtZXMucHVzaCh7IGlkOiBcIjBcIiwgbmFtZTogdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUgfSk7XG4gICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgIC8vIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goLi4uKHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25Qcm9wZXJ0eU5hbWVMaXN0KSk7XG4gICAgICAgICAgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmV4dGVuc2lvblByb3BlcnR5TmFtZUxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goeyBpZDogKCsraSkudG9TdHJpbmcoKSwgbmFtZTogZWxlbWVudCB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnF1ZXVlTGlzdFN0eWxlLndpZHRoID0gJzM4MHB4JztcbiAgICAgICAgICB0aGlzLmhhdmVFeHRlbnNpb25Qcm9wZXJ0eSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG5cbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuZ2V0VXBsb2FkSW5mbyh0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5lcnJvciA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zYW1lTmFtZUFsbG93ZWQgPSByZXMuc2FtZU5hbWVBbGxvd2VkO1xuICAgICAgICAgIHRoaXMubWF4RmlsZVNpemUgPSBwYXJzZUludChKU09OLnBhcnNlKHJlcy52YWxpZGF0ZUNvbmZpZ3VyYXRpb24pLm1heEZpbGVTaXplKTtcbiAgICAgICAgICB0aGlzLmFsbG93ZWRNdWx0aVVwbG9hZCA9IHJlcy5hbGxvd2VkTXVsdGlVcGxvYWQ7XG4gICAgICAgICAgaWYgKCF0aGlzLnNhbWVOYW1lQWxsb3dlZCkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLmdldFVwbG9hZGVkRmlsZUluZm9MaXN0KHRoaXMuZm9ybUlkLCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMuZXJyb3IgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdCA9IHJlcztcbiAgICAgICAgICAgICAgICAgIHRoaXMub2xkVXBsb2FkZWRGaWxlTGlzdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzKSk7O1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuICAgIGlmICh0aGlzLm9sZElkTGlzdCAhPSBudWxsICYmIHRoaXMub2xkSWRMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwodGhpcy5vbGRJZExpc3QsIHRoaXMucm9vdElkKS5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICB0b3RhbExvYWQ6IGFueSA9IG51bGw7XG5cbiAgc2hvd0xvYWRpbmcoKSB7XG4gICAgdGhpcy5oYXNTZWxlY3RlZEZpbGUgPSB0cnVlO1xuICAgIC8vIGlmICh0aGlzLnRvdGFsTG9hZCA9PSBudWxsKVxuICAgIC8vICAgdGhpcy50b3RhbExvYWQgPSB0aGlzLmxvYWRTZXJ2aWNlLnNob3coe1xuICAgIC8vICAgICBtZXNzYWdlOiB0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCd1cGxvYWRpbmcnKVxuICAgIC8vICAgfSk7XG4gIH1cblxuXG4gIGZpbGVTZWxlY3RlZCgkZXZlbnQpIHtcblxuICAgIHRoaXMuaGFzU2VsZWN0ZWRGaWxlID0gdHJ1ZTtcbiAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZmlsZScpO1xuXG4gICAgaWYgKHRoaXMuZmlsZUNvdW50ID4gMCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlcy5maWxlcy5sZW5ndGggKyB0aGlzLmZpbGVzLmxlbmd0aCA+IHRoaXMuZmlsZUNvdW50KSB7XG4gICAgICAgIGxldCBzZWxlY3RlZE51bTogbnVtYmVyID0gKHRoaXMuc2VsZWN0ZWRGaWxlcy5maWxlcy5sZW5ndGggYXMgbnVtYmVyKSArIHRoaXMuZmlsZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLm1zZ1NlcnZpY2Uud2FybmluZyh0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCdzZWxlY3RlZENvdW50JykgKyBzZWxlY3RlZE51bSArIHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ2xpbWl0Q291bnQnKSArIHRoaXMuZmlsZUNvdW50ICsgdGhpcy5sb2NhbGVwaXBlLnRyYW5zZm9ybSgncmVjaG9vc2VGaWxlJykpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy90aGlzLmZsYWcgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgc2VsZWN0ZWRGaWxlID0gdGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzW2ldO1xuICAgICAgLy9zZWxlY3RlZEZpbGUuc2xpY2VcbiAgICAgIGxldCB1dWlkID0gVVVJRC5VVUlEKCk7XG5cbiAgICAgIGlmIChzZWxlY3RlZEZpbGUuc2l6ZSA9PSAwKSB7XG4gICAgICAgIHRoaXMubnVsbEZpbGVMaXN0LnB1c2goc2VsZWN0ZWRGaWxlLm5hbWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubWF4RmlsZVNpemUgIT0gbnVsbCAmJiB0aGlzLm1heEZpbGVTaXplID4gMCkge1xuICAgICAgICBpZiAoc2VsZWN0ZWRGaWxlLnNpemUgPiB0aGlzLm1heEZpbGVTaXplICogMTAwMCkge1xuICAgICAgICAgIHRoaXMuYmV5b25kRmlsZUxpc3QucHVzaChzZWxlY3RlZEZpbGUubmFtZSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLnNhbWVOYW1lQWxsb3dlZCkge1xuICAgICAgICBpZiAodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBzZWxlY3RlZEZpbGUubmFtZSkgIT0gbnVsbCkge1xuXG4gICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5tc2dTZXJ2aWNlLnNob3coJ3dhcm5pbmcnLCB0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCdoYXZlU2FtZU5hbWUnKSArIHNlbGVjdGVkRmlsZS5uYW1lLCB7XG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ3JlbmFtZScpLFxuICAgICAgICAgICAgICAgICAgY2xzOiAnYnRuIGJ0bi1zZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvbGROYW1lOiBzdHJpbmcgPSBzZWxlY3RlZEZpbGUubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld05hbWVcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZsYWcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBsZXQgaSA9IDE7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChmbGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgbmV3TmFtZSA9IG9sZE5hbWUuc3Vic3RyaW5nKDAsIG9sZE5hbWUubGFzdEluZGV4T2YoJy4nKSkgKyAnKCcgKyBpICsgJyknICsgb2xkTmFtZS5zdWJzdHJpbmcob2xkTmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBuZXdOYW1lKSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZSh1dWlkLCBzZWxlY3RlZEZpbGUsIG5ld05hbWUpO1xuICAgICAgICAgICAgICAgICAgICBtc2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ3JlcGxhY2UnKSxcbiAgICAgICAgICAgICAgICAgIGNsczogJ2J0biBidG4tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgIGhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB1dWlkID0gdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBzZWxlY3RlZEZpbGUubmFtZSkubWV0YWRhdGFJZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlKHV1aWQsIHNlbGVjdGVkRmlsZSwgc2VsZWN0ZWRGaWxlLm5hbWUsIEZpbGVTdGF0ZS5VcGRhdGUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsLS07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9sZFVwbG9hZGVkRmlsZUxpc3QuZmluZCh4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbCsrO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gc2VsZWN0ZWRGaWxlLm5hbWUpWzBdKSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbXNnLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICB0ZXh0OiB0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCdjYW5jZWwnKSxcbiAgICAgICAgICAgICAgICAgIGNsczogJ2J0biBidG4tc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgICAgIGhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBtc2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlLCBzZWxlY3RlZEZpbGUubmFtZSk7XG5cbiAgICB9XG5cbiAgICBpZiAodGhpcy5lcnJGaWxlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgbmFtZTogc3RyaW5nID0gdGhpcy5saXN0VG9TdHJpbmcodGhpcy5lcnJGaWxlTGlzdCk7XG4gICAgICB0aGlzLm1zZ1NlcnZpY2Uud2FybmluZyh0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCdoYXZlU2FtZU5hbWUnKSArIG5hbWUgKyB0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCdyZWNob29zZUZpbGUnKSk7XG4gICAgICB0aGlzLmVyckZpbGVMaXN0ID0gW107XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubnVsbEZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSB0aGlzLmxpc3RUb1N0cmluZyh0aGlzLm51bGxGaWxlTGlzdCk7XG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGggLSAxKTtcbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKG5hbWUgKyB0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCdzaXplWmVybycpICsgdGhpcy5sb2NhbGVwaXBlLnRyYW5zZm9ybSgncmVjaG9vc2VGaWxlJykpO1xuICAgICAgdGhpcy5udWxsRmlsZUxpc3QgPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5iZXlvbmRGaWxlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBsZXQgbmFtZTogc3RyaW5nID0gdGhpcy5saXN0VG9TdHJpbmcodGhpcy5iZXlvbmRGaWxlTGlzdCk7XG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGggLSAxKTtcbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKG5hbWUgKyB0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCdzaXplTWF4JykgKyB0aGlzLm1heEZpbGVTaXplICsgXCJLQlwiICsgdGhpcy5sb2NhbGVwaXBlLnRyYW5zZm9ybSgncmVjaG9vc2VGaWxlJykpO1xuICAgICAgdGhpcy5iZXlvbmRGaWxlTGlzdCA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpbGVzID0gdGhpcy5maWxlcy5zbGljZSgpO1xuICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgJGV2ZW50LnRhcmdldC52YWx1ZSA9ICcnO1xuICAgIC8vIGxvYWRpbmcuY2xvc2UoKTtcbiAgfVxuXG4gIHNob3dFcnJvck1lc3NhZ2UoZmlsZSkge1xuICAgIHRoaXMubXNnU2VydmljZS5lcnJvcih0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCd1cGxvYWRGYWlsdXJlJykgKyBmaWxlLmVycm9yTWVzc2FnZSk7XG4gIH1cblxuICBoYW5kbGVGaWxlSW5mbyh1dWlkOiBzdHJpbmcsIHNlbGVjdGVkRmlsZSwgZmlsZU5hbWU6IHN0cmluZyk6IGFueSB7XG5cbiAgICBsZXQgZmlsZUluZm86IEZpbGVJbmZvO1xuXG4gICAgZmlsZUluZm8gPSB7XG4gICAgICBpZDogdXVpZCxcbiAgICAgIG5hbWU6IGZpbGVOYW1lLFxuICAgICAgdHlwZTogc2VsZWN0ZWRGaWxlLnR5cGUsXG4gICAgICBzb3VyY2U6IFwiXCIsXG4gICAgICBzaXplOiB0aGlzLmdldEZpbGVTaXplKHNlbGVjdGVkRmlsZS5zaXplKSxcbiAgICAgIGZpbGVTaXplOiBzZWxlY3RlZEZpbGUuc2l6ZSxcbiAgICAgIHBpY0xpc3REaXNwbGF5TmFtZTogdGhpcy5nZXRQaWNMaXN0RGlzcGxheU5hbWUoZmlsZU5hbWUpLFxuICAgICAgcXVldWVMaXN0RGlzcGxheU5hbWU6IHRoaXMuZ2V0UXVldWVEaXNwbGF5TmFtZShmaWxlTmFtZSksXG4gICAgICAvL2NvbnRlbnQ6IHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSxcbiAgICAgIGhhc1VwbG9hZGVkOiBmYWxzZSxcbiAgICAgIG1vdXNlT246IGZhbHNlLFxuICAgICAgc2VsZWN0ZDogZmFsc2UsXG4gICAgICBpc1VwbG9hZGluZzogdHJ1ZSxcbiAgICAgIHVwbG9hZFJlc3VsdDogZmFsc2UsXG4gICAgICB1cGxvYWRQcm9jZXNzOiAwLFxuICAgICAgZXJyb3JNZXNzYWdlOiBcIlwiLFxuICAgICAgZXh0ZW5zaW9uRHJvcExpc3RJZDogMCxcbiAgICAgIGV4dGVuc2lvbk5hbWU6IFwiXCIsXG4gICAgICBzZWN1cml0eURyb3BMaXN0SWQ6IDAsXG4gICAgICBzZWN1cml0eUluZm86IHRoaXMuc2VjdXJpdHlJbmZvTGlzdFswXVxuICAgIH1cblxuICAgIGlmICh0aGlzLnN0b3JhZ2VFeHRlbnNpb24gIT0gbnVsbClcbiAgICAgIGZpbGVJbmZvLmV4dGVuc2lvbk5hbWUgPSB0aGlzLmRlZmF1bHRQcm9wZXJ0eU5hbWU7XG5cblxuICAgIGxldCB0eXBlOiBzdHJpbmcgPSBzZWxlY3RlZEZpbGUudHlwZTtcbiAgICBpZiAodHlwZS5pbmNsdWRlcyhcInRpZmZcIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLk90aGVyKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcImltYWdlXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5JbWFnZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJ3b3JkXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5Xb3JkKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBkZlwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuUGRmKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBsYWluXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5UeHQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwic2hlZXRcIikgfHwgdHlwZS5pbmNsdWRlcyhcImV4Y2VsXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5FeGNlbClcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcInBvd2VycG9pbnRcIikgfHwgdHlwZS5pbmNsdWRlcyhcInByZXNlbnRhdGlvblwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuUG93ZXJwb2ludCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuT3RoZXIpO1xuICAgICAgLy8gbGV0IG5hbWU6IHN0cmluZyA9IHNlbGVjdGVkRmlsZS5uYW1lO1xuICAgICAgLy8gbGV0IGVyclR5cGUgPSBuYW1lLnN1YnN0cmluZyhzZWxlY3RlZEZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgIC8vIHRoaXMuZXJyVHlwZUxpc3QucHVzaChlcnJUeXBlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbGVJbmZvO1xuICB9XG5cbiAgdXBsb2FkRmlsZSh1dWlkOiBzdHJpbmcsIHNlbGVjdGVkRmlsZSwgZmlsZU5hbWU6IHN0cmluZywgc3RhdGU6IEZpbGVTdGF0ZSA9IEZpbGVTdGF0ZS5OZXcpIHtcblxuICAgIGxldCBmaWxlSW5mbyA9IHRoaXMuaGFuZGxlRmlsZUluZm8odXVpZCwgc2VsZWN0ZWRGaWxlLCBmaWxlTmFtZSk7XG5cbiAgICBsZXQgdXBsb2FkRmlsZUluZm8gPSBuZXcgVXBsb2FkRmlsZUluZm8oKTtcblxuICAgIHVwbG9hZEZpbGVJbmZvLm1ldGFkYXRhSWQgPSB1dWlkO1xuICAgIHVwbG9hZEZpbGVJbmZvLmZpbGVOYW1lID0gZmlsZUluZm8ubmFtZTtcbiAgICB1cGxvYWRGaWxlSW5mby5maWxlU2l6ZSA9IGZpbGVJbmZvLmZpbGVTaXplO1xuICAgIHVwbG9hZEZpbGVJbmZvLnN0YXRlID0gc3RhdGU7XG4gICAgdXBsb2FkRmlsZUluZm8uc2VjdXJpdHlJbmZvID0gdGhpcy5zZWN1cml0eUluZm9MaXN0WzBdO1xuXG5cbiAgICAvL+WIpOaWreaYr+WQpuaUr+aMgeWIhueJh+S4iuS8oFxuICAgIGlmICh0aGlzLmFsbG93ZWRNdWx0aVVwbG9hZCkge1xuXG4gICAgICAvL+aUr+aMgeWIhueJh+S4iuS8oFxuICAgICAgbGV0IGluaXRSZXF1ZXN0OiBJbml0TXVsdGlVcGxvYWRSZXF1ZXN0ID0gbmV3IEluaXRNdWx0aVVwbG9hZFJlcXVlc3Q7XG5cbiAgICAgIGluaXRSZXF1ZXN0LnBhdGggPSB0aGlzLmZvcm1JZDtcbiAgICAgIGluaXRSZXF1ZXN0Lm1ldGFkYXRhSWQgPSB1dWlkO1xuICAgICAgaW5pdFJlcXVlc3Qucm9vdElkID0gdGhpcy5yb290SWQ7XG4gICAgICBpbml0UmVxdWVzdC5zaXplID0gZmlsZUluZm8uZmlsZVNpemU7XG4gICAgICBpbml0UmVxdWVzdC5maWxlTmFtZSA9IGZpbGVOYW1lO1xuXG4gICAgICAvL+WIneWni+WMluWIhueJh1xuICAgICAgdGhpcy5pbml0TXVsdGlVcGxvYWQoaW5pdFJlcXVlc3QpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBpZiAocmVzLmVycm9yICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmVycm9yTWVzc2FnZSA9IHJlcy5lcnJvci5NZXNzYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCB1cGxvYWRJZCA9IHJlcy51cGxvYWRJZDtcbiAgICAgICAgICBsZXQgY2h1bmtUb3RhbDogbnVtYmVyID0gTWF0aC5jZWlsKHNlbGVjdGVkRmlsZS5zaXplIC8gdGhpcy5idWZmZXJTaXplKTtcbiAgICAgICAgICBsZXQgY2h1bmtJbmRleDogbnVtYmVyID0gMDtcblxuICAgICAgICAgIGxldCBtdWx0aVJlc3VsdExpc3Q6IE11bHRpVXBsb2FkUmVzdWx0W10gPSBbXTtcblxuICAgICAgICAgIHRoaXMuZmlsZVRvdGFsQ2h1bmtbdXVpZF0gPSBjaHVua1RvdGFsO1xuICAgICAgICAgIHRoaXMudXBsb2FkZWRDaHVua1t1dWlkXSA9IDA7XG5cbiAgICAgICAgICB3aGlsZSAoY2h1bmtJbmRleCA8IGNodW5rVG90YWwpIHtcblxuICAgICAgICAgICAgbGV0IG5leHRTaXplID0gTWF0aC5taW4oKGNodW5rSW5kZXggKyAxKSAqIHRoaXMuYnVmZmVyU2l6ZSwgc2VsZWN0ZWRGaWxlLnNpemUpO1xuICAgICAgICAgICAgbGV0IGZpbGVEYXRhID0gc2VsZWN0ZWRGaWxlLnNsaWNlKGNodW5rSW5kZXggKiB0aGlzLmJ1ZmZlclNpemUsIG5leHRTaXplKTtcblxuICAgICAgICAgICAgbGV0IG11bHRpUmVxdWVzdCA9IG5ldyBNdWx0aVVwbG9hZFJlcXVlc3Q7XG4gICAgICAgICAgICBtdWx0aVJlcXVlc3QubWV0YWRhdGFJZCA9IHV1aWQ7XG4gICAgICAgICAgICBtdWx0aVJlcXVlc3Qucm9vdElkID0gdGhpcy5yb290SWQ7XG4gICAgICAgICAgICBtdWx0aVJlcXVlc3QudXBsb2FkSWQgPSB1cGxvYWRJZDtcbiAgICAgICAgICAgIG11bHRpUmVxdWVzdC5pbmRleCA9IGNodW5rSW5kZXg7XG4gICAgICAgICAgICBtdWx0aVJlcXVlc3QudG90YWwgPSBjaHVua1RvdGFsO1xuICAgICAgICAgICAgbXVsdGlSZXF1ZXN0LnNpemUgPSBmaWxlRGF0YS5zaXplO1xuXG4gICAgICAgICAgICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnbXVsdGlSZXF1ZXN0JywgSlNPTi5zdHJpbmdpZnkobXVsdGlSZXF1ZXN0KSk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlRGF0YSk7XG5cbiAgICAgICAgICAgIHRoaXMubXVsdGlVcGxvYWQoZm9ybURhdGEpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzLmVycm9yICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmVycm9yTWVzc2FnZSA9IHJlcy5lcnJvci5NZXNzYWdlO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG11bHRpUmVzdWx0TGlzdC5wdXNoKHJlcy5yZXN1bHQpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRDaHVua1t1dWlkXSsrO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0udXBsb2FkUHJvY2VzcyA9IE51bWJlci5wYXJzZUludCgodGhpcy51cGxvYWRlZENodW5rW3V1aWRdIC8gdGhpcy5maWxlVG90YWxDaHVua1t1dWlkXSAqIDEwMCkudG9GaXhlZCgwKSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudXBsb2FkZWRDaHVua1t1dWlkXSA9PSB0aGlzLmZpbGVUb3RhbENodW5rW3V1aWRdKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobXVsdGlSZXN1bHRMaXN0Lmxlbmd0aCA9PSB0aGlzLmZpbGVUb3RhbENodW5rW3V1aWRdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0udXBsb2FkUmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdCA9IHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmNvbmNhdCh1cGxvYWRGaWxlSW5mbyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QgPSB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmNvbmNhdCh1cGxvYWRGaWxlSW5mbyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwrKztcblxuICAgICAgICAgICAgICAgICAgICBsZXQgY29tcGxldGVNdWx0aVVwbG9hZFJlcXVlc3Q6IENvbXBsZXRlTXVsdGlVcGxvYWRSZXF1ZXN0ID0gbmV3IENvbXBsZXRlTXVsdGlVcGxvYWRSZXF1ZXN0O1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZU11bHRpVXBsb2FkUmVxdWVzdC5tZXRhZGF0YUlkID0gdXVpZDtcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVNdWx0aVVwbG9hZFJlcXVlc3QucGFydExpc3QgPSBtdWx0aVJlc3VsdExpc3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlTXVsdGlVcGxvYWRSZXF1ZXN0LnJvb3RJZCA9IHRoaXMucm9vdElkO1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZU11bHRpVXBsb2FkUmVxdWVzdC51cGxvYWRJZCA9IHVwbG9hZElkO1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZU11bHRpVXBsb2FkUmVxdWVzdC5zaXplID0gZmlsZUluZm8uZmlsZVNpemU7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmhhdmVFeHRlbnNpb25Qcm9wZXJ0eSlcbiAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZU11bHRpVXBsb2FkUmVxdWVzdC5leFByb3BlcnR5TmFtZSA9IHRoaXMuZGVmYXVsdFByb3BlcnR5TmFtZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wbGV0ZU11bHRpVXBsb2FkKGNvbXBsZXRlTXVsdGlVcGxvYWRSZXF1ZXN0KS5zdWJzY3JpYmUocmVzID0+IHtcblxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAvL+WQjuWPsOW8guatpeaLvOaOpeaWh+aho1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS51cGxvYWRSZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmVycm9yTWVzc2FnZSA9IHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ21pc21hdGNoQ2h1bmtTaXplJyk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNodW5rSW5kZXggPSBjaHVua0luZGV4ICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgfSlcblxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZW50aXR5ID0gbmV3IEdzcEZvcm1TdHJlYW1FbnRpdHk7XG4gICAgICBlbnRpdHkuZm9ybUlkID0gdGhpcy5mb3JtSWQ7XG4gICAgICBlbnRpdHkubWV0YWRhdGFJZCA9IHV1aWQ7XG4gICAgICBlbnRpdHkubW9kZSA9IE9wZXJhdGluZ01vZGVzLlRlbXA7XG4gICAgICBlbnRpdHkucm9vdElkID0gdGhpcy5yb290SWQ7XG4gICAgICBlbnRpdHkuc2l6ZSA9IHNlbGVjdGVkRmlsZS5zaXplO1xuICAgICAgZW50aXR5LmZpbGVOYW1lID0gZmlsZU5hbWU7XG4gICAgICBpZiAodGhpcy5oYXZlRXh0ZW5zaW9uUHJvcGVydHkpXG4gICAgICAgIGVudGl0eS5leFByb3BlcnR5TmFtZSA9IHRoaXMuZGVmYXVsdFByb3BlcnR5TmFtZTtcblxuICAgICAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ3VwbG9hZEVudGl0eScsIEpTT04uc3RyaW5naWZ5KGVudGl0eSkpO1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgc2VsZWN0ZWRGaWxlKTtcblxuICAgICAgdGhpcy51cGxvYWRTaW5nbGVGaWxlKGZvcm1EYXRhKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgaWYgKHJlcyAhPSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS51cGxvYWRSZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5lcnJvck1lc3NhZ2UgPSByZXMuZXJyb3IuTWVzc2FnZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFJlc3VsdCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0ID0gdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuY29uY2F0KHVwbG9hZEZpbGVJbmZvKTtcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0ID0gdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5jb25jYXQodXBsb2FkRmlsZUluZm8pO1xuICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwrKztcblxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgfVxuXG5cblxuICAgIGxldCBpbmRleCA9IC0xO1xuICAgIHRoaXMuZmlsZXMuZm9yRWFjaCh4ID0+IHtcbiAgICAgIGlmICh4Lm5hbWUgPT0gZmlsZUluZm8ubmFtZSkge1xuICAgICAgICBpZiAoaW5kZXggPT0gLTEpXG4gICAgICAgICAgaW5kZXggPSB0aGlzLmZpbGVzLmluZGV4T2YoeCk7XG4gICAgICB9XG4gICAgfSlcbiAgICBpZiAoaW5kZXggIT0gLTEgJiYgaW5kZXggIT0gdGhpcy5maWxlcy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgLy90aGlzLnVwbG9hZGVkRmlsZVRvdGFsLS07XG4gICAgfVxuXG4gIH1cblxuXG4gIHVwbG9hZFNpbmdsZUZpbGUoZm9ybWRhdGE6IEZvcm1EYXRhKTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIGxldCB1cmwgPSBcIi9hcGkvcnVudGltZS9kZnMvdjEuMC9mb3JtZG9jL3NpbmdsZVwiO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cGNsaWVudC5wb3N0KHVybCwgZm9ybWRhdGEpLnBpcGUoXG4gICAgICB0YXAocmVzID0+IHsgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIHVwbG9hZFNsaWNlRmlsZShmb3JtZGF0YTogRm9ybURhdGEpOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgbGV0IHVybCA9IFwiL2FwaS9ydW50aW1lL2Rmcy92MS4wL2Zvcm1kb2Mvc2xpY2VcIjtcblxuICAgIHJldHVybiB0aGlzLmh0dHBjbGllbnQucG9zdCh1cmwsIGZvcm1kYXRhKS5waXBlKFxuICAgICAgdGFwKHJlcyA9PiB7IH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJldHVybiBvZihlcnJvcik7XG4gICAgICB9KSk7XG4gIH1cblxuICBpbml0TXVsdGlVcGxvYWQocmVxdWVzdDogSW5pdE11bHRpVXBsb2FkUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICBsZXQgdXJsID0gXCIvYXBpL3J1bnRpbWUvZGZzL3YxLjAvZm9ybWRvYy9tdWx0aS9pbml0XCI7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwY2xpZW50LnBvc3QodXJsLCByZXF1ZXN0KS5waXBlKFxuICAgICAgdGFwKHJlcyA9PiB7IH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJldHVybiBvZihlcnJvcik7XG4gICAgICB9KSk7XG4gIH1cblxuICBtdWx0aVVwbG9hZChmb3JtZGF0YTogRm9ybURhdGEpOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgbGV0IHVybCA9IFwiL2FwaS9ydW50aW1lL2Rmcy92MS4wL2Zvcm1kb2MvbXVsdGkvdXBsb2FkXCI7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwY2xpZW50LnBvc3QodXJsLCBmb3JtZGF0YSkucGlwZShcbiAgICAgIHRhcChyZXMgPT4geyB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICByZXR1cm4gb2YoZXJyb3IpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgY29tcGxldGVNdWx0aVVwbG9hZChyZXF1ZXN0OiBDb21wbGV0ZU11bHRpVXBsb2FkUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICBsZXQgdXJsID0gXCIvYXBpL3J1bnRpbWUvZGZzL3YxLjAvZm9ybWRvYy9tdWx0aS9jb21wbGV0ZVwiO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cGNsaWVudC5wb3N0KHVybCwgcmVxdWVzdCkucGlwZShcbiAgICAgIHRhcChyZXMgPT4geyB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICByZXR1cm4gb2YoZXJyb3IpO1xuICAgICAgfSkpO1xuICB9XG5cblxuXG4gIHNlbGVjdEFsbEZpbGUoKSB7XG5cbiAgICBpZiAoIXRoaXMuZmlsZUFsbFNlbGVjdGVkKSB7XG4gICAgICB0aGlzLmZpbGVzLmZvckVhY2goZWxlbWVudCA9PiB7XG5cbiAgICAgICAgZWxlbWVudC5zZWxlY3RkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IHRoaXMuZmlsZXMubGVuZ3RoO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcblxuICAgICAgICBlbGVtZW50LnNlbGVjdGQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSAwO1xuICAgIH1cbiAgfVxuXG5cbiAgY2hlY2tvdXRTZWxlY3RGaWxlKGZpbGU6IEZpbGVJbmZvKSB7XG4gICAgLy8gbGV0IG9iajogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmlsZU5hbWUpO1xuICAgIGZpbGUuc2VsZWN0ZCA9ICFmaWxlLnNlbGVjdGQ7XG4gICAgaWYgKGZpbGUuc2VsZWN0ZClcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQrKztcbiAgICBlbHNlXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50LS07XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPT0gdGhpcy5maWxlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIC8vdGhpcy5pc0ZpbGVBbGxTZWxlY3RlZCgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAvL3RoaXMuaXNGaWxlQWxsU2VsZWN0ZWQoKTtcbiAgICB9XG5cbiAgfVxuXG4gIGxpc3REZWxldGVGaWxlKGZpbGVJbmZvOiBGaWxlSW5mbykge1xuICAgIGlmIChmaWxlSW5mby5zZWxlY3RkKVxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudC0tO1xuICAgIC8vY29uc29sZS5sb2coZmlsZU5hbWUpO1xuICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyksIDEpO1xuICAgIGlmIChmaWxlSW5mby51cGxvYWRSZXN1bHQpIHtcbiAgICAgIGxldCBpZExpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgICBpZExpc3QucHVzaChmaWxlSW5mby5pZCk7XG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsKGlkTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuXG4gICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGZpbGVJbmZvLm5hbWUpWzBdKSwgMSk7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmluZGV4T2YodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGZpbGVJbmZvLm5hbWUpWzBdKSwgMSk7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsLS07XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID09IDApXG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICB9XG5cbiAgbGlzdE11bHRpcGxlRGVsZXRlRmlsZSgpIHtcbiAgICBsZXQgc2VsZWN0ZWRGaWxlOiBGaWxlSW5mb1tdID0gW107XG4gICAgdGhpcy5maWxlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgbGV0IG9iajogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudC5uYW1lKTtcbiAgICAgIGlmIChvYmouY2hlY2tlZClcbiAgICAgICAgc2VsZWN0ZWRGaWxlLnB1c2goZWxlbWVudCk7XG4gICAgfSlcbiAgICBsZXQgbWV0YWRhdGFMaXN0OiBzdHJpbmdbXSA9IFtdO1xuICAgIHNlbGVjdGVkRmlsZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgbWV0YWRhdGFMaXN0LnB1c2goZWxlbWVudC5pZCk7XG4gICAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZWxlbWVudCksIDEpO1xuICAgICAgaWYgKGVsZW1lbnQudXBsb2FkUmVzdWx0KSB7XG5cbiAgICAgICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmluZGV4T2YodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuZmlsdGVyKHggPT4geC5maWxlTmFtZSA9PSBlbGVtZW50Lm5hbWUpWzBdKSwgMSk7XG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZWxlbWVudC5uYW1lKVswXSksIDEpO1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsLS07XG4gICAgICB9XG4gICAgfSlcbiAgICB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsKG1ldGFkYXRhTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuXG4gICAgbGV0IGFsbEJveDogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJhbGxDaGVja0JveFwiKTtcbiAgICBpZiAoYWxsQm94ICE9IG51bGwpXG4gICAgICBhbGxCb3guY2hlY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSAwO1xuICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gIH1cblxuXG4gIGdldFBpY0xpc3REaXNwbGF5TmFtZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKGZpbGVOYW1lLmxlbmd0aCA8PSAxMClcbiAgICAgIHJldHVybiBmaWxlTmFtZTtcbiAgICBlbHNlIHtcbiAgICAgIGxldCBoZWFkQ29udGVudCA9IGZpbGVOYW1lLnN1YnN0cmluZygwLCAyKTtcbiAgICAgIGxldCB0YWlsQ29udGVudCA9IGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpIC0gMik7XG4gICAgICByZXR1cm4gaGVhZENvbnRlbnQgKyBcIuKAplwiICsgdGFpbENvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgZ2V0UXVldWVEaXNwbGF5TmFtZShmaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGZpbGVOYW1lO1xuICB9XG5cbiAgYWRkRG9jSW5mbyhzZWxlY3RkRmlsZSwgZmlsZUluZm86IEZpbGVJbmZvLCBkb2NUeXBlOiBEb2NUeXBlKSB7XG5cbiAgICBzd2l0Y2ggKGRvY1R5cGUpIHtcbiAgICAgIGNhc2UgRG9jVHlwZS5Xb3JkOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy93b3JkLnBuZ1wiXG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuUGRmOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9wZGYucG5nXCJcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5FeGNlbDoge1xuICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBcIi9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvZXhjZWwucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuVHh0OiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy90eHQucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuUG93ZXJwb2ludDoge1xuICAgICAgICBmaWxlSW5mby5zb3VyY2UgPSBcIi9wbGF0Zm9ybS9ydW50aW1lL2Rmcy9pbWFnZXMvcHB0LnBuZ1wiO1xuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLk90aGVyOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9maWxlLnBuZ1wiO1xuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLkltYWdlOiB7XG4gICAgICAgIGxldCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChzZWxlY3RkRmlsZSk7XG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSAoX2V2ZW50KSA9PiB7XG4gICAgICAgICAgbGV0IGltZ1VybCA9IHJlYWRlci5yZXN1bHQ7XG4gICAgICAgICAgaWYgKHRoaXMuaW5qZWN0b3IgIT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IHNhbml0aXplciA9IHRoaXMuaW5qZWN0b3IuZ2V0KERvbVNhbml0aXplcik7XG4gICAgICAgICAgICBpbWdVcmwgPSBzYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGltZ1VybCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IGltZ1VybDtcbiAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuXG4gICAgICAgICAgLy/lm6DkuLrlvILmraXlpITnkIbnmoTlt67lvILvvIzooaXlgb/kuIDmrKHliKDpmaRcbiAgICAgICAgICBsZXQgaW5kZXggPSAtMTtcbiAgICAgICAgICB0aGlzLmZpbGVzLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgICBpZiAoeC5uYW1lID09IGZpbGVJbmZvLm5hbWUpIHtcbiAgICAgICAgICAgICAgaWYgKGluZGV4ID09IC0xKVxuICAgICAgICAgICAgICAgIGluZGV4ID0gdGhpcy5maWxlcy5pbmRleE9mKHgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYgKGluZGV4ICE9IC0xICYmIGluZGV4ICE9IHRoaXMuZmlsZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5maWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cblxuICB9XG5cbiAgbGlzdFRvU3RyaW5nKHN0ckxpc3Q6IHN0cmluZ1tdKSB7XG4gICAgbGV0IG5hbWU6IHN0cmluZyA9IFwiXCI7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBuYW1lICs9IHN0ckxpc3RbaV0gKyBcIixcIjtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWU7XG4gIH1cblxuICBzZWN1cml0eUNoYW5nZSgkZXZlbnQ6IGFueSwgZmlsZTogRmlsZUluZm8pIHtcbiAgICBmaWxlLnNlY3VyaXR5SW5mbyA9ICRldmVudC5kYXRhO1xuICAgIGxldCB1cGxvYWRGaWxlID0gdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuZmlsdGVyKHggPT4geC5tZXRhZGF0YUlkID0gZmlsZS5pZClbMF07XG4gICAgdXBsb2FkRmlsZS5zZWN1cml0eUluZm8gPSAkZXZlbnQuZGF0YTtcbiAgfVxuXG5cbiAgZXhTdG9yYWdlRmlsZUxpc3Q6IEV4U3RvcmFnZUZpbGVJbmZvW10gPSBbXTtcblxuICB0eXBlQ2hhbmdlKCRldmVudDogYW55LCBmaWxlOiBGaWxlSW5mbykge1xuICAgIGZpbGUuZXh0ZW5zaW9uTmFtZSA9ICRldmVudC5kYXRhLm5hbWU7XG4gICAgbGV0IGV4U3RvcmFnZUZpbGVJbmZvOiBFeFN0b3JhZ2VGaWxlSW5mbyA9IG5ldyBFeFN0b3JhZ2VGaWxlSW5mbztcbiAgICBpZiAoZmlsZS5leHRlbnNpb25OYW1lID09IHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5kZWZhdWx0UHJvcGVydHlOYW1lKSB7XG4gICAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maWx0ZXIoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCkubGVuZ3RoID4gMClcbiAgICAgICAgdGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5zcGxpY2UodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maW5kSW5kZXgoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCksIDEpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGV4U3RvcmFnZUZpbGVJbmZvID0gdGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maWx0ZXIoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZClbMF07XG4gICAgICAgIGV4U3RvcmFnZUZpbGVJbmZvLmV4UHJvcGVydHlOYW1lID0gZmlsZS5leHRlbnNpb25OYW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXhTdG9yYWdlRmlsZUluZm8ubWV0YWRhdGFJZCA9IGZpbGUuaWQ7XG4gICAgICAgIGV4U3RvcmFnZUZpbGVJbmZvLmV4UHJvcGVydHlOYW1lID0gZmlsZS5leHRlbnNpb25OYW1lO1xuICAgICAgICB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LnB1c2goZXhTdG9yYWdlRmlsZUluZm8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwbG9hZCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0aGlzLnVwbG9hZGVkRmlsZVRvdGFsICE9IHRoaXMuZmlsZXMuZmlsdGVyKHggPT4geC5pc1VwbG9hZGluZyB8fCB4LnVwbG9hZFJlc3VsdCkubGVuZ3RoKSB7XG5cbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ3dhaXQnKSk7XG4gICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXZlU2VjdXJpdHlJbmZvKSB7XG4gICAgICB0aGlzLnVwbG9hZFNlcnZpY2Uuc2F2ZVNlY3VyaXR5SW5mbyh0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdG9yYWdlRXh0ZW5zaW9uID09IG51bGwpXG4gICAgICByZXR1cm4gb2YodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QpO1xuICAgIGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QubGVuZ3RoID09IDApXG4gICAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgbG9hZGluZyA9IHRoaXMubG9hZFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgICAgbWVzc2FnZTogdGhpcy5sb2NhbGVwaXBlLnRyYW5zZm9ybSgnc2F2ZVRvJykgKyB0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZXh0ZW5zaW9uTmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBsb2FkU2VydmljZS5jaGFuZ2VTdG9yYWdlSW5zdGFuY2UodGhpcy5leFN0b3JhZ2VGaWxlTGlzdCwgdGhpcy5yb290SWQpLnBpcGUoXG4gICAgICAgICAgbWFwKHJlcyA9PiB7XG4gICAgICAgICAgICAvLyBpZiAocmVzICE9IG51bGwpXG4gICAgICAgICAgICAvLyAgIHRoaXMubXNnU2VydmljZS5lcnJvcign5L+d5a2Y5YiwJyArIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25OYW1lICsgXCLlpLHotKXvvIzkuIrkvKDmlofku7boh6rliqjkv53lrZjliLBcIiArIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5kZWZhdWx0UHJvcGVydHlOYW1lICsgXCLlrZjlgqjjgIJcIiArIHJlcy5lcnJvci5NZXNzYWdlKTtcbiAgICAgICAgICAgIGxvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdDtcbiAgICAgICAgICB9KSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgaWYgKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0Lmxlbmd0aCA9PSAwKVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICB0aGlzLm1ldGFkYXRhSWRMaXN0LnB1c2goZWxlbWVudC5tZXRhZGF0YUlkKTtcbiAgICB9KVxuICAgIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwodGhpcy5tZXRhZGF0YUlkTGlzdCwgdGhpcy5yb290SWQpLnN1YnNjcmliZSgpO1xuXG4gIH1cblxuICBnZXRVcGxvYWRGaWxlSW5mb0xpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0O1xuICB9XG5cbiAgZGVsZXRlKGZpbGUpIHtcbiAgICB0aGlzLmZpbGVzLnNwbGljZSh0aGlzLmZpbGVzLmluZGV4T2YoZmlsZSksIDEpO1xuICAgIGlmIChmaWxlLnVwbG9hZFJlc3VsdClcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maWx0ZXIoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCkubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5zcGxpY2UodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5maW5kSW5kZXgoeCA9PiB4Lm1ldGFkYXRhSWQgPT0gZmlsZS5pZCksIDEpO1xuICAgIH1cblxuICB9XG5cbiAgZ2V0RmlsZVNpemUoc2l6ZTogbnVtYmVyKSB7XG4gICAgaWYgKHNpemUgPCAxMDI0MDApXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0KS50b0ZpeGVkKDEpICsgXCJLXCI7XG4gICAgZWxzZSBpZiAoc2l6ZSA8IDEwMjQgKiAxMDI0KVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCkudG9GaXhlZCgwKSArIFwiS1wiO1xuICAgIGVsc2UgaWYgKHNpemUgPCAxMDAgKiAxMDI0ICogMTAyNClcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDEpICsgXCJNXCI7XG4gICAgZWxzZSBpZiAoc2l6ZSA8IDEwMjQgKiAxMDI0ICogMTAyNClcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDApICsgXCJNXCI7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCAvIDEwMjQgLyAxMDI0KS50b0ZpeGVkKDEpICsgXCJHXCI7XG4gIH1cbiAgc2hvd0J5R3JvdXAoKSB7XG4gICAgdGhpcy5zaG93VHlwZSA9IDA7XG4gICAgLy8gdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gIH1cblxuICBzaG93QnlMaXN0KCkge1xuICAgIHRoaXMuc2hvd1R5cGUgPSAxO1xuICAgIC8vIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPSAwO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkRmlsZUNvdW50ICE9IDAgJiYgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9PSB0aGlzLmZpbGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIG1vdXNlT3ZlcihmaWxlKSB7XG4gICAgZmlsZS5tb3VzZU9uID0gdHJ1ZTtcbiAgfVxuICBtb3VzZU91dChmaWxlKSB7XG4gICAgZmlsZS5tb3VzZU9uID0gZmFsc2U7XG4gIH1cblxufVxuXG5cbiJdfQ==
1346
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdzcC1zdmMvZm9ybWRvYy11cGxvYWQvIiwic291cmNlcyI6WyJsaWIvdXBsb2FkL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxRSxP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QixnREFBOEI7O0lBRTlCLGlEQUE0Qjs7SUFFNUIsb0RBQXVDOztJQUV2QywrQ0FBa0M7O0lBRWxDLG1EQUEwQjs7SUFDMUIsa0RBQXlCOztJQUd6Qiw4Q0FBdUI7O0lBQ3ZCLDBDQUF3Qjs7SUFDeEIsdUNBQWlCOztJQUNqQix5Q0FBMEI7O0lBQzFCLHlDQUF1Qjs7SUFDdkIsMENBQTRCOztJQVM1QixxQ0FBd0I7O0lBQ3hCLHFDQUF3Qjs7SUFDeEIsdUNBQWdDOztJQUNoQyx3Q0FBK0I7O0lBQy9CLHdDQUFrQzs7SUFDbEMsMkNBQXFEOztJQUVyRCxxQ0FBOEM7O0lBOEQ5Qyx3Q0FBc0I7O0lBMmtCdEIsZ0RBQTRDOzs7OztJQXZwQmhDLHlDQUFtQzs7Ozs7SUFBRSw0Q0FBb0M7Ozs7O0lBQUUsMENBQW1DOzs7OztJQUFFLHVDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgSW5qZWN0b3IsIExPQ0FMRV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmlsZUluZm8gfSBmcm9tICcuLi9lbnRpdHkvZmlsZWluZm8nO1xuaW1wb3J0IHsgRG9jVHlwZSB9IGZyb20gJy4uL2VudGl0eS9kb2N0eXBlJztcbmltcG9ydCB7IEdzcEZvcm1Eb2NJbmZvIH0gZnJvbSAnLi4vZW50aXR5L2dzcGZvcm1kb2NpbmZvJztcbmltcG9ydCB7IE9wZXJhdGluZ01vZGVzIH0gZnJvbSAnLi4vZW50aXR5L29wZXJhdGluZ21vZGVzJztcbmltcG9ydCB7IFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi91cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBVcGxvYWRGaWxlSW5mbyB9IGZyb20gJy4uL2VudGl0eS91cGxvYWRmaWxlaW5mbyc7XG5pbXBvcnQgeyBNZXNzYWdlclNlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLW1lc3NhZ2VyJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdzcEZvcm1VcGxvYWRFbnRpdHkgfSBmcm9tICcuLi9lbnRpdHkvZ3NwZm9ybXVwbG9hZGVudGl0eSc7XG5pbXBvcnQgeyBVVUlEIH0gZnJvbSAnYW5ndWxhcjItdXVpZCc7XG5pbXBvcnQgeyBTdG9yYWdlRXh0ZW5zaW9uIH0gZnJvbSAnLi4vZW50aXR5L3N0b3JhZ2VleHRlbnNpb24nO1xuaW1wb3J0IHsgRXhTdG9yYWdlRmlsZUluZm8gfSBmcm9tICcuLi9lbnRpdHkvZXh0ZW5zaW9uc3RvcmFnZWZpbGVpbmZvJztcbmltcG9ydCB7IERyb3BMaXN0RW50aXR5IH0gZnJvbSAnLi4vZW50aXR5L2Ryb3BsaXN0ZW50aXR5JztcbmltcG9ydCB7IExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnQGZhcnJpcy91aS1sb2FkaW5nJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgRmlsZVN0YXRlIH0gZnJvbSAnLi4vZW50aXR5L2ZpbGVzdGF0ZSc7XG5pbXBvcnQgeyBMb2NhbExhbmdQaXBlIH0gZnJvbSAnLi4vLi4vbG9jYWwucGlwZSc7XG5pbXBvcnQgeyBHc3BEb2NTZWN1cml0eUJhc2VJbmZvIH0gZnJvbSAnLi4vZW50aXR5L2dzcGRvY3NlY3VyaXR5YmFzZWluZm8nO1xuaW1wb3J0IHsgU2VjdXJpdHlFbnRpdHkgfSBmcm9tICcuLi9lbnRpdHkvc2VjdXJpdHllbnRpdHknO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbml0TXVsdGlVcGxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZW50aXR5L2luaXRtdWx0aXVwbG9hZHJlcXVlc3QnO1xuaW1wb3J0IHsgQ29tcGxldGVNdWx0aVVwbG9hZFJlcXVlc3QgfSBmcm9tICcuLi9lbnRpdHkvY29tcGxldGVtdWx0aXVwbG9hZHJlcXVlc3QnO1xuaW1wb3J0IHsgR3NwRm9ybVN0cmVhbUVudGl0eSB9IGZyb20gJy4uL2VudGl0eS9nc3Bmb3Jtc3RyZWFtZW50aXR5JztcbmltcG9ydCB7IE11bHRpVXBsb2FkUmVxdWVzdCB9IGZyb20gJy4uL2VudGl0eS9tdWx0aXVwbG9hZHJlcXVlc3QnO1xuaW1wb3J0IHsgTXVsdGlVcGxvYWRSZXN1bHQgfSBmcm9tICcuLi9lbnRpdHkvbXVsdGl1cGxvYWRyZXN1bHQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXVwbG9hZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZmlsZXM6IEZpbGVJbmZvW10gPSBbXTtcbiAgbWV0YWRhdGFJZExpc3Q6IHN0cmluZ1tdID0gW107XG4gIHVwbG9hZEZpbGVJbmZvTGlzdDogVXBsb2FkRmlsZUluZm9bXSA9IFtdO1xuICBlcnJGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgZXJyVHlwZUxpc3Q6IHN0cmluZ1tdID0gW107XG4gIG51bGxGaWxlTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgYmV5b25kRmlsZUxpc3Q6IHN0cmluZ1tdID0gW107XG4gIHNob3dUeXBlOiBudW1iZXIgPSAwO1xuICBtb3VzZU9uOiBib29sZWFuID0gZmFsc2U7XG4gIGJ1ZmZlclNpemUgPSA1ICogMTAyNCAqIDEwMjQ7XG4gIHNlbGVjdGVkRmlsZXM6IGFueTtcbiAgcmFkaW9CdXR0b25Hcm91cFZhbHVlO1xuICBzZWxlY3RlZEZpbGVDb3VudDogbnVtYmVyID0gMDtcblxuICB1cGxvYWRJY29uQWRkcmVzcyA9ICcvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3VwbG9hZC5zdmcnO1xuICB1cGxvYWRMaXR0bGVJY29uQWRkcmVzcyA9ICcvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3VwbG9hZEljb24uc3ZnJztcblxuICBoYXNTZWxlY3RlZEZpbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBmaWxlQWxsU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICB1cGxvYWRQcm9jZXNzID0geyB3aWR0aDogJzAlJyB9O1xuXG4gIGZpbGVUb3RhbENodW5rOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG5cbiAgcmVxdWVzdEFycmF5OiBBcnJheTxPYnNlcnZhYmxlPGFueT4+ID0gbmV3IEFycmF5O1xuXG4gIHJlcXVlc3RCb2R5QXJyYXk6IEFycmF5PEdzcEZvcm1VcGxvYWRFbnRpdHk+ID0gbmV3IEFycmF5O1xuXG4gIHVwbG9hZGVkQ2h1bms6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgdXBsb2FkZWRQcm9jZXNzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG5cbiAgLy9hbGxTZWxlY3RlZDogYm9vbGVhbiA9IHRydWU7XG4gIHN0b3JhZ2VFeHRlbnNpb246IFN0b3JhZ2VFeHRlbnNpb247XG5cbiAgZGVmYXVsdFByb3BlcnR5TmFtZTogc3RyaW5nID0gXCJcIjtcbiAgcHJvcGVydGllc05hbWVzOiBEcm9wTGlzdEVudGl0eVtdID0gW107XG5cbiAgc2VjdXJpdHlJbmZvTGlzdDogU2VjdXJpdHlFbnRpdHlbXSA9IFtdO1xuXG4gIHF1ZXVlTGlzdFN0eWxlID0geyB3aWR0aDogJzQ4MHB4JyB9O1xuXG4gIGRyb3BMaXN0VmFsdWU6IHN0cmluZyA9IFwiXCI7XG5cbiAgdXBsb2FkZWRGaWxlVG90YWw6IG51bWJlciA9IDA7XG5cbiAgYWxsb3dlZE11bHRpVXBsb2FkOiBib29sZWFuO1xuXG4gIGhhdmVFeHRlbnNpb25Qcm9wZXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGhhdmVTZWN1cml0eUluZm86IGJvb2xlYW4gPSBmYWxzZTtcblxuICB1cGxvYWRlZEZpbGVJbmZvTGlzdCA9IFtdO1xuICBvbGRVcGxvYWRlZEZpbGVMaXN0ID0gW107XG4gIC8vdXBsb2FkZWROYW1lTGlzdCA9IFtdO1xuXG4gIHNhbWVOYW1lQWxsb3dlZCA9IHRydWU7XG4gIG1heEZpbGVTaXplOiBudW1iZXIgPSAwOztcbiAgbG9jYWxlaWQ6IHN0cmluZztcbiAgbG9jYWxlcGlwZTogTG9jYWxMYW5nUGlwZTtcbiAgaHR0cGNsaWVudDogSHR0cENsaWVudDtcbiAgY2hlY2tib3hQb3MgPSB7IHRvcDogJzBweCcgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnU2VydmljZTogTWVzc2FnZXJTZXJ2aWNlLCBwcml2YXRlIHVwbG9hZFNlcnZpY2U6IFVwbG9hZFNlcnZpY2UsIHByaXZhdGUgbG9hZFNlcnZpY2U6IExvYWRpbmdTZXJ2aWNlLCBwcml2YXRlIGluamVjdG9yPzogSW5qZWN0b3IpIHtcbiAgICBpZiAodGhpcy5pbmplY3Rvcikge1xuICAgICAgdGhpcy5odHRwY2xpZW50ID0gdGhpcy5pbmplY3Rvci5nZXQoSHR0cENsaWVudCk7XG4gICAgICB0aGlzLmxvY2FsZWlkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZUNvZGVcIikgfHwgdGhpcy5pbmplY3Rvci5nZXQoTE9DQUxFX0lEKTtcbiAgICAgIHRoaXMubG9jYWxlcGlwZSA9IG5ldyBMb2NhbExhbmdQaXBlKHRoaXMubG9jYWxlaWQpO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKSBmb3JtSWQ6IHN0cmluZztcbiAgQElucHV0KCkgcm9vdElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZpbGVUeXBlOiBzdHJpbmcgPSBcIipcIjtcbiAgQElucHV0KCkgZmlsZUNvdW50OiBudW1iZXIgPSAwO1xuICBASW5wdXQoKSBvbGRJZExpc3Q6IHN0cmluZ1tdID0gW107XG4gIEBJbnB1dCgpIHNlY3VyaXR5SW5mbzogR3NwRG9jU2VjdXJpdHlCYXNlSW5mbyA9IG51bGw7XG5cbiAgQFZpZXdDaGlsZCgnb3BDZWxsJykgb3BDZWxsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmIChuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA+PSAwKVxuICAgICAgdGhpcy5jaGVja2JveFBvcy50b3AgPSAnMTRweCc7XG4gICAgLy9pZiAodGhpcy5zdG9yYWdlU2VydmljZSAhPSBudWxsKSB7XG4gICAgaWYgKHRoaXMuc2VjdXJpdHlJbmZvICE9IG51bGwpIHtcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRTZWN1cml0eUluZm9MaXN0KHRoaXMuc2VjdXJpdHlJbmZvKS5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5oYXZlU2VjdXJpdHlJbmZvID0gdHJ1ZTtcbiAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgcmVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlY3VyaXR5SW5mb0xpc3QucHVzaCh7IGlkOiBpLnRvU3RyaW5nKCksIHNlY3VyaXR5SWQ6IGVsZW1lbnQuc2VjdXJpdHlJZCwgc2VjdXJpdHlMZXZlbDogZWxlbWVudC5zZWN1cml0eUxldmVsLCBuYW1lOiBlbGVtZW50Lm5hbWUgfSk7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmdldFN0b3JhZ2VFeHRlbnNpb25JbmZvKCkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgaWYgKHJlcyAhPSBudWxsICYmIHJlcy5lcnJvciA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uID0gcmVzO1xuICAgICAgICAgIHRoaXMuZGVmYXVsdFByb3BlcnR5TmFtZSA9IHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5kZWZhdWx0UHJvcGVydHlOYW1lO1xuICAgICAgICAgIHRoaXMucHJvcGVydGllc05hbWVzLnB1c2goeyBpZDogXCIwXCIsIG5hbWU6IHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5kZWZhdWx0UHJvcGVydHlOYW1lIH0pO1xuICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAvLyB0aGlzLnByb3BlcnRpZXNOYW1lcy5wdXNoKC4uLih0aGlzLnN0b3JhZ2VFeHRlbnNpb24uZXh0ZW5zaW9uUHJvcGVydHlOYW1lTGlzdCkpO1xuICAgICAgICAgIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25Qcm9wZXJ0eU5hbWVMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb3BlcnRpZXNOYW1lcy5wdXNoKHsgaWQ6ICgrK2kpLnRvU3RyaW5nKCksIG5hbWU6IGVsZW1lbnQgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5xdWV1ZUxpc3RTdHlsZS53aWR0aCA9ICczODBweCc7XG4gICAgICAgICAgdGhpcy5oYXZlRXh0ZW5zaW9uUHJvcGVydHkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKVxuXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmdldFVwbG9hZEluZm8odGhpcy5yb290SWQpLnN1YnNjcmliZShcbiAgICAgIHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMgIT0gbnVsbCAmJiByZXMuZXJyb3IgPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuc2FtZU5hbWVBbGxvd2VkID0gcmVzLnNhbWVOYW1lQWxsb3dlZDtcbiAgICAgICAgICB0aGlzLm1heEZpbGVTaXplID0gcGFyc2VJbnQoSlNPTi5wYXJzZShyZXMudmFsaWRhdGVDb25maWd1cmF0aW9uKS5tYXhGaWxlU2l6ZSk7XG4gICAgICAgICAgdGhpcy5hbGxvd2VkTXVsdGlVcGxvYWQgPSByZXMuYWxsb3dlZE11bHRpVXBsb2FkO1xuICAgICAgICAgIGlmICghdGhpcy5zYW1lTmFtZUFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRVcGxvYWRlZEZpbGVJbmZvTGlzdCh0aGlzLmZvcm1JZCwgdGhpcy5yb290SWQpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmVzLmVycm9yID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QgPSByZXM7XG4gICAgICAgICAgICAgICAgICB0aGlzLm9sZFVwbG9hZGVkRmlsZUxpc3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcykpOztcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIClcbiAgICBpZiAodGhpcy5vbGRJZExpc3QgIT0gbnVsbCAmJiB0aGlzLm9sZElkTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyB0aGlzLnVwbG9hZFNlcnZpY2UuY2FuY2VsKHRoaXMub2xkSWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5yYWRpb0J1dHRvbkdyb3VwVmFsdWU9J3Nob3dCeUdyb3VwJztcbiAgfVxuXG4gIHRvdGFsTG9hZDogYW55ID0gbnVsbDtcblxuICBzaG93TG9hZGluZygpIHtcbiAgICB0aGlzLmhhc1NlbGVjdGVkRmlsZSA9IHRydWU7XG4gICAgLy8gaWYgKHRoaXMudG90YWxMb2FkID09IG51bGwpXG4gICAgLy8gICB0aGlzLnRvdGFsTG9hZCA9IHRoaXMubG9hZFNlcnZpY2Uuc2hvdyh7XG4gICAgLy8gICAgIG1lc3NhZ2U6IHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ3VwbG9hZGluZycpXG4gICAgLy8gICB9KTtcbiAgfVxuXG5cbiAgZmlsZVNlbGVjdGVkKCRldmVudCkge1xuXG4gICAgdGhpcy5oYXNTZWxlY3RlZEZpbGUgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWRGaWxlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNmaWxlJyk7XG5cbiAgICBpZiAodGhpcy5maWxlQ291bnQgPiAwKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aCArIHRoaXMuZmlsZXMubGVuZ3RoID4gdGhpcy5maWxlQ291bnQpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkTnVtOiBudW1iZXIgPSAodGhpcy5zZWxlY3RlZEZpbGVzLmZpbGVzLmxlbmd0aCBhcyBudW1iZXIpICsgdGhpcy5maWxlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ3NlbGVjdGVkQ291bnQnKSArIHNlbGVjdGVkTnVtICsgdGhpcy5sb2NhbGVwaXBlLnRyYW5zZm9ybSgnbGltaXRDb3VudCcpICsgdGhpcy5maWxlQ291bnQgKyB0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCdyZWNob29zZUZpbGUnKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvL3RoaXMuZmxhZyA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkRmlsZXMuZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBzZWxlY3RlZEZpbGUgPSB0aGlzLnNlbGVjdGVkRmlsZXMuZmlsZXNbaV07XG4gICAgICAvL3NlbGVjdGVkRmlsZS5zbGljZVxuICAgICAgbGV0IHV1aWQgPSBVVUlELlVVSUQoKTtcblxuICAgICAgaWYgKHNlbGVjdGVkRmlsZS5zaXplID09IDApIHtcbiAgICAgICAgdGhpcy5udWxsRmlsZUxpc3QucHVzaChzZWxlY3RlZEZpbGUubmFtZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5tYXhGaWxlU2l6ZSAhPSBudWxsICYmIHRoaXMubWF4RmlsZVNpemUgPiAwKSB7XG4gICAgICAgIGlmIChzZWxlY3RlZEZpbGUuc2l6ZSA+IHRoaXMubWF4RmlsZVNpemUgKiAxMDAwKSB7XG4gICAgICAgICAgdGhpcy5iZXlvbmRGaWxlTGlzdC5wdXNoKHNlbGVjdGVkRmlsZS5uYW1lKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuc2FtZU5hbWVBbGxvd2VkKSB7XG4gICAgICAgIGlmICh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKSAhPSBudWxsKSB7XG5cbiAgICAgICAgICBjb25zdCBtc2cgPSB0aGlzLm1zZ1NlcnZpY2Uuc2hvdygnd2FybmluZycsIHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ2hhdmVTYW1lTmFtZScpICsgc2VsZWN0ZWRGaWxlLm5hbWUsIHtcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy5sb2NhbGVwaXBlLnRyYW5zZm9ybSgncmVuYW1lJyksXG4gICAgICAgICAgICAgICAgICBjbHM6ICdidG4gYnRuLXNlY29uZGFyeScsXG4gICAgICAgICAgICAgICAgICBoYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9sZE5hbWU6IHN0cmluZyA9IHNlbGVjdGVkRmlsZS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBsZXQgbmV3TmFtZVxuICAgICAgICAgICAgICAgICAgICBsZXQgZmxhZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gMTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGZsYWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICBuZXdOYW1lID0gb2xkTmFtZS5zdWJzdHJpbmcoMCwgb2xkTmFtZS5sYXN0SW5kZXhPZignLicpKSArICcoJyArIGkgKyAnKScgKyBvbGROYW1lLnN1YnN0cmluZyhvbGROYW1lLmxhc3RJbmRleE9mKCcuJykpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IG5ld05hbWUpICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgZmxhZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRGaWxlKHV1aWQsIHNlbGVjdGVkRmlsZSwgbmV3TmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIG1zZy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdGV4dDogdGhpcy5sb2NhbGVwaXBlLnRyYW5zZm9ybSgncmVwbGFjZScpLFxuICAgICAgICAgICAgICAgICAgY2xzOiAnYnRuIGJ0bi1zZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHV1aWQgPSB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbmQoeCA9PiB4LmZpbGVOYW1lID09IHNlbGVjdGVkRmlsZS5uYW1lKS5tZXRhZGF0YUlkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGUodXVpZCwgc2VsZWN0ZWRGaWxlLCBzZWxlY3RlZEZpbGUubmFtZSwgRmlsZVN0YXRlLlVwZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub2xkVXBsb2FkZWRGaWxlTGlzdC5maW5kKHggPT4geC5maWxlTmFtZSA9PSBzZWxlY3RlZEZpbGUubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZVRvdGFsKys7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmlsdGVyKHggPT4geC5maWxlTmFtZSA9PSBzZWxlY3RlZEZpbGUubmFtZSlbMF0pLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtc2cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHRleHQ6IHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ2NhbmNlbCcpLFxuICAgICAgICAgICAgICAgICAgY2xzOiAnYnRuIGJ0bi1zZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG1zZy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudXBsb2FkRmlsZSh1dWlkLCBzZWxlY3RlZEZpbGUsIHNlbGVjdGVkRmlsZS5uYW1lKTtcblxuICAgIH1cblxuICAgIGlmICh0aGlzLmVyckZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSB0aGlzLmxpc3RUb1N0cmluZyh0aGlzLmVyckZpbGVMaXN0KTtcbiAgICAgIHRoaXMubXNnU2VydmljZS53YXJuaW5nKHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ2hhdmVTYW1lTmFtZScpICsgbmFtZSArIHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ3JlY2hvb3NlRmlsZScpKTtcbiAgICAgIHRoaXMuZXJyRmlsZUxpc3QgPSBbXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5udWxsRmlsZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IG5hbWU6IHN0cmluZyA9IHRoaXMubGlzdFRvU3RyaW5nKHRoaXMubnVsbEZpbGVMaXN0KTtcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCAtIDEpO1xuICAgICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcobmFtZSArIHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ3NpemVaZXJvJykgKyB0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCdyZWNob29zZUZpbGUnKSk7XG4gICAgICB0aGlzLm51bGxGaWxlTGlzdCA9IFtdO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmJleW9uZEZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSB0aGlzLmxpc3RUb1N0cmluZyh0aGlzLmJleW9uZEZpbGVMaXN0KTtcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCAtIDEpO1xuICAgICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcobmFtZSArIHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ3NpemVNYXgnKSArIHRoaXMubWF4RmlsZVNpemUgKyBcIktCXCIgKyB0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCdyZWNob29zZUZpbGUnKSk7XG4gICAgICB0aGlzLmJleW9uZEZpbGVMaXN0ID0gW107XG4gICAgfVxuICAgIHRoaXMuZmlsZXMgPSB0aGlzLmZpbGVzLnNsaWNlKCk7XG4gICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAkZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG4gICAgLy8gbG9hZGluZy5jbG9zZSgpO1xuICB9XG5cbiAgc2hvd0Vycm9yTWVzc2FnZShmaWxlKSB7XG4gICAgdGhpcy5tc2dTZXJ2aWNlLmVycm9yKHRoaXMubG9jYWxlcGlwZS50cmFuc2Zvcm0oJ3VwbG9hZEZhaWx1cmUnKSArIGZpbGUuZXJyb3JNZXNzYWdlKTtcbiAgfVxuXG4gIGhhbmRsZUZpbGVJbmZvKHV1aWQ6IHN0cmluZywgc2VsZWN0ZWRGaWxlLCBmaWxlTmFtZTogc3RyaW5nKTogYW55IHtcblxuICAgIGxldCBmaWxlSW5mbzogRmlsZUluZm87XG5cbiAgICBmaWxlSW5mbyA9IHtcbiAgICAgIGlkOiB1dWlkLFxuICAgICAgbmFtZTogZmlsZU5hbWUsXG4gICAgICB0eXBlOiBzZWxlY3RlZEZpbGUudHlwZSxcbiAgICAgIHNvdXJjZTogXCJcIixcbiAgICAgIHNpemU6IHRoaXMuZ2V0RmlsZVNpemUoc2VsZWN0ZWRGaWxlLnNpemUpLFxuICAgICAgZmlsZVNpemU6IHNlbGVjdGVkRmlsZS5zaXplLFxuICAgICAgcGljTGlzdERpc3BsYXlOYW1lOiB0aGlzLmdldFBpY0xpc3REaXNwbGF5TmFtZShmaWxlTmFtZSksXG4gICAgICBxdWV1ZUxpc3REaXNwbGF5TmFtZTogdGhpcy5nZXRRdWV1ZURpc3BsYXlOYW1lKGZpbGVOYW1lKSxcbiAgICAgIC8vY29udGVudDogcmVhZGVyLnJlc3VsdC50b1N0cmluZygpLFxuICAgICAgaGFzVXBsb2FkZWQ6IGZhbHNlLFxuICAgICAgbW91c2VPbjogZmFsc2UsXG4gICAgICBzZWxlY3RkOiBmYWxzZSxcbiAgICAgIGlzVXBsb2FkaW5nOiB0cnVlLFxuICAgICAgdXBsb2FkUmVzdWx0OiBmYWxzZSxcbiAgICAgIHVwbG9hZFByb2Nlc3M6IDAsXG4gICAgICBlcnJvck1lc3NhZ2U6IFwiXCIsXG4gICAgICBleHRlbnNpb25Ecm9wTGlzdElkOiAwLFxuICAgICAgZXh0ZW5zaW9uTmFtZTogXCJcIixcbiAgICAgIHNlY3VyaXR5RHJvcExpc3RJZDogMCxcbiAgICAgIHNlY3VyaXR5SW5mbzogdGhpcy5zZWN1cml0eUluZm9MaXN0WzBdXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RvcmFnZUV4dGVuc2lvbiAhPSBudWxsKVxuICAgICAgZmlsZUluZm8uZXh0ZW5zaW9uTmFtZSA9IHRoaXMuZGVmYXVsdFByb3BlcnR5TmFtZTtcblxuXG4gICAgbGV0IHR5cGU6IHN0cmluZyA9IHNlbGVjdGVkRmlsZS50eXBlO1xuICAgIGlmICh0eXBlLmluY2x1ZGVzKFwidGlmZlwiKSkge1xuICAgICAgdGhpcy5hZGREb2NJbmZvKHNlbGVjdGVkRmlsZSwgZmlsZUluZm8sIERvY1R5cGUuT3RoZXIpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwiaW1hZ2VcIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLkltYWdlKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZS5pbmNsdWRlcyhcIndvcmRcIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLldvcmQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwicGRmXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5QZGYpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwicGxhaW5cIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLlR4dCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUuaW5jbHVkZXMoXCJzaGVldFwiKSB8fCB0eXBlLmluY2x1ZGVzKFwiZXhjZWxcIikpIHtcbiAgICAgIHRoaXMuYWRkRG9jSW5mbyhzZWxlY3RlZEZpbGUsIGZpbGVJbmZvLCBEb2NUeXBlLkV4Y2VsKVxuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlLmluY2x1ZGVzKFwicG93ZXJwb2ludFwiKSB8fCB0eXBlLmluY2x1ZGVzKFwicHJlc2VudGF0aW9uXCIpKSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5Qb3dlcnBvaW50KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aGlzLmFkZERvY0luZm8oc2VsZWN0ZWRGaWxlLCBmaWxlSW5mbywgRG9jVHlwZS5PdGhlcik7XG4gICAgICAvLyBsZXQgbmFtZTogc3RyaW5nID0gc2VsZWN0ZWRGaWxlLm5hbWU7XG4gICAgICAvLyBsZXQgZXJyVHlwZSA9IG5hbWUuc3Vic3RyaW5nKHNlbGVjdGVkRmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJykpO1xuICAgICAgLy8gdGhpcy5lcnJUeXBlTGlzdC5wdXNoKGVyclR5cGUpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsZUluZm87XG4gIH1cblxuICB1cGxvYWRGaWxlKHV1aWQ6IHN0cmluZywgc2VsZWN0ZWRGaWxlLCBmaWxlTmFtZTogc3RyaW5nLCBzdGF0ZTogRmlsZVN0YXRlID0gRmlsZVN0YXRlLk5ldykge1xuXG4gICAgbGV0IGZpbGVJbmZvID0gdGhpcy5oYW5kbGVGaWxlSW5mbyh1dWlkLCBzZWxlY3RlZEZpbGUsIGZpbGVOYW1lKTtcblxuICAgIGxldCB1cGxvYWRGaWxlSW5mbyA9IG5ldyBVcGxvYWRGaWxlSW5mbygpO1xuXG4gICAgdXBsb2FkRmlsZUluZm8ubWV0YWRhdGFJZCA9IHV1aWQ7XG4gICAgdXBsb2FkRmlsZUluZm8uZmlsZU5hbWUgPSBmaWxlSW5mby5uYW1lO1xuICAgIHVwbG9hZEZpbGVJbmZvLmZpbGVTaXplID0gZmlsZUluZm8uZmlsZVNpemU7XG4gICAgdXBsb2FkRmlsZUluZm8uc3RhdGUgPSBzdGF0ZTtcbiAgICB1cGxvYWRGaWxlSW5mby5zZWN1cml0eUluZm8gPSB0aGlzLnNlY3VyaXR5SW5mb0xpc3RbMF07XG5cblxuICAgIC8v5Yik5pat5piv5ZCm5pSv5oyB5YiG54mH5LiK5LygXG4gICAgaWYgKHRoaXMuYWxsb3dlZE11bHRpVXBsb2FkKSB7XG5cbiAgICAgIC8v5pSv5oyB5YiG54mH5LiK5LygXG4gICAgICBsZXQgaW5pdFJlcXVlc3Q6IEluaXRNdWx0aVVwbG9hZFJlcXVlc3QgPSBuZXcgSW5pdE11bHRpVXBsb2FkUmVxdWVzdDtcblxuICAgICAgaW5pdFJlcXVlc3QucGF0aCA9IHRoaXMuZm9ybUlkO1xuICAgICAgaW5pdFJlcXVlc3QubWV0YWRhdGFJZCA9IHV1aWQ7XG4gICAgICBpbml0UmVxdWVzdC5yb290SWQgPSB0aGlzLnJvb3RJZDtcbiAgICAgIGluaXRSZXF1ZXN0LnNpemUgPSBmaWxlSW5mby5maWxlU2l6ZTtcbiAgICAgIGluaXRSZXF1ZXN0LmZpbGVOYW1lID0gZmlsZU5hbWU7XG5cbiAgICAgIC8v5Yid5aeL5YyW5YiG54mHXG4gICAgICB0aGlzLmluaXRNdWx0aVVwbG9hZChpbml0UmVxdWVzdCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMuZXJyb3IgIT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0udXBsb2FkUmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uZXJyb3JNZXNzYWdlID0gcmVzLmVycm9yLk1lc3NhZ2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IHVwbG9hZElkID0gcmVzLnVwbG9hZElkO1xuICAgICAgICAgIGxldCBjaHVua1RvdGFsOiBudW1iZXIgPSBNYXRoLmNlaWwoc2VsZWN0ZWRGaWxlLnNpemUgLyB0aGlzLmJ1ZmZlclNpemUpO1xuICAgICAgICAgIGxldCBjaHVua0luZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgICAgICAgbGV0IG11bHRpUmVzdWx0TGlzdDogTXVsdGlVcGxvYWRSZXN1bHRbXSA9IFtdO1xuXG4gICAgICAgICAgdGhpcy5maWxlVG90YWxDaHVua1t1dWlkXSA9IGNodW5rVG90YWw7XG4gICAgICAgICAgdGhpcy51cGxvYWRlZENodW5rW3V1aWRdID0gMDtcblxuICAgICAgICAgIHdoaWxlIChjaHVua0luZGV4IDwgY2h1bmtUb3RhbCkge1xuXG4gICAgICAgICAgICBsZXQgbmV4dFNpemUgPSBNYXRoLm1pbigoY2h1bmtJbmRleCArIDEpICogdGhpcy5idWZmZXJTaXplLCBzZWxlY3RlZEZpbGUuc2l6ZSk7XG4gICAgICAgICAgICBsZXQgZmlsZURhdGEgPSBzZWxlY3RlZEZpbGUuc2xpY2UoY2h1bmtJbmRleCAqIHRoaXMuYnVmZmVyU2l6ZSwgbmV4dFNpemUpO1xuXG4gICAgICAgICAgICBsZXQgbXVsdGlSZXF1ZXN0ID0gbmV3IE11bHRpVXBsb2FkUmVxdWVzdDtcbiAgICAgICAgICAgIG11bHRpUmVxdWVzdC5tZXRhZGF0YUlkID0gdXVpZDtcbiAgICAgICAgICAgIG11bHRpUmVxdWVzdC5yb290SWQgPSB0aGlzLnJvb3RJZDtcbiAgICAgICAgICAgIG11bHRpUmVxdWVzdC51cGxvYWRJZCA9IHVwbG9hZElkO1xuICAgICAgICAgICAgbXVsdGlSZXF1ZXN0LmluZGV4ID0gY2h1bmtJbmRleDtcbiAgICAgICAgICAgIG11bHRpUmVxdWVzdC50b3RhbCA9IGNodW5rVG90YWw7XG4gICAgICAgICAgICBtdWx0aVJlcXVlc3Quc2l6ZSA9IGZpbGVEYXRhLnNpemU7XG5cbiAgICAgICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdtdWx0aVJlcXVlc3QnLCBKU09OLnN0cmluZ2lmeShtdWx0aVJlcXVlc3QpKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGVEYXRhKTtcblxuICAgICAgICAgICAgdGhpcy5tdWx0aVVwbG9hZChmb3JtRGF0YSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXMuZXJyb3IgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0udXBsb2FkUmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS5pc1VwbG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uZXJyb3JNZXNzYWdlID0gcmVzLmVycm9yLk1lc3NhZ2U7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbXVsdGlSZXN1bHRMaXN0LnB1c2gocmVzLnJlc3VsdCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZENodW5rW3V1aWRdKys7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS51cGxvYWRQcm9jZXNzID0gTnVtYmVyLnBhcnNlSW50KCh0aGlzLnVwbG9hZGVkQ2h1bmtbdXVpZF0gLyB0aGlzLmZpbGVUb3RhbENodW5rW3V1aWRdICogMTAwKS50b0ZpeGVkKDApKTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy51cGxvYWRlZENodW5rW3V1aWRdID09IHRoaXMuZmlsZVRvdGFsQ2h1bmtbdXVpZF0pIHtcbiAgICAgICAgICAgICAgICAgIGlmIChtdWx0aVJlc3VsdExpc3QubGVuZ3RoID09IHRoaXMuZmlsZVRvdGFsQ2h1bmtbdXVpZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc1t0aGlzLmZpbGVzLmluZGV4T2YoZmlsZUluZm8pXS51cGxvYWRSZXN1bHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0ID0gdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuY29uY2F0KHVwbG9hZEZpbGVJbmZvKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdCA9IHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuY29uY2F0KHVwbG9hZEZpbGVJbmZvKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbCsrO1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb21wbGV0ZU11bHRpVXBsb2FkUmVxdWVzdDogQ29tcGxldGVNdWx0aVVwbG9hZFJlcXVlc3QgPSBuZXcgQ29tcGxldGVNdWx0aVVwbG9hZFJlcXVlc3Q7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlTXVsdGlVcGxvYWRSZXF1ZXN0Lm1ldGFkYXRhSWQgPSB1dWlkO1xuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZU11bHRpVXBsb2FkUmVxdWVzdC5wYXJ0TGlzdCA9IG11bHRpUmVzdWx0TGlzdDtcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVNdWx0aVVwbG9hZFJlcXVlc3Qucm9vdElkID0gdGhpcy5yb290SWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlTXVsdGlVcGxvYWRSZXF1ZXN0LnVwbG9hZElkID0gdXBsb2FkSWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlTXVsdGlVcGxvYWRSZXF1ZXN0LnNpemUgPSBmaWxlSW5mby5maWxlU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGF2ZUV4dGVuc2lvblByb3BlcnR5KVxuICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlTXVsdGlVcGxvYWRSZXF1ZXN0LmV4UHJvcGVydHlOYW1lID0gdGhpcy5kZWZhdWx0UHJvcGVydHlOYW1lO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlTXVsdGlVcGxvYWQoY29tcGxldGVNdWx0aVVwbG9hZFJlcXVlc3QpLnN1YnNjcmliZShyZXMgPT4ge1xuXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC8v5ZCO5Y+w5byC5q2l5ou85o6l5paH5qGjXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uZXJyb3JNZXNzYWdlID0gdGhpcy5sb2NhbGVwaXBlLnRyYW5zZm9ybSgnbWlzbWF0Y2hDaHVua1NpemUnKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgY2h1bmtJbmRleCA9IGNodW5rSW5kZXggKyAxO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9KVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBlbnRpdHkgPSBuZXcgR3NwRm9ybVN0cmVhbUVudGl0eTtcbiAgICAgIGVudGl0eS5mb3JtSWQgPSB0aGlzLmZvcm1JZDtcbiAgICAgIGVudGl0eS5tZXRhZGF0YUlkID0gdXVpZDtcbiAgICAgIGVudGl0eS5tb2RlID0gT3BlcmF0aW5nTW9kZXMuVGVtcDtcbiAgICAgIGVudGl0eS5yb290SWQgPSB0aGlzLnJvb3RJZDtcbiAgICAgIGVudGl0eS5zaXplID0gc2VsZWN0ZWRGaWxlLnNpemU7XG4gICAgICBlbnRpdHkuZmlsZU5hbWUgPSBmaWxlTmFtZTtcbiAgICAgIGlmICh0aGlzLmhhdmVFeHRlbnNpb25Qcm9wZXJ0eSlcbiAgICAgICAgZW50aXR5LmV4UHJvcGVydHlOYW1lID0gdGhpcy5kZWZhdWx0UHJvcGVydHlOYW1lO1xuXG4gICAgICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgndXBsb2FkRW50aXR5JywgSlNPTi5zdHJpbmdpZnkoZW50aXR5KSk7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBzZWxlY3RlZEZpbGUpO1xuXG4gICAgICB0aGlzLnVwbG9hZFNpbmdsZUZpbGUoZm9ybURhdGEpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICBpZiAocmVzICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLnVwbG9hZFJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0uaXNVcGxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmVycm9yTWVzc2FnZSA9IHJlcy5lcnJvci5NZXNzYWdlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZmlsZXNbdGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKV0udXBsb2FkUmVzdWx0ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmZpbGVzW3RoaXMuZmlsZXMuaW5kZXhPZihmaWxlSW5mbyldLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QgPSB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5jb25jYXQodXBsb2FkRmlsZUluZm8pO1xuICAgICAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QgPSB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmNvbmNhdCh1cGxvYWRGaWxlSW5mbyk7XG4gICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbCsrO1xuXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICB9XG5cblxuXG4gICAgbGV0IGluZGV4ID0gLTE7XG4gICAgdGhpcy5maWxlcy5mb3JFYWNoKHggPT4ge1xuICAgICAgaWYgKHgubmFtZSA9PSBmaWxlSW5mby5uYW1lKSB7XG4gICAgICAgIGlmIChpbmRleCA9PSAtMSlcbiAgICAgICAgICBpbmRleCA9IHRoaXMuZmlsZXMuaW5kZXhPZih4KTtcbiAgICAgIH1cbiAgICB9KVxuICAgIGlmIChpbmRleCAhPSAtMSAmJiBpbmRleCAhPSB0aGlzLmZpbGVzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LnNwbGljZShpbmRleCwgMSk7XG4gICAgICAvL3RoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICB9XG5cbiAgfVxuXG5cbiAgdXBsb2FkU2luZ2xlRmlsZShmb3JtZGF0YTogRm9ybURhdGEpOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgbGV0IHVybCA9IFwiL2FwaS9ydW50aW1lL2Rmcy92MS4wL2Zvcm1kb2Mvc2luZ2xlXCI7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwY2xpZW50LnBvc3QodXJsLCBmb3JtZGF0YSkucGlwZShcbiAgICAgIHRhcChyZXMgPT4geyB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICByZXR1cm4gb2YoZXJyb3IpO1xuICAgICAgfSkpO1xuICB9XG5cbiAgdXBsb2FkU2xpY2VGaWxlKGZvcm1kYXRhOiBGb3JtRGF0YSk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICBsZXQgdXJsID0gXCIvYXBpL3J1bnRpbWUvZGZzL3YxLjAvZm9ybWRvYy9zbGljZVwiO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cGNsaWVudC5wb3N0KHVybCwgZm9ybWRhdGEpLnBpcGUoXG4gICAgICB0YXAocmVzID0+IHsgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIGluaXRNdWx0aVVwbG9hZChyZXF1ZXN0OiBJbml0TXVsdGlVcGxvYWRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIGxldCB1cmwgPSBcIi9hcGkvcnVudGltZS9kZnMvdjEuMC9mb3JtZG9jL211bHRpL2luaXRcIjtcblxuICAgIHJldHVybiB0aGlzLmh0dHBjbGllbnQucG9zdCh1cmwsIHJlcXVlc3QpLnBpcGUoXG4gICAgICB0YXAocmVzID0+IHsgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIG9mKGVycm9yKTtcbiAgICAgIH0pKTtcbiAgfVxuXG4gIG11bHRpVXBsb2FkKGZvcm1kYXRhOiBGb3JtRGF0YSk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICBsZXQgdXJsID0gXCIvYXBpL3J1bnRpbWUvZGZzL3YxLjAvZm9ybWRvYy9tdWx0aS91cGxvYWRcIjtcblxuICAgIHJldHVybiB0aGlzLmh0dHBjbGllbnQucG9zdCh1cmwsIGZvcm1kYXRhKS5waXBlKFxuICAgICAgdGFwKHJlcyA9PiB7IH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJldHVybiBvZihlcnJvcik7XG4gICAgICB9KSk7XG4gIH1cblxuICBjb21wbGV0ZU11bHRpVXBsb2FkKHJlcXVlc3Q6IENvbXBsZXRlTXVsdGlVcGxvYWRSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIGxldCB1cmwgPSBcIi9hcGkvcnVudGltZS9kZnMvdjEuMC9mb3JtZG9jL211bHRpL2NvbXBsZXRlXCI7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwY2xpZW50LnBvc3QodXJsLCByZXF1ZXN0KS5waXBlKFxuICAgICAgdGFwKHJlcyA9PiB7IH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHJldHVybiBvZihlcnJvcik7XG4gICAgICB9KSk7XG4gIH1cblxuXG5cbiAgc2VsZWN0QWxsRmlsZSgpIHtcblxuICAgIGlmICghdGhpcy5maWxlQWxsU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcblxuICAgICAgICBlbGVtZW50LnNlbGVjdGQgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gdGhpcy5maWxlcy5sZW5ndGg7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuXG4gICAgICAgIGVsZW1lbnQuc2VsZWN0ZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gICAgfVxuICB9XG5cblxuICBjaGVja291dFNlbGVjdEZpbGUoZmlsZTogRmlsZUluZm8pIHtcbiAgICAvLyBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmaWxlTmFtZSk7XG4gICAgZmlsZS5zZWxlY3RkID0gIWZpbGUuc2VsZWN0ZDtcbiAgICBpZiAoZmlsZS5zZWxlY3RkKVxuICAgICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCsrO1xuICAgIGVsc2VcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQtLTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9PSB0aGlzLmZpbGVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgLy90aGlzLmlzRmlsZUFsbFNlbGVjdGVkKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIC8vdGhpcy5pc0ZpbGVBbGxTZWxlY3RlZCgpO1xuICAgIH1cblxuICB9XG5cbiAgbGlzdERlbGV0ZUZpbGUoZmlsZUluZm86IEZpbGVJbmZvKSB7XG4gICAgaWYgKGZpbGVJbmZvLnNlbGVjdGQpXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZUNvdW50LS07XG4gICAgLy9jb25zb2xlLmxvZyhmaWxlTmFtZSk7XG4gICAgdGhpcy5maWxlcy5zcGxpY2UodGhpcy5maWxlcy5pbmRleE9mKGZpbGVJbmZvKSwgMSk7XG4gICAgaWYgKGZpbGVJbmZvLnVwbG9hZFJlc3VsdCkge1xuICAgICAgbGV0IGlkTGlzdDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlkTGlzdC5wdXNoKGZpbGVJbmZvLmlkKTtcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwoaWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgICAgIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LnNwbGljZSh0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZmlsZUluZm8ubmFtZSlbMF0pLCAxKTtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3Quc3BsaWNlKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZGVkRmlsZUluZm9MaXN0LmZpbHRlcih4ID0+IHguZmlsZU5hbWUgPT0gZmlsZUluZm8ubmFtZSlbMF0pLCAxKTtcbiAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgPT0gMClcbiAgICAgIHRoaXMuZmlsZUFsbFNlbGVjdGVkID0gZmFsc2U7XG4gIH1cblxuICBsaXN0TXVsdGlwbGVEZWxldGVGaWxlKCkge1xuICAgIGxldCBzZWxlY3RlZEZpbGU6IEZpbGVJbmZvW10gPSBbXTtcbiAgICB0aGlzLmZpbGVzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBsZXQgb2JqOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50Lm5hbWUpO1xuICAgICAgaWYgKG9iai5jaGVja2VkKVxuICAgICAgICBzZWxlY3RlZEZpbGUucHVzaChlbGVtZW50KTtcbiAgICB9KVxuICAgIGxldCBtZXRhZGF0YUxpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgc2VsZWN0ZWRGaWxlLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBtZXRhZGF0YUxpc3QucHVzaChlbGVtZW50LmlkKTtcbiAgICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihlbGVtZW50KSwgMSk7XG4gICAgICBpZiAoZWxlbWVudC51cGxvYWRSZXN1bHQpIHtcblxuICAgICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuaW5kZXhPZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4LmZpbGVOYW1lID09IGVsZW1lbnQubmFtZSlbMF0pLCAxKTtcbiAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5zcGxpY2UodGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5pbmRleE9mKHRoaXMudXBsb2FkZWRGaWxlSW5mb0xpc3QuZmlsdGVyKHggPT4geC5maWxlTmFtZSA9PSBlbGVtZW50Lm5hbWUpWzBdKSwgMSk7XG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlVG90YWwtLTtcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMudXBsb2FkU2VydmljZS5jYW5jZWwobWV0YWRhdGFMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgICBsZXQgYWxsQm94OiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImFsbENoZWNrQm94XCIpO1xuICAgIGlmIChhbGxCb3ggIT0gbnVsbClcbiAgICAgIGFsbEJveC5jaGVja2VkID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gICAgdGhpcy5maWxlQWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgfVxuXG5cbiAgZ2V0UGljTGlzdERpc3BsYXlOYW1lKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoZmlsZU5hbWUubGVuZ3RoIDw9IDEwKVxuICAgICAgcmV0dXJuIGZpbGVOYW1lO1xuICAgIGVsc2Uge1xuICAgICAgbGV0IGhlYWRDb250ZW50ID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIDIpO1xuICAgICAgbGV0IHRhaWxDb250ZW50ID0gZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgLSAyKTtcbiAgICAgIHJldHVybiBoZWFkQ29udGVudCArIFwi4oCmXCIgKyB0YWlsQ29udGVudDtcbiAgICB9XG4gIH1cblxuICBnZXRRdWV1ZURpc3BsYXlOYW1lKGZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZmlsZU5hbWU7XG4gIH1cblxuICBhZGREb2NJbmZvKHNlbGVjdGRGaWxlLCBmaWxlSW5mbzogRmlsZUluZm8sIGRvY1R5cGU6IERvY1R5cGUpIHtcblxuICAgIHN3aXRjaCAoZG9jVHlwZSkge1xuICAgICAgY2FzZSBEb2NUeXBlLldvcmQ6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3dvcmQucG5nXCJcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5QZGY6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3BkZi5wbmdcIlxuICAgICAgICB0aGlzLmZpbGVzLnB1c2goZmlsZUluZm8pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSBEb2NUeXBlLkV4Y2VsOiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9leGNlbC5wbmdcIjtcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5UeHQ6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL3R4dC5wbmdcIjtcbiAgICAgICAgdGhpcy5maWxlcy5wdXNoKGZpbGVJbmZvKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRG9jVHlwZS5Qb3dlcnBvaW50OiB7XG4gICAgICAgIGZpbGVJbmZvLnNvdXJjZSA9IFwiL3BsYXRmb3JtL3J1bnRpbWUvZGZzL2ltYWdlcy9wcHQucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuT3RoZXI6IHtcbiAgICAgICAgZmlsZUluZm8uc291cmNlID0gXCIvcGxhdGZvcm0vcnVudGltZS9kZnMvaW1hZ2VzL2ZpbGUucG5nXCI7XG4gICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBjYXNlIERvY1R5cGUuSW1hZ2U6IHtcbiAgICAgICAgbGV0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHNlbGVjdGRGaWxlKTtcbiAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChfZXZlbnQpID0+IHtcbiAgICAgICAgICBsZXQgaW1nVXJsID0gcmVhZGVyLnJlc3VsdDtcbiAgICAgICAgICBpZiAodGhpcy5pbmplY3RvciAhPSBudWxsKSB7XG4gICAgICAgICAgICBsZXQgc2FuaXRpemVyID0gdGhpcy5pbmplY3Rvci5nZXQoRG9tU2FuaXRpemVyKTtcbiAgICAgICAgICAgIGltZ1VybCA9IHNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoaW1nVXJsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmlsZUluZm8uc291cmNlID0gaW1nVXJsO1xuICAgICAgICAgIHRoaXMuZmlsZXMucHVzaChmaWxlSW5mbyk7XG5cbiAgICAgICAgICAvL+WboOS4uuW8guatpeWkhOeQhueahOW3ruW8gu+8jOihpeWBv+S4gOasoeWIoOmZpFxuICAgICAgICAgIGxldCBpbmRleCA9IC0xO1xuICAgICAgICAgIHRoaXMuZmlsZXMuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh4Lm5hbWUgPT0gZmlsZUluZm8ubmFtZSkge1xuICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gLTEpXG4gICAgICAgICAgICAgICAgaW5kZXggPSB0aGlzLmZpbGVzLmluZGV4T2YoeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoaW5kZXggIT0gLTEgJiYgaW5kZXggIT0gdGhpcy5maWxlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVJbmZvTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgfVxuXG4gIH1cblxuICBsaXN0VG9TdHJpbmcoc3RyTGlzdDogc3RyaW5nW10pIHtcbiAgICBsZXQgbmFtZTogc3RyaW5nID0gXCJcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ckxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5hbWUgKz0gc3RyTGlzdFtpXSArIFwiLFwiO1xuICAgIH1cbiAgICByZXR1cm4gbmFtZTtcbiAgfVxuXG4gIHNlY3VyaXR5Q2hhbmdlKCRldmVudDogYW55LCBmaWxlOiBGaWxlSW5mbykge1xuICAgIGZpbGUuc2VjdXJpdHlJbmZvID0gJGV2ZW50LmRhdGE7XG4gICAgbGV0IHVwbG9hZEZpbGUgPSB0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdC5maWx0ZXIoeCA9PiB4Lm1ldGFkYXRhSWQgPSBmaWxlLmlkKVswXTtcbiAgICB1cGxvYWRGaWxlLnNlY3VyaXR5SW5mbyA9ICRldmVudC5kYXRhO1xuICB9XG5cblxuICBleFN0b3JhZ2VGaWxlTGlzdDogRXhTdG9yYWdlRmlsZUluZm9bXSA9IFtdO1xuXG4gIHR5cGVDaGFuZ2UoJGV2ZW50OiBhbnksIGZpbGU6IEZpbGVJbmZvKSB7XG4gICAgZmlsZS5leHRlbnNpb25OYW1lID0gJGV2ZW50LmRhdGEubmFtZTtcbiAgICBsZXQgZXhTdG9yYWdlRmlsZUluZm86IEV4U3RvcmFnZUZpbGVJbmZvID0gbmV3IEV4U3RvcmFnZUZpbGVJbmZvO1xuICAgIGlmIChmaWxlLmV4dGVuc2lvbk5hbWUgPT0gdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUpIHtcbiAgICAgIGlmICh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKS5sZW5ndGggPiAwKVxuICAgICAgICB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LnNwbGljZSh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbmRJbmRleCh4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKSwgMSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QuZmlsdGVyKHggPT4geC5tZXRhZGF0YUlkID09IGZpbGUuaWQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXhTdG9yYWdlRmlsZUluZm8gPSB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKVswXTtcbiAgICAgICAgZXhTdG9yYWdlRmlsZUluZm8uZXhQcm9wZXJ0eU5hbWUgPSBmaWxlLmV4dGVuc2lvbk5hbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleFN0b3JhZ2VGaWxlSW5mby5tZXRhZGF0YUlkID0gZmlsZS5pZDtcbiAgICAgICAgZXhTdG9yYWdlRmlsZUluZm8uZXhQcm9wZXJ0eU5hbWUgPSBmaWxlLmV4dGVuc2lvbk5hbWU7XG4gICAgICAgIHRoaXMuZXhTdG9yYWdlRmlsZUxpc3QucHVzaChleFN0b3JhZ2VGaWxlSW5mbyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRoaXMudXBsb2FkZWRGaWxlVG90YWwgIT0gdGhpcy5maWxlcy5maWx0ZXIoeCA9PiB4LmlzVXBsb2FkaW5nIHx8IHgudXBsb2FkUmVzdWx0KS5sZW5ndGgpIHtcblxuICAgICAgdGhpcy5tc2dTZXJ2aWNlLndhcm5pbmcodGhpcy5sb2NhbGVwaXBlLnRyYW5zZm9ybSgnd2FpdCcpKTtcbiAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhdmVTZWN1cml0eUluZm8pIHtcbiAgICAgIHRoaXMudXBsb2FkU2VydmljZS5zYXZlU2VjdXJpdHlJbmZvKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0b3JhZ2VFeHRlbnNpb24gPT0gbnVsbClcbiAgICAgIHJldHVybiBvZih0aGlzLnVwbG9hZEZpbGVJbmZvTGlzdCk7XG4gICAgZWxzZSB7XG4gICAgICBpZiAodGhpcy5leFN0b3JhZ2VGaWxlTGlzdC5sZW5ndGggPT0gMClcbiAgICAgICAgcmV0dXJuIG9mKHRoaXMudXBsb2FkRmlsZUluZm9MaXN0KTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBsb2FkaW5nID0gdGhpcy5sb2FkU2VydmljZS5zaG93KHtcbiAgICAgICAgICBtZXNzYWdlOiB0aGlzLmxvY2FsZXBpcGUudHJhbnNmb3JtKCdzYXZlVG8nKSArIHRoaXMuc3RvcmFnZUV4dGVuc2lvbi5leHRlbnNpb25OYW1lXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcy51cGxvYWRTZXJ2aWNlLmNoYW5nZVN0b3JhZ2VJbnN0YW5jZSh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LCB0aGlzLnJvb3RJZCkucGlwZShcbiAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgIC8vIGlmIChyZXMgIT0gbnVsbClcbiAgICAgICAgICAgIC8vICAgdGhpcy5tc2dTZXJ2aWNlLmVycm9yKCfkv53lrZjliLAnICsgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmV4dGVuc2lvbk5hbWUgKyBcIuWksei0pe+8jOS4iuS8oOaWh+S7tuiHquWKqOS/neWtmOWIsFwiICsgdGhpcy5zdG9yYWdlRXh0ZW5zaW9uLmRlZmF1bHRQcm9wZXJ0eU5hbWUgKyBcIuWtmOWCqOOAglwiICsgcmVzLmVycm9yLk1lc3NhZ2UpO1xuICAgICAgICAgICAgbG9hZGluZy5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBsb2FkRmlsZUluZm9MaXN0O1xuICAgICAgICAgIH0pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICBpZiAodGhpcy51cGxvYWRGaWxlSW5mb0xpc3QubGVuZ3RoID09IDApXG4gICAgICByZXR1cm47XG4gICAgdGhpcy51cGxvYWRGaWxlSW5mb0xpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIHRoaXMubWV0YWRhdGFJZExpc3QucHVzaChlbGVtZW50Lm1ldGFkYXRhSWQpO1xuICAgIH0pXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLmNhbmNlbCh0aGlzLm1ldGFkYXRhSWRMaXN0LCB0aGlzLnJvb3RJZCkuc3Vic2NyaWJlKCk7XG5cbiAgfVxuXG4gIGdldFVwbG9hZEZpbGVJbmZvTGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy51cGxvYWRGaWxlSW5mb0xpc3Q7XG4gIH1cblxuICBkZWxldGUoZmlsZSkge1xuICAgIHRoaXMuZmlsZXMuc3BsaWNlKHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKSwgMSk7XG4gICAgaWYgKGZpbGUudXBsb2FkUmVzdWx0KVxuICAgICAgdGhpcy51cGxvYWRlZEZpbGVUb3RhbC0tO1xuICAgIGlmICh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbHRlcih4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LnNwbGljZSh0aGlzLmV4U3RvcmFnZUZpbGVMaXN0LmZpbmRJbmRleCh4ID0+IHgubWV0YWRhdGFJZCA9PSBmaWxlLmlkKSwgMSk7XG4gICAgfVxuXG4gIH1cblxuICBnZXRGaWxlU2l6ZShzaXplOiBudW1iZXIpIHtcbiAgICBpZiAoc2l6ZSA8IDEwMjQwMClcbiAgICAgIHJldHVybiAoc2l6ZSAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIktcIjtcbiAgICBlbHNlIGlmIChzaXplIDwgMTAyNCAqIDEwMjQpXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0KS50b0ZpeGVkKDApICsgXCJLXCI7XG4gICAgZWxzZSBpZiAoc2l6ZSA8IDEwMCAqIDEwMjQgKiAxMDI0KVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIk1cIjtcbiAgICBlbHNlIGlmIChzaXplIDwgMTAyNCAqIDEwMjQgKiAxMDI0KVxuICAgICAgcmV0dXJuIChzaXplIC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMCkgKyBcIk1cIjtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gKHNpemUgLyAxMDI0IC8gMTAyNCAvIDEwMjQpLnRvRml4ZWQoMSkgKyBcIkdcIjtcbiAgfVxuICBzaG93QnlHcm91cCgpIHtcbiAgICB0aGlzLnNob3dUeXBlID0gMDtcbiAgICAvLyB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID0gMDtcbiAgfVxuXG4gIHNob3dCeUxpc3QoKSB7XG4gICAgdGhpcy5zaG93VHlwZSA9IDE7XG4gICAgLy8gdGhpcy5zZWxlY3RlZEZpbGVDb3VudCA9IDA7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGaWxlQ291bnQgIT0gMCAmJiB0aGlzLnNlbGVjdGVkRmlsZUNvdW50ID09IHRoaXMuZmlsZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZpbGVBbGxTZWxlY3RlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbW91c2VPdmVyKGZpbGUpIHtcbiAgICBmaWxlLm1vdXNlT24gPSB0cnVlO1xuICB9XG4gIG1vdXNlT3V0KGZpbGUpIHtcbiAgICBmaWxlLm1vdXNlT24gPSBmYWxzZTtcbiAgfVxuXG59XG5cblxuIl19
@@ -5,7 +5,6 @@
5
5
  import { LOCALE_ID, NgModule } from '@angular/core';
6
6
  import { CommonModule } from '@angular/common';
7
7
  import { FileUploadComponent } from './file-upload/file-upload.component';
8
- import { ButtonsModule } from '@progress/kendo-angular-buttons';
9
8
  import { NotifyModule } from '@farris/ui-notify';
10
9
  import { MessagerModule } from '@farris/ui-messager';
11
10
  import { UploadService } from './upload.service';
@@ -13,6 +12,7 @@ import { LoadingModule } from '@farris/ui-loading';
13
12
  import { ProgressModule } from '@farris/ui-progress';
14
13
  import { FormsModule } from '@angular/forms';
15
14
  import { ComboListModule } from '@farris/ui-combo-list';
15
+ import { FarrisFormsModule } from '@farris/ui-forms';
16
16
  import { DownloadService } from './download.service';
17
17
  import { LocalLangPipe } from '../local.pipe';
18
18
  import { CacheService, HttpService, LanguageService, SessionService } from '@ecp-caf/caf-common';
@@ -26,12 +26,12 @@ var UploadModule = /** @class */ (function () {
26
26
  declarations: [FileUploadComponent, LocalLangPipe],
27
27
  imports: [
28
28
  CommonModule,
29
- ButtonsModule,
30
29
  NotifyModule,
31
30
  MessagerModule.forRoot(),
32
31
  LoadingModule.forRoot(),
33
32
  ProgressModule,
34
33
  FormsModule,
34
+ FarrisFormsModule,
35
35
  ComboListModule,
36
36
  HttpClientModule
37
37
  ],
@@ -47,4 +47,4 @@ export { UploadModule };
47
47
  /** @type {?} */
48
48
  export var ɵa = UploadModule;
49
49
  export { ɵ0 };
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bnc3Atc3ZjL2Zvcm1kb2MtdXBsb2FkLyIsInNvdXJjZXMiOlsibGliL3VwbG9hZC91cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7U0FvQnBCLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksUUFBUTtBQWhCcEY7SUFBQTtJQW1CNEIsQ0FBQzs7Z0JBbkI1QixRQUFRLFNBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDO29CQUNsRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osY0FBYyxDQUFDLE9BQU8sRUFBRTt3QkFDeEIsYUFBYSxDQUFDLE9BQU8sRUFBRTt3QkFDdkIsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsZ0JBQWdCO3FCQUNqQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDOUIsZUFBZSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLGFBQWEsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsY0FBYzt3QkFDcEcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsSUFBa0QsRUFBRSxFQUFFO2lCQUV2Rjs7SUFDMkIsbUJBQUM7Q0FBQSxBQW5CN0IsSUFtQjZCO1NBQWhCLFlBQVk7O0FBRXpCLE1BQU0sS0FBTyxFQUFFLEdBQUcsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExPQ0FMRV9JRCwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uc01vZHVsZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLWJ1dHRvbnMnO1xuaW1wb3J0IHsgTm90aWZ5TW9kdWxlIH0gZnJvbSAnQGZhcnJpcy91aS1ub3RpZnknO1xuaW1wb3J0IHsgTWVzc2FnZXJNb2R1bGUgfSBmcm9tICdAZmFycmlzL3VpLW1lc3NhZ2VyJztcbmltcG9ydCB7IFVwbG9hZFNlcnZpY2UgfSBmcm9tICcuL3VwbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IExvYWRpbmdNb2R1bGUgfSBmcm9tICdAZmFycmlzL3VpLWxvYWRpbmcnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NNb2R1bGUgfSBmcm9tICdAZmFycmlzL3VpLXByb2dyZXNzJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21ib0xpc3RNb2R1bGUgfSBmcm9tICdAZmFycmlzL3VpLWNvbWJvLWxpc3QnO1xuaW1wb3J0IHsgRG93bmxvYWRTZXJ2aWNlIH0gZnJvbSAnLi9kb3dubG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsTGFuZ1BpcGUgfSBmcm9tICcuLi9sb2NhbC5waXBlJztcbmltcG9ydCB7IENhY2hlU2VydmljZSwgSHR0cFNlcnZpY2UsIExhbmd1YWdlU2VydmljZSwgU2Vzc2lvblNlcnZpY2UgfSBmcm9tICdAZWNwLWNhZi9jYWYtY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtGaWxlVXBsb2FkQ29tcG9uZW50LCBMb2NhbExhbmdQaXBlXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCdXR0b25zTW9kdWxlLFxuICAgIE5vdGlmeU1vZHVsZSxcbiAgICBNZXNzYWdlck1vZHVsZS5mb3JSb290KCksXG4gICAgTG9hZGluZ01vZHVsZS5mb3JSb290KCksXG4gICAgUHJvZ3Jlc3NNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ29tYm9MaXN0TW9kdWxlLFxuICAgIEh0dHBDbGllbnRNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW0ZpbGVVcGxvYWRDb21wb25lbnRdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtGaWxlVXBsb2FkQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbVXBsb2FkU2VydmljZSwgRG93bmxvYWRTZXJ2aWNlLCBMYW5ndWFnZVNlcnZpY2UsIEh0dHBTZXJ2aWNlLCBDYWNoZVNlcnZpY2UsIFNlc3Npb25TZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogTE9DQUxFX0lELCB1c2VWYWx1ZTogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlQ29kZScpIHx8ICd6aC1DSFMnIH0sXVxuXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZE1vZHVsZSB7IH1cblxuZXhwb3J0IGNvbnN0IMm1YSA9IFVwbG9hZE1vZHVsZTtcbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bnc3Atc3ZjL2Zvcm1kb2MtdXBsb2FkLyIsInNvdXJjZXMiOlsibGliL3VwbG9hZC91cGxvYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztTQW9CcEIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxRQUFRO0FBaEJwRjtJQUFBO0lBbUI0QixDQUFDOztnQkFuQjVCLFFBQVEsU0FBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxhQUFhLENBQUM7b0JBQ2xELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osY0FBYyxDQUFDLE9BQU8sRUFBRTt3QkFDeEIsYUFBYSxDQUFDLE9BQU8sRUFBRTt3QkFDdkIsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixnQkFBZ0I7cUJBQ2pCO29CQUNELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUM5QixlQUFlLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztvQkFDdEMsU0FBUyxFQUFFLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjO3dCQUNwRyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxJQUFrRCxFQUFFLEVBQUU7aUJBRXZGOztJQUMyQixtQkFBQztDQUFBLEFBbkI3QixJQW1CNkI7U0FBaEIsWUFBWTs7QUFFekIsTUFBTSxLQUFPLEVBQUUsR0FBRyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTE9DQUxFX0lELCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOb3RpZnlNb2R1bGUgfSBmcm9tICdAZmFycmlzL3VpLW5vdGlmeSc7XG5pbXBvcnQgeyBNZXNzYWdlck1vZHVsZSB9IGZyb20gJ0BmYXJyaXMvdWktbWVzc2FnZXInO1xuaW1wb3J0IHsgVXBsb2FkU2VydmljZSB9IGZyb20gJy4vdXBsb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9hZGluZ01vZHVsZSB9IGZyb20gJ0BmYXJyaXMvdWktbG9hZGluZyc7XG5pbXBvcnQgeyBQcm9ncmVzc01vZHVsZSB9IGZyb20gJ0BmYXJyaXMvdWktcHJvZ3Jlc3MnXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbWJvTGlzdE1vZHVsZSB9IGZyb20gJ0BmYXJyaXMvdWktY29tYm8tbGlzdCc7XG5pbXBvcnQgeyBGYXJyaXNGb3Jtc01vZHVsZSB9IGZyb20gJ0BmYXJyaXMvdWktZm9ybXMnXG5pbXBvcnQgeyBEb3dubG9hZFNlcnZpY2UgfSBmcm9tICcuL2Rvd25sb2FkLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxMYW5nUGlwZSB9IGZyb20gJy4uL2xvY2FsLnBpcGUnO1xuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlLCBIdHRwU2VydmljZSwgTGFuZ3VhZ2VTZXJ2aWNlLCBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BlY3AtY2FmL2NhZi1jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuXG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0ZpbGVVcGxvYWRDb21wb25lbnQsIExvY2FsTGFuZ1BpcGVdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5vdGlmeU1vZHVsZSxcbiAgICBNZXNzYWdlck1vZHVsZS5mb3JSb290KCksXG4gICAgTG9hZGluZ01vZHVsZS5mb3JSb290KCksXG4gICAgUHJvZ3Jlc3NNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRmFycmlzRm9ybXNNb2R1bGUsXG4gICAgQ29tYm9MaXN0TW9kdWxlLFxuICAgIEh0dHBDbGllbnRNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW0ZpbGVVcGxvYWRDb21wb25lbnRdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtGaWxlVXBsb2FkQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbVXBsb2FkU2VydmljZSwgRG93bmxvYWRTZXJ2aWNlLCBMYW5ndWFnZVNlcnZpY2UsIEh0dHBTZXJ2aWNlLCBDYWNoZVNlcnZpY2UsIFNlc3Npb25TZXJ2aWNlLFxuICAgIHsgcHJvdmlkZTogTE9DQUxFX0lELCB1c2VWYWx1ZTogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhbmd1YWdlQ29kZScpIHx8ICd6aC1DSFMnIH0sXVxuXG59KVxuZXhwb3J0IGNsYXNzIFVwbG9hZE1vZHVsZSB7IH1cblxuZXhwb3J0IGNvbnN0IMm1YSA9IFVwbG9hZE1vZHVsZTtcbiJdfQ==
@@ -5,7 +5,6 @@
5
5
  import { NgModule } from '@angular/core';
6
6
  import { CommonModule } from '@angular/common';
7
7
  import { FarrisDialogModule } from '@farris/ui-dialog';
8
- import { ButtonsModule } from '@progress/kendo-angular-buttons';
9
8
  import { MessagerModule } from '@farris/ui-messager';
10
9
  import { BsModalService } from '@farris/ui-modal';
11
10
  import { UploadModule } from '../upload/upload.module';
@@ -27,7 +26,6 @@ var UploadDialogMoudle = /** @class */ (function () {
27
26
  FarrisDialogModule,
28
27
  MessagerModule.forRoot(),
29
28
  UploadModule,
30
- ButtonsModule,
31
29
  NotifyModule.forRoot(),
32
30
  HttpClientModule
33
31
  ],
@@ -39,4 +37,4 @@ var UploadDialogMoudle = /** @class */ (function () {
39
37
  return UploadDialogMoudle;
40
38
  }());
41
39
  export { UploadDialogMoudle };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZGlhbG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bnc3Atc3ZjL2Zvcm1kb2MtdXBsb2FkLyIsInNvdXJjZXMiOlsibGliL3VwbG9hZGRpYWxvZy91cGxvYWRkaWFsb2cubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFHbEY7SUFBQTtJQWVrQyxDQUFDOztnQkFmbEMsUUFBUSxTQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNyQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixrQkFBa0I7d0JBQ2xCLGNBQWMsQ0FBQyxPQUFPLEVBQUU7d0JBQ3hCLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixZQUFZLENBQUMsT0FBTyxFQUFFO3dCQUN0QixnQkFBZ0I7cUJBQ2pCO29CQUNELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFDLG1CQUFtQixDQUFDO29CQUNwRCxlQUFlLEVBQUUsQ0FBQyxxQkFBcUIsRUFBQyxtQkFBbUIsQ0FBQztvQkFDNUQsU0FBUyxFQUFFLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLENBQUM7aUJBQzdFOztJQUNpQyx5QkFBQztDQUFBLEFBZm5DLElBZW1DO1NBQXRCLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBGYXJyaXNEaWFsb2dNb2R1bGUgfSBmcm9tICdAZmFycmlzL3VpLWRpYWxvZyc7XG5pbXBvcnQgeyBCdXR0b25zTW9kdWxlIH0gZnJvbSAnQHByb2dyZXNzL2tlbmRvLWFuZ3VsYXItYnV0dG9ucyc7XG5pbXBvcnQgeyBNZXNzYWdlck1vZHVsZSB9IGZyb20gJ0BmYXJyaXMvdWktbWVzc2FnZXInO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLW1vZGFsJztcblxuaW1wb3J0IHsgVXBsb2FkTW9kdWxlIH0gZnJvbSAnLi4vdXBsb2FkL3VwbG9hZC5tb2R1bGUnO1xuaW1wb3J0IHsgVXBsb2FkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi91cGxvYWRkaWFsb2cvdXBsb2FkZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJ0BlY3AtY2FmL2NhZi1jb21tb24nO1xuaW1wb3J0IHsgVXBsb2FkU2VydmljZSB9IGZyb20gJy4uL3VwbG9hZC91cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBVcGxvYWREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vdXBsb2FkZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE5vdGlmeU1vZHVsZSB9IGZyb20gJ0BmYXJyaXMvdWktbm90aWZ5JztcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuLi91cGxvYWQvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50JztcblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtVcGxvYWREaWFsb2dDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZhcnJpc0RpYWxvZ01vZHVsZSxcbiAgICBNZXNzYWdlck1vZHVsZS5mb3JSb290KCksXG4gICAgVXBsb2FkTW9kdWxlLFxuICAgIEJ1dHRvbnNNb2R1bGUsXG4gICAgTm90aWZ5TW9kdWxlLmZvclJvb3QoKSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtVcGxvYWREaWFsb2dDb21wb25lbnQsRmlsZVVwbG9hZENvbXBvbmVudF0sXG4gIGVudHJ5Q29tcG9uZW50czogW1VwbG9hZERpYWxvZ0NvbXBvbmVudCxGaWxlVXBsb2FkQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbQnNNb2RhbFNlcnZpY2UsIEh0dHBTZXJ2aWNlLCBVcGxvYWREaWFsb2dTZXJ2aWNlLCBVcGxvYWRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBVcGxvYWREaWFsb2dNb3VkbGUgeyB9XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZGlhbG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bnc3Atc3ZjL2Zvcm1kb2MtdXBsb2FkLyIsInNvdXJjZXMiOlsibGliL3VwbG9hZGRpYWxvZy91cGxvYWRkaWFsb2cubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWxELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUdsRjtJQUFBO0lBY2tDLENBQUM7O2dCQWRsQyxRQUFRLFNBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsY0FBYyxDQUFDLE9BQU8sRUFBRTt3QkFDeEIsWUFBWTt3QkFDWixZQUFZLENBQUMsT0FBTyxFQUFFO3dCQUN0QixnQkFBZ0I7cUJBQ2pCO29CQUNELE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFDLG1CQUFtQixDQUFDO29CQUNwRCxlQUFlLEVBQUUsQ0FBQyxxQkFBcUIsRUFBQyxtQkFBbUIsQ0FBQztvQkFDNUQsU0FBUyxFQUFFLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxhQUFhLENBQUM7aUJBQzdFOztJQUNpQyx5QkFBQztDQUFBLEFBZG5DLElBY21DO1NBQXRCLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBGYXJyaXNEaWFsb2dNb2R1bGUgfSBmcm9tICdAZmFycmlzL3VpLWRpYWxvZyc7XG5pbXBvcnQgeyBNZXNzYWdlck1vZHVsZSB9IGZyb20gJ0BmYXJyaXMvdWktbWVzc2FnZXInO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLW1vZGFsJztcblxuaW1wb3J0IHsgVXBsb2FkTW9kdWxlIH0gZnJvbSAnLi4vdXBsb2FkL3VwbG9hZC5tb2R1bGUnO1xuaW1wb3J0IHsgVXBsb2FkRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi91cGxvYWRkaWFsb2cvdXBsb2FkZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJ0BlY3AtY2FmL2NhZi1jb21tb24nO1xuaW1wb3J0IHsgVXBsb2FkU2VydmljZSB9IGZyb20gJy4uL3VwbG9hZC91cGxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBVcGxvYWREaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vdXBsb2FkZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE5vdGlmeU1vZHVsZSB9IGZyb20gJ0BmYXJyaXMvdWktbm90aWZ5JztcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuLi91cGxvYWQvZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50JztcblxuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtVcGxvYWREaWFsb2dDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZhcnJpc0RpYWxvZ01vZHVsZSxcbiAgICBNZXNzYWdlck1vZHVsZS5mb3JSb290KCksXG4gICAgVXBsb2FkTW9kdWxlLFxuICAgIE5vdGlmeU1vZHVsZS5mb3JSb290KCksXG4gICAgSHR0cENsaWVudE1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbVXBsb2FkRGlhbG9nQ29tcG9uZW50LEZpbGVVcGxvYWRDb21wb25lbnRdLFxuICBlbnRyeUNvbXBvbmVudHM6IFtVcGxvYWREaWFsb2dDb21wb25lbnQsRmlsZVVwbG9hZENvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW0JzTW9kYWxTZXJ2aWNlLCBIdHRwU2VydmljZSwgVXBsb2FkRGlhbG9nU2VydmljZSwgVXBsb2FkU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgVXBsb2FkRGlhbG9nTW91ZGxlIHsgfVxuIl19