sidesys-generic-ui 0.0.26 → 0.0.27-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/esm2022/lib/avatar/s-avatar.component.mjs +1 -1
  2. package/esm2022/lib/badge/s-badge.component.mjs +1 -1
  3. package/esm2022/lib/breadcrum/s-breadcrum.component.mjs +1 -1
  4. package/esm2022/lib/card/s-card.component.mjs +1 -1
  5. package/esm2022/lib/checkbox/s-checkbox.component.mjs +3 -3
  6. package/esm2022/lib/content/s-content.component.mjs +7 -4
  7. package/esm2022/lib/footer/s-footer.component.mjs +8 -3
  8. package/esm2022/lib/form/s-form.component.mjs +1 -1
  9. package/esm2022/lib/icon-material/index.mjs +2 -1
  10. package/esm2022/lib/icon-material/s-icon-material.component.mjs +6 -3
  11. package/esm2022/lib/icon-material/s-icon-material.model.mjs +3 -0
  12. package/esm2022/lib/input/components/calendar/s-calendar.component.mjs +136 -0
  13. package/esm2022/lib/input/components/color/s-color.component.mjs +119 -0
  14. package/esm2022/lib/input/components/error-control/s-error-control.component.mjs +3 -3
  15. package/esm2022/lib/input/components/input/s-input.component.mjs +116 -0
  16. package/esm2022/lib/input/components/input-number/s-input-number.component.mjs +228 -0
  17. package/esm2022/lib/input/components/input-text/s-input-text.component.mjs +7 -9
  18. package/esm2022/lib/input/components/input-textarea/s-input-textarea.component.mjs +17 -21
  19. package/esm2022/lib/input/components/range/s-range.component.mjs +177 -0
  20. package/esm2022/lib/input/components/time/s-time.component.mjs +129 -0
  21. package/esm2022/lib/input/components/validation-error/s-validation-error.component.mjs +33 -0
  22. package/esm2022/lib/input/directives/control-value-accessor.directive.mjs +69 -0
  23. package/esm2022/lib/input/enums/icon-theme.enum.mjs +8 -0
  24. package/esm2022/lib/input/enums/theme.emun.mjs +8 -0
  25. package/esm2022/lib/input/index.mjs +10 -1
  26. package/esm2022/lib/input/input.module.mjs +40 -5
  27. package/esm2022/lib/list/s-list.component.mjs +1 -1
  28. package/esm2022/lib/list-simple/s-list-simple.component.mjs +2 -2
  29. package/esm2022/lib/login/s-login.component.mjs +2 -2
  30. package/esm2022/lib/navbar/components/icon-menu/components/s-notificaction.component.mjs +1 -1
  31. package/esm2022/lib/navbar/components/icon-menu/s-icon-menu.component.mjs +1 -1
  32. package/esm2022/lib/navbar/components/menu-main/s-menu-main.component.mjs +1 -1
  33. package/esm2022/lib/navbar/s-navbar.component.mjs +2 -2
  34. package/esm2022/lib/pagination/s-pagination.component.mjs +17 -4
  35. package/esm2022/lib/popup/s-popup.component.mjs +3 -3
  36. package/esm2022/lib/precode/s-precode.component.mjs +11 -5
  37. package/esm2022/lib/progressbar/s-progressbar.component.mjs +2 -2
  38. package/esm2022/lib/radio/s-radio.component.mjs +8 -9
  39. package/esm2022/lib/select/select-multiple/s-select-multiple.component.mjs +16 -7
  40. package/esm2022/lib/select/select-simple/s-select-simple.component.mjs +14 -6
  41. package/esm2022/lib/sidebar/components/s-menu-item.component.mjs +43 -0
  42. package/esm2022/lib/sidebar/index.mjs +2 -1
  43. package/esm2022/lib/sidebar/s-sidebar-model.mjs +1 -1
  44. package/esm2022/lib/sidebar/s-sidebar.component.mjs +49 -12
  45. package/esm2022/lib/sidebar/s-sidebar.module.mjs +8 -5
  46. package/esm2022/lib/sub-menu/s-sub-menu.component.mjs +1 -1
  47. package/esm2022/lib/tabs/s-tabs.component.mjs +1 -1
  48. package/esm2022/lib/theme/s-theme.component.mjs +2 -2
  49. package/esm2022/lib/toast/s-toast.component.mjs +1 -1
  50. package/esm2022/lib/toggle-switch/s-toggle-switch.component.mjs +1 -1
  51. package/esm2022/lib/tree-list/s-tree-list.component.mjs +1 -1
  52. package/fesm2022/sidesys-generic-ui.mjs +1253 -141
  53. package/fesm2022/sidesys-generic-ui.mjs.map +1 -1
  54. package/lib/content/s-content.component.d.ts +2 -1
  55. package/lib/footer/s-footer.component.d.ts +2 -1
  56. package/lib/icon-material/index.d.ts +1 -0
  57. package/lib/icon-material/s-icon-material.component.d.ts +11 -9
  58. package/lib/icon-material/s-icon-material.model.d.ts +11 -0
  59. package/lib/input/components/calendar/s-calendar.component.d.ts +41 -0
  60. package/lib/input/components/color/s-color.component.d.ts +40 -0
  61. package/lib/input/components/error-control/s-error-control.component.d.ts +1 -1
  62. package/lib/input/components/input/s-input.component.d.ts +72 -0
  63. package/lib/input/components/input-number/s-input-number.component.d.ts +69 -0
  64. package/lib/input/components/input-textarea/s-input-textarea.component.d.ts +6 -7
  65. package/lib/input/components/range/s-range.component.d.ts +44 -0
  66. package/lib/input/components/time/s-time.component.d.ts +36 -0
  67. package/lib/input/components/validation-error/s-validation-error.component.d.ts +11 -0
  68. package/lib/input/directives/control-value-accessor.directive.d.ts +21 -0
  69. package/lib/input/enums/icon-theme.enum.d.ts +6 -0
  70. package/lib/input/enums/theme.emun.d.ts +6 -0
  71. package/lib/input/index.d.ts +9 -0
  72. package/lib/input/input.module.d.ts +12 -5
  73. package/lib/pagination/s-pagination.component.d.ts +5 -1
  74. package/lib/precode/s-precode.component.d.ts +3 -1
  75. package/lib/radio/s-radio.component.d.ts +1 -1
  76. package/lib/select/select-multiple/s-select-multiple.component.d.ts +1 -0
  77. package/lib/sidebar/components/s-menu-item.component.d.ts +16 -0
  78. package/lib/sidebar/index.d.ts +1 -0
  79. package/lib/sidebar/s-sidebar-model.d.ts +14 -2
  80. package/lib/sidebar/s-sidebar.component.d.ts +13 -9
  81. package/lib/sidebar/s-sidebar.module.d.ts +7 -6
  82. package/package.json +1 -1
@@ -243,12 +243,10 @@ export class SInputTextComponent {
243
243
  //FIN FUNCIONES PARA TYPE RANGE
244
244
  //FUNCIONES PARA QUE FUNCIONE FORM BUILDER
245
245
  writeValue(value) {
246
- if (value) {
247
- this.inputText = value;
248
- this.inputNumber = value;
249
- if (this.type == 'range') {
250
- this.rangeOnLoad();
251
- }
246
+ this.inputText = value ?? "";
247
+ this.inputNumber = value ?? 0;
248
+ if (this.type == 'range') {
249
+ this.rangeOnLoad();
252
250
  }
253
251
  }
254
252
  registerOnChange(fn) {
@@ -270,7 +268,7 @@ export class SInputTextComponent {
270
268
  useExisting: forwardRef(() => SInputTextComponent),
271
269
  multi: true
272
270
  }
273
- ], viewQueries: [{ propertyName: "typeNumber", first: true, predicate: ["typeNumber"], descendants: true }, { propertyName: "tooltipContainer", first: true, predicate: ["tooltipContainer"], descendants: true }, { propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\r\n <!-- El switch case con cada caso por input ['text', 'password', 'email' , 'phone' , 'url' , 'search']-->\r\n\r\n <!-- case text -->\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <!-- <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">email</s-icon-mat>\r\n </div> -->\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [id]=\"id\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\"\r\n [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\"\r\n >\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case password -->\r\n <ng-container *ngSwitchCase=\"'password'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-password {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">vpn_key</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n type=\"{{visibility ? 'text' : 'password'}}\" \r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\r\n \">\r\n </div>\r\n <div class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon cursor\"\r\n (click)=\"visibility = !visibility\">{{visibility ? 'visibility' :\r\n 'visibility_off'}}</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case email -->\r\n <ng-container *ngSwitchCase=\"'email'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-email {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">mail_outline</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case phone -->\r\n <ng-container *ngSwitchCase=\"'phone'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-phone {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">phone</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case url -->\r\n <ng-container *ngSwitchCase=\"'url'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-url {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n http://\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case search -->\r\n <ng-container *ngSwitchCase=\"'search'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-search {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">search</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <!-- <div class=\"content-right\">\r\n <s-icon-mat class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case color -->\r\n <ng-container *ngSwitchCase=\"'color'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-color {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <input [readOnly]=\"readOnly\" #color [id]=\"name\" [name]=\"name\" type=\"color\" [disabled]=\"disabled\" [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\" style=\"width: 40px; padding: 0;\">\r\n </div>\r\n <div class=\"content-center\" (click)=\"!this.readOnly ? this.color.click() : null\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [type]=\"text\" \r\n autocomplete=\"off\" \r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n [disabled]=\"disabled\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n (ngModelChange)=\"onTextChangeVal($event)\"\r\n [ngModel]=\"inputText\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case time -->\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n (ngModelChange)=\"onTextChangeVal($event)\"\r\n [ngModel]=\"inputText\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div class=\"d-flex align-center\">\r\n <div class=\"content-left mr-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberDecrease()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>remove</s-icon-mat></s-button>\r\n </div>\r\n <div class=\"content-input-main-626 content-input-main-text content-input-main-number {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}} w-100\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n #typeNumber \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\"\r\n [max]=\"max\"\r\n [min]=\"min\"\r\n [step]=\"step\"\r\n >\r\n </div>\r\n\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n <div class=\"content-left ml-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberIncrement()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>add</s-icon-mat></s-button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case range -->\r\n <ng-container *ngSwitchCase=\"'range'\">\r\n <div class=\"content-input-main-range {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"tooltip tooltip-{{disabled}}\" #tooltipContainer>\r\n <input\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n #rangeField\r\n [readOnly]=\"readOnly\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [id]=\"id\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\"\r\n [(ngModel)]=\"inputText\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [step]=\"step\"\r\n (mousemove)=\"changeRange(rangeField.value)\"\r\n (ngModelChange)=\"onTextChange()\"\r\n (input)=\"updateTooltip(rangeField.value)\"\r\n >\r\n <span class=\"tooltiptext\" #tooltip>{{ tooltipValue }}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case default -->\r\n <ng-container *ngSwitchDefault>\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <!-- <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">email</s-icon-mat>\r\n </div> -->\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : 'generic'\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</ng-container>", styles: [".content-input-main-626:has(input:focus){border:1px solid var(--primary-600);box-shadow:0 0 0 4px #0091fe26,0 1px 2px #1018280d}.content-input-main-626.theme-green:has(input:focus){border:1px solid var(--green-500);box-shadow:0 0 0 4px #36b37e26,0 1px 2px #1018280d}.content-input-main-626.theme-yellow:has(input:focus){border:1px solid var(--yellow-500);box-shadow:0 0 0 4px #ffab0026,0 1px 2px #1018280d}.content-input-main-626.theme-red:has(input:focus){border:1px solid var(--red-500);box-shadow:0 0 0 4px #ff563026,0 1px 2px #1018280d}.content-input-main-626.sm input{height:22px;font-size:.75rem}.content-input-main-626.sm .icon{width:20px;cursor:default}.content-input-main-626.sm .icon span{font-size:1.2em;display:flex}.content-input-main-626{display:flex;border:1px solid var(--primary-500);border-radius:4px;padding:0 8px;margin:3px 0;background-color:var(--neutrals-1200)}.content-input-main-626 input{width:100%;border:0px;color:var(--secondary-600);writing-mode:unset;height:36px;font-size:inherit;background-color:var(--neutrals-1200)}.content-input-main-626 input:focus,.content-input-main-626 input:focus-visible{outline:none}.content-input-main-626 .icon{width:20px;cursor:default}.content-input-main-626 .icon span{display:flex}.content-input-main-626 .content-center{width:100%;background-color:var(--neutrals-1200)}.content-input-main-626 .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:8px;color:var(--primary-600)}.content-input-main-626 .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:8px;color:var(--secondary-600)}.content-input-main-626.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800)}.content-input-main-626.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.content-input-main-626.disabled-active .content-left{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active.content-input-main-url .content-left,.content-input-main-626.disabled-active.content-input-main-color .content-left{color:var(--neutrals-800)!important;border-right:1px solid var(--neutrals-900)}.content-input-main-626.theme-red{border:1px solid var(--red-500)}.content-input-main-626.theme-red .icon.report span{color:var(--red-600)}.content-input-main-626.theme-green{border:1px solid var(--green-500)}.content-input-main-626.theme-green .icon.report span{color:var(--green-600)}.content-input-main-626.theme-yellow{border:1px solid var(--yellow-500)}.content-input-main-626.theme-yellow .icon.report span{color:var(--yellow-600)}.content-input-main-626.content-input-main-password .content-right .icon span{color:var(--secondary-500)}.content-input-main-url .content-left,.content-input-main-color .content-left{border-right:1px solid var(--secondary-500);padding-right:8px;color:var(--secondary-500);font-size:.9rem;padding-left:8px}.content-input-main-url,.content-input-main-color{padding-left:0}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--neutrals-1200) inset!important}.content-input-main-626.content-input-main-number input::-webkit-outer-spin-button,.content-input-main-626.content-input-main-number input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.content-input-main-626.content-input-main-number input[type=number]{-moz-appearance:textfield}.button-input-626{font-size:15px;font-weight:700}.content-input-main-range input{width:100%;height:36px;margin:0;-webkit-appearance:none}.content-input-main-range input[type=range]::-webkit-slider-runnable-track{border-radius:4px;height:8px}.content-input-main-range input[type=range]::-moz-range-track{-webkit-appearance:none;appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-track{-webkit-appearance:none;appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-moz-range-progress{-webkit-appearance:none;appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-fill-upper{-webkit-appearance:none;appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-webkit-slider-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200);margin-top:-8px}.content-input-main-range input[type=range]::-moz-range-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-ms-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-moz-range-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-ms-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-moz-range-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-ms-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]:disabled{filter:grayscale(1);opacity:.3;cursor:not-allowed}.tooltip{position:relative;display:inline-block;cursor:pointer;width:100%}.tooltip .tooltiptext{visibility:hidden;width:40px;background-color:var(--neutrals-1200);color:var(--secondary-600);font-weight:700;font-size:12px;text-align:center;border-radius:4px;padding:5px;position:absolute;z-index:1;bottom:100%;left:550%;transform:translate(-50%);box-shadow:0 0 16px #17386129}.tooltip-false:hover .tooltiptext{visibility:visible}.tooltip .tooltiptext:before{content:\"\";position:absolute!important;transform:rotate(45deg);height:10px;width:10px;bottom:-5px;background-color:var(--neutrals-1200);box-shadow:0 0 16px #17386129;left:40%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SIconMaterialComponent, selector: "s-icon-mat", inputs: ["size", "color", "fill", "weight", "grade", "opticalSize", "style", "type"] }, { kind: "component", type: i4.SButtonComponent, selector: "s-button", inputs: ["disabled", "pill", "size", "invert", "type", "loading", "position", "theme"] }], encapsulation: i0.ViewEncapsulation.None }); }
271
+ ], viewQueries: [{ propertyName: "typeNumber", first: true, predicate: ["typeNumber"], descendants: true }, { propertyName: "tooltipContainer", first: true, predicate: ["tooltipContainer"], descendants: true }, { propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\r\n <!-- El switch case con cada caso por input ['text', 'password', 'email' , 'phone' , 'url' , 'search']-->\r\n\r\n <!-- case text -->\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <!-- <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">email</s-icon-mat>\r\n </div> -->\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [id]=\"id\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\"\r\n [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\"\r\n >\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case password -->\r\n <ng-container *ngSwitchCase=\"'password'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-password {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">vpn_key</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n type=\"{{visibility ? 'text' : 'password'}}\" \r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\r\n \">\r\n </div>\r\n <div class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon cursor\"\r\n (click)=\"visibility = !visibility\">{{visibility ? 'visibility' :\r\n 'visibility_off'}}</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case email -->\r\n <ng-container *ngSwitchCase=\"'email'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-email {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">mail_outline</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case phone -->\r\n <ng-container *ngSwitchCase=\"'phone'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-phone {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">phone</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case url -->\r\n <ng-container *ngSwitchCase=\"'url'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-url {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n http://\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case search -->\r\n <ng-container *ngSwitchCase=\"'search'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-search {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">search</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <!-- <div class=\"content-right\">\r\n <s-icon-mat class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case color -->\r\n <ng-container *ngSwitchCase=\"'color'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-color {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <input [readOnly]=\"readOnly\" #color [id]=\"name\" [name]=\"name\" type=\"color\" [disabled]=\"disabled\" [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\" style=\"width: 40px; padding: 0;\">\r\n </div>\r\n <div class=\"content-center\" (click)=\"!this.readOnly ? this.color.click() : null\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [type]=\"text\" \r\n autocomplete=\"off\" \r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n [disabled]=\"disabled\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n (ngModelChange)=\"onTextChangeVal($event)\"\r\n [ngModel]=\"inputText\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case time -->\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n (ngModelChange)=\"onTextChangeVal($event)\"\r\n [ngModel]=\"inputText\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div class=\"d-flex align-center\">\r\n <div class=\"content-left mr-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberDecrease()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>remove</s-icon-mat></s-button>\r\n </div>\r\n <div class=\"content-input-main-626 content-input-main-text content-input-main-number {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}} w-100\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n #typeNumber \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\"\r\n [max]=\"max\"\r\n [min]=\"min\"\r\n [step]=\"step\"\r\n >\r\n </div>\r\n\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n <div class=\"content-left ml-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberIncrement()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>add</s-icon-mat></s-button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case range -->\r\n <ng-container *ngSwitchCase=\"'range'\">\r\n <div class=\"content-input-main-range {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"tooltip tooltip-{{disabled}}\" #tooltipContainer>\r\n <input\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n #rangeField\r\n [readOnly]=\"readOnly\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [id]=\"id\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\"\r\n [(ngModel)]=\"inputText\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [step]=\"step\"\r\n (mousemove)=\"changeRange(rangeField.value)\"\r\n (ngModelChange)=\"onTextChange()\"\r\n (input)=\"updateTooltip(rangeField.value)\"\r\n >\r\n <span class=\"tooltiptext\" #tooltip>{{ tooltipValue }}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case default -->\r\n <ng-container *ngSwitchDefault>\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <!-- <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">email</s-icon-mat>\r\n </div> -->\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : 'generic'\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</ng-container>", styles: [".content-input-main-626:has(input:focus){border:1px solid var(--primary-600);box-shadow:0 0 0 4px #0091fe26,0 1px 2px #1018280d}.content-input-main-626.theme-green:has(input:focus){border:1px solid var(--green-500);box-shadow:0 0 0 4px #36b37e26,0 1px 2px #1018280d}.content-input-main-626.theme-yellow:has(input:focus){border:1px solid var(--yellow-500);box-shadow:0 0 0 4px #ffab0026,0 1px 2px #1018280d}.content-input-main-626.theme-red:has(input:focus){border:1px solid var(--red-500);box-shadow:0 0 0 4px #ff563026,0 1px 2px #1018280d}.content-input-main-626.sm input{height:22px;font-size:.75rem}.content-input-main-626.sm .icon{width:20px;cursor:default}.content-input-main-626.sm .icon span{font-size:1.2em;display:flex}.content-input-main-626{display:flex;border:1px solid var(--primary-500);border-radius:4px;padding:0 8px;margin:3px 0;background-color:var(--neutrals-1200)}.content-input-main-626 input{width:100%;border:0px;color:var(--secondary-600);writing-mode:unset;height:36px;font-size:inherit;background-color:var(--neutrals-1200)}.content-input-main-626 input:focus,.content-input-main-626 input:focus-visible{outline:none}.content-input-main-626 .icon{width:20px;cursor:default}.content-input-main-626 .icon span{display:flex}.content-input-main-626 .content-center{width:100%;background-color:var(--neutrals-1200)}.content-input-main-626 .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:8px;color:var(--primary-600)}.content-input-main-626 .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:8px;color:var(--secondary-600)}.content-input-main-626.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800)}.content-input-main-626.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.content-input-main-626.disabled-active .content-left{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active.content-input-main-url .content-left,.content-input-main-626.disabled-active.content-input-main-color .content-left{color:var(--neutrals-800)!important;border-right:1px solid var(--neutrals-900)}.content-input-main-626.theme-red{border:1px solid var(--red-500)}.content-input-main-626.theme-red .icon.report span{color:var(--red-600)}.content-input-main-626.theme-green{border:1px solid var(--green-500)}.content-input-main-626.theme-green .icon.report span{color:var(--green-600)}.content-input-main-626.theme-yellow{border:1px solid var(--yellow-500)}.content-input-main-626.theme-yellow .icon.report span{color:var(--yellow-600)}.content-input-main-626.content-input-main-password .content-right .icon span{color:var(--secondary-500)}.content-input-main-url .content-left,.content-input-main-color .content-left{border-right:1px solid var(--secondary-500);padding-right:8px;color:var(--secondary-500);font-size:.9rem;padding-left:8px}.content-input-main-url,.content-input-main-color{padding-left:0}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--neutrals-1200) inset!important}.content-input-main-626.content-input-main-number input::-webkit-outer-spin-button,.content-input-main-626.content-input-main-number input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.content-input-main-626.content-input-main-number input[type=number]{-moz-appearance:textfield}.button-input-626{font-size:15px;font-weight:700}.content-input-main-range input{width:100%;height:36px;margin:0;-webkit-appearance:none}.content-input-main-range input[type=range]::-webkit-slider-runnable-track{border-radius:4px;height:8px}.content-input-main-range input[type=range]::-moz-range-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-moz-range-progress{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-fill-upper{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-webkit-slider-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200);margin-top:-8px}.content-input-main-range input[type=range]::-moz-range-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-ms-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-moz-range-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-ms-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-moz-range-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-ms-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]:disabled{filter:grayscale(1);opacity:.3;cursor:not-allowed}.tooltip{position:relative;display:inline-block;cursor:pointer;width:100%}.tooltip .tooltiptext{visibility:hidden;width:40px;background-color:var(--neutrals-1200);color:var(--secondary-600);font-weight:700;font-size:12px;text-align:center;border-radius:4px;padding:5px;position:absolute;z-index:1;bottom:100%;left:550%;transform:translate(-50%);box-shadow:0 0 16px #17386129}.tooltip-false:hover .tooltiptext{visibility:visible}.tooltip .tooltiptext:before{content:\"\";position:absolute!important;transform:rotate(45deg);height:10px;width:10px;bottom:-5px;background-color:var(--neutrals-1200);box-shadow:0 0 16px #17386129;left:40%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SIconMaterialComponent, selector: "s-icon-mat", inputs: ["name", "size", "color", "fill", "weight", "grade", "opticalSize", "style", "type"] }, { kind: "component", type: i4.SButtonComponent, selector: "s-button", inputs: ["disabled", "pill", "size", "invert", "type", "loading", "position", "theme"] }], encapsulation: i0.ViewEncapsulation.None }); }
274
272
  }
275
273
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: SInputTextComponent, decorators: [{
276
274
  type: Component,
@@ -280,7 +278,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImpor
280
278
  useExisting: forwardRef(() => SInputTextComponent),
281
279
  multi: true
282
280
  }
283
- ], template: "<ng-container [ngSwitch]=\"type\">\r\n <!-- El switch case con cada caso por input ['text', 'password', 'email' , 'phone' , 'url' , 'search']-->\r\n\r\n <!-- case text -->\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <!-- <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">email</s-icon-mat>\r\n </div> -->\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [id]=\"id\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\"\r\n [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\"\r\n >\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case password -->\r\n <ng-container *ngSwitchCase=\"'password'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-password {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">vpn_key</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n type=\"{{visibility ? 'text' : 'password'}}\" \r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\r\n \">\r\n </div>\r\n <div class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon cursor\"\r\n (click)=\"visibility = !visibility\">{{visibility ? 'visibility' :\r\n 'visibility_off'}}</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case email -->\r\n <ng-container *ngSwitchCase=\"'email'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-email {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">mail_outline</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case phone -->\r\n <ng-container *ngSwitchCase=\"'phone'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-phone {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">phone</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case url -->\r\n <ng-container *ngSwitchCase=\"'url'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-url {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n http://\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case search -->\r\n <ng-container *ngSwitchCase=\"'search'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-search {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">search</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <!-- <div class=\"content-right\">\r\n <s-icon-mat class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case color -->\r\n <ng-container *ngSwitchCase=\"'color'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-color {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <input [readOnly]=\"readOnly\" #color [id]=\"name\" [name]=\"name\" type=\"color\" [disabled]=\"disabled\" [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\" style=\"width: 40px; padding: 0;\">\r\n </div>\r\n <div class=\"content-center\" (click)=\"!this.readOnly ? this.color.click() : null\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [type]=\"text\" \r\n autocomplete=\"off\" \r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n [disabled]=\"disabled\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n (ngModelChange)=\"onTextChangeVal($event)\"\r\n [ngModel]=\"inputText\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case time -->\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n (ngModelChange)=\"onTextChangeVal($event)\"\r\n [ngModel]=\"inputText\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div class=\"d-flex align-center\">\r\n <div class=\"content-left mr-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberDecrease()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>remove</s-icon-mat></s-button>\r\n </div>\r\n <div class=\"content-input-main-626 content-input-main-text content-input-main-number {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}} w-100\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n #typeNumber \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\"\r\n [max]=\"max\"\r\n [min]=\"min\"\r\n [step]=\"step\"\r\n >\r\n </div>\r\n\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n <div class=\"content-left ml-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberIncrement()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>add</s-icon-mat></s-button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case range -->\r\n <ng-container *ngSwitchCase=\"'range'\">\r\n <div class=\"content-input-main-range {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"tooltip tooltip-{{disabled}}\" #tooltipContainer>\r\n <input\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n #rangeField\r\n [readOnly]=\"readOnly\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [id]=\"id\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\"\r\n [(ngModel)]=\"inputText\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [step]=\"step\"\r\n (mousemove)=\"changeRange(rangeField.value)\"\r\n (ngModelChange)=\"onTextChange()\"\r\n (input)=\"updateTooltip(rangeField.value)\"\r\n >\r\n <span class=\"tooltiptext\" #tooltip>{{ tooltipValue }}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case default -->\r\n <ng-container *ngSwitchDefault>\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <!-- <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">email</s-icon-mat>\r\n </div> -->\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : 'generic'\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</ng-container>", styles: [".content-input-main-626:has(input:focus){border:1px solid var(--primary-600);box-shadow:0 0 0 4px #0091fe26,0 1px 2px #1018280d}.content-input-main-626.theme-green:has(input:focus){border:1px solid var(--green-500);box-shadow:0 0 0 4px #36b37e26,0 1px 2px #1018280d}.content-input-main-626.theme-yellow:has(input:focus){border:1px solid var(--yellow-500);box-shadow:0 0 0 4px #ffab0026,0 1px 2px #1018280d}.content-input-main-626.theme-red:has(input:focus){border:1px solid var(--red-500);box-shadow:0 0 0 4px #ff563026,0 1px 2px #1018280d}.content-input-main-626.sm input{height:22px;font-size:.75rem}.content-input-main-626.sm .icon{width:20px;cursor:default}.content-input-main-626.sm .icon span{font-size:1.2em;display:flex}.content-input-main-626{display:flex;border:1px solid var(--primary-500);border-radius:4px;padding:0 8px;margin:3px 0;background-color:var(--neutrals-1200)}.content-input-main-626 input{width:100%;border:0px;color:var(--secondary-600);writing-mode:unset;height:36px;font-size:inherit;background-color:var(--neutrals-1200)}.content-input-main-626 input:focus,.content-input-main-626 input:focus-visible{outline:none}.content-input-main-626 .icon{width:20px;cursor:default}.content-input-main-626 .icon span{display:flex}.content-input-main-626 .content-center{width:100%;background-color:var(--neutrals-1200)}.content-input-main-626 .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:8px;color:var(--primary-600)}.content-input-main-626 .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:8px;color:var(--secondary-600)}.content-input-main-626.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800)}.content-input-main-626.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.content-input-main-626.disabled-active .content-left{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active.content-input-main-url .content-left,.content-input-main-626.disabled-active.content-input-main-color .content-left{color:var(--neutrals-800)!important;border-right:1px solid var(--neutrals-900)}.content-input-main-626.theme-red{border:1px solid var(--red-500)}.content-input-main-626.theme-red .icon.report span{color:var(--red-600)}.content-input-main-626.theme-green{border:1px solid var(--green-500)}.content-input-main-626.theme-green .icon.report span{color:var(--green-600)}.content-input-main-626.theme-yellow{border:1px solid var(--yellow-500)}.content-input-main-626.theme-yellow .icon.report span{color:var(--yellow-600)}.content-input-main-626.content-input-main-password .content-right .icon span{color:var(--secondary-500)}.content-input-main-url .content-left,.content-input-main-color .content-left{border-right:1px solid var(--secondary-500);padding-right:8px;color:var(--secondary-500);font-size:.9rem;padding-left:8px}.content-input-main-url,.content-input-main-color{padding-left:0}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--neutrals-1200) inset!important}.content-input-main-626.content-input-main-number input::-webkit-outer-spin-button,.content-input-main-626.content-input-main-number input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.content-input-main-626.content-input-main-number input[type=number]{-moz-appearance:textfield}.button-input-626{font-size:15px;font-weight:700}.content-input-main-range input{width:100%;height:36px;margin:0;-webkit-appearance:none}.content-input-main-range input[type=range]::-webkit-slider-runnable-track{border-radius:4px;height:8px}.content-input-main-range input[type=range]::-moz-range-track{-webkit-appearance:none;appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-track{-webkit-appearance:none;appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-moz-range-progress{-webkit-appearance:none;appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-fill-upper{-webkit-appearance:none;appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-webkit-slider-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200);margin-top:-8px}.content-input-main-range input[type=range]::-moz-range-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-ms-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-moz-range-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-ms-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-moz-range-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-ms-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]:disabled{filter:grayscale(1);opacity:.3;cursor:not-allowed}.tooltip{position:relative;display:inline-block;cursor:pointer;width:100%}.tooltip .tooltiptext{visibility:hidden;width:40px;background-color:var(--neutrals-1200);color:var(--secondary-600);font-weight:700;font-size:12px;text-align:center;border-radius:4px;padding:5px;position:absolute;z-index:1;bottom:100%;left:550%;transform:translate(-50%);box-shadow:0 0 16px #17386129}.tooltip-false:hover .tooltiptext{visibility:visible}.tooltip .tooltiptext:before{content:\"\";position:absolute!important;transform:rotate(45deg);height:10px;width:10px;bottom:-5px;background-color:var(--neutrals-1200);box-shadow:0 0 16px #17386129;left:40%}\n"] }]
281
+ ], template: "<ng-container [ngSwitch]=\"type\">\r\n <!-- El switch case con cada caso por input ['text', 'password', 'email' , 'phone' , 'url' , 'search']-->\r\n\r\n <!-- case text -->\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <!-- <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">email</s-icon-mat>\r\n </div> -->\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [id]=\"id\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\"\r\n [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\"\r\n >\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case password -->\r\n <ng-container *ngSwitchCase=\"'password'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-password {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">vpn_key</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n type=\"{{visibility ? 'text' : 'password'}}\" \r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\r\n \">\r\n </div>\r\n <div class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon cursor\"\r\n (click)=\"visibility = !visibility\">{{visibility ? 'visibility' :\r\n 'visibility_off'}}</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case email -->\r\n <ng-container *ngSwitchCase=\"'email'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-email {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">mail_outline</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case phone -->\r\n <ng-container *ngSwitchCase=\"'phone'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-phone {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">phone</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case url -->\r\n <ng-container *ngSwitchCase=\"'url'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-url {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n http://\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <!-- case search -->\r\n <ng-container *ngSwitchCase=\"'search'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-search {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">search</s-icon-mat>\r\n </div>\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <!-- <div class=\"content-right\">\r\n <s-icon-mat class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div> -->\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case color -->\r\n <ng-container *ngSwitchCase=\"'color'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-color {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-left\">\r\n <input [readOnly]=\"readOnly\" #color [id]=\"name\" [name]=\"name\" type=\"color\" [disabled]=\"disabled\" [(ngModel)]=\"inputText\"\r\n (ngModelChange)=\"onTextChange()\" style=\"width: 40px; padding: 0;\">\r\n </div>\r\n <div class=\"content-center\" (click)=\"!this.readOnly ? this.color.click() : null\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [type]=\"text\" \r\n autocomplete=\"off\" \r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n [disabled]=\"disabled\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n (ngModelChange)=\"onTextChangeVal($event)\"\r\n [ngModel]=\"inputText\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case time -->\r\n <ng-container *ngSwitchCase=\"'time'\">\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [id]=\"id ? id : ''\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n (ngModelChange)=\"onTextChangeVal($event)\"\r\n [ngModel]=\"inputText\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div class=\"d-flex align-center\">\r\n <div class=\"content-left mr-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberDecrease()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>remove</s-icon-mat></s-button>\r\n </div>\r\n <div class=\"content-input-main-626 content-input-main-text content-input-main-number {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}} w-100\">\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : ''\" \r\n #typeNumber \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\"\r\n [max]=\"max\"\r\n [min]=\"min\"\r\n [step]=\"step\"\r\n >\r\n </div>\r\n\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n <div class=\"content-left ml-1\">\r\n <s-button [disabled]=\"disabled\" (click)=\"numberIncrement()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>add</s-icon-mat></s-button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case range -->\r\n <ng-container *ngSwitchCase=\"'range'\">\r\n <div class=\"content-input-main-range {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <div class=\"tooltip tooltip-{{disabled}}\" #tooltipContainer>\r\n <input\r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n #rangeField\r\n [readOnly]=\"readOnly\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [id]=\"id\" \r\n [name]=\"name\" \r\n autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\"\r\n [(ngModel)]=\"inputText\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [step]=\"step\"\r\n (mousemove)=\"changeRange(rangeField.value)\"\r\n (ngModelChange)=\"onTextChange()\"\r\n (input)=\"updateTooltip(rangeField.value)\"\r\n >\r\n <span class=\"tooltiptext\" #tooltip>{{ tooltipValue }}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- case default -->\r\n <ng-container *ngSwitchDefault>\r\n <div\r\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\r\n <!-- <div class=\"content-left\">\r\n <s-icon-mat class=\"icon\">email</s-icon-mat>\r\n </div> -->\r\n <div class=\"content-center\">\r\n <input \r\n (focus)=\"onFocus($event)\"\r\n (blur)=\"onBlur($event)\"\r\n [readOnly]=\"readOnly\" \r\n [id]=\"id ? id : 'generic'\" \r\n [disabled]=\"disabled\" \r\n [type]=\"type\" \r\n [name]=\"name\" autocomplete=\"off\"\r\n [placeholder]=\"placeHolder\" \r\n [(ngModel)]=\"inputText\" \r\n (ngModelChange)=\"onTextChange()\">\r\n </div>\r\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\r\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\r\n </div>\r\n\r\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\r\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n</ng-container>", styles: [".content-input-main-626:has(input:focus){border:1px solid var(--primary-600);box-shadow:0 0 0 4px #0091fe26,0 1px 2px #1018280d}.content-input-main-626.theme-green:has(input:focus){border:1px solid var(--green-500);box-shadow:0 0 0 4px #36b37e26,0 1px 2px #1018280d}.content-input-main-626.theme-yellow:has(input:focus){border:1px solid var(--yellow-500);box-shadow:0 0 0 4px #ffab0026,0 1px 2px #1018280d}.content-input-main-626.theme-red:has(input:focus){border:1px solid var(--red-500);box-shadow:0 0 0 4px #ff563026,0 1px 2px #1018280d}.content-input-main-626.sm input{height:22px;font-size:.75rem}.content-input-main-626.sm .icon{width:20px;cursor:default}.content-input-main-626.sm .icon span{font-size:1.2em;display:flex}.content-input-main-626{display:flex;border:1px solid var(--primary-500);border-radius:4px;padding:0 8px;margin:3px 0;background-color:var(--neutrals-1200)}.content-input-main-626 input{width:100%;border:0px;color:var(--secondary-600);writing-mode:unset;height:36px;font-size:inherit;background-color:var(--neutrals-1200)}.content-input-main-626 input:focus,.content-input-main-626 input:focus-visible{outline:none}.content-input-main-626 .icon{width:20px;cursor:default}.content-input-main-626 .icon span{display:flex}.content-input-main-626 .content-center{width:100%;background-color:var(--neutrals-1200)}.content-input-main-626 .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:8px;color:var(--primary-600)}.content-input-main-626 .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:8px;color:var(--secondary-600)}.content-input-main-626.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800)}.content-input-main-626.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.content-input-main-626.disabled-active .content-left{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active.content-input-main-url .content-left,.content-input-main-626.disabled-active.content-input-main-color .content-left{color:var(--neutrals-800)!important;border-right:1px solid var(--neutrals-900)}.content-input-main-626.theme-red{border:1px solid var(--red-500)}.content-input-main-626.theme-red .icon.report span{color:var(--red-600)}.content-input-main-626.theme-green{border:1px solid var(--green-500)}.content-input-main-626.theme-green .icon.report span{color:var(--green-600)}.content-input-main-626.theme-yellow{border:1px solid var(--yellow-500)}.content-input-main-626.theme-yellow .icon.report span{color:var(--yellow-600)}.content-input-main-626.content-input-main-password .content-right .icon span{color:var(--secondary-500)}.content-input-main-url .content-left,.content-input-main-color .content-left{border-right:1px solid var(--secondary-500);padding-right:8px;color:var(--secondary-500);font-size:.9rem;padding-left:8px}.content-input-main-url,.content-input-main-color{padding-left:0}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--neutrals-1200) inset!important}.content-input-main-626.content-input-main-number input::-webkit-outer-spin-button,.content-input-main-626.content-input-main-number input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.content-input-main-626.content-input-main-number input[type=number]{-moz-appearance:textfield}.button-input-626{font-size:15px;font-weight:700}.content-input-main-range input{width:100%;height:36px;margin:0;-webkit-appearance:none}.content-input-main-range input[type=range]::-webkit-slider-runnable-track{border-radius:4px;height:8px}.content-input-main-range input[type=range]::-moz-range-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-moz-range-progress{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-fill-upper{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-webkit-slider-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200);margin-top:-8px}.content-input-main-range input[type=range]::-moz-range-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-ms-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-moz-range-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-ms-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-moz-range-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-ms-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]:disabled{filter:grayscale(1);opacity:.3;cursor:not-allowed}.tooltip{position:relative;display:inline-block;cursor:pointer;width:100%}.tooltip .tooltiptext{visibility:hidden;width:40px;background-color:var(--neutrals-1200);color:var(--secondary-600);font-weight:700;font-size:12px;text-align:center;border-radius:4px;padding:5px;position:absolute;z-index:1;bottom:100%;left:550%;transform:translate(-50%);box-shadow:0 0 16px #17386129}.tooltip-false:hover .tooltiptext{visibility:visible}.tooltip .tooltiptext:before{content:\"\";position:absolute!important;transform:rotate(45deg);height:10px;width:10px;bottom:-5px;background-color:var(--neutrals-1200);box-shadow:0 0 16px #17386129;left:40%}\n"] }]
284
282
  }], ctorParameters: function () { return []; }, propDecorators: { typeNumber: [{
285
283
  type: ViewChild,
286
284
  args: ['typeNumber']
@@ -329,4 +327,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImpor
329
327
  }], focus: [{
330
328
  type: Output
331
329
  }] } });
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1pbnB1dC10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpZGVzeXMtZ2VuZXJpYy11aS9zcmMvbGliL2lucHV0L2NvbXBvbmVudHMvaW5wdXQtdGV4dC9zLWlucHV0LXRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC10ZXh0L3MtaW5wdXQtdGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUssT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFlekUsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsSUFDSSxLQUFLLEtBQWEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLEtBQUssQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzNGLENBQUM7SUFBQSxDQUFDO0lBQ0YsSUFDSSxJQUFJLEtBQWEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLElBQUksQ0FBQyxHQUFXO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUcsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN0SixDQUFDO0lBQUEsQ0FBQztJQXNCRjtRQWxEQSxhQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBU1gsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixPQUFFLEdBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUMsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixnQkFBVyxHQUFZLEVBQUUsQ0FBQztRQUMxQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRTFCLFFBQUcsR0FBVyxDQUFDLENBQUM7UUFDaEIsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUNqQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBVzFCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QixTQUFJLEdBQWdCLElBQUksQ0FBQztRQUN6QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBR2pDLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIsZ0JBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsVUFBSyxHQUFXLE1BQU0sQ0FBQztRQUN2QixXQUFNLEdBQVcsU0FBUyxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0IsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFFaEIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzdDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDOUMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEMsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFJM0MsQ0FBQztJQUVELFFBQVE7UUFFTixrRUFBa0U7UUFDbEUsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxFQUFDO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUN2QztRQUVELCtDQUErQztRQUMvQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFO1lBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFBO1NBQ3RCO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRTNCLCtCQUErQjtRQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQTtTQUN2QztRQUVELHFEQUFxRDtRQUNyRCxJQUFHLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFDO1lBQy9DLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBO1NBQ3JCO1FBR0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxlQUFlO1FBQ2Isb0JBQW9CO1FBQ3BCLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLEVBQUM7WUFDdEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1NBQ25CO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDbEI7UUFFRCxJQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBQztZQUNqQixJQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLEVBQUM7Z0JBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUN2QztZQUVELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFBO2FBQ3RCO1lBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVPLFNBQVM7UUFDZixRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFBO2dCQUNsQixNQUFNO1lBQ1IsS0FBSyxLQUFLO2dCQUNSLElBQUksQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFBO2dCQUMvQixNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLElBQUksQ0FBQyxRQUFRLEdBQUcsc0JBQXNCLENBQUE7Z0JBQ3RDLE1BQU07WUFDUixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUE7Z0JBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFBO2dCQUN6QixNQUFNO1lBRVI7Z0JBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7Z0JBQ2xCLE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBQztZQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUNsQztRQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTlCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxlQUFlLENBQUMsR0FBVztRQUN6QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO2FBQ3RCO2lCQUNJO2dCQUNILElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNuQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDM0M7UUFDSCxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxVQUFVO1FBQ1IsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixjQUFjO1FBQ1osSUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFDO1lBQ2xDLElBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFDO2dCQUM3QixJQUFJLENBQUMsV0FBVyxJQUFFLElBQUksQ0FBQyxJQUFJLENBQUE7YUFDNUI7WUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUE7WUFDNUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUM7WUFDbEMsSUFBRyxJQUFJLENBQUMsR0FBRyxFQUFDO2dCQUNWLElBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFDO29CQUM3QixJQUFJLENBQUMsV0FBVyxJQUFFLElBQUksQ0FBQyxJQUFJLENBQUE7aUJBQzVCO3FCQUFJO29CQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQTtpQkFDNUI7YUFDRjtZQUNELElBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFDO2dCQUNYLElBQUksQ0FBQyxXQUFXLElBQUUsSUFBSSxDQUFDLElBQUksQ0FBQTthQUM1QjtZQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUM1QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVM7UUFDcEIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUcsSUFBSSxDQUFDLEdBQUc7WUFDWCxJQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFDO2dCQUNsQixNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQTthQUNsQjtRQUNELElBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUM7WUFDbEIsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUE7U0FDbEI7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFHLElBQUksQ0FBQyxVQUFVO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFBO1FBQ3RELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUU1QyxDQUFDO0lBQ0QsaUNBQWlDO0lBRWpDLDRCQUE0QjtJQUM1QixXQUFXO1FBQ1QsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLGFBQWE7WUFDYixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDM0MsOERBQThEO1lBQzlELElBQUksYUFBYSxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFBO1lBQ3ZDLElBQUksT0FBTyxHQUFHLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtZQUN4QyxvREFBb0Q7WUFDcEQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBQzVELEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUE7WUFDbEUsb0JBQW9CO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2hELDRCQUE0QjtZQUM1QixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzRixJQUFHLFFBQVEsRUFBRTtnQkFDWCx5QkFBeUI7Z0JBQ3pCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtnQkFDM0UsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUcsTUFBTSxDQUFDLENBQUM7Z0JBQzNFLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFHLE1BQU0sQ0FBQyxDQUFDO2dCQUM5RSxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRyxLQUFLLENBQUMsQ0FBQztnQkFDN0UsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUcsS0FBSyxDQUFDLENBQUM7Z0JBQ3RFLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFHLHNFQUFzRSxHQUFDLFVBQVUsR0FBQywwQkFBMEIsR0FBQyxVQUFVLEdBQUMsK0JBQStCLENBQUMsQ0FBQzthQUM3TjtZQUFBLENBQUM7UUFDSixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsdUVBQXVFO0lBQ3ZFLFdBQVcsQ0FBQyxLQUFTO1FBQ25CLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLEVBQUM7WUFDdEIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzNDLElBQUcsUUFBUSxFQUFFO2dCQUNYLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtnQkFDbkUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUcsc0VBQXNFLEdBQUMsVUFBVSxHQUFDLDBCQUEwQixHQUFDLFVBQVUsR0FBQywrQkFBK0IsQ0FBQyxDQUFDO2FBQzdOO1lBQUEsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFHLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFDO1lBQ3ZDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDO1lBQ25FLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMzQyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUE7WUFDM0UsSUFBSSxNQUFNLEdBQUcsVUFBVSxHQUFHLFVBQVUsR0FBRyxHQUFHLENBQUM7WUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDO1lBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBQ0QsK0JBQStCO0lBRS9CLDBDQUEwQztJQUMxQyxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFBO1lBQ3hCLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLEVBQUM7Z0JBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQTthQUNuQjtTQUNGO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFVO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7OEdBbFRVLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDBhQVJuQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixxVkNkSCwraWlCQStXZTs7MkZEL1ZGLG1CQUFtQjtrQkFiL0IsU0FBUzsrQkFDRSxjQUFjLGlCQUdULGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzBFQVF3QixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRTJCLGdCQUFnQjtzQkFBakUsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1AsT0FBTztzQkFBL0MsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUc5QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csRUFBRTtzQkFBVixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRixLQUFLO3NCQURSLEtBQUs7Z0JBTUYsSUFBSTtzQkFEUCxLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQWFJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzLWlucHV0LXRleHQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zLWlucHV0LXRleHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3MtaW5wdXQtdGV4dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTSW5wdXRUZXh0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTSW5wdXRUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yICwgQWZ0ZXJWaWV3SW5pdCAge1xyXG4gIFxyXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG4gIG9uVG91Y2ggPSAoKSA9PiB7IH07XHJcblxyXG4gIC8vUkVGIFBBUkEgVFlQRSBOVU1CRVJcclxuICBAVmlld0NoaWxkKCd0eXBlTnVtYmVyJykgdHlwZU51bWJlcjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCA7XHJcbiAgLy9SRUYgUEFSQSBUWVBFIFJBTkdFXHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcENvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSB0b29sdGlwQ29udGFpbmVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXAnLCB7IHN0YXRpYzogZmFsc2UgfSkgdG9vbHRpcDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGlkOiBhbnkgPSAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCk7XHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcGxhY2VIb2xkZXI/OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1heD86IG51bWJlciA7XHJcbiAgQElucHV0KCkgbWluOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIHN0ZXA6IG51bWJlciA9IDE7XHJcbiAgQElucHV0KCkgcmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIGdldCB0aGVtZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fdGhlbWU7IH1cclxuICBzZXQgdGhlbWUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3RoZW1lID0gWydkZWZhdWx0JywgJ2dyZWVuJywgJ3llbGxvdycsICdyZWQnXS5pbmRleE9mKHZhbCkgIT0gLTEgPyB2YWwgOiAnZGVmYXVsdCc7XHJcbiAgfTtcclxuICBASW5wdXQoKVxyXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl90eXBlOyB9XHJcbiAgc2V0IHR5cGUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3R5cGUgPSBbJ3RleHQnLCAncGFzc3dvcmQnLCAnZW1haWwnLCAncGhvbmUnLCAndXJsJywgJ3NlYXJjaCcsICdudW1iZXInLCAnY29sb3InLCAnZGF0ZScsICd0aW1lJyAsICdyYW5nZSddLmluZGV4T2YodmFsKSAhPSAtMSA/IHZhbCA6ICd0ZXh0JztcclxuICB9O1xyXG4gIEBJbnB1dCgpIGNsYXNzQWRkOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBoZWxwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2l6ZTogJ3NtJyB8ICdtZCcgPSAnbWQnO1xyXG4gIEBJbnB1dCgpIHJhbmdlVW5pdHk6IHN0cmluZyA9ICcnO1xyXG5cclxuICBpbnB1dFRpbWVvdXQ/OiBhbnk7XHJcbiAgaW5wdXRUZXh0OiBzdHJpbmcgPSAnJztcclxuICBpbnB1dE51bWJlcjogbnVtYmVyID0gMDtcclxuICBfdHlwZTogc3RyaW5nID0gJ3RleHQnO1xyXG4gIF90aGVtZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xyXG4gIGRpc2FibGVkc3R5bGU6IHN0cmluZyA9ICcnO1xyXG4gIHZpc2liaWxpdHkgPSBmYWxzZTtcclxuICBpY29uTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIGluY29uU3ltYm9sOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9vbHRpcFZhbHVlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQE91dHB1dCgpIHRleHRDaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBjbGlja0hlbHBJY29uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgXHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLy9BanVzdGUgY3VhbmRvIHR5cGUgbnVtYmVyIHZpZW5lIGNvbiB0ZXh0IHkgbG8gY29udmllcnRlIGEgbnVtZXJvXHJcbiAgICBpZih0aGlzLnRleHQgJiYgdGhpcy50eXBlID09ICdudW1iZXInKXtcclxuICAgICAgICB0aGlzLmlucHV0TnVtYmVyID0gTnVtYmVyKHRoaXMudGV4dClcclxuICAgIH1cclxuXHJcbiAgICAvL0FqdXN0ZSBjdWFuZG8gdHlwZSBjb2xvciB2aWVuZSBjb24gdGV4dCB2YWNpb1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT0gJ2NvbG9yJyAmJiB0aGlzLnRleHQgPT0gJycpIHtcclxuICAgICAgdGhpcy50ZXh0ID0gJyMwMDAwMDAnXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLnRleHQ7XHJcbiAgICBcclxuICAgIC8vQWN0aXZhIGVsIGVzdGlsbyBkZSBkaXNhYmxlZCBcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZWRzdHlsZSA9IFwiZGlzYWJsZWQtYWN0aXZlXCJcclxuICAgIH1cclxuXHJcbiAgICAvL0FqdXN0ZSB0eXBlIGNvbG9yIHNvbG8gc2UgZGVzaGFiaWxpdGEgY29uIGRpc2FibGVkLlxyXG4gICAgaWYodGhpcy50eXBlID09ICdjb2xvcicgJiYgdGhpcy5yZWFkT25seSA9PSB0cnVlKXtcclxuICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWVcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5sb2FkVGhlbWUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vQWp1c3RlcyBUeXBlIFJhbmdlXHJcbiAgICBpZih0aGlzLnR5cGUgPT0gJ3JhbmdlJyl7XHJcbiAgICAgIHRoaXMucmFuZ2VPbkxvYWQoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3RoZW1lJ10pIHtcclxuICAgICAgdGhpcy5sb2FkVGhlbWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihjaGFuZ2VzWyd0ZXh0J10pe1xyXG4gICAgICBpZih0aGlzLnRleHQgJiYgdGhpcy50eXBlID09ICdudW1iZXInKXtcclxuICAgICAgICAgIHRoaXMuaW5wdXROdW1iZXIgPSBOdW1iZXIodGhpcy50ZXh0KVxyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIGlmICh0aGlzLl90eXBlID09ICdjb2xvcicgJiYgdGhpcy50ZXh0ID09ICcnKSB7XHJcbiAgICAgICAgdGhpcy50ZXh0ID0gJyMwMDAwMDAnXHJcbiAgICAgIH1cclxuICBcclxuICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLnRleHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRUaGVtZSgpIHtcclxuICAgIHN3aXRjaCAodGhpcy50aGVtZSkge1xyXG4gICAgICBjYXNlIFwiZGVmYXVsdFwiOlxyXG4gICAgICAgIHRoaXMuaWNvbk5hbWUgPSBcIlwiXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJyZWRcIjpcclxuICAgICAgICB0aGlzLmljb25OYW1lID0gXCJlcnJvcl9vdXRsaW5lXCJcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImdyZWVuXCI6XHJcbiAgICAgICAgdGhpcy5pY29uTmFtZSA9IFwiY2hlY2tfY2lyY2xlX291dGxpbmVcIlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwieWVsbG93XCI6XHJcbiAgICAgICAgdGhpcy5pbmNvblN5bWJvbCA9IHRydWVcclxuICAgICAgICB0aGlzLmljb25OYW1lID0gXCJ3YXJuaW5nXCJcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5pY29uTmFtZSA9IFwiXCJcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVGV4dENoYW5nZSgpIHtcclxuICAgIGlmKHRoaXMudHlwZSA9PSAnbnVtYmVyJyl7XHJcbiAgICAgIHRoaXMudXBkYXRlTnVtYmVyKHRoaXMuaW5wdXRUZXh0KVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0VGV4dCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaW5wdXRUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmlucHV0VGltZW91dCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbnB1dFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy50ZXh0Q2hhbmdlRXZlbnQubmV4dCh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICB9LCA1MDAsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgb25UZXh0Q2hhbmdlVmFsKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dFRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaW5wdXRUaW1lb3V0KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlucHV0VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodmFsKSB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xyXG4gICAgICAgIHRoaXMudGV4dENoYW5nZUV2ZW50Lm5leHQodmFsKTtcclxuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IHZhbDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XHJcbiAgICAgICAgdGhpcy50ZXh0Q2hhbmdlRXZlbnQubmV4dCh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDUwMCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBjbGlja0ljb24oKSB7XHJcbiAgICB0aGlzLmNsaWNrSGVscEljb25FdmVudC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBjb2xvckNsaWNrKCkge1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5uYW1lKT8uY2xpY2soKTtcclxuICB9XHJcblxyXG4gIC8vRlVOQ0lPTkVTIFBBUkEgVFlQRSBOVU1CRVIgXHJcbiAgbnVtYmVyRGVjcmVhc2UoKXtcclxuICAgIGlmKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRPbmx5KXtcclxuICAgICAgaWYodGhpcy5taW4gPCB0aGlzLmlucHV0TnVtYmVyKXtcclxuICAgICAgICB0aGlzLmlucHV0TnVtYmVyLT10aGlzLnN0ZXBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuaW5wdXROdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICAgIHRoaXMudGV4dENoYW5nZUV2ZW50Lm5leHQodGhpcy5pbnB1dFRleHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbnVtYmVySW5jcmVtZW50KCl7XHJcbiAgICBpZighdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkT25seSl7XHJcbiAgICAgIGlmKHRoaXMubWF4KXtcclxuICAgICAgICBpZih0aGlzLm1heCA+IHRoaXMuaW5wdXROdW1iZXIpe1xyXG4gICAgICAgICAgdGhpcy5pbnB1dE51bWJlcis9dGhpcy5zdGVwXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmlucHV0TnVtYmVyID0gdGhpcy5tYXhcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYoIXRoaXMubWF4KXtcclxuICAgICAgICB0aGlzLmlucHV0TnVtYmVyKz10aGlzLnN0ZXBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuaW5wdXROdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICAgIHRoaXMudGV4dENoYW5nZUV2ZW50Lm5leHQodGhpcy5pbnB1dFRleHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTnVtYmVyKHZhbHVlOmFueSl7XHJcbiAgICBsZXQgdmFsdWUyID0gdmFsdWVcclxuICAgIGlmKHRoaXMubWF4KVxyXG4gICAgaWYodmFsdWUgPiB0aGlzLm1heCl7XHJcbiAgICAgIHZhbHVlMiA9IHRoaXMubWF4XHJcbiAgICB9XHJcbiAgICBpZih2YWx1ZSA8IHRoaXMubWluKXtcclxuICAgICAgdmFsdWUyID0gdGhpcy5taW5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlucHV0VGV4dCA9IHZhbHVlMi50b1N0cmluZygpXHJcbiAgICB0aGlzLmlucHV0TnVtYmVyID0gTnVtYmVyKHZhbHVlMik7XHJcbiAgICBpZih0aGlzLnR5cGVOdW1iZXIpXHJcbiAgICB0aGlzLnR5cGVOdW1iZXIubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuaW5wdXROdW1iZXJcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0TnVtYmVyKTtcclxuICAgIHRoaXMudGV4dENoYW5nZUV2ZW50Lm5leHQodGhpcy5pbnB1dFRleHQpO1xyXG4gICAgXHJcbiAgfSBcclxuICAvL0ZJTiBGVU5DSU9ORVMgUEFSQSBUWVBFIE5VTUJFUiBcclxuICBcclxuICAvL0ZVTkNJT05FUyBQQVJBIFRZUEUgUkFOR0UgXHJcbiAgcmFuZ2VPbkxvYWQoKXtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvL1JBTkdPIFRPVEFMXHJcbiAgICAgIGNvbnN0IHJhbmdlTWF4ID0gdGhpcy5tYXggPyB0aGlzLm1heCA6IDEwMDtcclxuICAgICAgLy9DQUxDVUxPIExBIEFNUExJVFVEIFBBUkEgUE9ERVIgUE9TSUNJT05BUiBBTCA1MCUgUE9SIERFRkVDVE9cclxuICAgICAgbGV0IGFtcGxpdHVkVG90YWwgPSByYW5nZU1heCAtIHRoaXMubWluXHJcbiAgICAgIGxldCBwb3JjaW9uID0gKGFtcGxpdHVkVG90YWwgKiA1MCkgLyAxMDAgXHJcbiAgICAgIC8vIElOSUNJQUxJWkEgQUwgNTAlIENVQU5ETyBOTyBIQVkgVkFMT1IgUFJFREVGSU5JRE9cclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy50ZXh0ID09ICcnID8gdGhpcy5taW4gKyBwb3JjaW9uIDogdGhpcy50ZXh0XHJcbiAgICAgIHZhbHVlID0gdGhpcy5pbnB1dFRleHQgPT0gJycgPyB0aGlzLm1pbiArIHBvcmNpb24gOiB0aGlzLmlucHV0VGV4dFxyXG4gICAgICAvL0RFRklOTyBFTCBUT09UTFRJUFxyXG4gICAgICB0aGlzLnRvb2x0aXBWYWx1ZSA9IHRoaXMudGV4dCArIHRoaXMucmFuZ2VVbml0eTtcclxuICAgICAgLy9TSSBFUyBDSFJPTUUgQVBMSUNPIEVMIEZJWFxyXG4gICAgICBjb25zdCBpc0Nocm9tZSA9IC9DaHJvbWUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgL0dvb2dsZSBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvcik7XHJcbiAgICAgIGlmKGlzQ2hyb21lKSB7XHJcbiAgICAgICAgLy9DQUxDQ1VMTyBFTCAlIEEgQVNJR05BUlxyXG4gICAgICAgIGxldCBwb3JjZW50YWplID0gKChOdW1iZXIodmFsdWUpIC0gdGhpcy5taW4pIC8gKHJhbmdlTWF4IC0gdGhpcy5taW4pKSAqIDEwMFxyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpPy5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcgLCAnMTRweCcpO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpPy5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLWJvdHRvbScgLCAnMTRweCcpO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpPy5zdHlsZS5zZXRQcm9wZXJ0eSgnYm9yZGVyLXJhZGl1cycgLCAnNHB4Jyk7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCk/LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnICwgJzhweCcpO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpPy5zdHlsZS5zZXRQcm9wZXJ0eSgnYmFja2dyb3VuZCcgLCAnbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB2YXIoLS1wcmltYXJ5LTYwMCkgMCUsIHZhcigtLXByaW1hcnktNjAwKSAnK3BvcmNlbnRhamUrJyUsIHZhcigtLW5ldXRyYWxzLTEwMDApICcrcG9yY2VudGFqZSsnJSwgdmFyKC0tbmV1dHJhbHMtMTAwMCkgMTAwJSknKTtcclxuICAgICAgfTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgLy9GVU5DSU9OIFBBUkEgQ0hST01FIENVQU5ETyBTRSBERVNMSVpBIEVMIFNMSURFIEZVTkNJT05FIENPUlJFQ1RBTUVOVEVcclxuICBjaGFuZ2VSYW5nZSh2YWx1ZTphbnkpe1xyXG4gICAgaWYodGhpcy50eXBlID09ICdyYW5nZScpe1xyXG4gICAgICBjb25zdCBpc0Nocm9tZSA9IC9DaHJvbWUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgL0dvb2dsZSBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvcik7XHJcbiAgICAgIGNvbnN0IHJhbmdlTWF4ID0gdGhpcy5tYXggPyB0aGlzLm1heCA6IDEwMDtcclxuICAgICAgaWYoaXNDaHJvbWUpIHtcclxuICAgICAgICBsZXQgcG9yY2VudGFqZSA9ICgodmFsdWUgLSB0aGlzLm1pbikgLyAocmFuZ2VNYXggLSB0aGlzLm1pbikpICogMTAwXHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCk/LnN0eWxlLnNldFByb3BlcnR5KCdiYWNrZ3JvdW5kJyAsICdsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHZhcigtLXByaW1hcnktNjAwKSAwJSwgdmFyKC0tcHJpbWFyeS02MDApICcrcG9yY2VudGFqZSsnJSwgdmFyKC0tbmV1dHJhbHMtMTAwMCkgJytwb3JjZW50YWplKyclLCB2YXIoLS1uZXV0cmFscy0xMDAwKSAxMDAlKScpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9GVU5DSU9OIFFVRSBBQ1RVQUxJWkEgRUwgVE9PTFRJUCBDVUFORE8gU0UgREVTTElaQSBFTCBTTElERVxyXG4gIHVwZGF0ZVRvb2x0aXAodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYodGhpcy50b29sdGlwQ29udGFpbmVyICYmIHRoaXMudG9vbHRpcCl7XHJcbiAgICAgIGNvbnN0IHJhbmdlV2lkdGggPSB0aGlzLnRvb2x0aXBDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgY29uc3QgcmFuZ2VNYXggPSB0aGlzLm1heCA/IHRoaXMubWF4IDogMTAwO1xyXG4gICAgICBsZXQgcG9yY2VudGFqZSA9ICgoTnVtYmVyKHZhbHVlKSAtIHRoaXMubWluKSAvIChyYW5nZU1heCAtIHRoaXMubWluKSkgKiAxMDBcclxuICAgICAgbGV0IGFqdXN0ZSA9IHBvcmNlbnRhamUgKiByYW5nZVdpZHRoIC8gMTAwO1xyXG4gICAgICB0aGlzLnRvb2x0aXAubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7YWp1c3RlfXB4YDtcclxuICAgICAgdGhpcy50b29sdGlwVmFsdWUgPSB2YWx1ZSArIHRoaXMucmFuZ2VVbml0eTtcclxuICAgIH1cclxuICB9XHJcbiAgLy9GSU4gRlVOQ0lPTkVTIFBBUkEgVFlQRSBSQU5HRVxyXG5cclxuICAvL0ZVTkNJT05FUyBQQVJBIFFVRSBGVU5DSU9ORSBGT1JNIEJVSUxERVJcclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLmlucHV0VGV4dCA9IHZhbHVlO1xyXG4gICAgICB0aGlzLmlucHV0TnVtYmVyID0gdmFsdWVcclxuICAgICAgaWYodGhpcy50eXBlID09ICdyYW5nZScpe1xyXG4gICAgICAgIHRoaXMucmFuZ2VPbkxvYWQoKVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuYmx1ci5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5mb2N1cy5uZXh0KGV2ZW50KTtcclxuICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxyXG4gICAgPCEtLSBFbCBzd2l0Y2ggY2FzZSBjb24gY2FkYSBjYXNvIHBvciBpbnB1dCAgWyd0ZXh0JywgJ3Bhc3N3b3JkJywgJ2VtYWlsJyAsICdwaG9uZScgLCAndXJsJyAsICdzZWFyY2gnXS0tPlxyXG5cclxuICAgIDwhLS0gY2FzZSB0ZXh0IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RleHQnXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi02MjYgY29udGVudC1pbnB1dC1tYWluLXRleHQge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IGNsYXNzPVwiaWNvblwiPmVtYWlsPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiBcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFxyXG4gICAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiIFxyXG4gICAgICAgICAgICAgICAgW2lkXT1cImlkXCIgXHJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSAhPSAnZGVmYXVsdCdcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IFt0eXBlXT1cImluY29uU3ltYm9sPydzeW1ib2wnOidpY29uJ1wiIGNsYXNzPVwiaWNvbiByZXBvcnRcIj57e2ljb25OYW1lfX08L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lID09ICdkZWZhdWx0JyAmJiBoZWxwXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tJY29uKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gY2FzZSBwYXNzd29yZCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwYXNzd29yZCdcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLTYyNiBjb250ZW50LWlucHV0LW1haW4tcGFzc3dvcmQge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBjbGFzcz1cImljb25cIj52cG5fa2V5PC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCA/IGlkIDogJydcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwie3t2aXNpYmlsaXR5ID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ319XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpc2liaWxpdHkgPSAhdmlzaWJpbGl0eVwiPnt7dmlzaWJpbGl0eSA/ICd2aXNpYmlsaXR5JyA6XHJcbiAgICAgICAgICAgICAgICAgICAgJ3Zpc2liaWxpdHlfb2ZmJ319PC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gY2FzZSBlbWFpbCAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidlbWFpbCdcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLTYyNiBjb250ZW50LWlucHV0LW1haW4tZW1haWwge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBjbGFzcz1cImljb25cIj5tYWlsX291dGxpbmU8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiAgXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkID8gaWQgOiAnJ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInR5cGVcIiBcclxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgIT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCJpbmNvblN5bWJvbD8nc3ltYm9sJzonaWNvbidcIiBjbGFzcz1cImljb24gcmVwb3J0XCI+e3tpY29uTmFtZX19PC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSA9PSAnZGVmYXVsdCcgJiYgaGVscFwiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgKGNsaWNrKT1cImNsaWNrSWNvbigpXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiPmhlbHBfb3V0bGluZTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgPCEtLSBjYXNlIHBob25lIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3Bob25lJ1wiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi1waG9uZSB7e3NpemV9fSB0aGVtZS17e3RoZW1lfX0ge3tjbGFzc0FkZH19IHt7ZGlzYWJsZWRzdHlsZX19XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IGNsYXNzPVwiaWNvblwiPnBob25lPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiICBcclxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgPyBpZCA6ICcnXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIiBcclxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSAhPSAnZGVmYXVsdCdcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IFt0eXBlXT1cImluY29uU3ltYm9sPydzeW1ib2wnOidpY29uJ1wiIGNsYXNzPVwiaWNvbiByZXBvcnRcIj57e2ljb25OYW1lfX08L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lID09ICdkZWZhdWx0JyAmJiBoZWxwXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tJY29uKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICA8IS0tIGNhc2UgdXJsIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3VybCdcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLTYyNiBjb250ZW50LWlucHV0LW1haW4tdXJsIHt7c2l6ZX19IHRoZW1lLXt7dGhlbWV9fSB7e2NsYXNzQWRkfX0ge3tkaXNhYmxlZHN0eWxlfX1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgaHR0cDovL1xyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiICBcclxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgPyBpZCA6ICcnXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIiBcclxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSAhPSAnZGVmYXVsdCdcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IFt0eXBlXT1cImluY29uU3ltYm9sPydzeW1ib2wnOidpY29uJ1wiIGNsYXNzPVwiaWNvbiByZXBvcnRcIj57e2ljb25OYW1lfX08L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lID09ICdkZWZhdWx0JyAmJiBoZWxwXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tJY29uKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICA8IS0tIGNhc2Ugc2VhcmNoIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlYXJjaCdcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLTYyNiBjb250ZW50LWlucHV0LW1haW4tc2VhcmNoIHt7c2l6ZX19IHRoZW1lLXt7dGhlbWV9fSB7e2NsYXNzQWRkfX0ge3tkaXNhYmxlZHN0eWxlfX1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgY2xhc3M9XCJpY29uXCI+c2VhcmNoPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiICBcclxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgPyBpZCA6ICcnXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIiBcclxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IGNsYXNzPVwiaWNvbiBjdXJzb3JcIj5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gY2FzZSBjb2xvciAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjb2xvcidcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLTYyNiBjb250ZW50LWlucHV0LW1haW4tY29sb3Ige3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgI2NvbG9yIFtpZF09XCJuYW1lXCIgW25hbWVdPVwibmFtZVwiIHR5cGU9XCJjb2xvclwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiIHN0eWxlPVwid2lkdGg6IDQwcHg7IHBhZGRpbmc6IDA7XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIiAoY2xpY2spPVwiIXRoaXMucmVhZE9ubHkgPyB0aGlzLmNvbG9yLmNsaWNrKCkgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCA/IGlkIDogJydcIiBcclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0ZXh0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSAhPSAnZGVmYXVsdCdcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IFt0eXBlXT1cImluY29uU3ltYm9sPydzeW1ib2wnOidpY29uJ1wiIGNsYXNzPVwiaWNvbiByZXBvcnRcIj57e2ljb25OYW1lfX08L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lID09ICdkZWZhdWx0JyAmJiBoZWxwXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tJY29uKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gY2FzZSBkYXRlIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi02MjYgY29udGVudC1pbnB1dC1tYWluLXRleHQge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgIFxyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCA/IGlkIDogJydcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlVmFsKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImlucHV0VGV4dFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lICE9ICdkZWZhdWx0J1wiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSA9PSAnZGVmYXVsdCcgJiYgaGVscFwiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgKGNsaWNrKT1cImNsaWNrSWNvbigpXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiPmhlbHBfb3V0bGluZTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIGNhc2UgdGltZSAtLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi10ZXh0IHt7c2l6ZX19IHRoZW1lLXt7dGhlbWV9fSB7e2NsYXNzQWRkfX0ge3tkaXNhYmxlZHN0eWxlfX1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCA/IGlkIDogJydcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlVmFsKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImlucHV0VGV4dFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lICE9ICdkZWZhdWx0J1wiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSA9PSAnZGVmYXVsdCcgJiYgaGVscFwiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgKGNsaWNrKT1cImNsaWNrSWNvbigpXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiPmhlbHBfb3V0bGluZTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIGNhc2UgbnVtYmVyIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0IG1yLTFcIj5cclxuICAgICAgICAgICAgICAgIDxzLWJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAoY2xpY2spPVwibnVtYmVyRGVjcmVhc2UoKVwiIFtzaXplXT1cInNpemVcIiBbcGlsbF09XCJ0cnVlXCIgW2ludmVydF09XCJ0cnVlXCIgY2xhc3M9XCJidXR0b24taW5wdXQtNjI2XCI+PHMtaWNvbi1tYXQ+cmVtb3ZlPC9zLWljb24tbWF0Pjwvcy1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLTYyNiBjb250ZW50LWlucHV0LW1haW4tdGV4dCBjb250ZW50LWlucHV0LW1haW4tbnVtYmVyIHt7c2l6ZX19IHRoZW1lLXt7dGhlbWV9fSB7e2NsYXNzQWRkfX0ge3tkaXNhYmxlZHN0eWxlfX0gdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgPyBpZCA6ICcnXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICN0eXBlTnVtYmVyIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwibWF4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3RlcF09XCJzdGVwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lICE9ICdkZWZhdWx0J1wiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IFt0eXBlXT1cImluY29uU3ltYm9sPydzeW1ib2wnOidpY29uJ1wiIGNsYXNzPVwiaWNvbiByZXBvcnRcIj57e2ljb25OYW1lfX08L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgPT0gJ2RlZmF1bHQnICYmIGhlbHBcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tJY29uKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0IG1sLTFcIj5cclxuICAgICAgICAgICAgICAgIDxzLWJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAoY2xpY2spPVwibnVtYmVySW5jcmVtZW50KClcIiBbc2l6ZV09XCJzaXplXCIgW3BpbGxdPVwidHJ1ZVwiIFtpbnZlcnRdPVwidHJ1ZVwiIGNsYXNzPVwiYnV0dG9uLWlucHV0LTYyNlwiPjxzLWljb24tbWF0PmFkZDwvcy1pY29uLW1hdD48L3MtYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gY2FzZSByYW5nZSAtLT5cclxuICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncmFuZ2UnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi1yYW5nZSB7e3NpemV9fSB0aGVtZS17e3RoZW1lfX0ge3tjbGFzc0FkZH19IHt7ZGlzYWJsZWRzdHlsZX19XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b29sdGlwIHRvb2x0aXAte3tkaXNhYmxlZH19XCIgI3Rvb2x0aXBDb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgI3JhbmdlRmllbGRcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIFttYXhdPVwibWF4XCJcclxuICAgICAgICAgICAgICAgICAgICBbc3RlcF09XCJzdGVwXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2Vtb3ZlKT1cImNoYW5nZVJhbmdlKHJhbmdlRmllbGQudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInVwZGF0ZVRvb2x0aXAocmFuZ2VGaWVsZC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2x0aXB0ZXh0XCIgI3Rvb2x0aXA+e3sgdG9vbHRpcFZhbHVlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gY2FzZSBkZWZhdWx0IC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi10ZXh0IHt7c2l6ZX19IHRoZW1lLXt7dGhlbWV9fSB7e2NsYXNzQWRkfX0ge3tkaXNhYmxlZHN0eWxlfX1cIj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBjbGFzcz1cImljb25cIj5lbWFpbDwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkID8gaWQgOiAnZ2VuZXJpYydcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIiBcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lICE9ICdkZWZhdWx0J1wiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgPT0gJ2RlZmF1bHQnICYmIGhlbHBcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IChjbGljayk9XCJjbGlja0ljb24oKVwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIj5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG48L25nLWNvbnRhaW5lcj4iXX0=
330
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1pbnB1dC10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpZGVzeXMtZ2VuZXJpYy11aS9zcmMvbGliL2lucHV0L2NvbXBvbmVudHMvaW5wdXQtdGV4dC9zLWlucHV0LXRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC10ZXh0L3MtaW5wdXQtdGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUssT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFlekUsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsSUFDSSxLQUFLLEtBQWEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLEtBQUssQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzNGLENBQUM7SUFBQSxDQUFDO0lBQ0YsSUFDSSxJQUFJLEtBQWEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLElBQUksQ0FBQyxHQUFXO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9B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O2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRixLQUFLO3NCQURSLEtBQUs7Z0JBTUYsSUFBSTtzQkFEUCxLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQWFJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24sIGZvcndhcmRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzLWlucHV0LXRleHQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zLWlucHV0LXRleHQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3MtaW5wdXQtdGV4dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTSW5wdXRUZXh0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTSW5wdXRUZXh0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yICwgQWZ0ZXJWaWV3SW5pdCAge1xyXG4gIFxyXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xyXG4gIG9uVG91Y2ggPSAoKSA9PiB7IH07XHJcblxyXG4gIC8vUkVGIFBBUkEgVFlQRSBOVU1CRVJcclxuICBAVmlld0NoaWxkKCd0eXBlTnVtYmVyJykgdHlwZU51bWJlcjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCA7XHJcbiAgLy9SRUYgUEFSQSBUWVBFIFJBTkdFXHJcbiAgQFZpZXdDaGlsZCgndG9vbHRpcENvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSB9KSB0b29sdGlwQ29udGFpbmVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXAnLCB7IHN0YXRpYzogZmFsc2UgfSkgdG9vbHRpcDogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuXHJcblxyXG4gIEBJbnB1dCgpIHRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGlkOiBhbnkgPSAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCk7XHJcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgcGxhY2VIb2xkZXI/OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1heD86IG51bWJlciA7XHJcbiAgQElucHV0KCkgbWluOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIHN0ZXA6IG51bWJlciA9IDE7XHJcbiAgQElucHV0KCkgcmVhZE9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIGdldCB0aGVtZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fdGhlbWU7IH1cclxuICBzZXQgdGhlbWUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3RoZW1lID0gWydkZWZhdWx0JywgJ2dyZWVuJywgJ3llbGxvdycsICdyZWQnXS5pbmRleE9mKHZhbCkgIT0gLTEgPyB2YWwgOiAnZGVmYXVsdCc7XHJcbiAgfTtcclxuICBASW5wdXQoKVxyXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl90eXBlOyB9XHJcbiAgc2V0IHR5cGUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3R5cGUgPSBbJ3RleHQnLCAncGFzc3dvcmQnLCAnZW1haWwnLCAncGhvbmUnLCAndXJsJywgJ3NlYXJjaCcsICdudW1iZXInLCAnY29sb3InLCAnZGF0ZScsICd0aW1lJyAsICdyYW5nZSddLmluZGV4T2YodmFsKSAhPSAtMSA/IHZhbCA6ICd0ZXh0JztcclxuICB9O1xyXG4gIEBJbnB1dCgpIGNsYXNzQWRkOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBoZWxwOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2l6ZTogJ3NtJyB8ICdtZCcgPSAnbWQnO1xyXG4gIEBJbnB1dCgpIHJhbmdlVW5pdHk6IHN0cmluZyA9ICcnO1xyXG5cclxuICBpbnB1dFRpbWVvdXQ/OiBhbnk7XHJcbiAgaW5wdXRUZXh0OiBzdHJpbmcgPSAnJztcclxuICBpbnB1dE51bWJlcjogbnVtYmVyID0gMDtcclxuICBfdHlwZTogc3RyaW5nID0gJ3RleHQnO1xyXG4gIF90aGVtZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xyXG4gIGRpc2FibGVkc3R5bGU6IHN0cmluZyA9ICcnO1xyXG4gIHZpc2liaWxpdHkgPSBmYWxzZTtcclxuICBpY29uTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIGluY29uU3ltYm9sOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9vbHRpcFZhbHVlOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQE91dHB1dCgpIHRleHRDaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBjbGlja0hlbHBJY29uRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgXHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcblxyXG4gICAgLy9BanVzdGUgY3VhbmRvIHR5cGUgbnVtYmVyIHZpZW5lIGNvbiB0ZXh0IHkgbG8gY29udmllcnRlIGEgbnVtZXJvXHJcbiAgICBpZih0aGlzLnRleHQgJiYgdGhpcy50eXBlID09ICdudW1iZXInKXtcclxuICAgICAgICB0aGlzLmlucHV0TnVtYmVyID0gTnVtYmVyKHRoaXMudGV4dClcclxuICAgIH1cclxuXHJcbiAgICAvL0FqdXN0ZSBjdWFuZG8gdHlwZSBjb2xvciB2aWVuZSBjb24gdGV4dCB2YWNpb1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT0gJ2NvbG9yJyAmJiB0aGlzLnRleHQgPT0gJycpIHtcclxuICAgICAgdGhpcy50ZXh0ID0gJyMwMDAwMDAnXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLnRleHQ7XHJcbiAgICBcclxuICAgIC8vQWN0aXZhIGVsIGVzdGlsbyBkZSBkaXNhYmxlZCBcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZWRzdHlsZSA9IFwiZGlzYWJsZWQtYWN0aXZlXCJcclxuICAgIH1cclxuXHJcbiAgICAvL0FqdXN0ZSB0eXBlIGNvbG9yIHNvbG8gc2UgZGVzaGFiaWxpdGEgY29uIGRpc2FibGVkLlxyXG4gICAgaWYodGhpcy50eXBlID09ICdjb2xvcicgJiYgdGhpcy5yZWFkT25seSA9PSB0cnVlKXtcclxuICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWVcclxuICAgIH1cclxuXHJcblxyXG4gICAgdGhpcy5sb2FkVGhlbWUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vQWp1c3RlcyBUeXBlIFJhbmdlXHJcbiAgICBpZih0aGlzLnR5cGUgPT0gJ3JhbmdlJyl7XHJcbiAgICAgIHRoaXMucmFuZ2VPbkxvYWQoKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ3RoZW1lJ10pIHtcclxuICAgICAgdGhpcy5sb2FkVGhlbWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZihjaGFuZ2VzWyd0ZXh0J10pe1xyXG4gICAgICBpZih0aGlzLnRleHQgJiYgdGhpcy50eXBlID09ICdudW1iZXInKXtcclxuICAgICAgICAgIHRoaXMuaW5wdXROdW1iZXIgPSBOdW1iZXIodGhpcy50ZXh0KVxyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIGlmICh0aGlzLl90eXBlID09ICdjb2xvcicgJiYgdGhpcy50ZXh0ID09ICcnKSB7XHJcbiAgICAgICAgdGhpcy50ZXh0ID0gJyMwMDAwMDAnXHJcbiAgICAgIH1cclxuICBcclxuICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLnRleHQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRUaGVtZSgpIHtcclxuICAgIHN3aXRjaCAodGhpcy50aGVtZSkge1xyXG4gICAgICBjYXNlIFwiZGVmYXVsdFwiOlxyXG4gICAgICAgIHRoaXMuaWNvbk5hbWUgPSBcIlwiXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJyZWRcIjpcclxuICAgICAgICB0aGlzLmljb25OYW1lID0gXCJlcnJvcl9vdXRsaW5lXCJcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImdyZWVuXCI6XHJcbiAgICAgICAgdGhpcy5pY29uTmFtZSA9IFwiY2hlY2tfY2lyY2xlX291dGxpbmVcIlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwieWVsbG93XCI6XHJcbiAgICAgICAgdGhpcy5pbmNvblN5bWJvbCA9IHRydWVcclxuICAgICAgICB0aGlzLmljb25OYW1lID0gXCJ3YXJuaW5nXCJcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhpcy5pY29uTmFtZSA9IFwiXCJcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uVGV4dENoYW5nZSgpIHtcclxuICAgIGlmKHRoaXMudHlwZSA9PSAnbnVtYmVyJyl7XHJcbiAgICAgIHRoaXMudXBkYXRlTnVtYmVyKHRoaXMuaW5wdXRUZXh0KVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0VGV4dCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaW5wdXRUaW1lb3V0KSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmlucHV0VGltZW91dCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pbnB1dFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy50ZXh0Q2hhbmdlRXZlbnQubmV4dCh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICB9LCA1MDAsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgb25UZXh0Q2hhbmdlVmFsKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5pbnB1dFRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaW5wdXRUaW1lb3V0KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlucHV0VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodmFsKSB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWwpO1xyXG4gICAgICAgIHRoaXMudGV4dENoYW5nZUV2ZW50Lm5leHQodmFsKTtcclxuICAgICAgICB0aGlzLmlucHV0VGV4dCA9IHZhbDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XHJcbiAgICAgICAgdGhpcy50ZXh0Q2hhbmdlRXZlbnQubmV4dCh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICAgIH1cclxuICAgIH0sIDUwMCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBjbGlja0ljb24oKSB7XHJcbiAgICB0aGlzLmNsaWNrSGVscEljb25FdmVudC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBjb2xvckNsaWNrKCkge1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5uYW1lKT8uY2xpY2soKTtcclxuICB9XHJcblxyXG4gIC8vRlVOQ0lPTkVTIFBBUkEgVFlQRSBOVU1CRVIgXHJcbiAgbnVtYmVyRGVjcmVhc2UoKXtcclxuICAgIGlmKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRPbmx5KXtcclxuICAgICAgaWYodGhpcy5taW4gPCB0aGlzLmlucHV0TnVtYmVyKXtcclxuICAgICAgICB0aGlzLmlucHV0TnVtYmVyLT10aGlzLnN0ZXBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuaW5wdXROdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICAgIHRoaXMudGV4dENoYW5nZUV2ZW50Lm5leHQodGhpcy5pbnB1dFRleHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbnVtYmVySW5jcmVtZW50KCl7XHJcbiAgICBpZighdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkT25seSl7XHJcbiAgICAgIGlmKHRoaXMubWF4KXtcclxuICAgICAgICBpZih0aGlzLm1heCA+IHRoaXMuaW5wdXROdW1iZXIpe1xyXG4gICAgICAgICAgdGhpcy5pbnB1dE51bWJlcis9dGhpcy5zdGVwXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICB0aGlzLmlucHV0TnVtYmVyID0gdGhpcy5tYXhcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYoIXRoaXMubWF4KXtcclxuICAgICAgICB0aGlzLmlucHV0TnVtYmVyKz10aGlzLnN0ZXBcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMuaW5wdXROdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICB0aGlzLm9uVG91Y2goKTtcclxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0VGV4dCk7XHJcbiAgICAgIHRoaXMudGV4dENoYW5nZUV2ZW50Lm5leHQodGhpcy5pbnB1dFRleHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTnVtYmVyKHZhbHVlOmFueSl7XHJcbiAgICBsZXQgdmFsdWUyID0gdmFsdWVcclxuICAgIGlmKHRoaXMubWF4KVxyXG4gICAgaWYodmFsdWUgPiB0aGlzLm1heCl7XHJcbiAgICAgIHZhbHVlMiA9IHRoaXMubWF4XHJcbiAgICB9XHJcbiAgICBpZih2YWx1ZSA8IHRoaXMubWluKXtcclxuICAgICAgdmFsdWUyID0gdGhpcy5taW5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlucHV0VGV4dCA9IHZhbHVlMi50b1N0cmluZygpXHJcbiAgICB0aGlzLmlucHV0TnVtYmVyID0gTnVtYmVyKHZhbHVlMik7XHJcbiAgICBpZih0aGlzLnR5cGVOdW1iZXIpXHJcbiAgICB0aGlzLnR5cGVOdW1iZXIubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuaW5wdXROdW1iZXJcclxuICAgIHRoaXMub25Ub3VjaCgpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0TnVtYmVyKTtcclxuICAgIHRoaXMudGV4dENoYW5nZUV2ZW50Lm5leHQodGhpcy5pbnB1dFRleHQpO1xyXG4gICAgXHJcbiAgfSBcclxuICAvL0ZJTiBGVU5DSU9ORVMgUEFSQSBUWVBFIE5VTUJFUiBcclxuICBcclxuICAvL0ZVTkNJT05FUyBQQVJBIFRZUEUgUkFOR0UgXHJcbiAgcmFuZ2VPbkxvYWQoKXtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAvL1JBTkdPIFRPVEFMXHJcbiAgICAgIGNvbnN0IHJhbmdlTWF4ID0gdGhpcy5tYXggPyB0aGlzLm1heCA6IDEwMDtcclxuICAgICAgLy9DQUxDVUxPIExBIEFNUExJVFVEIFBBUkEgUE9ERVIgUE9TSUNJT05BUiBBTCA1MCUgUE9SIERFRkVDVE9cclxuICAgICAgbGV0IGFtcGxpdHVkVG90YWwgPSByYW5nZU1heCAtIHRoaXMubWluXHJcbiAgICAgIGxldCBwb3JjaW9uID0gKGFtcGxpdHVkVG90YWwgKiA1MCkgLyAxMDAgXHJcbiAgICAgIC8vIElOSUNJQUxJWkEgQUwgNTAlIENVQU5ETyBOTyBIQVkgVkFMT1IgUFJFREVGSU5JRE9cclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy50ZXh0ID09ICcnID8gdGhpcy5taW4gKyBwb3JjaW9uIDogdGhpcy50ZXh0XHJcbiAgICAgIHZhbHVlID0gdGhpcy5pbnB1dFRleHQgPT0gJycgPyB0aGlzLm1pbiArIHBvcmNpb24gOiB0aGlzLmlucHV0VGV4dFxyXG4gICAgICAvL0RFRklOTyBFTCBUT09UTFRJUFxyXG4gICAgICB0aGlzLnRvb2x0aXBWYWx1ZSA9IHRoaXMudGV4dCArIHRoaXMucmFuZ2VVbml0eTtcclxuICAgICAgLy9TSSBFUyBDSFJPTUUgQVBMSUNPIEVMIEZJWFxyXG4gICAgICBjb25zdCBpc0Nocm9tZSA9IC9DaHJvbWUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgL0dvb2dsZSBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvcik7XHJcbiAgICAgIGlmKGlzQ2hyb21lKSB7XHJcbiAgICAgICAgLy9DQUxDQ1VMTyBFTCAlIEEgQVNJR05BUlxyXG4gICAgICAgIGxldCBwb3JjZW50YWplID0gKChOdW1iZXIodmFsdWUpIC0gdGhpcy5taW4pIC8gKHJhbmdlTWF4IC0gdGhpcy5taW4pKSAqIDEwMFxyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpPy5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcgLCAnMTRweCcpO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpPy5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLWJvdHRvbScgLCAnMTRweCcpO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpPy5zdHlsZS5zZXRQcm9wZXJ0eSgnYm9yZGVyLXJhZGl1cycgLCAnNHB4Jyk7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCk/LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnICwgJzhweCcpO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpPy5zdHlsZS5zZXRQcm9wZXJ0eSgnYmFja2dyb3VuZCcgLCAnbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB2YXIoLS1wcmltYXJ5LTYwMCkgMCUsIHZhcigtLXByaW1hcnktNjAwKSAnK3BvcmNlbnRhamUrJyUsIHZhcigtLW5ldXRyYWxzLTEwMDApICcrcG9yY2VudGFqZSsnJSwgdmFyKC0tbmV1dHJhbHMtMTAwMCkgMTAwJSknKTtcclxuICAgICAgfTtcclxuICAgIH0sIDApO1xyXG4gIH1cclxuXHJcbiAgLy9GVU5DSU9OIFBBUkEgQ0hST01FIENVQU5ETyBTRSBERVNMSVpBIEVMIFNMSURFIEZVTkNJT05FIENPUlJFQ1RBTUVOVEVcclxuICBjaGFuZ2VSYW5nZSh2YWx1ZTphbnkpe1xyXG4gICAgaWYodGhpcy50eXBlID09ICdyYW5nZScpe1xyXG4gICAgICBjb25zdCBpc0Nocm9tZSA9IC9DaHJvbWUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgL0dvb2dsZSBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvcik7XHJcbiAgICAgIGNvbnN0IHJhbmdlTWF4ID0gdGhpcy5tYXggPyB0aGlzLm1heCA6IDEwMDtcclxuICAgICAgaWYoaXNDaHJvbWUpIHtcclxuICAgICAgICBsZXQgcG9yY2VudGFqZSA9ICgodmFsdWUgLSB0aGlzLm1pbikgLyAocmFuZ2VNYXggLSB0aGlzLm1pbikpICogMTAwXHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCk/LnN0eWxlLnNldFByb3BlcnR5KCdiYWNrZ3JvdW5kJyAsICdsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHZhcigtLXByaW1hcnktNjAwKSAwJSwgdmFyKC0tcHJpbWFyeS02MDApICcrcG9yY2VudGFqZSsnJSwgdmFyKC0tbmV1dHJhbHMtMTAwMCkgJytwb3JjZW50YWplKyclLCB2YXIoLS1uZXV0cmFscy0xMDAwKSAxMDAlKScpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9GVU5DSU9OIFFVRSBBQ1RVQUxJWkEgRUwgVE9PTFRJUCBDVUFORE8gU0UgREVTTElaQSBFTCBTTElERVxyXG4gIHVwZGF0ZVRvb2x0aXAodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYodGhpcy50b29sdGlwQ29udGFpbmVyICYmIHRoaXMudG9vbHRpcCl7XHJcbiAgICAgIGNvbnN0IHJhbmdlV2lkdGggPSB0aGlzLnRvb2x0aXBDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgY29uc3QgcmFuZ2VNYXggPSB0aGlzLm1heCA/IHRoaXMubWF4IDogMTAwO1xyXG4gICAgICBsZXQgcG9yY2VudGFqZSA9ICgoTnVtYmVyKHZhbHVlKSAtIHRoaXMubWluKSAvIChyYW5nZU1heCAtIHRoaXMubWluKSkgKiAxMDBcclxuICAgICAgbGV0IGFqdXN0ZSA9IHBvcmNlbnRhamUgKiByYW5nZVdpZHRoIC8gMTAwO1xyXG4gICAgICB0aGlzLnRvb2x0aXAubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gYCR7YWp1c3RlfXB4YDtcclxuICAgICAgdGhpcy50b29sdGlwVmFsdWUgPSB2YWx1ZSArIHRoaXMucmFuZ2VVbml0eTtcclxuICAgIH1cclxuICB9XHJcbiAgLy9GSU4gRlVOQ0lPTkVTIFBBUkEgVFlQRSBSQU5HRVxyXG5cclxuICAvL0ZVTkNJT05FUyBQQVJBIFFVRSBGVU5DSU9ORSBGT1JNIEJVSUxERVJcclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRUZXh0ID0gdmFsdWUgPz8gXCJcIjtcclxuICAgIHRoaXMuaW5wdXROdW1iZXIgPSB2YWx1ZSA/PyAwO1xyXG4gICAgaWYodGhpcy50eXBlID09ICdyYW5nZScpe1xyXG4gICAgICB0aGlzLnJhbmdlT25Mb2FkKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoID0gZm47XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5ibHVyLm5leHQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzLm5leHQoZXZlbnQpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0eXBlXCI+XHJcbiAgICA8IS0tIEVsIHN3aXRjaCBjYXNlIGNvbiBjYWRhIGNhc28gcG9yIGlucHV0ICBbJ3RleHQnLCAncGFzc3dvcmQnLCAnZW1haWwnICwgJ3Bob25lJyAsICd1cmwnICwgJ3NlYXJjaCddLS0+XHJcblxyXG4gICAgPCEtLSBjYXNlIHRleHQgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLTYyNiBjb250ZW50LWlucHV0LW1haW4tdGV4dCB7e3NpemV9fSB0aGVtZS17e3RoZW1lfX0ge3tjbGFzc0FkZH19IHt7ZGlzYWJsZWRzdHlsZX19XCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbnRlbnQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgY2xhc3M9XCJpY29uXCI+ZW1haWw8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiIFxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgXHJcbiAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWRcIiBcclxuICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIiBcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lICE9ICdkZWZhdWx0J1wiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgPT0gJ2RlZmF1bHQnICYmIGhlbHBcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IChjbGljayk9XCJjbGlja0ljb24oKVwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIj5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBjYXNlIHBhc3N3b3JkIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3Bhc3N3b3JkJ1wiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi1wYXNzd29yZCB7e3NpemV9fSB0aGVtZS17e3RoZW1lfX0ge3tjbGFzc0FkZH19IHt7ZGlzYWJsZWRzdHlsZX19XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IGNsYXNzPVwiaWNvblwiPnZwbl9rZXk8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkID8gaWQgOiAnJ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ7e3Zpc2liaWxpdHkgPyAndGV4dCcgOiAncGFzc3dvcmQnfX1cIiBcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKClcclxuICAgICAgICAgICAgICAgICAgICBcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCJpbmNvblN5bWJvbD8nc3ltYm9sJzonaWNvbidcIiBjbGFzcz1cImljb24gY3Vyc29yXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlzaWJpbGl0eSA9ICF2aXNpYmlsaXR5XCI+e3t2aXNpYmlsaXR5ID8gJ3Zpc2liaWxpdHknIDpcclxuICAgICAgICAgICAgICAgICAgICAndmlzaWJpbGl0eV9vZmYnfX08L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBjYXNlIGVtYWlsIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2VtYWlsJ1wiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi1lbWFpbCB7e3NpemV9fSB0aGVtZS17e3RoZW1lfX0ge3tjbGFzc0FkZH19IHt7ZGlzYWJsZWRzdHlsZX19XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IGNsYXNzPVwiaWNvblwiPm1haWxfb3V0bGluZTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiICBcclxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgPyBpZCA6ICcnXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIiBcclxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSAhPSAnZGVmYXVsdCdcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IFt0eXBlXT1cImluY29uU3ltYm9sPydzeW1ib2wnOidpY29uJ1wiIGNsYXNzPVwiaWNvbiByZXBvcnRcIj57e2ljb25OYW1lfX08L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lID09ICdkZWZhdWx0JyAmJiBoZWxwXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tJY29uKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICA8IS0tIGNhc2UgcGhvbmUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncGhvbmUnXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi02MjYgY29udGVudC1pbnB1dC1tYWluLXBob25lIHt7c2l6ZX19IHRoZW1lLXt7dGhlbWV9fSB7e2NsYXNzQWRkfX0ge3tkaXNhYmxlZHN0eWxlfX1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgY2xhc3M9XCJpY29uXCI+cGhvbmU8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgIFxyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCA/IGlkIDogJydcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIiBcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lICE9ICdkZWZhdWx0J1wiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgPT0gJ2RlZmF1bHQnICYmIGhlbHBcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IChjbGljayk9XCJjbGlja0ljb24oKVwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIj5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDwhLS0gY2FzZSB1cmwgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndXJsJ1wiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi11cmwge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICBodHRwOi8vXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgIFxyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCA/IGlkIDogJydcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIiBcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lICE9ICdkZWZhdWx0J1wiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgPT0gJ2RlZmF1bHQnICYmIGhlbHBcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IChjbGljayk9XCJjbGlja0ljb24oKVwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIj5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgIDwhLS0gY2FzZSBzZWFyY2ggLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VhcmNoJ1wiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi1zZWFyY2gge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBjbGFzcz1cImljb25cIj5zZWFyY2g8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgIFxyXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCA/IGlkIDogJydcIiBcclxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIiBcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgY2xhc3M9XCJpY29uIGN1cnNvclwiPmhlbHBfb3V0bGluZTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBjYXNlIGNvbG9yIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NvbG9yJ1wiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi1jb2xvciB7e3NpemV9fSB0aGVtZS17e3RoZW1lfX0ge3tjbGFzc0FkZH19IHt7ZGlzYWJsZWRzdHlsZX19XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiAjY29sb3IgW2lkXT1cIm5hbWVcIiBbbmFtZV09XCJuYW1lXCIgdHlwZT1cImNvbG9yXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgpXCIgc3R5bGU9XCJ3aWR0aDogNDBweDsgcGFkZGluZzogMDtcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiIChjbGljayk9XCIhdGhpcy5yZWFkT25seSA/IHRoaXMuY29sb3IuY2xpY2soKSA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkID8gaWQgOiAnJ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInRleHRcIiBcclxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiBcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lICE9ICdkZWZhdWx0J1wiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgPT0gJ2RlZmF1bHQnICYmIGhlbHBcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IChjbGljayk9XCJjbGlja0ljb24oKVwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIj5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBjYXNlIGRhdGUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLTYyNiBjb250ZW50LWlucHV0LW1haW4tdGV4dCB7e3NpemV9fSB0aGVtZS17e3RoZW1lfX0ge3tjbGFzc0FkZH19IHt7ZGlzYWJsZWRzdHlsZX19XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiAgXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkID8gaWQgOiAnJ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInR5cGVcIiBcclxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2VWYWwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgIT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCJpbmNvblN5bWJvbD8nc3ltYm9sJzonaWNvbidcIiBjbGFzcz1cImljb24gcmVwb3J0XCI+e3tpY29uTmFtZX19PC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lID09ICdkZWZhdWx0JyAmJiBoZWxwXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tJY29uKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gY2FzZSB0aW1lIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RpbWUnXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi02MjYgY29udGVudC1pbnB1dC1tYWluLXRleHQge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBcclxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkID8gaWQgOiAnJ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInR5cGVcIiBcclxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2VWYWwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiaW5wdXRUZXh0XCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgIT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCJpbmNvblN5bWJvbD8nc3ltYm9sJzonaWNvbidcIiBjbGFzcz1cImljb24gcmVwb3J0XCI+e3tpY29uTmFtZX19PC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lID09ICdkZWZhdWx0JyAmJiBoZWxwXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tJY29uKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDwhLS0gY2FzZSBudW1iZXIgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnQgbXItMVwiPlxyXG4gICAgICAgICAgICAgICAgPHMtYnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJudW1iZXJEZWNyZWFzZSgpXCIgW3NpemVdPVwic2l6ZVwiIFtwaWxsXT1cInRydWVcIiBbaW52ZXJ0XT1cInRydWVcIiBjbGFzcz1cImJ1dHRvbi1pbnB1dC02MjZcIj48cy1pY29uLW1hdD5yZW1vdmU8L3MtaWNvbi1tYXQ+PC9zLWJ1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi10ZXh0IGNvbnRlbnQtaW5wdXQtbWFpbi1udW1iZXIge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fSB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCA/IGlkIDogJydcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgI3R5cGVOdW1iZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdGVwXT1cInN0ZXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgIT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSA9PSAnZGVmYXVsdCcgJiYgaGVscFwiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IChjbGljayk9XCJjbGlja0ljb24oKVwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIj5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXQ+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnQgbWwtMVwiPlxyXG4gICAgICAgICAgICAgICAgPHMtYnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJudW1iZXJJbmNyZW1lbnQoKVwiIFtzaXplXT1cInNpemVcIiBbcGlsbF09XCJ0cnVlXCIgW2ludmVydF09XCJ0cnVlXCIgY2xhc3M9XCJidXR0b24taW5wdXQtNjI2XCI+PHMtaWNvbi1tYXQ+YWRkPC9zLWljb24tbWF0Pjwvcy1idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBjYXNlIHJhbmdlIC0tPlxyXG4gICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyYW5nZSdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLXJhbmdlIHt7c2l6ZX19IHRoZW1lLXt7dGhlbWV9fSB7e2NsYXNzQWRkfX0ge3tkaXNhYmxlZHN0eWxlfX1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvb2x0aXAgdG9vbHRpcC17e2Rpc2FibGVkfX1cIiAjdG9vbHRpcENvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAjcmFuZ2VGaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInR5cGVcIiBcclxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWRcIiBcclxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdGVwXT1cInN0ZXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZW1vdmUpPVwiY2hhbmdlUmFuZ2UocmFuZ2VGaWVsZC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwidXBkYXRlVG9vbHRpcChyYW5nZUZpZWxkLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcHRleHRcIiAjdG9vbHRpcD57eyB0b29sdGlwVmFsdWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPCEtLSBjYXNlIGRlZmF1bHQgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi02MjYgY29udGVudC1pbnB1dC1tYWluLXRleHQge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IGNsYXNzPVwiaWNvblwiPmVtYWlsPC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiBcclxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgPyBpZCA6ICdnZW5lcmljJ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInR5cGVcIiBcclxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBcclxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiIFxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgIT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCJpbmNvblN5bWJvbD8nc3ltYm9sJzonaWNvbidcIiBjbGFzcz1cImljb24gcmVwb3J0XCI+e3tpY29uTmFtZX19PC9zLWljb24tbWF0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSA9PSAnZGVmYXVsdCcgJiYgaGVscFwiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgKGNsaWNrKT1cImNsaWNrSWNvbigpXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiPmhlbHBfb3V0bGluZTwvcy1pY29uLW1hdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbjwvbmctY29udGFpbmVyPiJdfQ==