qms-angular 1.1.33 → 1.1.35

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. package/bundles/qms-angular.umd.js +913 -417
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/common/enum/document-field-status.js +7 -0
  4. package/esm2015/lib/common/models/qms-flat-node.model.js +1 -1
  5. package/esm2015/lib/common/models/qms-tree-node.model.js +1 -1
  6. package/esm2015/lib/components/qms-stepper/models/qms-stepper.model.js +4 -2
  7. package/esm2015/lib/components/qms-stepper/qms-stepper.component.js +5 -3
  8. package/esm2015/lib/components/related/common/video.const.js +4 -0
  9. package/esm2015/lib/components/related/model/popup-data.model.js +1 -1
  10. package/esm2015/lib/components/related/popup/related-popup.component.js +30 -12
  11. package/esm2015/lib/components/select-access-dialog/select-access-dialog.component.js +1 -1
  12. package/esm2015/lib/components/select-department/model/select-department-popup-data.model.js +1 -1
  13. package/esm2015/lib/components/select-department/select-department.component.js +103 -16
  14. package/esm2015/lib/components/select-department/select-department.module.js +4 -2
  15. package/esm2015/lib/components/select-department-tree/model/select-department-tree.config.js +4 -1
  16. package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +405 -183
  17. package/esm2015/lib/components/select-department-tree/select-department-tree.module.js +4 -2
  18. package/esm2015/lib/components/select-department-tree/service/select-department-tree-global.service.js +41 -10
  19. package/esm2015/lib/components/select-process-document/select-process-document.component.js +1 -1
  20. package/esm2015/lib/components/tree/model/tree-node.model.js +1 -1
  21. package/esm2015/lib/components/tree/tree.component.js +75 -42
  22. package/esm2015/lib/components/tree/tree.function.js +2 -1
  23. package/esm2015/lib/model/en.js +5 -2
  24. package/esm2015/lib/model/no.js +8 -5
  25. package/esm2015/lib/qms-ckeditor-components/common/classes/qmsUploadAdapter.js +1 -5
  26. package/esm2015/lib/qms-ckeditor-components/common/constants/iconSvg.constants.js +2 -1
  27. package/esm2015/lib/qms-ckeditor-components/common/functions/common.function.js +3 -3
  28. package/esm2015/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.js +1 -1
  29. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +3 -3
  30. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-imagemap/qms-ckeditor-imagemap.component.js +2 -2
  31. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.js +15 -3
  32. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-link-simple/qms-ckeditor-link-simple.component.js +2 -1
  33. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.js +14 -9
  34. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.js +17 -47
  35. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.js +68 -27
  36. package/esm2015/lib/qms-ckeditor-components/models/qms-ckeditor-template.model.js +3 -2
  37. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +14 -10
  38. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.module.js +3 -1
  39. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-upload.service.js +5 -2
  40. package/esm2015/lib/qms-ckeditor-components/services/qms-ckedtior-template.service.js +8 -5
  41. package/fesm2015/qms-angular.js +825 -381
  42. package/fesm2015/qms-angular.js.map +1 -1
  43. package/lib/common/enum/document-field-status.d.ts +5 -0
  44. package/lib/common/models/qms-flat-node.model.d.ts +4 -0
  45. package/lib/common/models/qms-tree-node.model.d.ts +3 -0
  46. package/lib/components/qms-stepper/models/qms-stepper.model.d.ts +3 -1
  47. package/lib/components/qms-stepper/qms-stepper.component.d.ts +2 -0
  48. package/lib/components/related/common/video.const.d.ts +3 -0
  49. package/lib/components/related/model/popup-data.model.d.ts +2 -0
  50. package/lib/components/related/popup/related-popup.component.d.ts +5 -2
  51. package/lib/components/select-access-dialog/select-access-dialog.component.d.ts +1 -1
  52. package/lib/components/select-department/model/select-department-popup-data.model.d.ts +2 -0
  53. package/lib/components/select-department/select-department.component.d.ts +45 -11
  54. package/lib/components/select-department-tree/model/select-department-tree.config.d.ts +10 -7
  55. package/lib/components/select-department-tree/select-department-tree.component.d.ts +45 -16
  56. package/lib/components/select-department-tree/service/select-department-tree-global.service.d.ts +2 -5
  57. package/lib/components/tree/model/tree-node.model.d.ts +1 -0
  58. package/lib/components/tree/tree.component.d.ts +2 -1
  59. package/lib/model/en.d.ts +3 -0
  60. package/lib/model/no.d.ts +3 -0
  61. package/lib/qms-ckeditor-components/common/classes/qmsUploadAdapter.d.ts +0 -1
  62. package/lib/qms-ckeditor-components/common/constants/iconSvg.constants.d.ts +1 -0
  63. package/lib/qms-ckeditor-components/common/models/qms-ckeditor-data.model.d.ts +3 -0
  64. package/lib/qms-ckeditor-components/components/qms-ckeditor-link/qms-ckeditor-link.component.d.ts +1 -0
  65. package/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.d.ts +4 -2
  66. package/lib/qms-ckeditor-components/components/qms-ckeditor-relation/qmsckeditor-related.component.d.ts +1 -1
  67. package/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.d.ts +17 -3
  68. package/lib/qms-ckeditor-components/models/qms-ckeditor-template.model.d.ts +3 -1
  69. package/lib/qms-ckeditor-components/services/qms-ckeditor-upload.service.d.ts +1 -1
  70. package/lib/qms-ckeditor-components/services/qms-ckedtior-template.service.d.ts +2 -1
  71. package/package.json +1 -1
  72. package/qms-angular.metadata.json +1 -1
  73. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js +1 -1
  74. package/src/assets/qms-ckeditor-plugin/build/ckeditor.js.map +1 -1
  75. package/src/assets/qms-ckeditor-plugin/src/plugins/anchor/autoanchor.js +17 -17
  76. package/src/assets/qms-ckeditor-plugin/src/plugins/link/autolink.js +17 -17
  77. package/src/assets/qms-ckeditor-plugin/src/plugins/link/linkui.js +1 -1
  78. package/src/assets/qms-ckeditor-plugin/src/plugins/table/converters/downcast.js +2 -2
  79. package/src/assets/qms-ckeditor-plugin/src/plugins/table/tableproperties/tablepropertiesediting.js +2 -1
  80. package/src/lib/components/qms-stepper/qms-stepper.component.scss +7 -0
  81. package/src/lib/components/select-department/select-department.component.scss +17 -0
  82. package/src/lib/components/select-department-tree/select-department-tree.component.scss +11 -159
  83. package/src/lib/components/select-process-document/select-process-document.component.scss +3 -0
  84. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.scss +26 -0
  85. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-load-template/qms-ckeditor-load-template.component.scss +5 -0
  86. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-template/qms-ckeditor-template.component.scss +21 -0
@@ -372,8 +372,13 @@ export class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
372
372
  link.protocolId = this.selectedProtocol;
373
373
  switch (this.selectedLinkType) {
374
374
  case LinkType.url:
375
+ if (!this.advisoryTitle.length) {
376
+ link.title = `${this.getProtocolName()}${this.linkFormGroup.value.url}`;
377
+ }
378
+ else {
379
+ link.title = this.advisoryTitle;
380
+ }
375
381
  link.url = `${this.selectedLinkType}${this.selectedProtocol}${this.getProtocolName()}${this.url}`;
376
- link.title = this.advisoryTitle;
377
382
  break;
378
383
  case LinkType.anchorText:
379
384
  link.url = `${this.selectedLinkType}${0}#${this.anchorText}`;
@@ -434,11 +439,18 @@ export class QMSCKEditorLinkComponent extends QMSCKEditorBaseComponent {
434
439
  getProtocolName() {
435
440
  return ProtocolTypeName[ProtocolType[this.selectedProtocol]];
436
441
  }
442
+ setLinkUrlType($event) {
443
+ if ($event)
444
+ $event.preventDefault();
445
+ if (this.linkFormGroup.invalid)
446
+ return;
447
+ this.setLink();
448
+ }
437
449
  }
438
450
  QMSCKEditorLinkComponent.decorators = [
439
451
  { type: Component, args: [{
440
452
  selector: "qms-ckeditor-link",
441
- template: "<div id=\"qmsckeditor_link\" class=\"qmsckeditor qmsckeditor__link__container\">\r\n <div id=\"qmsckeditor_link_header\">\r\n <span id=\"qmsckeditor_link_header_001\" mat-icon-button class=\"qmsckeditor button__close\" (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor_link_header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor_link_header_001\">\r\n {{ LANG.QMSCKEDITOR.LINK }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_link_type\" class=\"row\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_TYPE }}</mat-label>\r\n <mat-select disableOptionCentering name=\"linkTypeList\" [(ngModel)]=\"selectedLinkType\"\r\n (ngModelChange)=\"onSelectedLinkType()\">\r\n <mat-option *ngFor=\"let link of linkTypes\" [value]=\"link.id\">\r\n {{ link.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div id=\"qmsckeditor_link_content\">\r\n <form [formGroup]=\"linkFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.url\">\r\n <div id=\"qmsckeditor_link_url\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_url_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.URL_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_url_001\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedTarget\" formControlName=\"targetList\" disableOptionCentering>\r\n <mat-option *ngFor=\"let target of targets\" [value]=\"target.id\">\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_002\" class=\"row\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.PROTOCOL }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedProtocol\" formControlName=\"protocolList\" disableOptionCentering>\r\n <mat-option *ngFor=\"let protocol of protocols\" [value]=\"protocol.id\">\r\n {{ protocol.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_003\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_URL }}</mat-label>\r\n <input matInput [(ngModel)]=\"url\" name=\"url\" formControlName=\"url\"\r\n (ngModelChange)=\"getUrlToSetProtocol()\" />\r\n <mat-error *ngIf=\"linkFormGroup.get('url').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_004\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TITLE }}</mat-label>\r\n <input matInput [(ngModel)]=\"advisoryTitle\" formControlName=\"advisoryTitle\" />\r\n <mat-error *ngIf=\"linkFormGroup.get('advisoryTitle').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_005\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-6 pl-3 ps-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"eHandbook(false, false)\">\r\n {{ LANG.QMSCKEDITOR.DOCUMENT_PROCESS }}\r\n </button>\r\n </div>\r\n <div class=\"col-6 pr-3 pe-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"attachment()\">\r\n {{ LANG.QMSCKEDITOR.ATTACHMENT }}\r\n </button>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"anchorTextFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.anchorText\">\r\n <div id=\"qmsckeditor_link_anchor_text\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_anchor_text_panel\" [expanded]=\"isExpanded\"\r\n (opened)=\"isExpanded = true\" (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.ANCHOR_TEXT_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_anchor_text_001\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorText\" formControlName=\"anchorText\">\r\n <mat-option *ngFor=\"let editorAnchor of editorAnchors\" [value]=\"editorAnchor.anchorValue\"\r\n disableOptionCentering>\r\n {{ editorAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"\r\n anchorTextFormGroup.get('anchorText').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"emailFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.email\">\r\n <div id=\"qmsckeditor_link_email\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.EMAIL_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_email_001\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_ADDRESS }}</mat-label>\r\n <input matInput [(ngModel)]=\"emailAddress\" formControlName=\"emailAddress\" />\r\n <mat-error *ngIf=\"emailFormGroup.get('emailAddress').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_email_002\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_SUBJECT }}</mat-label>\r\n <input matInput [(ngModel)]=\"emailSubject\" formControlName=\"emailSubject\" />\r\n <mat-error *ngIf=\"emailFormGroup.get('emailSubject').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_email_003\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_BODY }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"emailBody\" formControlName=\"emailBody\"></textarea>\r\n <mat-error *ngIf=\"emailFormGroup.get('emailBody').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"anchorDocFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.anchorDocument\">\r\n <div id=\"qmsckeditor_link_anchor_doc\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.DOCUMENT_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_anchor_doc_001\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-6 pl-3 ps-3\">\r\n <button class=\"cancel\" mat-flat-button (click)=\"eHandbook(true, true)\">\r\n {{ LANG.QMSCKEDITOR.HANDBOOK }}\r\n </button>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_link_anchor_doc_002\" class=\"row mt-4\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.DOCUMENT }}</mat-label>\r\n <input matInput [(ngModel)]=\"anchorTitle\" formControlName=\"anchorTitle\" />\r\n <mat-error *ngIf=\"\r\n anchorDocFormGroup.get('anchorTitle').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_anchor_doc_003\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorByName\" formControlName=\"anchorByName\" disableOptionCentering>\r\n <mat-option *ngFor=\"let docAnchor of documentAnchors\" [value]=\"docAnchor.anchorValue\">\r\n {{ docAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"\r\n anchorDocFormGroup.get('anchorByName').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <div id=\"qmsckeditor_link_footer\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-12 mt-3 pl-3 pr-3 ps-3 pe-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"setLink()\" [disabled]=\"disableOkButton()\">\r\n {{ LANG.QMSCKEDITOR.OK }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>",
453
+ template: "<div id=\"qmsckeditor_link\" class=\"qmsckeditor qmsckeditor__link__container\">\r\n <div id=\"qmsckeditor_link_header\">\r\n <span id=\"qmsckeditor_link_header_001\" mat-icon-button class=\"qmsckeditor button__close\" (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor_link_header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor_link_header_001\">\r\n {{ LANG.QMSCKEDITOR.LINK }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_link_type\" class=\"row\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_TYPE }}</mat-label>\r\n <mat-select disableOptionCentering name=\"linkTypeList\" [(ngModel)]=\"selectedLinkType\"\r\n (ngModelChange)=\"onSelectedLinkType()\">\r\n <mat-option *ngFor=\"let link of linkTypes\" [value]=\"link.id\">\r\n {{ link.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div id=\"qmsckeditor_link_content\">\r\n <form [formGroup]=\"linkFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.url\">\r\n <div id=\"qmsckeditor_link_url\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_url_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.URL_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_url_001\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TARGET }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedTarget\" formControlName=\"targetList\" disableOptionCentering>\r\n <mat-option *ngFor=\"let target of targets\" [value]=\"target.id\">\r\n {{ target.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_002\" class=\"row\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.PROTOCOL }}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedProtocol\" formControlName=\"protocolList\" disableOptionCentering>\r\n <mat-option *ngFor=\"let protocol of protocols\" [value]=\"protocol.id\">\r\n {{ protocol.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_003\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.LINK_URL }}</mat-label>\r\n <input matInput [(ngModel)]=\"url\" name=\"url\" formControlName=\"url\"\r\n (ngModelChange)=\"getUrlToSetProtocol()\" (keydown.enter)=\"setLinkUrlType($event)\" />\r\n <mat-error *ngIf=\"linkFormGroup.get('url').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_004\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.TITLE }}</mat-label>\r\n <input matInput [(ngModel)]=\"advisoryTitle\" formControlName=\"advisoryTitle\" />\r\n <mat-error *ngIf=\"linkFormGroup.get('advisoryTitle').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_url_005\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-6 pl-3 ps-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"eHandbook(false, false)\">\r\n {{ LANG.QMSCKEDITOR.DOCUMENT_PROCESS }}\r\n </button>\r\n </div>\r\n <div class=\"col-6 pr-3 pe-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"attachment()\">\r\n {{ LANG.QMSCKEDITOR.ATTACHMENT }}\r\n </button>\r\n </div>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"anchorTextFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.anchorText\">\r\n <div id=\"qmsckeditor_link_anchor_text\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_anchor_text_panel\" [expanded]=\"isExpanded\"\r\n (opened)=\"isExpanded = true\" (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.ANCHOR_TEXT_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_anchor_text_001\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorText\" formControlName=\"anchorText\">\r\n <mat-option *ngFor=\"let editorAnchor of editorAnchors\" [value]=\"editorAnchor.anchorValue\"\r\n disableOptionCentering>\r\n {{ editorAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"\r\n anchorTextFormGroup.get('anchorText').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"emailFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.email\">\r\n <div id=\"qmsckeditor_link_email\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.EMAIL_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_email_001\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_ADDRESS }}</mat-label>\r\n <input matInput [(ngModel)]=\"emailAddress\" formControlName=\"emailAddress\" />\r\n <mat-error *ngIf=\"emailFormGroup.get('emailAddress').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_email_002\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_SUBJECT }}</mat-label>\r\n <input matInput [(ngModel)]=\"emailSubject\" formControlName=\"emailSubject\" />\r\n <mat-error *ngIf=\"emailFormGroup.get('emailSubject').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_email_003\" class=\"row\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.EMAIL_BODY }}</mat-label>\r\n <textarea matInput [(ngModel)]=\"emailBody\" formControlName=\"emailBody\"></textarea>\r\n <mat-error *ngIf=\"emailFormGroup.get('emailBody').hasError('required')\" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n\r\n <form [formGroup]=\"anchorDocFormGroup\" class=\"qmsckeditor link__content height row\"\r\n *ngIf=\"selectedLinkType == LinkType.anchorDocument\">\r\n <div id=\"qmsckeditor_link_anchor_doc\" class=\"col-12 mt-1 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-expansion-panel id=\"qmsckeditor_link_email_panel\" [expanded]=\"isExpanded\" (opened)=\"isExpanded = true\"\r\n (closed)=\"isExpanded = false\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-title>\r\n {{ LANG.QMSCKEDITOR.DOCUMENT_HEADER }}\r\n </mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <div id=\"qmsckeditor_link_anchor_doc_001\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-6 pl-3 ps-3\">\r\n <button class=\"cancel\" mat-flat-button (click)=\"eHandbook(true, true)\">\r\n {{ LANG.QMSCKEDITOR.DOCUMENT }}\r\n </button>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor_link_anchor_doc_002\" class=\"row mt-4\">\r\n <mat-form-field class=\"col-12 pl-3 pr-3 ps-3 pe-3\" appearance=\"fill\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.DOCUMENT }}</mat-label>\r\n <input matInput [(ngModel)]=\"anchorTitle\" formControlName=\"anchorTitle\" />\r\n <mat-error *ngIf=\"\r\n anchorDocFormGroup.get('anchorTitle').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div id=\"qmsckeditor_link_anchor_doc_003\" class=\"row mt-2\">\r\n <mat-form-field appearance=\"fill\" class=\"col-12 pl-3 pr-3 ps-3 pe-3\">\r\n <mat-label>{{ LANG.QMSCKEDITOR.ANCHOR_BY_NAME }}</mat-label>\r\n <mat-select [(ngModel)]=\"anchorByName\" formControlName=\"anchorByName\" disableOptionCentering>\r\n <mat-option *ngFor=\"let docAnchor of documentAnchors\" [value]=\"docAnchor.anchorValue\">\r\n {{ docAnchor.viewValue }}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"\r\n anchorDocFormGroup.get('anchorByName').hasError('required')\r\n \" class=\"mt5\">\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </mat-expansion-panel>\r\n </div>\r\n </form>\r\n </div>\r\n\r\n <div id=\"qmsckeditor_link_footer\" class=\"qmsckeditor button__groups row\">\r\n <div class=\"col-12 mt-3 pl-3 pr-3 ps-3 pe-3\">\r\n <button class=\"save\" mat-flat-button (click)=\"setLink()\" [disabled]=\"disableOkButton()\">\r\n {{ LANG.QMSCKEDITOR.OK }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>",
442
454
  styles: [".mt5{margin-top:5px!important}.mt10{margin-top:10px!important}.mt7{margin-top:7px!important}.mt15{margin-top:15px!important}.mt20{margin-top:20px!important}.mt30{margin-top:30px!important}.mt40{margin-top:40px!important}.ml2{margin-left:2px!important}.ml3{margin-left:3px!important}.ml5{margin-left:5px!important}.ml15{margin-left:15px!important}.ml10{margin-left:10px!important}.ml12{margin-left:12px!important}.ml16{margin-left:16px!important}.ml-auto{margin-left:auto!important}.ml-25{margin-left:-25px!important}.mr5{margin-right:5px!important}.mr12{margin-right:12px!important}.mr15{margin-right:15px!important}.mb5{margin-bottom:5px!important}.mb10{margin-bottom:10px!important}.mb15{margin-bottom:15px!important}.pt8{padding-top:8px!important}.pt10{padding-top:10px!important}.pt15{padding-top:15px!important}.pt16{padding-top:16px!important}.pl15{padding-left:15px!important}.pl0{padding-left:0!important}.pr0{padding-right:0!important}.pr15{padding-right:15px!important}.fs12{font-size:12px}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs22{font-size:22px!important}.fw500{font-weight:500!important}.italic-text{font-style:italic}.display-flex{display:flex}.qmsckeditor{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.qmsckeditor h2{font-size:20px;font-weight:400}.qmsckeditor .mat-dialog-content{padding:0}.qmsckeditor .mat-icon{color:#909497}.qmsckeditor__fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;max-height:100vh;overflow-x:hidden}.qmsckeditor__cursor{cursor:pointer}.qmsckeditor__notallowed{cursor:not-allowed}.qmsckeditor.button__close,.qmsckeditor.button__done{float:right;top:-24px;right:-24px;cursor:pointer}.qmsckeditor.button__done{margin-right:20px}.qmsckeditor.button__done .mat-icon{color:#28a745;font-weight:700}.qmsckeditor.button__groups button{min-height:40px;width:100%;border-radius:4px;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px}.qmsckeditor.button__groups .save{background:#f8f9f9}.qmsckeditor.button__groups .save:hover{background:#e5e7e9}.qmsckeditor.button__groups .save:disabled{cursor:not-allowed}.qmsckeditor.button__groups .cancel{background:#f8f9f9}.qmsckeditor.button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.button__groups .cancel:disabled{cursor:not-allowed}.qmsckeditor.button__groups .delete{background:#f8f9f9}.qmsckeditor.button__groups .delete:hover{background:#e5e7e9}.qmsckeditor.button__groups .delete:disabled{cursor:not-allowed}.qmsckeditor.confirm__button__groups button{min-height:36px;border-radius:4px;width:auto;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px}.qmsckeditor.confirm__button__groups .confirm{background:#f8f9f9}.qmsckeditor.confirm__button__groups .confirm:hover{background:#e5e7e9}.qmsckeditor.confirm__button__groups .cancel{background:#f8f9f9}.qmsckeditor.confirm__button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.template-content.height{min-height:420px;max-height:520px;overflow:auto}.qmsckeditor.template-content.title{margin-left:-9px}.qmsckeditor.link__content.height{min-height:400px;max-height:520px}.qmsckeditor.card{margin-bottom:10px;min-height:60px;box-shadow:none;border:1px solid #e5e5e5}.qmsckeditor.card .title{font-weight:700}.qmsckeditor.card .content{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.qmsckeditor.card .material-icons{font-size:20px}.qmsckeditor.tooltip-content.height{min-height:400px;max-height:472px;overflow:auto}.qmsckeditor.save__as__template.height{height:125px}.ck-content .ck-horizontal-line,.ck-content .page-break{width:100%}.ck-content hr{background:#ccc}.ck-font-size-dropdown .ck-dropdown__panel ul{max-height:320px;overflow-y:auto}.ck-font-size-dropdown .ck-dropdown__panel ul li .ck-fontsize-option .ck-button__label{line-height:50px}.qmsckeditor__link__container textarea.mat-input-element{min-height:130px}"]
443
455
  },] }
444
456
  ];
@@ -454,4 +466,4 @@ QMSCKEditorLinkComponent.ctorParameters = () => [
454
466
  QMSCKEditorLinkComponent.propDecorators = {
455
467
  ckEditor: [{ type: Input }]
456
468
  };
457
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWxpbmsuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1saW5rL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2REFBNkQ7QUFDN0QsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2Qiw2REFBNkQ7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsNkRBQTZEO0FBQzdELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsR0FDaEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyw2REFBNkQ7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVqRSxPQUFPLG1CQUFtQixNQUFNLGtEQUFrRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sZUFBZSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBNEJsRixNQUFNLE9BQU8sd0JBQ1gsU0FBUSx3QkFBd0I7SUFnRGhDLFlBQ1UsR0FBc0IsRUFDdEIsTUFBaUIsRUFDakIsU0FBa0MsRUFDbEMsV0FBbUMsRUFDbkMsYUFBdUMsRUFDeEMsU0FBaUQsRUFDeEIsSUFBcUI7UUFFckQsS0FBSyxFQUFFLENBQUM7UUFSQSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBMEI7UUFDeEMsY0FBUyxHQUFULFNBQVMsQ0FBd0M7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFqRHZELGtCQUFhLEdBQWMsSUFBSSxTQUFTLENBQUM7WUFDdkMsVUFBVSxFQUFFLElBQUksV0FBVyxFQUFFO1lBQzdCLFlBQVksRUFBRSxJQUFJLFdBQVcsRUFBRTtZQUMvQixHQUFHLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLGFBQWEsRUFBRSxJQUFJLFdBQVcsRUFBRTtTQUNqQyxDQUFDLENBQUM7UUFDSCx3QkFBbUIsR0FBYyxJQUFJLFNBQVMsQ0FBQztZQUM3QyxVQUFVLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZELENBQUMsQ0FBQztRQUNILG1CQUFjLEdBQWMsSUFBSSxTQUFTLENBQUM7WUFDeEMsWUFBWSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RCxZQUFZLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hELFNBQVMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEQsQ0FBQyxDQUFDO1FBQ0gsdUJBQWtCLEdBQWMsSUFBSSxTQUFTLENBQUM7WUFDNUMsV0FBVyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2RCxZQUFZLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pELENBQUMsQ0FBQztRQUNILGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsY0FBUyxHQUFnQixFQUFFLENBQUM7UUFDNUIsWUFBTyxHQUFjLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQWdCLEVBQUUsQ0FBQztRQUM1QixvQkFBZSxHQUFvQyxFQUFFLENBQUM7UUFJdEQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQixRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1Qsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixhQUFRLEdBQUcsUUFBUSxDQUFDO1FBWWxCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQjthQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9DO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLEVBQUUsRUFBRSxRQUFRLENBQUMsR0FBRztnQkFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7YUFDckMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLEVBQUUsRUFBRSxRQUFRLENBQUMsVUFBVTtnQkFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQjthQUNoRCxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVTthQUN2QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFFBQVEsQ0FBQyxjQUFjO2dCQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CO2FBQ2pELENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRztnQkFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVc7YUFDeEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTztnQkFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWM7YUFDM0MsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSTtnQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVc7YUFDeEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEVBQUUsRUFBRSxVQUFVLENBQUMsTUFBTTtnQkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWE7YUFDMUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFlBQVksQ0FBQyxJQUFJO2dCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTthQUMxQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFlBQVksQ0FBQyxLQUFLO2dCQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYzthQUMzQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFlBQVksQ0FBQyxHQUFHO2dCQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWTthQUN6QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFlBQVksQ0FBQyxJQUFJO2dCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWTthQUN6QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFlBQVksQ0FBQyxLQUFLO2dCQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYzthQUMzQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWMsRUFBRSxHQUFXO1FBQ3RDLFFBQVEsTUFBTSxFQUFFO1lBQ2QsS0FBSyxRQUFRLENBQUMsVUFBVTtnQkFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsY0FBYztnQkFDMUIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7Z0JBQ25FLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDbkMsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQ2pELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjthQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFFBQVEsQ0FBQyxjQUFjLEVBQUU7WUFDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDckM7U0FDRjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsY0FBdUIsRUFBRSxnQkFBeUI7UUFDMUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDbkUsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsT0FBTztZQUNmLElBQUk7WUFDSixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGdCQUFnQixFQUFFO29CQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO3dCQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7cUJBQ25DO29CQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO2lCQUM1QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDbkM7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLElBQUksR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQy9ELEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLE9BQU87WUFDZixJQUFJO1lBQ0osWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsY0FBYzthQUNYLFdBQVcsRUFBRTthQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BCLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDbkM7Z0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7YUFDNUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUN4QixFQUFFLEVBQUUsQ0FBQztnQkFDTCxRQUFRLEVBQUUsQ0FBQztnQkFDWCxVQUFVLEVBQUUsQ0FBQztnQkFDYixjQUFjLEVBQUUsQ0FBQztnQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhO2FBQzdCLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDcEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQWtCO1FBQ2xDLElBQUksQ0FBQyxXQUFXO2FBQ2IscUJBQXFCLENBQUMsVUFBVSxDQUFDO2FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO2dCQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGlCQUFpQixDQUFDLGNBQStDO1FBQy9ELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQjtZQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssUUFBUSxDQUFDLFVBQVUsRUFDN0M7WUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUM3QyxJQUFJLEtBQUssRUFBRTtvQkFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDM0I7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssUUFBUSxDQUFDLGNBQWMsSUFBSSxjQUFjLEVBQUU7WUFDdkUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMzQixJQUFJLENBQUMsRUFBRTtvQkFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDdkI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsS0FBSyxFQUFFLENBQUM7WUFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCO1lBQ2xELFdBQVcsRUFBRSxVQUFVLENBQUMsVUFBVTtTQUNuQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixLQUFLLEVBQUUsQ0FBQztZQUNSLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUI7WUFDeEQsV0FBVyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1NBQ2hDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDYixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUMzQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELElBQUksS0FBSyxFQUFFO1lBQ1QseUNBQXlDO1lBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNyQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtvQkFDWixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUN6QyxPQUFPLENBQUMsQ0FBQyxXQUFXLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQztvQkFDcEMsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO3dCQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDOzRCQUNoQixLQUFLLEVBQUUsRUFBRTs0QkFDVCxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUk7NEJBQ25CLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSTt5QkFDdEIsQ0FBQyxDQUFDO3dCQUNILEVBQUUsSUFBSSxDQUFDLENBQUM7cUJBQ1Q7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsUUFBUSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDN0IsS0FBSyxRQUFRLENBQUMsR0FBRztnQkFDZixTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZDLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxVQUFVO2dCQUN0QixTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztnQkFDN0MsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLEtBQUs7Z0JBQ2pCLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztnQkFDeEMsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLGNBQWM7Z0JBQzFCLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDO2dCQUM1QyxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtTQUNUO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RSxNQUFNLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN4QyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUM3QixLQUFLLFFBQVEsQ0FBQyxHQUFHO2dCQUNmLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2xHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztnQkFDaEMsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLFVBQVU7Z0JBQ3RCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO2dCQUNuQyxNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsS0FBSztnQkFDakIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLFlBQVksWUFBWSxJQUFJLENBQUMsWUFBWSxTQUFTLElBQUksQ0FBQyxTQUMzRyxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQ25DLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxjQUFjO2dCQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsYUFBYSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDM0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQ25DLE1BQU07U0FDVDtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRTtZQUNwQixPQUFPO1NBQ1I7UUFDRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RCxLQUFLLElBQUksS0FBSyxJQUFJLGdCQUFnQixFQUFFO1lBQ2xDLElBQUksZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoRyxRQUFRLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUMvQixLQUFLLGdCQUFnQixDQUFDLElBQUk7d0JBQ3hCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM1RSxNQUFNO29CQUVSLEtBQUssZ0JBQWdCLENBQUMsS0FBSzt3QkFDekIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQzlFLE1BQU07b0JBRVIsS0FBSyxnQkFBZ0IsQ0FBQyxHQUFHO3dCQUN2QixJQUFJLENBQUMsNEJBQTRCLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQzt3QkFDMUUsTUFBTTtvQkFFUixLQUFLLGdCQUFnQixDQUFDLElBQUk7d0JBQ3hCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUM1RSxNQUFNO29CQUVSO3dCQUNFLE1BQU07aUJBQ1Q7Z0JBQ0QsT0FBTzthQUNSO1NBQ0Y7UUFFRCxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1NBQzVDO0lBQ0gsQ0FBQztJQUVELDRCQUE0QixDQUFDLFlBQW9CLEVBQUUsWUFBb0I7UUFDckUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssWUFBWSxFQUFFO1lBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7O1lBemNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3Qix3OFZBQWlEOzthQUVsRDs7O1lBeERDLGlCQUFpQjtZQVVqQixTQUFTO1lBTUYsdUJBQXVCO1lBV3ZCLHNCQUFzQjtZQUR0Qix3QkFBd0I7WUFmL0IsWUFBWTtZQWFQLGVBQWUsdUJBeUZqQixNQUFNLFNBQUMsZUFBZTs7O3VCQXBEeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXHJcbmltcG9ydCB7XHJcbiAgTWF0RGlhbG9nLFxyXG4gIE1hdERpYWxvZ1JlZixcclxuICBNQVRfRElBTE9HX0RBVEEsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGlua0FuY2hvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLWFuY2hvci5lbnVtJztcclxuaW1wb3J0IHsgTGlua1R5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvbGluay10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBQcm90b2NvbFR5cGUsIFByb3RvY29sVHlwZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvcHJvdG9jb2wtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgVGFyZ2V0VHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy90YXJnZXQtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1saW5rLWFuY2hvci1kb2N1bWVudC5tb2RlbCc7XHJcbmltcG9ydCBRTVNDS0VkaXRvclBhcmFtdGVyIGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXBhcmFtZXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUmVsYXRpb24gfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1yZWxhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCBRTVNDS0VkaXRvckxpbmsgZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItdXJsLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JDb21tb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1jb21tb24uc2VydmljZXNcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1saW5rLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclJlbGF0ZWRDb21wb25lbnQgfSBmcm9tICcuLi9xbXMtY2tlZGl0b3ItcmVsYXRpb24vcW1zY2tlZGl0b3ItcmVsYXRlZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaW5rQXR0YWNobWVudENvbXBvbmVudCB9IGZyb20gJy4vYXR0YWNobWVudHMvbGluay1hdHRhY2htZW50LmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgSUxpbmtUeXBlIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElUYXJnZXQge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSVByb3RvY29sIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElBbmNob3Ige1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgdmlld1ZhbHVlOiBzdHJpbmc7XHJcbiAgYW5jaG9yVmFsdWU6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicW1zLWNrZWRpdG9yLWxpbmtcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JMaW5rQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcblxyXG4gIEBJbnB1dCgpIGNrRWRpdG9yOiBhbnk7XHJcblxyXG4gIExBTkc6IGFueTtcclxuICBsaW5rRm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIHRhcmdldExpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxyXG4gICAgcHJvdG9jb2xMaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcclxuICAgIHVybDogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICBhZHZpc29yeVRpdGxlOiBuZXcgRm9ybUNvbnRyb2woKSxcclxuICB9KTtcclxuICBhbmNob3JUZXh0Rm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIGFuY2hvclRleHQ6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gIH0pO1xyXG4gIGVtYWlsRm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIGVtYWlsQWRkcmVzczogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICBlbWFpbFN1YmplY3Q6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgZW1haWxCb2R5OiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICB9KTtcclxuICBhbmNob3JEb2NGb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgYW5jaG9yVGl0bGU6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgYW5jaG9yQnlOYW1lOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICB9KTtcclxuICBpc0V4cGFuZGVkID0gdHJ1ZTtcclxuICBsaW5rVHlwZXM6IElMaW5rVHlwZVtdID0gW107XHJcbiAgdGFyZ2V0czogSVRhcmdldFtdID0gW107XHJcbiAgcHJvdG9jb2xzOiBJUHJvdG9jb2xbXSA9IFtdO1xyXG4gIGFuY2hvckRvY3VtZW50czogUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnRbXSA9IFtdO1xyXG4gIGFuY2hvcnM6IElBbmNob3JbXTtcclxuICBlZGl0b3JBbmNob3JzOiBJQW5jaG9yW107XHJcbiAgZG9jdW1lbnRBbmNob3JzOiBJQW5jaG9yW107XHJcbiAgZWRpdG9yQ29udGVudCA9ICcnO1xyXG4gIHNlbGVjdGVkTGlua1R5cGUgPSAwO1xyXG4gIHNlbGVjdGVkVGFyZ2V0ID0gMDtcclxuICBzZWxlY3RlZFByb3RvY29sID0gMDtcclxuICB1cmwgPSBcIlwiO1xyXG4gIGFkdmlzb3J5VGl0bGUgPSBcIlwiO1xyXG4gIGVkaXQgPSBmYWxzZTtcclxuICBhbmNob3JUZXh0ID0gXCJcIjtcclxuICBlbWFpbEFkZHJlc3MgPSBcIlwiO1xyXG4gIGVtYWlsU3ViamVjdCA9IFwiXCI7XHJcbiAgZW1haWxCb2R5ID0gXCJcIjtcclxuICBkb2N1bWVudElkID0gMDtcclxuICBhbmNob3JUaXRsZSA9IFwiXCI7XHJcbiAgYW5jaG9yQnlOYW1lID0gXCJcIjtcclxuICBMaW5rVHlwZSA9IExpbmtUeXBlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxpbmtTZXJ2aWNlOiBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UU1TQ0tFZGl0b3JMaW5rQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUU1TQ0tFZGl0b3JMaW5rXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gZGF0YS50eXBlSWQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gZGF0YS50YXJnZXRJZDtcclxuICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IGRhdGEucHJvdG9jb2xJZDtcclxuICAgIHRoaXMudXJsID0gZGF0YS51cmw7XHJcbiAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSBkYXRhLnRpdGxlO1xyXG4gICAgdGhpcy5lZGl0ID0gZGF0YS5lZGl0O1xyXG4gICAgdGhpcy5lZGl0b3JDb250ZW50ID0gZGF0YS5lZGl0b3JDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5pbml0TGlua1R5cGUoKTtcclxuICAgIHRoaXMuaW5pdFRhcmdldCgpO1xyXG4gICAgdGhpcy5pbml0UHJvdG9jb2woKTtcclxuICAgIHRoaXMuaW5pdEFuY2hvcigpO1xyXG4gICAgaWYgKHRoaXMuZGF0YS5lZGl0KSB7XHJcbiAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSwgdGhpcy51cmwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZURpYWxvZygpIHtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xyXG4gIH1cclxuXHJcbiAgaW5pdExpbmtUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMubGlua1R5cGVzKSB7XHJcbiAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goe1xyXG4gICAgICAgIGlkOiBMaW5rVHlwZS51cmwsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfVVJMLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5saW5rVHlwZXMucHVzaCh7XHJcbiAgICAgICAgaWQ6IExpbmtUeXBlLmFuY2hvclRleHQsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfQU5DSE9SX0lOX1RFWFQsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcclxuICAgICAgICBpZDogTGlua1R5cGUuZW1haWwsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfRU1BSUwsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcclxuICAgICAgICBpZDogTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfQU5DSE9SX0RPQ1VNRU5ULFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRUYXJnZXQoKSB7XHJcbiAgICBpZiAodGhpcy50YXJnZXRzKSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHtcclxuICAgICAgICBpZDogVGFyZ2V0VHlwZS5uZXcsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUlRHRVRfTkVXLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xyXG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLnRvcG1vc3QsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUkdFVF9UT1BNT1NULFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xyXG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLnNhbWUsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUkdFVF9TQU1FLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xyXG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLnBhcmVudCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1BBUkVOVCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0UHJvdG9jb2woKSB7XHJcbiAgICBpZiAodGhpcy5wcm90b2NvbHMpIHtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFByb3RvY29sVHlwZS5odHRwLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFByb3RvY29sVHlwZS5odHRwcyxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfSFRUUFMsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLmZ0cCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfRlRQLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFByb3RvY29sVHlwZS5uZXdzLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9ORVcsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLm90aGVyLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9PVEhFUixcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0QW5jaG9yKCkge1xyXG4gICAgdGhpcy5hbmNob3JzID0gW107XHJcbiAgICB0aGlzLmFuY2hvcnMgPSBbeyB2YWx1ZTogMCwgdmlld1ZhbHVlOiBcIlwiLCBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5CbGFuayB9XTtcclxuICB9XHJcblxyXG4gIHBhcnNlTGlua1VybCh0eXBlSWQ6IG51bWJlciwgdXJsOiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAodHlwZUlkKSB7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yVGV4dDpcclxuICAgICAgICB0aGlzLmdldEVkaXRvckFuY2hvcigpO1xyXG4gICAgICAgIHRoaXMuYW5jaG9yVGV4dCA9IHVybC5zdWJzdHIoMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuZW1haWw6XHJcbiAgICAgICAgY29uc3QgcDEgPSB1cmwuaW5kZXhPZignbWFpbHRvOicpO1xyXG4gICAgICAgIGNvbnN0IHAyID0gdXJsLmluZGV4T2YoJz9zdWJqZWN0PScpO1xyXG4gICAgICAgIGNvbnN0IHAzID0gdXJsLmluZGV4T2YoJyZib2R5PScpO1xyXG4gICAgICAgIHRoaXMuZW1haWxBZGRyZXNzID0gdXJsLnN1YnN0cihwMSArIDcsIHAyIC0gNyk7XHJcbiAgICAgICAgdGhpcy5lbWFpbFN1YmplY3QgPSB1cmwuc3Vic3RyKHAyICsgOSwgcDMgLSBwMiAtIDkpO1xyXG4gICAgICAgIHRoaXMuZW1haWxCb2R5ID0gdXJsLnN1YnN0cihwMyArIDYsIHVybC5sZW5ndGggLSBwMyAtIDYpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvckRvY3VtZW50OlxyXG4gICAgICAgIGNvbnN0IGZsYXNoSW5kZXggPSB1cmwubGFzdEluZGV4T2YoJy8nKTtcclxuICAgICAgICBjb25zdCBoYXNoSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xyXG4gICAgICAgIGNvbnN0IHNJZCA9IHVybC5zdWJzdHIoZmxhc2hJbmRleCArIDEsIGhhc2hJbmRleCAtIDEgLSBmbGFzaEluZGV4KTtcclxuICAgICAgICBjb25zdCBkb2N1bWVudElkID0gcGFyc2VJbnQoc0lkLCAxMCk7XHJcbiAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudChkb2N1bWVudElkKTtcclxuICAgICAgICB0aGlzLmFuY2hvckJ5TmFtZSA9IHVybC5zdWJzdHIoaGFzaEluZGV4ICsgMSwgdXJsLmxlbmd0aCAtIGhhc2hJbmRleCk7XHJcbiAgICAgICAgdGhpcy5hbmNob3JUaXRsZSA9IHRoaXMuZGF0YS50aXRsZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRMaW5rVHlwZSgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcclxuICAgICAgdGhpcy5nZXRFZGl0b3JBbmNob3IoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09PSBMaW5rVHlwZS5hbmNob3JEb2N1bWVudCkge1xyXG4gICAgICBpZiAoIXRoaXMuZG9jdW1lbnRBbmNob3JzKSB7XHJcbiAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSBbXTtcclxuICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgICAgICB0aGlzLmRvY3VtZW50QW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZUhhbmRib29rKGlzT25seURvY3VtZW50OiBib29sZWFuLCBpc0FuY2hvckRvY3VtZW50OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yUmVsYXRpb24oKTtcclxuICAgIGRhdGEuaXNPbmx5RG9jdW1lbnQgPSBpc09ubHlEb2N1bWVudDtcclxuICAgIGRhdGEuaXNFbmFibGVGb2xkZXIgPSAhaXNPbmx5RG9jdW1lbnQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JSZWxhdGVkQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiBcIjY1MHB4XCIsXHJcbiAgICAgIGhlaWdodDogXCI2NTBweFwiLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGlmICghaXNBbmNob3JEb2N1bWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnVybCA9IHJlc3VsdC51cmw7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZHZpc29yeVRpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZS5vdGhlcjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRJZCA9IHJlc3VsdC5pZDtcclxuICAgICAgICAgICAgdGhpcy5hbmNob3JUaXRsZSA9IGAke3Jlc3VsdC50aXRsZX0oJHtyZXN1bHQuaWR9KWA7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QW5jaG9yRG9jdW1lbnQocmVzdWx0LmlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXR0YWNobWVudCgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JQYXJhbXRlcigpO1xyXG4gICAgZGF0YS5tb2R1bGUgPSB0aGlzLmRhdGEubW9kdWxlO1xyXG4gICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMuZGF0YS5lbnRpdHlJZDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihMaW5rQXR0YWNobWVudENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogXCI2NTBweFwiLFxyXG4gICAgICBoZWlnaHQ6IFwiNjUwcHhcIixcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLnVybCA9IHJlc3VsdC51cmw7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuYWR2aXNvcnlUaXRsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSByZXN1bHQudGl0bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGUub3RoZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRvckFuY2hvcigpIHtcclxuICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XHJcbiAgICBpZiAodGhpcy5lZGl0b3JDb250ZW50KSB7XHJcbiAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzLnB1c2goe1xyXG4gICAgICAgIGlkOiAwLFxyXG4gICAgICAgIGVudGl0eUlkOiAwLFxyXG4gICAgICAgIGRvY3VtZW50SWQ6IDAsXHJcbiAgICAgICAgZG9jdW1lbnRUeXBlSWQ6IDAsXHJcbiAgICAgICAgcmljaFRleHQ6IHRoaXMuZWRpdG9yQ29udGVudCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgIHRoaXMuZWRpdG9yQW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcclxuICB9XHJcblxyXG4gIGdldEFuY2hvckRvY3VtZW50KGRvY3VtZW50SWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5saW5rU2VydmljZVxyXG4gICAgICAuZ2V0QW5jaG9yRG9jdW1lbnRMaXN0KGRvY3VtZW50SWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5zZXRBbmNob3JEb2N1bWVudCh0aGlzLmFuY2hvckRvY3VtZW50cyk7XHJcbiAgICAgICAgICB0aGlzLmRvY3VtZW50QW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmFuY2hvcnM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEFuY2hvckRvY3VtZW50KGFuY2hvckRvY3VtZW50OiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdKSB7XHJcbiAgICB0aGlzLmluaXRBbmNob3IoKTtcclxuICAgIGxldCBpZCA9IDM7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZGF0YS5xbXNja0NvbnRlbnRGaWVsZHMgJiZcclxuICAgICAgdGhpcy5kYXRhLnFtc2NrQ29udGVudEZpZWxkcy5sZW5ndGggJiZcclxuICAgICAgdGhpcy5kYXRhLnFtc2NrSXNHZXRBbmNob3JNb3JlQ29udGVudCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvclRleHRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmRhdGEucW1zY2tDb250ZW50RmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEFuY2hvcihmaWVsZCwgaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9PT0gTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQgJiYgYW5jaG9yRG9jdW1lbnQpIHtcclxuICAgICAgYW5jaG9yRG9jdW1lbnQuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEFuY2hvcihlLCBpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFuY2hvcnMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiAxLFxyXG4gICAgICB2aWV3VmFsdWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BTkNIT1JfQVRUQUNITUVOVCxcclxuICAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuQXR0YWNobWVudCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5hbmNob3JzLnB1c2goe1xyXG4gICAgICB2YWx1ZTogMixcclxuICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX1JFTEFURURfRE9DVU1FTlQsXHJcbiAgICAgIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLlJlbGF0ZWQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEFuY2hvcihlLCBpZCkge1xyXG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIGRpdi5pbm5lckhUTUwgPSBlLnJpY2hUZXh0O1xyXG4gICAgY29uc3QgZG9tQ29udGVudCA9IGRpdjtcclxuICAgIGNvbnN0IGFUYWdzID0gZG9tQ29udGVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImFcIik7XHJcbiAgICBpZiAoYVRhZ3MpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhVGFncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHRhZyA9IGFUYWdzW2ldO1xyXG4gICAgICAgIGlmICh0YWcubmFtZSkge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmFuY2hvcnMuZmluZEluZGV4KCh4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB4LmFuY2hvclZhbHVlID09PSB0YWcubmFtZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgdmFsdWU6IGlkLFxyXG4gICAgICAgICAgICAgIHZpZXdWYWx1ZTogdGFnLm5hbWUsXHJcbiAgICAgICAgICAgICAgYW5jaG9yVmFsdWU6IHRhZy5uYW1lLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWQgKz0gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRpc2FibGVPa0J1dHRvbigpIHtcclxuICAgIGxldCBpc0Rpc2FibGUgPSBmYWxzZTtcclxuICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZExpbmtUeXBlKSB7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUudXJsOlxyXG4gICAgICAgIGlzRGlzYWJsZSA9IHRoaXMubGlua0Zvcm1Hcm91cC5pbnZhbGlkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvclRleHQ6XHJcbiAgICAgICAgaXNEaXNhYmxlID0gdGhpcy5hbmNob3JUZXh0Rm9ybUdyb3VwLmludmFsaWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuZW1haWw6XHJcbiAgICAgICAgaXNEaXNhYmxlID0gdGhpcy5lbWFpbEZvcm1Hcm91cC5pbnZhbGlkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvckRvY3VtZW50OlxyXG4gICAgICAgIGlzRGlzYWJsZSA9IHRoaXMuYW5jaG9yRG9jRm9ybUdyb3VwLmludmFsaWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNEaXNhYmxlO1xyXG4gIH1cclxuXHJcbiAgc2V0TGluaygpIHtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcclxuICAgIGNvbnN0IGxpbmsgPSBuZXcgUU1TQ0tFZGl0b3JMaW5rKCk7XHJcbiAgICBsaW5rLnR5cGVJZCA9IHRoaXMuc2VsZWN0ZWRMaW5rVHlwZTtcclxuICAgIGxpbmsudGFyZ2V0SWQgPSB0aGlzLnNlbGVjdGVkVGFyZ2V0O1xyXG4gICAgbGluay5wcm90b2NvbElkID0gdGhpcy5zZWxlY3RlZFByb3RvY29sO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkTGlua1R5cGUpIHtcclxuICAgICAgY2FzZSBMaW5rVHlwZS51cmw6XHJcbiAgICAgICAgbGluay51cmwgPSBgJHt0aGlzLnNlbGVjdGVkTGlua1R5cGV9JHt0aGlzLnNlbGVjdGVkUHJvdG9jb2x9JHt0aGlzLmdldFByb3RvY29sTmFtZSgpfSR7dGhpcy51cmx9YDtcclxuICAgICAgICBsaW5rLnRpdGxlID0gdGhpcy5hZHZpc29yeVRpdGxlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvclRleHQ6XHJcbiAgICAgICAgbGluay51cmwgPSBgJHt0aGlzLnNlbGVjdGVkTGlua1R5cGV9JHswfSMke3RoaXMuYW5jaG9yVGV4dH1gO1xyXG4gICAgICAgIGxpbmsudGl0bGUgPSBgIyR7dGhpcy5hbmNob3JUZXh0fWA7XHJcbiAgICAgICAgbGluay50YXJnZXRJZCA9IFRhcmdldFR5cGUudG9wbW9zdDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5lbWFpbDpcclxuICAgICAgICBsaW5rLnVybCA9IGAke3RoaXMuc2VsZWN0ZWRMaW5rVHlwZX0kezB9bWFpbHRvOiR7dGhpcy5lbWFpbEFkZHJlc3N9P3N1YmplY3Q9JHt0aGlzLmVtYWlsU3ViamVjdH0mYm9keT0ke3RoaXMuZW1haWxCb2R5XHJcbiAgICAgICAgICB9YDtcclxuICAgICAgICBsaW5rLnRpdGxlID0gdGhpcy5lbWFpbEFkZHJlc3M7XHJcbiAgICAgICAgbGluay50YXJnZXRJZCA9IFRhcmdldFR5cGUudG9wbW9zdDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5hbmNob3JEb2N1bWVudDpcclxuICAgICAgICBsaW5rLnVybCA9IGAke3RoaXMuc2VsZWN0ZWRMaW5rVHlwZX0kezB9L2RvY3VtZW50LyR7dGhpcy5kb2N1bWVudElkfSMke3RoaXMuYW5jaG9yQnlOYW1lfWA7XHJcbiAgICAgICAgbGluay50aXRsZSA9IHRoaXMuYW5jaG9yVGl0bGU7XHJcbiAgICAgICAgbGluay50YXJnZXRJZCA9IFRhcmdldFR5cGUudG9wbW9zdDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGxpbmspO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXJsVG9TZXRQcm90b2NvbCgpIHtcclxuICAgIGlmICghdGhpcy51cmwubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGxpc3RQcm90b2NvbE5hbWUgPSBPYmplY3QudmFsdWVzKFByb3RvY29sVHlwZU5hbWUpO1xyXG4gICAgZm9yIChsZXQgaW5kZXggaW4gbGlzdFByb3RvY29sTmFtZSkge1xyXG4gICAgICBpZiAobGlzdFByb3RvY29sTmFtZVtpbmRleF0ubGVuZ3RoICYmIHRoaXMudXJsLmluZGV4T2YobGlzdFByb3RvY29sTmFtZVtpbmRleF0udG9TdHJpbmcoKSkgPT09IDApIHtcclxuICAgICAgICBzd2l0Y2ggKGxpc3RQcm90b2NvbE5hbWVbaW5kZXhdKSB7XHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUuaHR0cDpcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKFByb3RvY29sVHlwZS5odHRwLCBQcm90b2NvbFR5cGVOYW1lLmh0dHApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUuaHR0cHM6XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVXJsQW5kU2VsZWN0ZWRQcm90b2NvbChQcm90b2NvbFR5cGUuaHR0cHMsIFByb3RvY29sVHlwZU5hbWUuaHR0cHMpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUuZnRwOlxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVVybEFuZFNlbGVjdGVkUHJvdG9jb2woUHJvdG9jb2xUeXBlLmZ0cCwgUHJvdG9jb2xUeXBlTmFtZS5mdHApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFByb3RvY29sVHlwZU5hbWUubmV3czpcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKFByb3RvY29sVHlwZS5uZXdzLCBQcm90b2NvbFR5cGVOYW1lLm5ld3MpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMudXJsLmluZGV4T2YoJzovLycpICE9PSAtMSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGUub3RoZXI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKHByb3RvY29sVHlwZTogbnVtYmVyLCBwcm90b2NvbE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRQcm90b2NvbCAhPT0gcHJvdG9jb2xUeXBlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IHByb3RvY29sVHlwZTtcclxuICAgIH1cclxuICAgIHRoaXMudXJsID0gdGhpcy51cmwuc2xpY2UocHJvdG9jb2xOYW1lLmxlbmd0aCk7XHJcbiAgICB0aGlzLmxpbmtGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7IHVybDogdGhpcy51cmwgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm90b2NvbE5hbWUoKSB7XHJcbiAgICByZXR1cm4gUHJvdG9jb2xUeXBlTmFtZVtQcm90b2NvbFR5cGVbdGhpcy5zZWxlY3RlZFByb3RvY29sXV07XHJcbiAgfVxyXG59XHJcbiJdfQ==
469
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWxpbmsuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1saW5rL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw2REFBNkQ7QUFDN0QsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2Qiw2REFBNkQ7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsNkRBQTZEO0FBQzdELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsR0FDaEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyw2REFBNkQ7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVqRSxPQUFPLG1CQUFtQixNQUFNLGtEQUFrRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3RGLE9BQU8sZUFBZSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBNEJsRixNQUFNLE9BQU8sd0JBQ1gsU0FBUSx3QkFBd0I7SUFnRGhDLFlBQ1UsR0FBc0IsRUFDdEIsTUFBaUIsRUFDakIsU0FBa0MsRUFDbEMsV0FBbUMsRUFDbkMsYUFBdUMsRUFDeEMsU0FBaUQsRUFDeEIsSUFBcUI7UUFFckQsS0FBSyxFQUFFLENBQUM7UUFSQSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBQ2xDLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQUNuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBMEI7UUFDeEMsY0FBUyxHQUFULFNBQVMsQ0FBd0M7UUFDeEIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFqRHZELGtCQUFhLEdBQWMsSUFBSSxTQUFTLENBQUM7WUFDdkMsVUFBVSxFQUFFLElBQUksV0FBVyxFQUFFO1lBQzdCLFlBQVksRUFBRSxJQUFJLFdBQVcsRUFBRTtZQUMvQixHQUFHLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLGFBQWEsRUFBRSxJQUFJLFdBQVcsRUFBRTtTQUNqQyxDQUFDLENBQUM7UUFDSCx3QkFBbUIsR0FBYyxJQUFJLFNBQVMsQ0FBQztZQUM3QyxVQUFVLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZELENBQUMsQ0FBQztRQUNILG1CQUFjLEdBQWMsSUFBSSxTQUFTLENBQUM7WUFDeEMsWUFBWSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RCxZQUFZLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hELFNBQVMsRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDdEQsQ0FBQyxDQUFDO1FBQ0gsdUJBQWtCLEdBQWMsSUFBSSxTQUFTLENBQUM7WUFDNUMsV0FBVyxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2RCxZQUFZLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3pELENBQUMsQ0FBQztRQUNILGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsY0FBUyxHQUFnQixFQUFFLENBQUM7UUFDNUIsWUFBTyxHQUFjLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQWdCLEVBQUUsQ0FBQztRQUM1QixvQkFBZSxHQUFvQyxFQUFFLENBQUM7UUFJdEQsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQixRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1Qsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixhQUFRLEdBQUcsUUFBUSxDQUFDO1FBWWxCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQjthQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9DO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNsQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLEVBQUUsRUFBRSxRQUFRLENBQUMsR0FBRztnQkFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVE7YUFDckMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2xCLEVBQUUsRUFBRSxRQUFRLENBQUMsVUFBVTtnQkFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQjthQUNoRCxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVTthQUN2QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFFBQVEsQ0FBQyxjQUFjO2dCQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CO2FBQ2pELENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRztnQkFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVc7YUFDeEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEVBQUUsRUFBRSxVQUFVLENBQUMsT0FBTztnQkFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWM7YUFDM0MsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSTtnQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVc7YUFDeEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hCLEVBQUUsRUFBRSxVQUFVLENBQUMsTUFBTTtnQkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWE7YUFDMUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFlBQVksQ0FBQyxJQUFJO2dCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYTthQUMxQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFlBQVksQ0FBQyxLQUFLO2dCQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYzthQUMzQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFlBQVksQ0FBQyxHQUFHO2dCQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWTthQUN6QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFlBQVksQ0FBQyxJQUFJO2dCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWTthQUN6QyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDbEIsRUFBRSxFQUFFLFlBQVksQ0FBQyxLQUFLO2dCQUN0QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYzthQUMzQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWMsRUFBRSxHQUFXO1FBQ3RDLFFBQVEsTUFBTSxFQUFFO1lBQ2QsS0FBSyxRQUFRLENBQUMsVUFBVTtnQkFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNsQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsY0FBYztnQkFDMUIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7Z0JBQ25FLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDbkMsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLENBQUMsVUFBVSxFQUFFO1lBQ2pELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjthQUFNLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFFBQVEsQ0FBQyxjQUFjLEVBQUU7WUFDNUQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDckM7U0FDRjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsY0FBdUIsRUFBRSxnQkFBeUI7UUFDMUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDbkUsS0FBSyxFQUFFLE9BQU87WUFDZCxNQUFNLEVBQUUsT0FBTztZQUNmLElBQUk7WUFDSixZQUFZLEVBQUUsSUFBSTtTQUNuQixDQUFDLENBQUM7UUFDSCxjQUFjO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLGdCQUFnQixFQUFFO29CQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO3dCQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7cUJBQ25DO29CQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO2lCQUM1QztxQkFBTTtvQkFDTCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQztvQkFDbkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDbkM7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLElBQUksR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ25DLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQy9ELEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLE9BQU87WUFDZixJQUFJO1lBQ0osWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsY0FBYzthQUNYLFdBQVcsRUFBRTthQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BCLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDbkM7Z0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7YUFDNUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUN4QixFQUFFLEVBQUUsQ0FBQztnQkFDTCxRQUFRLEVBQUUsQ0FBQztnQkFDWCxVQUFVLEVBQUUsQ0FBQztnQkFDYixjQUFjLEVBQUUsQ0FBQztnQkFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhO2FBQzdCLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDcEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFVBQWtCO1FBQ2xDLElBQUksQ0FBQyxXQUFXO2FBQ2IscUJBQXFCLENBQUMsVUFBVSxDQUFDO2FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO2dCQUMzQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGlCQUFpQixDQUFDLGNBQStDO1FBQy9ELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQjtZQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssUUFBUSxDQUFDLFVBQVUsRUFDN0M7WUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUM3QyxJQUFJLEtBQUssRUFBRTtvQkFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDM0I7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssUUFBUSxDQUFDLGNBQWMsSUFBSSxjQUFjLEVBQUU7WUFDdkUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUMzQixJQUFJLENBQUMsRUFBRTtvQkFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztpQkFDdkI7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsS0FBSyxFQUFFLENBQUM7WUFDUixTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCO1lBQ2xELFdBQVcsRUFBRSxVQUFVLENBQUMsVUFBVTtTQUNuQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixLQUFLLEVBQUUsQ0FBQztZQUNSLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx1QkFBdUI7WUFDeEQsV0FBVyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1NBQ2hDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDYixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUMzQixNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELElBQUksS0FBSyxFQUFFO1lBQ1QseUNBQXlDO1lBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNyQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtvQkFDWixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUN6QyxPQUFPLENBQUMsQ0FBQyxXQUFXLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQztvQkFDcEMsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO3dCQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDOzRCQUNoQixLQUFLLEVBQUUsRUFBRTs0QkFDVCxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUk7NEJBQ25CLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSTt5QkFDdEIsQ0FBQyxDQUFDO3dCQUNILEVBQUUsSUFBSSxDQUFDLENBQUM7cUJBQ1Q7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsUUFBUSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDN0IsS0FBSyxRQUFRLENBQUMsR0FBRztnQkFDZixTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZDLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxVQUFVO2dCQUN0QixTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztnQkFDN0MsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLEtBQUs7Z0JBQ2pCLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztnQkFDeEMsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLGNBQWM7Z0JBQzFCLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDO2dCQUM1QyxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtTQUNUO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RSxNQUFNLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUN4QyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUM3QixLQUFLLFFBQVEsQ0FBQyxHQUFHO2dCQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRTtvQkFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDekU7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO2lCQUNqQztnQkFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNsRyxNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUMsVUFBVTtnQkFDdEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM3RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQ25DLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsVUFBVSxJQUFJLENBQUMsWUFBWSxZQUFZLElBQUksQ0FBQyxZQUFZLFNBQVMsSUFBSSxDQUFDLFNBQzNHLEVBQUUsQ0FBQztnQkFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDbkMsTUFBTTtZQUNSLEtBQUssUUFBUSxDQUFDLGNBQWM7Z0JBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMzRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztnQkFDbkMsTUFBTTtTQUNUO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ3BCLE9BQU87U0FDUjtRQUNELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELEtBQUssSUFBSSxLQUFLLElBQUksZ0JBQWdCLEVBQUU7WUFDbEMsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hHLFFBQVEsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQy9CLEtBQUssZ0JBQWdCLENBQUMsSUFBSTt3QkFDeEIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzVFLE1BQU07b0JBRVIsS0FBSyxnQkFBZ0IsQ0FBQyxLQUFLO3dCQUN6QixJQUFJLENBQUMsNEJBQTRCLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDOUUsTUFBTTtvQkFFUixLQUFLLGdCQUFnQixDQUFDLEdBQUc7d0JBQ3ZCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRSxNQUFNO29CQUVSLEtBQUssZ0JBQWdCLENBQUMsSUFBSTt3QkFDeEIsSUFBSSxDQUFDLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQzVFLE1BQU07b0JBRVI7d0JBQ0UsTUFBTTtpQkFDVDtnQkFDRCxPQUFPO2FBQ1I7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRUQsNEJBQTRCLENBQUMsWUFBb0IsRUFBRSxZQUFvQjtRQUNyRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxZQUFZLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQztTQUN0QztRQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQWM7UUFDM0IsSUFBSSxNQUFNO1lBQ1IsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTFCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPO1lBQzVCLE9BQU87UUFFVCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7O1lBdmRGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixtL1ZBQWlEOzthQUVsRDs7O1lBeERDLGlCQUFpQjtZQVVqQixTQUFTO1lBTUYsdUJBQXVCO1lBV3ZCLHNCQUFzQjtZQUR0Qix3QkFBd0I7WUFmL0IsWUFBWTtZQWFQLGVBQWUsdUJBeUZqQixNQUFNLFNBQUMsZUFBZTs7O3VCQXBEeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcclxuaW1wb3J0IHtcclxuICBBZnRlclZpZXdDaGVja2VkLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXHJcbmltcG9ydCB7XHJcbiAgTWF0RGlhbG9nLFxyXG4gIE1hdERpYWxvZ1JlZixcclxuICBNQVRfRElBTE9HX0RBVEEsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGlua0FuY2hvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLWFuY2hvci5lbnVtJztcclxuaW1wb3J0IHsgTGlua1R5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvbGluay10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBQcm90b2NvbFR5cGUsIFByb3RvY29sVHlwZU5hbWUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvcHJvdG9jb2wtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgVGFyZ2V0VHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy90YXJnZXQtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1saW5rLWFuY2hvci1kb2N1bWVudC5tb2RlbCc7XHJcbmltcG9ydCBRTVNDS0VkaXRvclBhcmFtdGVyIGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXBhcmFtZXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yUmVsYXRpb24gfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1yZWxhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCBRTVNDS0VkaXRvckxpbmsgZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItdXJsLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcW1zLWNrZWRpdG9yLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JDb21tb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1jb21tb24uc2VydmljZXNcIjtcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JMaW5rU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1saW5rLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclJlbGF0ZWRDb21wb25lbnQgfSBmcm9tICcuLi9xbXMtY2tlZGl0b3ItcmVsYXRpb24vcW1zY2tlZGl0b3ItcmVsYXRlZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMaW5rQXR0YWNobWVudENvbXBvbmVudCB9IGZyb20gJy4vYXR0YWNobWVudHMvbGluay1hdHRhY2htZW50LmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgSUxpbmtUeXBlIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElUYXJnZXQge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgSVByb3RvY29sIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIElBbmNob3Ige1xyXG4gIHZhbHVlOiBudW1iZXI7XHJcbiAgdmlld1ZhbHVlOiBzdHJpbmc7XHJcbiAgYW5jaG9yVmFsdWU6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwicW1zLWNrZWRpdG9yLWxpbmtcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3Ftcy1ja2VkaXRvci1saW5rLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JMaW5rQ29tcG9uZW50XHJcbiAgZXh0ZW5kcyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcblxyXG4gIEBJbnB1dCgpIGNrRWRpdG9yOiBhbnk7XHJcblxyXG4gIExBTkc6IGFueTtcclxuICBsaW5rRm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIHRhcmdldExpc3Q6IG5ldyBGb3JtQ29udHJvbCgpLFxyXG4gICAgcHJvdG9jb2xMaXN0OiBuZXcgRm9ybUNvbnRyb2woKSxcclxuICAgIHVybDogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICBhZHZpc29yeVRpdGxlOiBuZXcgRm9ybUNvbnRyb2woKSxcclxuICB9KTtcclxuICBhbmNob3JUZXh0Rm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIGFuY2hvclRleHQ6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gIH0pO1xyXG4gIGVtYWlsRm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcclxuICAgIGVtYWlsQWRkcmVzczogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICBlbWFpbFN1YmplY3Q6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgZW1haWxCb2R5OiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICB9KTtcclxuICBhbmNob3JEb2NGb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgYW5jaG9yVGl0bGU6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgYW5jaG9yQnlOYW1lOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICB9KTtcclxuICBpc0V4cGFuZGVkID0gdHJ1ZTtcclxuICBsaW5rVHlwZXM6IElMaW5rVHlwZVtdID0gW107XHJcbiAgdGFyZ2V0czogSVRhcmdldFtdID0gW107XHJcbiAgcHJvdG9jb2xzOiBJUHJvdG9jb2xbXSA9IFtdO1xyXG4gIGFuY2hvckRvY3VtZW50czogUU1TQ0tFZGl0b3JMaW5rQW5jaG9yRG9jdW1lbnRbXSA9IFtdO1xyXG4gIGFuY2hvcnM6IElBbmNob3JbXTtcclxuICBlZGl0b3JBbmNob3JzOiBJQW5jaG9yW107XHJcbiAgZG9jdW1lbnRBbmNob3JzOiBJQW5jaG9yW107XHJcbiAgZWRpdG9yQ29udGVudCA9ICcnO1xyXG4gIHNlbGVjdGVkTGlua1R5cGUgPSAwO1xyXG4gIHNlbGVjdGVkVGFyZ2V0ID0gMDtcclxuICBzZWxlY3RlZFByb3RvY29sID0gMDtcclxuICB1cmwgPSBcIlwiO1xyXG4gIGFkdmlzb3J5VGl0bGUgPSBcIlwiO1xyXG4gIGVkaXQgPSBmYWxzZTtcclxuICBhbmNob3JUZXh0ID0gXCJcIjtcclxuICBlbWFpbEFkZHJlc3MgPSBcIlwiO1xyXG4gIGVtYWlsU3ViamVjdCA9IFwiXCI7XHJcbiAgZW1haWxCb2R5ID0gXCJcIjtcclxuICBkb2N1bWVudElkID0gMDtcclxuICBhbmNob3JUaXRsZSA9IFwiXCI7XHJcbiAgYW5jaG9yQnlOYW1lID0gXCJcIjtcclxuICBMaW5rVHlwZSA9IExpbmtUeXBlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxpbmtTZXJ2aWNlOiBRTVNDS0VkaXRvckxpbmtTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UU1TQ0tFZGl0b3JMaW5rQ29tcG9uZW50PixcclxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogUU1TQ0tFZGl0b3JMaW5rXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5zZWxlY3RlZExpbmtUeXBlID0gZGF0YS50eXBlSWQ7XHJcbiAgICB0aGlzLnNlbGVjdGVkVGFyZ2V0ID0gZGF0YS50YXJnZXRJZDtcclxuICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IGRhdGEucHJvdG9jb2xJZDtcclxuICAgIHRoaXMudXJsID0gZGF0YS51cmw7XHJcbiAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSBkYXRhLnRpdGxlO1xyXG4gICAgdGhpcy5lZGl0ID0gZGF0YS5lZGl0O1xyXG4gICAgdGhpcy5lZGl0b3JDb250ZW50ID0gZGF0YS5lZGl0b3JDb250ZW50O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5pbml0TGlua1R5cGUoKTtcclxuICAgIHRoaXMuaW5pdFRhcmdldCgpO1xyXG4gICAgdGhpcy5pbml0UHJvdG9jb2woKTtcclxuICAgIHRoaXMuaW5pdEFuY2hvcigpO1xyXG4gICAgaWYgKHRoaXMuZGF0YS5lZGl0KSB7XHJcbiAgICAgIHRoaXMucGFyc2VMaW5rVXJsKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSwgdGhpcy51cmwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZURpYWxvZygpIHtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcclxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xyXG4gICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xyXG4gIH1cclxuXHJcbiAgaW5pdExpbmtUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMubGlua1R5cGVzKSB7XHJcbiAgICAgIHRoaXMubGlua1R5cGVzLnB1c2goe1xyXG4gICAgICAgIGlkOiBMaW5rVHlwZS51cmwsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfVVJMLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5saW5rVHlwZXMucHVzaCh7XHJcbiAgICAgICAgaWQ6IExpbmtUeXBlLmFuY2hvclRleHQsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfQU5DSE9SX0lOX1RFWFQsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcclxuICAgICAgICBpZDogTGlua1R5cGUuZW1haWwsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfRU1BSUwsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmxpbmtUeXBlcy5wdXNoKHtcclxuICAgICAgICBpZDogTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLkxJTktfQU5DSE9SX0RPQ1VNRU5ULFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRUYXJnZXQoKSB7XHJcbiAgICBpZiAodGhpcy50YXJnZXRzKSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHtcclxuICAgICAgICBpZDogVGFyZ2V0VHlwZS5uZXcsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUlRHRVRfTkVXLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xyXG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLnRvcG1vc3QsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUkdFVF9UT1BNT1NULFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xyXG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLnNhbWUsXHJcbiAgICAgICAgbmFtZTogdGhpcy5MQU5HLlFNU0NLRURJVE9SLlRBUkdFVF9TQU1FLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy50YXJnZXRzLnB1c2goe1xyXG4gICAgICAgIGlkOiBUYXJnZXRUeXBlLnBhcmVudCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuVEFSR0VUX1BBUkVOVCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0UHJvdG9jb2woKSB7XHJcbiAgICBpZiAodGhpcy5wcm90b2NvbHMpIHtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFByb3RvY29sVHlwZS5odHRwLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9IVFRQLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFByb3RvY29sVHlwZS5odHRwcyxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfSFRUUFMsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLmZ0cCxcclxuICAgICAgICBuYW1lOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuUFJPVE9DT0xfRlRQLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5wcm90b2NvbHMucHVzaCh7XHJcbiAgICAgICAgaWQ6IFByb3RvY29sVHlwZS5uZXdzLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9ORVcsXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnByb3RvY29scy5wdXNoKHtcclxuICAgICAgICBpZDogUHJvdG9jb2xUeXBlLm90aGVyLFxyXG4gICAgICAgIG5hbWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5QUk9UT0NPTF9PVEhFUixcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0QW5jaG9yKCkge1xyXG4gICAgdGhpcy5hbmNob3JzID0gW107XHJcbiAgICB0aGlzLmFuY2hvcnMgPSBbeyB2YWx1ZTogMCwgdmlld1ZhbHVlOiBcIlwiLCBhbmNob3JWYWx1ZTogTGlua0FuY2hvci5CbGFuayB9XTtcclxuICB9XHJcblxyXG4gIHBhcnNlTGlua1VybCh0eXBlSWQ6IG51bWJlciwgdXJsOiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAodHlwZUlkKSB7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yVGV4dDpcclxuICAgICAgICB0aGlzLmdldEVkaXRvckFuY2hvcigpO1xyXG4gICAgICAgIHRoaXMuYW5jaG9yVGV4dCA9IHVybC5zdWJzdHIoMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuZW1haWw6XHJcbiAgICAgICAgY29uc3QgcDEgPSB1cmwuaW5kZXhPZignbWFpbHRvOicpO1xyXG4gICAgICAgIGNvbnN0IHAyID0gdXJsLmluZGV4T2YoJz9zdWJqZWN0PScpO1xyXG4gICAgICAgIGNvbnN0IHAzID0gdXJsLmluZGV4T2YoJyZib2R5PScpO1xyXG4gICAgICAgIHRoaXMuZW1haWxBZGRyZXNzID0gdXJsLnN1YnN0cihwMSArIDcsIHAyIC0gNyk7XHJcbiAgICAgICAgdGhpcy5lbWFpbFN1YmplY3QgPSB1cmwuc3Vic3RyKHAyICsgOSwgcDMgLSBwMiAtIDkpO1xyXG4gICAgICAgIHRoaXMuZW1haWxCb2R5ID0gdXJsLnN1YnN0cihwMyArIDYsIHVybC5sZW5ndGggLSBwMyAtIDYpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvckRvY3VtZW50OlxyXG4gICAgICAgIGNvbnN0IGZsYXNoSW5kZXggPSB1cmwubGFzdEluZGV4T2YoJy8nKTtcclxuICAgICAgICBjb25zdCBoYXNoSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xyXG4gICAgICAgIGNvbnN0IHNJZCA9IHVybC5zdWJzdHIoZmxhc2hJbmRleCArIDEsIGhhc2hJbmRleCAtIDEgLSBmbGFzaEluZGV4KTtcclxuICAgICAgICBjb25zdCBkb2N1bWVudElkID0gcGFyc2VJbnQoc0lkLCAxMCk7XHJcbiAgICAgICAgdGhpcy5nZXRBbmNob3JEb2N1bWVudChkb2N1bWVudElkKTtcclxuICAgICAgICB0aGlzLmFuY2hvckJ5TmFtZSA9IHVybC5zdWJzdHIoaGFzaEluZGV4ICsgMSwgdXJsLmxlbmd0aCAtIGhhc2hJbmRleCk7XHJcbiAgICAgICAgdGhpcy5hbmNob3JUaXRsZSA9IHRoaXMuZGF0YS50aXRsZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ZWRMaW5rVHlwZSgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvclRleHQpIHtcclxuICAgICAgdGhpcy5nZXRFZGl0b3JBbmNob3IoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZExpbmtUeXBlID09PSBMaW5rVHlwZS5hbmNob3JEb2N1bWVudCkge1xyXG4gICAgICBpZiAoIXRoaXMuZG9jdW1lbnRBbmNob3JzKSB7XHJcbiAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSBbXTtcclxuICAgICAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgICAgICB0aGlzLmRvY3VtZW50QW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZUhhbmRib29rKGlzT25seURvY3VtZW50OiBib29sZWFuLCBpc0FuY2hvckRvY3VtZW50OiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBkYXRhID0gbmV3IFFNU0NLRWRpdG9yUmVsYXRpb24oKTtcclxuICAgIGRhdGEuaXNPbmx5RG9jdW1lbnQgPSBpc09ubHlEb2N1bWVudDtcclxuICAgIGRhdGEuaXNFbmFibGVGb2xkZXIgPSAhaXNPbmx5RG9jdW1lbnQ7XHJcbiAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JSZWxhdGVkQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiBcIjY1MHB4XCIsXHJcbiAgICAgIGhlaWdodDogXCI2NTBweFwiLFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGlmICghaXNBbmNob3JEb2N1bWVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnVybCA9IHJlc3VsdC51cmw7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5hZHZpc29yeVRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hZHZpc29yeVRpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQcm90b2NvbCA9IFByb3RvY29sVHlwZS5vdGhlcjtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRJZCA9IHJlc3VsdC5pZDtcclxuICAgICAgICAgICAgdGhpcy5hbmNob3JUaXRsZSA9IGAke3Jlc3VsdC50aXRsZX0oJHtyZXN1bHQuaWR9KWA7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QW5jaG9yRG9jdW1lbnQocmVzdWx0LmlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXR0YWNobWVudCgpIHtcclxuICAgIGNvbnN0IGRhdGEgPSBuZXcgUU1TQ0tFZGl0b3JQYXJhbXRlcigpO1xyXG4gICAgZGF0YS5tb2R1bGUgPSB0aGlzLmRhdGEubW9kdWxlO1xyXG4gICAgZGF0YS5lbnRpdHlJZCA9IHRoaXMuZGF0YS5lbnRpdHlJZDtcclxuICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihMaW5rQXR0YWNobWVudENvbXBvbmVudCwge1xyXG4gICAgICB3aWR0aDogXCI2NTBweFwiLFxyXG4gICAgICBoZWlnaHQ6IFwiNjUwcHhcIixcclxuICAgICAgZGF0YSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBkaWFsb2dUZW1wbGF0ZVxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLnVybCA9IHJlc3VsdC51cmw7XHJcbiAgICAgICAgICBpZiAoIXRoaXMuYWR2aXNvcnlUaXRsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmFkdmlzb3J5VGl0bGUgPSByZXN1bHQudGl0bGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBQcm90b2NvbFR5cGUub3RoZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRvckFuY2hvcigpIHtcclxuICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gW107XHJcbiAgICBpZiAodGhpcy5lZGl0b3JDb250ZW50KSB7XHJcbiAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzLnB1c2goe1xyXG4gICAgICAgIGlkOiAwLFxyXG4gICAgICAgIGVudGl0eUlkOiAwLFxyXG4gICAgICAgIGRvY3VtZW50SWQ6IDAsXHJcbiAgICAgICAgZG9jdW1lbnRUeXBlSWQ6IDAsXHJcbiAgICAgICAgcmljaFRleHQ6IHRoaXMuZWRpdG9yQ29udGVudCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEFuY2hvckRvY3VtZW50KHRoaXMuYW5jaG9yRG9jdW1lbnRzKTtcclxuICAgIHRoaXMuZWRpdG9yQW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcclxuICB9XHJcblxyXG4gIGdldEFuY2hvckRvY3VtZW50KGRvY3VtZW50SWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5saW5rU2VydmljZVxyXG4gICAgICAuZ2V0QW5jaG9yRG9jdW1lbnRMaXN0KGRvY3VtZW50SWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMuYW5jaG9yRG9jdW1lbnRzID0gcmVzO1xyXG4gICAgICAgICAgdGhpcy5zZXRBbmNob3JEb2N1bWVudCh0aGlzLmFuY2hvckRvY3VtZW50cyk7XHJcbiAgICAgICAgICB0aGlzLmRvY3VtZW50QW5jaG9ycyA9IHRoaXMuYW5jaG9ycztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5hbmNob3JEb2N1bWVudHMgPSBbXTtcclxuICAgICAgICAgIHRoaXMuc2V0QW5jaG9yRG9jdW1lbnQodGhpcy5hbmNob3JEb2N1bWVudHMpO1xyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudEFuY2hvcnMgPSB0aGlzLmFuY2hvcnM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEFuY2hvckRvY3VtZW50KGFuY2hvckRvY3VtZW50OiBRTVNDS0VkaXRvckxpbmtBbmNob3JEb2N1bWVudFtdKSB7XHJcbiAgICB0aGlzLmluaXRBbmNob3IoKTtcclxuICAgIGxldCBpZCA9IDM7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZGF0YS5xbXNja0NvbnRlbnRGaWVsZHMgJiZcclxuICAgICAgdGhpcy5kYXRhLnFtc2NrQ29udGVudEZpZWxkcy5sZW5ndGggJiZcclxuICAgICAgdGhpcy5kYXRhLnFtc2NrSXNHZXRBbmNob3JNb3JlQ29udGVudCAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkTGlua1R5cGUgPT09IExpbmtUeXBlLmFuY2hvclRleHRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmRhdGEucW1zY2tDb250ZW50RmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpZWxkKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEFuY2hvcihmaWVsZCwgaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRMaW5rVHlwZSA9PT0gTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQgJiYgYW5jaG9yRG9jdW1lbnQpIHtcclxuICAgICAgYW5jaG9yRG9jdW1lbnQuZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICB0aGlzLmdldEFuY2hvcihlLCBpZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmFuY2hvcnMucHVzaCh7XHJcbiAgICAgIHZhbHVlOiAxLFxyXG4gICAgICB2aWV3VmFsdWU6IHRoaXMuTEFORy5RTVNDS0VESVRPUi5BTkNIT1JfQVRUQUNITUVOVCxcclxuICAgICAgYW5jaG9yVmFsdWU6IExpbmtBbmNob3IuQXR0YWNobWVudCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5hbmNob3JzLnB1c2goe1xyXG4gICAgICB2YWx1ZTogMixcclxuICAgICAgdmlld1ZhbHVlOiB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuQU5DSE9SX1JFTEFURURfRE9DVU1FTlQsXHJcbiAgICAgIGFuY2hvclZhbHVlOiBMaW5rQW5jaG9yLlJlbGF0ZWQsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEFuY2hvcihlLCBpZCkge1xyXG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIGRpdi5pbm5lckhUTUwgPSBlLnJpY2hUZXh0O1xyXG4gICAgY29uc3QgZG9tQ29udGVudCA9IGRpdjtcclxuICAgIGNvbnN0IGFUYWdzID0gZG9tQ29udGVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImFcIik7XHJcbiAgICBpZiAoYVRhZ3MpIHtcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhVGFncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHRhZyA9IGFUYWdzW2ldO1xyXG4gICAgICAgIGlmICh0YWcubmFtZSkge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmFuY2hvcnMuZmluZEluZGV4KCh4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB4LmFuY2hvclZhbHVlID09PSB0YWcubmFtZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgICAgICB0aGlzLmFuY2hvcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgdmFsdWU6IGlkLFxyXG4gICAgICAgICAgICAgIHZpZXdWYWx1ZTogdGFnLm5hbWUsXHJcbiAgICAgICAgICAgICAgYW5jaG9yVmFsdWU6IHRhZy5uYW1lLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWQgKz0gMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRpc2FibGVPa0J1dHRvbigpIHtcclxuICAgIGxldCBpc0Rpc2FibGUgPSBmYWxzZTtcclxuICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZExpbmtUeXBlKSB7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUudXJsOlxyXG4gICAgICAgIGlzRGlzYWJsZSA9IHRoaXMubGlua0Zvcm1Hcm91cC5pbnZhbGlkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvclRleHQ6XHJcbiAgICAgICAgaXNEaXNhYmxlID0gdGhpcy5hbmNob3JUZXh0Rm9ybUdyb3VwLmludmFsaWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuZW1haWw6XHJcbiAgICAgICAgaXNEaXNhYmxlID0gdGhpcy5lbWFpbEZvcm1Hcm91cC5pbnZhbGlkO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIExpbmtUeXBlLmFuY2hvckRvY3VtZW50OlxyXG4gICAgICAgIGlzRGlzYWJsZSA9IHRoaXMuYW5jaG9yRG9jRm9ybUdyb3VwLmludmFsaWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNEaXNhYmxlO1xyXG4gIH1cclxuXHJcbiAgc2V0TGluaygpIHtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcclxuICAgIGNvbnN0IGxpbmsgPSBuZXcgUU1TQ0tFZGl0b3JMaW5rKCk7XHJcbiAgICBsaW5rLnR5cGVJZCA9IHRoaXMuc2VsZWN0ZWRMaW5rVHlwZTtcclxuICAgIGxpbmsudGFyZ2V0SWQgPSB0aGlzLnNlbGVjdGVkVGFyZ2V0O1xyXG4gICAgbGluay5wcm90b2NvbElkID0gdGhpcy5zZWxlY3RlZFByb3RvY29sO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkTGlua1R5cGUpIHtcclxuICAgICAgY2FzZSBMaW5rVHlwZS51cmw6XHJcbiAgICAgICAgaWYgKCF0aGlzLmFkdmlzb3J5VGl0bGUubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsaW5rLnRpdGxlID0gYCR7dGhpcy5nZXRQcm90b2NvbE5hbWUoKX0ke3RoaXMubGlua0Zvcm1Hcm91cC52YWx1ZS51cmx9YDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGluay50aXRsZSA9IHRoaXMuYWR2aXNvcnlUaXRsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGluay51cmwgPSBgJHt0aGlzLnNlbGVjdGVkTGlua1R5cGV9JHt0aGlzLnNlbGVjdGVkUHJvdG9jb2x9JHt0aGlzLmdldFByb3RvY29sTmFtZSgpfSR7dGhpcy51cmx9YDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBMaW5rVHlwZS5hbmNob3JUZXh0OlxyXG4gICAgICAgIGxpbmsudXJsID0gYCR7dGhpcy5zZWxlY3RlZExpbmtUeXBlfSR7MH0jJHt0aGlzLmFuY2hvclRleHR9YDtcclxuICAgICAgICBsaW5rLnRpdGxlID0gYCMke3RoaXMuYW5jaG9yVGV4dH1gO1xyXG4gICAgICAgIGxpbmsudGFyZ2V0SWQgPSBUYXJnZXRUeXBlLnRvcG1vc3Q7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuZW1haWw6XHJcbiAgICAgICAgbGluay51cmwgPSBgJHt0aGlzLnNlbGVjdGVkTGlua1R5cGV9JHswfW1haWx0bzoke3RoaXMuZW1haWxBZGRyZXNzfT9zdWJqZWN0PSR7dGhpcy5lbWFpbFN1YmplY3R9JmJvZHk9JHt0aGlzLmVtYWlsQm9keVxyXG4gICAgICAgICAgfWA7XHJcbiAgICAgICAgbGluay50aXRsZSA9IHRoaXMuZW1haWxBZGRyZXNzO1xyXG4gICAgICAgIGxpbmsudGFyZ2V0SWQgPSBUYXJnZXRUeXBlLnRvcG1vc3Q7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgTGlua1R5cGUuYW5jaG9yRG9jdW1lbnQ6XHJcbiAgICAgICAgbGluay51cmwgPSBgJHt0aGlzLnNlbGVjdGVkTGlua1R5cGV9JHswfS9kb2N1bWVudC8ke3RoaXMuZG9jdW1lbnRJZH0jJHt0aGlzLmFuY2hvckJ5TmFtZX1gO1xyXG4gICAgICAgIGxpbmsudGl0bGUgPSB0aGlzLmFuY2hvclRpdGxlO1xyXG4gICAgICAgIGxpbmsudGFyZ2V0SWQgPSBUYXJnZXRUeXBlLnRvcG1vc3Q7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShsaW5rKTtcclxuICAgIHRoaXMuY29tbW9uU2VydmljZS5zZXRTY3JvbGxUb3BFZGl0b3JDb250YWluZXIodGhpcy5ja0VkaXRvciwgc2Nyb2xsVG9wKTtcclxuICB9XHJcblxyXG4gIGdldFVybFRvU2V0UHJvdG9jb2woKSB7XHJcbiAgICBpZiAoIXRoaXMudXJsLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBsaXN0UHJvdG9jb2xOYW1lID0gT2JqZWN0LnZhbHVlcyhQcm90b2NvbFR5cGVOYW1lKTtcclxuICAgIGZvciAobGV0IGluZGV4IGluIGxpc3RQcm90b2NvbE5hbWUpIHtcclxuICAgICAgaWYgKGxpc3RQcm90b2NvbE5hbWVbaW5kZXhdLmxlbmd0aCAmJiB0aGlzLnVybC5pbmRleE9mKGxpc3RQcm90b2NvbE5hbWVbaW5kZXhdLnRvU3RyaW5nKCkpID09PSAwKSB7XHJcbiAgICAgICAgc3dpdGNoIChsaXN0UHJvdG9jb2xOYW1lW2luZGV4XSkge1xyXG4gICAgICAgICAgY2FzZSBQcm90b2NvbFR5cGVOYW1lLmh0dHA6XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVXJsQW5kU2VsZWN0ZWRQcm90b2NvbChQcm90b2NvbFR5cGUuaHR0cCwgUHJvdG9jb2xUeXBlTmFtZS5odHRwKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBQcm90b2NvbFR5cGVOYW1lLmh0dHBzOlxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVVybEFuZFNlbGVjdGVkUHJvdG9jb2woUHJvdG9jb2xUeXBlLmh0dHBzLCBQcm90b2NvbFR5cGVOYW1lLmh0dHBzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBQcm90b2NvbFR5cGVOYW1lLmZ0cDpcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VVcmxBbmRTZWxlY3RlZFByb3RvY29sKFByb3RvY29sVHlwZS5mdHAsIFByb3RvY29sVHlwZU5hbWUuZnRwKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBQcm90b2NvbFR5cGVOYW1lLm5ld3M6XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlVXJsQW5kU2VsZWN0ZWRQcm90b2NvbChQcm90b2NvbFR5cGUubmV3cywgUHJvdG9jb2xUeXBlTmFtZS5uZXdzKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnVybC5pbmRleE9mKCc6Ly8nKSAhPT0gLTEpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFByb3RvY29sID0gUHJvdG9jb2xUeXBlLm90aGVyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hhbmdlVXJsQW5kU2VsZWN0ZWRQcm90b2NvbChwcm90b2NvbFR5cGU6IG51bWJlciwgcHJvdG9jb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUHJvdG9jb2wgIT09IHByb3RvY29sVHlwZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJvdG9jb2wgPSBwcm90b2NvbFR5cGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVybCA9IHRoaXMudXJsLnNsaWNlKHByb3RvY29sTmFtZS5sZW5ndGgpO1xyXG4gICAgdGhpcy5saW5rRm9ybUdyb3VwLnBhdGNoVmFsdWUoeyB1cmw6IHRoaXMudXJsIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvdG9jb2xOYW1lKCkge1xyXG4gICAgcmV0dXJuIFByb3RvY29sVHlwZU5hbWVbUHJvdG9jb2xUeXBlW3RoaXMuc2VsZWN0ZWRQcm90b2NvbF1dO1xyXG4gIH1cclxuXHJcbiAgc2V0TGlua1VybFR5cGUoJGV2ZW50PzogRXZlbnQpIHtcclxuICAgIGlmICgkZXZlbnQpXHJcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIGlmICh0aGlzLmxpbmtGb3JtR3JvdXAuaW52YWxpZClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMuc2V0TGluaygpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -38,6 +38,7 @@ export class QmsCkeditorLinkSimpleComponent extends QMSCKEditorBaseComponent {
38
38
  const link = new QMSCKEditorLink();
39
39
  link.targetId = TargetType.new;
40
40
  link.url = `${LinkType.url}${ProtocolType.http}${this.url}`;
41
+ link.title = this.url;
41
42
  const scrollTop = this.commonService.getScrollTopCkeditor(this.ckEditor);
42
43
  this.dialogRef.close(link);
43
44
  this.commonService.setScrollTopEditorContainer(this.ckEditor, scrollTop);
@@ -64,4 +65,4 @@ QmsCkeditorLinkSimpleComponent.ctorParameters = () => [
64
65
  QmsCkeditorLinkSimpleComponent.propDecorators = {
65
66
  ckEditor: [{ type: Input }]
66
67
  };
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWxpbmstc2ltcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItbGluay1zaW1wbGUvcW1zLWNrZWRpdG9yLWxpbmstc2ltcGxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLGVBQWUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQU92RixNQUFNLE9BQU8sOEJBQStCLFNBQVEsd0JBQXdCO0lBTXhFLFlBQ1csU0FBdUQsRUFDdEQsU0FBa0MsRUFDbEMsYUFBdUMsRUFDZixJQUFxQjtRQUNyRCxLQUFLLEVBQUUsQ0FBQztRQUpELGNBQVMsR0FBVCxTQUFTLENBQThDO1FBQ3RELGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUNmLFNBQUksR0FBSixJQUFJLENBQWlCO1FBUHpELG1CQUFjLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFRL0MsQ0FBQztJQUVkLFFBQVE7UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDcEYsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNqRDtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNmLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUE7YUFDM0I7U0FDSjtJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNuQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzFDLE9BQU87U0FDVjtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFBO1FBQzlCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsYUFBYTtRQUNULE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3RSxDQUFDOzs7WUFoREosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSw4QkFBOEI7Z0JBQ3hDLHF6Q0FBd0Q7O2FBRTNEOzs7WUFkUSxZQUFZO1lBRVosdUJBQXVCO1lBTXZCLHdCQUF3QjtZQUYxQixlQUFlLHVCQW1CYixNQUFNLFNBQUMsZUFBZTs7O3VCQVIxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaW5rVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9saW5rLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFByb3RvY29sVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy9wcm90b2NvbC10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBUYXJnZXRUeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uL2VudW1zL3RhcmdldC10eXBlLmVudW0nO1xyXG5pbXBvcnQgUU1TQ0tFZGl0b3JMaW5rIGZyb20gJy4uLy4uL2NvbW1vbi9tb2RlbHMvcW1zLWNrZWRpdG9yLXVybC5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Ftcy1ja2VkaXRvci1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1jb21tb24uc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1xbXMtY2tlZGl0b3ItbGluay1zaW1wbGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci1saW5rLXNpbXBsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9xbXMtY2tlZGl0b3ItbGluay1zaW1wbGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUW1zQ2tlZGl0b3JMaW5rU2ltcGxlQ29tcG9uZW50IGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIExBTkc6IGFueTtcclxuICAgIEBJbnB1dCgpIGNrRWRpdG9yOiBhbnk7XHJcbiAgICB1cmxGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuICAgIHVybDogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRbXNDa2VkaXRvckxpbmtTaW1wbGVDb21wb25lbnQ+LFxyXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNvbW1vblNlcnZpY2U6IFFNU0NLRWRpdG9yQ29tbW9uU2VydmljZSxcclxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IFFNU0NLRWRpdG9yTGlua1xyXG4gICAgKSB7IHN1cGVyKCk7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5lZGl0KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRhdGEudXJsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVybCA9IHRoaXMuZGF0YS51cmxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRMaW5rKCkge1xyXG4gICAgICAgIHRoaXMudXJsRm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpXHJcbiAgICAgICAgaWYgKHRoaXMudXJsRm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsaW5rID0gbmV3IFFNU0NLRWRpdG9yTGluaygpO1xyXG4gICAgICAgIGxpbmsudGFyZ2V0SWQgPSBUYXJnZXRUeXBlLm5ld1xyXG4gICAgICAgIGxpbmsudXJsID0gYCR7TGlua1R5cGUudXJsfSR7UHJvdG9jb2xUeXBlLmh0dHB9JHt0aGlzLnVybH1gO1xyXG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShsaW5rKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbG9zZURpYWxvZygpIHtcclxuICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U2Nyb2xsVG9wQ2tlZGl0b3IodGhpcy5ja0VkaXRvcik7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobnVsbCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xyXG4gICAgfVxyXG5cclxufVxyXG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWxpbmstc2ltcGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvcW1zLWNrZWRpdG9yLWNvbXBvbmVudHMvY29tcG9uZW50cy9xbXMtY2tlZGl0b3ItbGluay1zaW1wbGUvcW1zLWNrZWRpdG9yLWxpbmstc2ltcGxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLGVBQWUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQU92RixNQUFNLE9BQU8sOEJBQStCLFNBQVEsd0JBQXdCO0lBTXhFLFlBQ1csU0FBdUQsRUFDdEQsU0FBa0MsRUFDbEMsYUFBdUMsRUFDZixJQUFxQjtRQUNyRCxLQUFLLEVBQUUsQ0FBQztRQUpELGNBQVMsR0FBVCxTQUFTLENBQThDO1FBQ3RELGNBQVMsR0FBVCxTQUFTLENBQXlCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUNmLFNBQUksR0FBSixJQUFJLENBQWlCO1FBUHpELG1CQUFjLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFRL0MsQ0FBQztJQUVkLFFBQVE7UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDcEYsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNqRDtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNmLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUE7YUFDM0I7U0FDSjtJQUNMLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNuQyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzFDLE9BQU87U0FDVjtRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFBO1FBQzlCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUN0QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELGFBQWE7UUFDVCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0UsQ0FBQzs7O1lBakRKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsOEJBQThCO2dCQUN4QyxxekNBQXdEOzthQUUzRDs7O1lBZFEsWUFBWTtZQUVaLHVCQUF1QjtZQU12Qix3QkFBd0I7WUFGMUIsZUFBZSx1QkFtQmIsTUFBTSxTQUFDLGVBQWU7Ozt1QkFSMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGlua1R5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvbGluay10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBQcm90b2NvbFR5cGUgfSBmcm9tICcuLi8uLi9jb21tb24vZW51bXMvcHJvdG9jb2wtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgVGFyZ2V0VHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9lbnVtcy90YXJnZXQtdHlwZS5lbnVtJztcclxuaW1wb3J0IFFNU0NLRWRpdG9yTGluayBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci11cmwubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItY29tbW9uLnNlcnZpY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdsaWItcW1zLWNrZWRpdG9yLWxpbmstc2ltcGxlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9xbXMtY2tlZGl0b3ItbGluay1zaW1wbGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcW1zLWNrZWRpdG9yLWxpbmstc2ltcGxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFFtc0NrZWRpdG9yTGlua1NpbXBsZUNvbXBvbmVudCBleHRlbmRzIFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBMQU5HOiBhbnk7XHJcbiAgICBASW5wdXQoKSBja0VkaXRvcjogYW55O1xyXG4gICAgdXJsRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcbiAgICB1cmw6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8UW1zQ2tlZGl0b3JMaW5rU2ltcGxlQ29tcG9uZW50PixcclxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjb21tb25TZXJ2aWNlOiBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UsXHJcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBRTVNDS0VkaXRvckxpbmtcclxuICAgICkgeyBzdXBlcigpOyB9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEuZWRpdCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLnVybCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cmwgPSB0aGlzLmRhdGEudXJsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TGluaygpIHtcclxuICAgICAgICB0aGlzLnVybEZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKVxyXG4gICAgICAgIGlmICh0aGlzLnVybEZvcm1Db250cm9sLmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbGluayA9IG5ldyBRTVNDS0VkaXRvckxpbmsoKTtcclxuICAgICAgICBsaW5rLnRhcmdldElkID0gVGFyZ2V0VHlwZS5uZXdcclxuICAgICAgICBsaW5rLnVybCA9IGAke0xpbmtUeXBlLnVybH0ke1Byb3RvY29sVHlwZS5odHRwfSR7dGhpcy51cmx9YDtcclxuICAgICAgICBsaW5rLnRpdGxlID0gdGhpcy51cmw7XHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldFNjcm9sbFRvcENrZWRpdG9yKHRoaXMuY2tFZGl0b3IpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGxpbmspO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZS5zZXRTY3JvbGxUb3BFZGl0b3JDb250YWluZXIodGhpcy5ja0VkaXRvciwgc2Nyb2xsVG9wKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShudWxsKTtcclxuICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -21,6 +21,8 @@ export class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
21
21
  this.data = data;
22
22
  this.templates = [];
23
23
  this.isReplace = false;
24
+ this.stream_image = "/stream_image.aspx?iEntityId=";
25
+ this.enableEditTemplate = data.enableEditTemplate;
24
26
  }
25
27
  ngOnInit() {
26
28
  this.translate.getLanguageSubject$.pipe(takeUntil(this.ngUnsubcribe)).subscribe((res) => {
@@ -42,6 +44,9 @@ export class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
42
44
  .subscribe((response) => {
43
45
  if (response) {
44
46
  this.templates = response;
47
+ this.templates.forEach((item) => {
48
+ item.imageUrl = this.stream_image + (item.imageId > 0 ? item.imageId.toString() : '0');
49
+ });
45
50
  }
46
51
  });
47
52
  }
@@ -62,7 +67,7 @@ export class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
62
67
  const index = this.templates.findIndex((x) => {
63
68
  return x.id === id;
64
69
  });
65
- const content = this.templates[index].content;
70
+ const content = this.templates[index].html;
66
71
  const detail = {
67
72
  content: content,
68
73
  isReplace: this.isReplace,
@@ -79,12 +84,12 @@ export class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
79
84
  });
80
85
  const data = new QMSCKEditorTemplate();
81
86
  data.id = this.templates[index].id;
82
- data.content = this.templates[index].content;
87
+ data.html = this.templates[index].html;
83
88
  data.edit = true;
84
89
  const dialogTemplate = this.dialog.open(QMSCKEditorTemplateComponent, {
85
90
  width: '650px',
86
- height: '500px',
87
- data,
91
+ height: '540px',
92
+ data: { template: data },
88
93
  disableClose: true
89
94
  });
90
95
  dialogTemplate.componentInstance.ckEditor = this.ckEditor;
@@ -113,7 +118,7 @@ export class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
113
118
  .subscribe((result) => {
114
119
  if (result) {
115
120
  this.templateService
116
- .deleteTemplate(id)
121
+ .deleteTemplate([id])
117
122
  .pipe(takeUntil(this.ngUnsubcribe))
118
123
  .subscribe((response) => {
119
124
  if (response) {
@@ -136,8 +141,8 @@ export class QMSCKEditorLoadTemplateComponent extends QMSCKEditorBaseComponent {
136
141
  QMSCKEditorLoadTemplateComponent.decorators = [
137
142
  { type: Component, args: [{
138
143
  selector: 'app-qmsck-load-template',
139
- template: "<div id=\"qmsckeditor-load-template\" class=\"qmsckeditor qmsckeditor__loadtemplate__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span id=\"qmsckeditor-load-template-header_001\" mat-icon-button class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{ LANG.QMSCKEDITOR.CONTENT_TEMPLATE }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"load-template_002\">\r\n <div id=\"load-template_002_001\" class=\"title col-12 mt-3\">\r\n <h2 id=\"load-template_002_001_001\">\r\n {{ LANG.QMSCKEDITOR.CHOOSE_TEMPLATE }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor-load-template-content\" class=\"qmsckeditor template-content height\">\r\n <div id=\"qmsckeditor-load-template-content_003\" class=\"mt-1 pl-2 pr-2 ps-2 pe-2\">\r\n <mat-card class=\"qmsckeditor card col-12\" *ngFor=\"let template of templates\">\r\n <div class=\"row\">\r\n <div class=\"qmsckeditor__cursor col-10\" (click)=\"onSelectTemplate(template.id)\">\r\n <div class=\"col-12 pl-0 ps-0 title\">\r\n <span>{{ template.title }}</span>\r\n </div>\r\n <div class=\"col-12 pl-0 ps-0 content\">\r\n <span>{{ template.description }}</span>\r\n </div>\r\n </div>\r\n <div class=\"qmsckeditor__cursor col-1\">\r\n <mat-icon (click)=\"onEditTemplate(template.id)\">edit</mat-icon>\r\n </div>\r\n <div class=\"qmsckeditor__cursor col-1\">\r\n <mat-icon (click)=\"onDeleteTemplate(template.id)\">delete</mat-icon>\r\n </div>\r\n </div>\r\n </mat-card>\r\n </div>\r\n </div>\r\n <div class=\"option\">\r\n <mat-checkbox qms-group-options [(ngModel)]=\"isReplace\" color=\"primary\">\r\n {{ LANG.QMSCKEDITOR.REPLACE_CONTENT }}\r\n </mat-checkbox>\r\n </div>\r\n</div>",
140
- styles: [".mt5{margin-top:5px!important}.mt10{margin-top:10px!important}.mt7{margin-top:7px!important}.mt15{margin-top:15px!important}.mt20{margin-top:20px!important}.mt30{margin-top:30px!important}.mt40{margin-top:40px!important}.ml2{margin-left:2px!important}.ml3{margin-left:3px!important}.ml5{margin-left:5px!important}.ml15{margin-left:15px!important}.ml10{margin-left:10px!important}.ml12{margin-left:12px!important}.ml16{margin-left:16px!important}.ml-auto{margin-left:auto!important}.ml-25{margin-left:-25px!important}.mr5{margin-right:5px!important}.mr12{margin-right:12px!important}.mr15{margin-right:15px!important}.mb5{margin-bottom:5px!important}.mb10{margin-bottom:10px!important}.mb15{margin-bottom:15px!important}.pt8{padding-top:8px!important}.pt10{padding-top:10px!important}.pt15{padding-top:15px!important}.pt16{padding-top:16px!important}.pl15{padding-left:15px!important}.pl0{padding-left:0!important}.pr0{padding-right:0!important}.pr15{padding-right:15px!important}.fs12{font-size:12px}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs22{font-size:22px!important}.fw500{font-weight:500!important}.italic-text{font-style:italic}.display-flex{display:flex}.qmsckeditor{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.qmsckeditor h2{font-size:20px;font-weight:400}.qmsckeditor .mat-dialog-content{padding:0}.qmsckeditor .mat-icon{color:#909497}.qmsckeditor__fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;max-height:100vh;overflow-x:hidden}.qmsckeditor__cursor{cursor:pointer}.qmsckeditor__notallowed{cursor:not-allowed}.qmsckeditor.button__close,.qmsckeditor.button__done{float:right;top:-24px;right:-24px;cursor:pointer}.qmsckeditor.button__done{margin-right:20px}.qmsckeditor.button__done .mat-icon{color:#28a745;font-weight:700}.qmsckeditor.button__groups button{min-height:40px;width:100%;border-radius:4px;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px}.qmsckeditor.button__groups .save{background:#f8f9f9}.qmsckeditor.button__groups .save:hover{background:#e5e7e9}.qmsckeditor.button__groups .save:disabled{cursor:not-allowed}.qmsckeditor.button__groups .cancel{background:#f8f9f9}.qmsckeditor.button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.button__groups .cancel:disabled{cursor:not-allowed}.qmsckeditor.button__groups .delete{background:#f8f9f9}.qmsckeditor.button__groups .delete:hover{background:#e5e7e9}.qmsckeditor.button__groups .delete:disabled{cursor:not-allowed}.qmsckeditor.confirm__button__groups button{min-height:36px;border-radius:4px;width:auto;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px}.qmsckeditor.confirm__button__groups .confirm{background:#f8f9f9}.qmsckeditor.confirm__button__groups .confirm:hover{background:#e5e7e9}.qmsckeditor.confirm__button__groups .cancel{background:#f8f9f9}.qmsckeditor.confirm__button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.template-content.height{min-height:420px;max-height:520px;overflow:auto}.qmsckeditor.template-content.title{margin-left:-9px}.qmsckeditor.link__content.height{min-height:400px;max-height:520px}.qmsckeditor.card{margin-bottom:10px;min-height:60px;box-shadow:none;border:1px solid #e5e5e5}.qmsckeditor.card .title{font-weight:700}.qmsckeditor.card .content{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.qmsckeditor.card .material-icons{font-size:20px}.qmsckeditor.tooltip-content.height{min-height:400px;max-height:472px;overflow:auto}.qmsckeditor.save__as__template.height{height:125px}.ck-content .ck-horizontal-line,.ck-content .page-break{width:100%}.ck-content hr{background:#ccc}.ck-font-size-dropdown .ck-dropdown__panel ul{max-height:320px;overflow-y:auto}.ck-font-size-dropdown .ck-dropdown__panel ul li .ck-fontsize-option .ck-button__label{line-height:50px}.qmsckeditor__loadtemplate__container .template-checkbox{padding-top:20px}.qmsckeditor__loadtemplate__container .option{padding-left:15px}"]
144
+ template: "<div id=\"qmsckeditor-load-template\" class=\"qmsckeditor qmsckeditor__loadtemplate__container\">\r\n <div id=\"qmsckeditor-load-template-header\">\r\n <span id=\"qmsckeditor-load-template-header_001\" mat-icon-button class=\"qmsckeditor button__close\"\r\n (click)=\"onCloseDialog()\">\r\n <mat-icon>close</mat-icon>\r\n </span>\r\n <div id=\"qmsckeditor-load-template-header_002\" mat-dialog-content>\r\n <h2 id=\"qmsckeditor-template_002_001\">\r\n {{ LANG.QMSCKEDITOR.CONTENT_TEMPLATE }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"load-template_002\">\r\n <div id=\"load-template_002_001\" class=\"title col-12 mt-3\">\r\n <h2 id=\"load-template_002_001_001\">\r\n {{ LANG.QMSCKEDITOR.CHOOSE_TEMPLATE }}\r\n </h2>\r\n </div>\r\n </div>\r\n <div id=\"qmsckeditor-load-template-content\" class=\"qmsckeditor template-content height\">\r\n <div id=\"qmsckeditor-load-template-content_003\" class=\"mt-1 pl-2 pr-2 ps-2 pe-2\">\r\n <mat-card class=\"qmsckeditor card col-12\" *ngFor=\"let template of templates\">\r\n <div class=\"row\">\r\n <div class=\"qmsckeditor__cursor col-2\"> \r\n <img class=\"image-template\" src=\"{{template.imageUrl}}\">\r\n </div>\r\n <div class=\"qmsckeditor__cursor col-8\" (click)=\"onSelectTemplate(template.id)\">\r\n <div class=\"col-12 pl-0 ps-0 title\">\r\n <span>{{ template.title }}</span>\r\n </div>\r\n <div class=\"col-12 pl-0 ps-0 content\">\r\n <span>{{ template.description }}</span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"enableEditTemplate\" class=\"qmsckeditor__cursor col-1\">\r\n <mat-icon (click)=\"onEditTemplate(template.id)\">edit</mat-icon>\r\n </div>\r\n <div *ngIf=\"enableEditTemplate\" class=\"qmsckeditor__cursor col-1\">\r\n <mat-icon (click)=\"onDeleteTemplate(template.id)\">delete</mat-icon>\r\n </div>\r\n </div>\r\n </mat-card>\r\n </div>\r\n </div>\r\n <div class=\"option\">\r\n <mat-checkbox qms-group-options [(ngModel)]=\"isReplace\" color=\"primary\">\r\n {{ LANG.QMSCKEDITOR.REPLACE_CONTENT }}\r\n </mat-checkbox>\r\n </div>\r\n</div>",
145
+ styles: [".mt5{margin-top:5px!important}.mt10{margin-top:10px!important}.mt7{margin-top:7px!important}.mt15{margin-top:15px!important}.mt20{margin-top:20px!important}.mt30{margin-top:30px!important}.mt40{margin-top:40px!important}.ml2{margin-left:2px!important}.ml3{margin-left:3px!important}.ml5{margin-left:5px!important}.ml15{margin-left:15px!important}.ml10{margin-left:10px!important}.ml12{margin-left:12px!important}.ml16{margin-left:16px!important}.ml-auto{margin-left:auto!important}.ml-25{margin-left:-25px!important}.mr5{margin-right:5px!important}.mr12{margin-right:12px!important}.mr15{margin-right:15px!important}.mb5{margin-bottom:5px!important}.mb10{margin-bottom:10px!important}.mb15{margin-bottom:15px!important}.pt8{padding-top:8px!important}.pt10{padding-top:10px!important}.pt15{padding-top:15px!important}.pt16{padding-top:16px!important}.pl15{padding-left:15px!important}.pl0{padding-left:0!important}.pr0{padding-right:0!important}.pr15{padding-right:15px!important}.fs12{font-size:12px}.fs14{font-size:14px!important}.fs16{font-size:16px!important}.fs22{font-size:22px!important}.fw500{font-weight:500!important}.italic-text{font-style:italic}.display-flex{display:flex}.qmsckeditor{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px;font-weight:400}.qmsckeditor h2{font-size:20px;font-weight:400}.qmsckeditor .mat-dialog-content{padding:0}.qmsckeditor .mat-icon{color:#909497}.qmsckeditor__fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background:#fff;overflow-y:auto;max-height:100vh;overflow-x:hidden}.qmsckeditor__cursor{cursor:pointer}.qmsckeditor__notallowed{cursor:not-allowed}.qmsckeditor.button__close,.qmsckeditor.button__done{float:right;top:-24px;right:-24px;cursor:pointer}.qmsckeditor.button__done{margin-right:20px}.qmsckeditor.button__done .mat-icon{color:#28a745;font-weight:700}.qmsckeditor.button__groups button{min-height:40px;width:100%;border-radius:4px;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px}.qmsckeditor.button__groups .save{background:#f8f9f9}.qmsckeditor.button__groups .save:hover{background:#e5e7e9}.qmsckeditor.button__groups .save:disabled{cursor:not-allowed}.qmsckeditor.button__groups .cancel{background:#f8f9f9}.qmsckeditor.button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.button__groups .cancel:disabled{cursor:not-allowed}.qmsckeditor.button__groups .delete{background:#f8f9f9}.qmsckeditor.button__groups .delete:hover{background:#e5e7e9}.qmsckeditor.button__groups .delete:disabled{cursor:not-allowed}.qmsckeditor.confirm__button__groups button{min-height:36px;border-radius:4px;width:auto;border:1px solid #c5c5c5;font-family:Open Sans;font-weight:600;font-size:14px;letter-spacing:1px;line-height:16px;padding-left:15px;padding-right:15px}.qmsckeditor.confirm__button__groups .confirm{background:#f8f9f9}.qmsckeditor.confirm__button__groups .confirm:hover{background:#e5e7e9}.qmsckeditor.confirm__button__groups .cancel{background:#f8f9f9}.qmsckeditor.confirm__button__groups .cancel:hover{background:#e5e7e9}.qmsckeditor.template-content.height{min-height:420px;max-height:520px;overflow:auto}.qmsckeditor.template-content.title{margin-left:-9px}.qmsckeditor.link__content.height{min-height:400px;max-height:520px}.qmsckeditor.card{margin-bottom:10px;min-height:60px;box-shadow:none;border:1px solid #e5e5e5}.qmsckeditor.card .title{font-weight:700}.qmsckeditor.card .content{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.qmsckeditor.card .material-icons{font-size:20px}.qmsckeditor.tooltip-content.height{min-height:400px;max-height:472px;overflow:auto}.qmsckeditor.save__as__template.height{height:125px}.ck-content .ck-horizontal-line,.ck-content .page-break{width:100%}.ck-content hr{background:#ccc}.ck-font-size-dropdown .ck-dropdown__panel ul{max-height:320px;overflow-y:auto}.ck-font-size-dropdown .ck-dropdown__panel ul li .ck-fontsize-option .ck-button__label{line-height:50px}.qmsckeditor__loadtemplate__container .template-checkbox{padding-top:20px}.qmsckeditor__loadtemplate__container .option{padding-left:15px}.qmsckeditor__loadtemplate__container .image-template{width:100%;height:100%}"]
141
146
  },] }
142
147
  ];
143
148
  QMSCKEditorLoadTemplateComponent.ctorParameters = () => [
@@ -146,9 +151,9 @@ QMSCKEditorLoadTemplateComponent.ctorParameters = () => [
146
151
  { type: QMSCKEditorTemplateService },
147
152
  { type: QMSCKEditorCommonService },
148
153
  { type: MatDialogRef },
149
- { type: String, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
154
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
150
155
  ];
151
156
  QMSCKEditorLoadTemplateComponent.propDecorators = {
152
157
  ckEditor: [{ type: Input }]
153
158
  };
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWxvYWQtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1sb2FkLXRlbXBsYXRlL3Ftcy1ja2VkaXRvci1sb2FkLXRlbXBsYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBT3hHLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSx3QkFBd0I7SUFNMUUsWUFDWSxNQUFpQixFQUNqQixTQUFrQyxFQUNsQyxlQUEyQyxFQUMzQyxhQUF1QyxFQUN4QyxTQUF5RCxFQUNoQyxJQUFZO1FBRTVDLEtBQUssRUFBRSxDQUFDO1FBUEEsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUF5QjtRQUNsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBNEI7UUFDM0Msa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3hDLGNBQVMsR0FBVCxTQUFTLENBQWdEO1FBQ2hDLFNBQUksR0FBSixJQUFJLENBQVE7UUFUbEQsY0FBUyxHQUEwQixFQUFFLENBQUM7UUFDdEMsY0FBUyxHQUFZLEtBQUssQ0FBQztJQVd6QixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNwRixJQUFJLEdBQUcsRUFBRTtnQkFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2pEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGFBQWE7UUFDVCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxlQUFlO2FBQ2YsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxRQUFRLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7YUFDN0I7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFSCxnQkFBZ0IsQ0FBQyxFQUFVO1FBQ3pCLE1BQU0sSUFBSSxHQUEwQixJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDO1FBQ3JFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQzlELEtBQUssRUFBRSxPQUFPO1lBQ2QsU0FBUyxFQUFFLE9BQU87WUFDbEIsSUFBSTtTQUNMLENBQUMsQ0FBQztRQUNILFNBQVM7YUFDTixXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUMzQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUNyQixDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDOUMsTUFBTSxNQUFNLEdBQUc7b0JBQ2IsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztpQkFDMUIsQ0FBQTtnQkFDQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQzthQUM1RTtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVDLGNBQWMsQ0FBQyxFQUFVO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDekMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxHQUF3QixJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDNUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQzdDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFO1lBQ2xFLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLE9BQU87WUFDZixJQUFJO1lBQ0osWUFBWSxFQUFFLElBQUk7U0FDckIsQ0FBQyxDQUFDO1FBQ0gsY0FBYyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzFELGNBQWM7YUFDVCxXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNsQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNsQixJQUFJLE1BQU0sRUFBRTtnQkFDUixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO2FBQzFEO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBVTtRQUN2QixNQUFNLElBQUksR0FBMEIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQztRQUNyRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUM1RCxLQUFLLEVBQUUsT0FBTztZQUNkLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLElBQUk7U0FDUCxDQUFDLENBQUM7UUFDSCxTQUFTO2FBQ0osV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLGVBQWU7cUJBQ2YsY0FBYyxDQUFDLEVBQUUsQ0FBQztxQkFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7cUJBQ2xDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNwQixJQUFJLFFBQVEsRUFBRTt3QkFDVixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFOzRCQUN6QyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO3dCQUN2QixDQUFDLENBQUMsQ0FBQzt3QkFDSCxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7NEJBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3lCQUNuQzt3QkFDRCx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ2xFO3lCQUFNO3dCQUNILHVCQUF1QixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztxQkFDdEU7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDVjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7O1lBdklKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxtakVBQTBEOzthQUU3RDs7O1lBaEJRLFNBQVM7WUFFVCx1QkFBdUI7WUFPdkIsMEJBQTBCO1lBRDFCLHdCQUF3QjtZQVJiLFlBQVk7eUNBNkJ2QixNQUFNLFNBQUMsZUFBZTs7O3VCQVgxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi1yZWdpc3RyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JEaWFsb2dEYXRhIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtY2tlZGl0b3ItZGlhbG9nLm1vZGVsJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZHVsZS9jb25maXJtL3Ftcy1ja2VkaXRvci1jb25maXJtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uL3RvYXN0L3Ftcy1ja2VkaXRvci10b2FzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUZW1wbGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy9xbXMtY2tlZGl0b3ItdGVtcGxhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9xbXMtY2tlZGl0b3ItYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckNvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZGl0b3ItY29tbW9uLnNlcnZpY2VzJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9xbXMtY2tlZHRpb3ItdGVtcGxhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuLi9xbXMtY2tlZGl0b3ItdGVtcGxhdGUvcW1zLWNrZWRpdG9yLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLXFtc2NrLWxvYWQtdGVtcGxhdGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Ftcy1ja2VkaXRvci1sb2FkLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Ftcy1ja2VkaXRvci1sb2FkLXRlbXBsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFFNU0NLRWRpdG9yTG9hZFRlbXBsYXRlQ29tcG9uZW50IGV4dGVuZHMgUU1TQ0tFZGl0b3JCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIGNrRWRpdG9yOiBhbnk7XHJcbiAgTEFORzogYW55O1xyXG4gIHRlbXBsYXRlczogUU1TQ0tFZGl0b3JUZW1wbGF0ZVtdID0gW107XHJcbiAgaXNSZXBsYWNlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB0ZW1wbGF0ZVNlcnZpY2U6IFFNU0NLRWRpdG9yVGVtcGxhdGVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogUU1TQ0tFZGl0b3JDb21tb25TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckxvYWRUZW1wbGF0ZUNvbXBvbmVudD4sXHJcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBzdHJpbmdcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuTEFORyA9IHRoaXMudHJhbnNsYXRlLmdldE9iamVjdExhbmcocmVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuZ2V0VGVtcGxhdGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsb3NlRGlhbG9nKCkge1xyXG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuY29tbW9uU2VydmljZS5nZXRTY3JvbGxUb3BDa2VkaXRvcih0aGlzLmNrRWRpdG9yKTtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xyXG4gICAgICAgIHRoaXMuY29tbW9uU2VydmljZS5zZXRTY3JvbGxUb3BFZGl0b3JDb250YWluZXIodGhpcy5ja0VkaXRvciwgc2Nyb2xsVG9wKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUZW1wbGF0ZSgpIHtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlU2VydmljZVxyXG4gICAgICAgICAgICAuZ2V0VGVtcGxhdGUoKVxyXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gIG9uU2VsZWN0VGVtcGxhdGUoaWQ6IG51bWJlcikge1xyXG4gICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgZGF0YS50aXRsZSA9IHRoaXMuTEFORy5RTVNDS0VESVRPUi5DSEFOR0VfVEVNUExBVEU7XHJcbiAgICBkYXRhLmNvbnRlbnQgPSB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0NIQU5HRV9URU1QTEFURTtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgIHdpZHRoOiAnNTAwcHgnLFxyXG4gICAgICBtaW5IZWlnaHQ6ICcxNzVweCcsXHJcbiAgICAgIGRhdGFcclxuICAgIH0pO1xyXG4gICAgZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy50ZW1wbGF0ZXMuZmluZEluZGV4KCh4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB4LmlkID09PSBpZDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMudGVtcGxhdGVzW2luZGV4XS5jb250ZW50O1xyXG4gICAgICAgICAgY29uc3QgZGV0YWlsID0ge1xyXG4gICAgICAgICAgICBjb250ZW50OiBjb250ZW50LFxyXG4gICAgICAgICAgICBpc1JlcGxhY2U6IHRoaXMuaXNSZXBsYWNlLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U2Nyb2xsVG9wQ2tlZGl0b3IodGhpcy5ja0VkaXRvcik7XHJcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGRldGFpbCk7XHJcbiAgICAgICAgICAgIHRoaXMuY29tbW9uU2VydmljZS5zZXRTY3JvbGxUb3BFZGl0b3JDb250YWluZXIodGhpcy5ja0VkaXRvciwgc2Nyb2xsVG9wKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgICBvbkVkaXRUZW1wbGF0ZShpZDogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRlbXBsYXRlcy5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IFFNU0NLRWRpdG9yVGVtcGxhdGUgPSBuZXcgUU1TQ0tFZGl0b3JUZW1wbGF0ZSgpO1xyXG4gICAgICAgIGRhdGEuaWQgPSB0aGlzLnRlbXBsYXRlc1tpbmRleF0uaWQ7XHJcbiAgICAgICAgZGF0YS5jb250ZW50ID0gdGhpcy50ZW1wbGF0ZXNbaW5kZXhdLmNvbnRlbnQ7XHJcbiAgICAgICAgZGF0YS5lZGl0ID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBkaWFsb2dUZW1wbGF0ZSA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JUZW1wbGF0ZUNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICB3aWR0aDogJzY1MHB4JyxcclxuICAgICAgICAgICAgaGVpZ2h0OiAnNTAwcHgnLFxyXG4gICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWVcclxuICAgICAgICB9KTtcclxuICAgICAgICBkaWFsb2dUZW1wbGF0ZS5jb21wb25lbnRJbnN0YW5jZS5ja0VkaXRvciA9IHRoaXMuY2tFZGl0b3I7XHJcbiAgICAgICAgZGlhbG9nVGVtcGxhdGVcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZXNbaW5kZXhdLnRpdGxlID0gcmVzdWx0LnRpdGxlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVzW2luZGV4XS5kZXNjcmlwdGlvbiA9IHJlc3VsdC5kZXNjcmlwdGlvbjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EZWxldGVUZW1wbGF0ZShpZDogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JEaWFsb2dEYXRhID0gbmV3IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSgpO1xyXG4gICAgICAgIGRhdGEudGl0bGUgPSB0aGlzLkxBTkcuUU1TQ0tFRElUT1IuREVMRVRFX1RFTVBMQVRFO1xyXG4gICAgICAgIGRhdGEuY29udGVudCA9IHRoaXMuTEFORy5RTVNDS0VESVRPUl9NRVNTQUdFLkNPTkZJUk1fREVMRVRFX1RFTVBMQVRFO1xyXG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oUU1TQ0tFZGl0b3JDb25maXJtQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiAnNTAwcHgnLFxyXG4gICAgICAgICAgICBtaW5IZWlnaHQ6ICcxNzVweCcsXHJcbiAgICAgICAgICAgIGRhdGFcclxuICAgICAgICB9KTtcclxuICAgICAgICBkaWFsb2dSZWZcclxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmRlbGV0ZVRlbXBsYXRlKGlkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRlbXBsYXRlcy5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlLnN1Y2Nlc3ModGhpcy5MQU5HLlFNU0NLRURJVE9SLkRFTEVURUQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTVNDS0VkaXRvclRvYXN0U2VydmljZS5lcnJvcih0aGlzLkxBTkcuUU1TQ0tFRElUT1IuREVMRVRFX0ZBSUxFRCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW1zLWNrZWRpdG9yLWxvYWQtdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9xbXMtY2tlZGl0b3ItY29tcG9uZW50cy9jb21wb25lbnRzL3Ftcy1ja2VkaXRvci1sb2FkLXRlbXBsYXRlL3Ftcy1ja2VkaXRvci1sb2FkLXRlbXBsYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBT3hHLE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSx3QkFBd0I7SUFRMUUsWUFDWSxNQUFpQixFQUNqQixTQUFr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Q29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMaWJyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlZ2lzdHJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckRpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL3Ftcy1ja2VkaXRvci1kaWFsb2cubW9kZWwnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvckNvbmZpcm1Db21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21tb24vbW9kdWxlL2NvbmZpcm0vcW1zLWNrZWRpdG9yLWNvbmZpcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vdG9hc3QvcW1zLWNrZWRpdG9yLXRvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRlbXBsYXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3Ftcy1ja2VkaXRvci10ZW1wbGF0ZS5tb2RlbCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3Ftcy1ja2VkaXRvci1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFFNU0NLRWRpdG9yQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkaXRvci1jb21tb24uc2VydmljZXMnO1xyXG5pbXBvcnQgeyBRTVNDS0VkaXRvclRlbXBsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Ftcy1ja2VkdGlvci10ZW1wbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUU1TQ0tFZGl0b3JUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4uL3Ftcy1ja2VkaXRvci10ZW1wbGF0ZS9xbXMtY2tlZGl0b3ItdGVtcGxhdGUuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtcW1zY2stbG9hZC10ZW1wbGF0ZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcW1zLWNrZWRpdG9yLWxvYWQtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcW1zLWNrZWRpdG9yLWxvYWQtdGVtcGxhdGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUU1TQ0tFZGl0b3JMb2FkVGVtcGxhdGVDb21wb25lbnQgZXh0ZW5kcyBRTVNDS0VkaXRvckJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgY2tFZGl0b3I6IGFueTtcclxuICAgIExBTkc6IGFueTtcclxuICAgIHRlbXBsYXRlczogUU1TQ0tFZGl0b3JUZW1wbGF0ZVtdID0gW107XHJcbiAgICBpc1JlcGxhY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGVuYWJsZUVkaXRUZW1wbGF0ZT86IGJvb2xlYW47XHJcbiAgICBzdHJlYW1faW1hZ2UgPSBcIi9zdHJlYW1faW1hZ2UuYXNweD9pRW50aXR5SWQ9XCI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlTGlicmFyeVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSB0ZW1wbGF0ZVNlcnZpY2U6IFFNU0NLRWRpdG9yVGVtcGxhdGVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogUU1TQ0tFZGl0b3JDb21tb25TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxRTVNDS0VkaXRvckxvYWRUZW1wbGF0ZUNvbXBvbmVudD4sXHJcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnlcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5lbmFibGVFZGl0VGVtcGxhdGUgPSBkYXRhLmVuYWJsZUVkaXRUZW1wbGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXRMYW5ndWFnZVN1YmplY3QkLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YmNyaWJlKSkuc3Vic2NyaWJlKChyZXMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5MQU5HID0gdGhpcy50cmFuc2xhdGUuZ2V0T2JqZWN0TGFuZyhyZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRUZW1wbGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xvc2VEaWFsb2coKSB7XHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldFNjcm9sbFRvcENrZWRpdG9yKHRoaXMuY2tFZGl0b3IpO1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy5jb21tb25TZXJ2aWNlLnNldFNjcm9sbFRvcEVkaXRvckNvbnRhaW5lcih0aGlzLmNrRWRpdG9yLCBzY3JvbGxUb3ApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRlbXBsYXRlKCkge1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlXHJcbiAgICAgICAgICAgIC5nZXRUZW1wbGF0ZSgpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IHJlc3BvbnNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVzLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pbWFnZVVybCA9IHRoaXMuc3RyZWFtX2ltYWdlICsgKGl0ZW0uaW1hZ2VJZCA+IDAgPyBpdGVtLmltYWdlSWQudG9TdHJpbmcoKSA6ICcwJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0VGVtcGxhdGUoaWQ6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSA9IG5ldyBRTVNDS0VkaXRvckRpYWxvZ0RhdGEoKTtcclxuICAgICAgICBkYXRhLnRpdGxlID0gdGhpcy5MQU5HLlFNU0NLRURJVE9SLkNIQU5HRV9URU1QTEFURTtcclxuICAgICAgICBkYXRhLmNvbnRlbnQgPSB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0NIQU5HRV9URU1QTEFURTtcclxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnMTc1cHgnLFxyXG4gICAgICAgICAgICBkYXRhXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZGlhbG9nUmVmXHJcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy50ZW1wbGF0ZXMuZmluZEluZGV4KCh4KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB4LmlkID09PSBpZDtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50ID0gdGhpcy50ZW1wbGF0ZXNbaW5kZXhdLmh0bWw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGV0YWlsID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBjb250ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1JlcGxhY2U6IHRoaXMuaXNSZXBsYWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLmNvbW1vblNlcnZpY2UuZ2V0U2Nyb2xsVG9wQ2tlZGl0b3IodGhpcy5ja0VkaXRvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZGV0YWlsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1vblNlcnZpY2Uuc2V0U2Nyb2xsVG9wRWRpdG9yQ29udGFpbmVyKHRoaXMuY2tFZGl0b3IsIHNjcm9sbFRvcCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRWRpdFRlbXBsYXRlKGlkOiBudW1iZXIpIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMudGVtcGxhdGVzLmZpbmRJbmRleCgoeCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4geC5pZCA9PT0gaWQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgZGF0YTogUU1TQ0tFZGl0b3JUZW1wbGF0ZSA9IG5ldyBRTVNDS0VkaXRvclRlbXBsYXRlKCk7XHJcbiAgICAgICAgZGF0YS5pZCA9IHRoaXMudGVtcGxhdGVzW2luZGV4XS5pZDtcclxuICAgICAgICBkYXRhLmh0bWwgPSB0aGlzLnRlbXBsYXRlc1tpbmRleF0uaHRtbDtcclxuICAgICAgICBkYXRhLmVkaXQgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGRpYWxvZ1RlbXBsYXRlID0gdGhpcy5kaWFsb2cub3BlbihRTVNDS0VkaXRvclRlbXBsYXRlQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIHdpZHRoOiAnNjUwcHgnLFxyXG4gICAgICAgICAgICBoZWlnaHQ6ICc1NDBweCcsXHJcbiAgICAgICAgICAgIGRhdGE6IHsgdGVtcGxhdGU6IGRhdGEgfSxcclxuICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZGlhbG9nVGVtcGxhdGUuY29tcG9uZW50SW5zdGFuY2UuY2tFZGl0b3IgPSB0aGlzLmNrRWRpdG9yO1xyXG4gICAgICAgIGRpYWxvZ1RlbXBsYXRlXHJcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVzW2luZGV4XS50aXRsZSA9IHJlc3VsdC50aXRsZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlc1tpbmRleF0uZGVzY3JpcHRpb24gPSByZXN1bHQuZGVzY3JpcHRpb247XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRGVsZXRlVGVtcGxhdGUoaWQ6IG51bWJlcikge1xyXG4gICAgICAgIGNvbnN0IGRhdGE6IFFNU0NLRWRpdG9yRGlhbG9nRGF0YSA9IG5ldyBRTVNDS0VkaXRvckRpYWxvZ0RhdGEoKTtcclxuICAgICAgICBkYXRhLnRpdGxlID0gdGhpcy5MQU5HLlFNU0NLRURJVE9SLkRFTEVURV9URU1QTEFURTtcclxuICAgICAgICBkYXRhLmNvbnRlbnQgPSB0aGlzLkxBTkcuUU1TQ0tFRElUT1JfTUVTU0FHRS5DT05GSVJNX0RFTEVURV9URU1QTEFURTtcclxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFFNU0NLRWRpdG9yQ29uZmlybUNvbXBvbmVudCwge1xyXG4gICAgICAgICAgICB3aWR0aDogJzUwMHB4JyxcclxuICAgICAgICAgICAgbWluSGVpZ2h0OiAnMTc1cHgnLFxyXG4gICAgICAgICAgICBkYXRhXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZGlhbG9nUmVmXHJcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJjcmliZSkpXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC5kZWxldGVUZW1wbGF0ZShbaWRdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3ViY3JpYmUpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRlbXBsYXRlcy5maW5kSW5kZXgoKHgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcGxhdGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNU0NLRWRpdG9yVG9hc3RTZXJ2aWNlLnN1Y2Nlc3ModGhpcy5MQU5HLlFNU0NLRURJVE9SLkRFTEVURUQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTVNDS0VkaXRvclRvYXN0U2VydmljZS5lcnJvcih0aGlzLkxBTkcuUU1TQ0tFRElUT1IuREVMRVRFX0ZBSUxFRCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=