@ng-nest/ui 13.1.1 → 13.1.4

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 (215) hide show
  1. package/core/config/config.d.ts +9 -0
  2. package/date-picker/picker-date.component.d.ts +1 -1
  3. package/dialog/dialog-portal.component.d.ts +33 -5
  4. package/dialog/dialog-portal.directives.d.ts +17 -0
  5. package/dialog/dialog-ref.d.ts +11 -1
  6. package/dialog/dialog.module.d.ts +1 -1
  7. package/dialog/dialog.property.d.ts +28 -0
  8. package/dialog/dialog.service.d.ts +1 -0
  9. package/empty/empty.component.d.ts +1 -1
  10. package/esm2020/core/config/config.mjs +1 -1
  11. package/esm2020/date-picker/picker-date.component.mjs +2 -2
  12. package/esm2020/dialog/dialog-portal.component.mjs +49 -12
  13. package/esm2020/dialog/dialog-portal.directives.mjs +47 -1
  14. package/esm2020/dialog/dialog-ref.mjs +81 -2
  15. package/esm2020/dialog/dialog.component.mjs +6 -4
  16. package/esm2020/dialog/dialog.module.mjs +10 -2
  17. package/esm2020/dialog/dialog.property.mjs +1 -1
  18. package/esm2020/dialog/dialog.service.mjs +53 -8
  19. package/esm2020/empty/empty.component.mjs +2 -2
  20. package/esm2020/i18n/i18n.property.mjs +1 -1
  21. package/esm2020/i18n/languages/ar_EG.mjs +7 -1
  22. package/esm2020/i18n/languages/bg_BG.mjs +7 -1
  23. package/esm2020/i18n/languages/ca_ES.mjs +7 -1
  24. package/esm2020/i18n/languages/cs_CZ.mjs +7 -1
  25. package/esm2020/i18n/languages/da_DK.mjs +7 -1
  26. package/esm2020/i18n/languages/de_DE.mjs +7 -1
  27. package/esm2020/i18n/languages/el_GR.mjs +7 -1
  28. package/esm2020/i18n/languages/en_GB.mjs +7 -1
  29. package/esm2020/i18n/languages/en_US.mjs +7 -1
  30. package/esm2020/i18n/languages/es_ES.mjs +7 -1
  31. package/esm2020/i18n/languages/et_EE.mjs +7 -1
  32. package/esm2020/i18n/languages/fa_IR.mjs +7 -1
  33. package/esm2020/i18n/languages/fi_FI.mjs +7 -1
  34. package/esm2020/i18n/languages/fr_BE.mjs +7 -1
  35. package/esm2020/i18n/languages/fr_FR.mjs +7 -1
  36. package/esm2020/i18n/languages/he_IL.mjs +7 -1
  37. package/esm2020/i18n/languages/hi_IN.mjs +7 -1
  38. package/esm2020/i18n/languages/hr_HR.mjs +7 -1
  39. package/esm2020/i18n/languages/hu_HU.mjs +7 -1
  40. package/esm2020/i18n/languages/hy_AM.mjs +7 -1
  41. package/esm2020/i18n/languages/id_ID.mjs +7 -1
  42. package/esm2020/i18n/languages/is_IS.mjs +7 -1
  43. package/esm2020/i18n/languages/it_IT.mjs +7 -1
  44. package/esm2020/i18n/languages/ja_JP.mjs +7 -1
  45. package/esm2020/i18n/languages/ka_GE.mjs +7 -1
  46. package/esm2020/i18n/languages/kn_IN.mjs +7 -1
  47. package/esm2020/i18n/languages/ko_KR.mjs +7 -1
  48. package/esm2020/i18n/languages/ku_IQ.mjs +7 -1
  49. package/esm2020/i18n/languages/lv_LV.mjs +7 -1
  50. package/esm2020/i18n/languages/mn_MN.mjs +7 -1
  51. package/esm2020/i18n/languages/ms_MY.mjs +7 -1
  52. package/esm2020/i18n/languages/nb_NO.mjs +7 -1
  53. package/esm2020/i18n/languages/ne_NP.mjs +7 -1
  54. package/esm2020/i18n/languages/nl_BE.mjs +7 -1
  55. package/esm2020/i18n/languages/nl_NL.mjs +7 -1
  56. package/esm2020/i18n/languages/pl_PL.mjs +7 -1
  57. package/esm2020/i18n/languages/pt_BR.mjs +7 -1
  58. package/esm2020/i18n/languages/pt_PT.mjs +7 -1
  59. package/esm2020/i18n/languages/ro_RO.mjs +7 -1
  60. package/esm2020/i18n/languages/ru_RU.mjs +7 -1
  61. package/esm2020/i18n/languages/sk_SK.mjs +7 -1
  62. package/esm2020/i18n/languages/sl_SI.mjs +7 -1
  63. package/esm2020/i18n/languages/sr_RS.mjs +7 -1
  64. package/esm2020/i18n/languages/sv_SE.mjs +7 -1
  65. package/esm2020/i18n/languages/ta_IN.mjs +7 -1
  66. package/esm2020/i18n/languages/th_TH.mjs +7 -1
  67. package/esm2020/i18n/languages/tr_TR.mjs +7 -1
  68. package/esm2020/i18n/languages/uk_UA.mjs +7 -1
  69. package/esm2020/i18n/languages/vi_VN.mjs +7 -1
  70. package/esm2020/i18n/languages/zh_CN.mjs +7 -1
  71. package/esm2020/i18n/languages/zh_TW.mjs +7 -1
  72. package/esm2020/list/list-option.component.mjs +21 -8
  73. package/esm2020/list/list.component.mjs +55 -13
  74. package/esm2020/list/list.module.mjs +5 -1
  75. package/esm2020/list/list.property.mjs +33 -5
  76. package/esm2020/page-header/page-header.component.mjs +2 -2
  77. package/esm2020/pagination/pagination.component.mjs +2 -2
  78. package/esm2020/rate/rate.component.mjs +21 -4
  79. package/esm2020/rate/rate.property.mjs +9 -3
  80. package/esm2020/resizable/resizable.directive.mjs +73 -35
  81. package/esm2020/resizable/resizable.property.mjs +1 -1
  82. package/esm2020/select/select-portal.component.mjs +26 -9
  83. package/esm2020/select/select.component.mjs +15 -3
  84. package/esm2020/select/select.module.mjs +5 -4
  85. package/esm2020/select/select.property.mjs +12 -2
  86. package/esm2020/text-retract/text-retract.component.mjs +2 -2
  87. package/esm2020/upload/upload.component.mjs +13 -9
  88. package/esm2020/upload/upload.module.mjs +5 -2
  89. package/esm2020/upload/upload.property.mjs +30 -2
  90. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  91. package/fesm2015/ng-nest-ui-date-picker.mjs +1 -1
  92. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  93. package/fesm2015/ng-nest-ui-dialog.mjs +249 -28
  94. package/fesm2015/ng-nest-ui-dialog.mjs.map +1 -1
  95. package/fesm2015/ng-nest-ui-empty.mjs +1 -1
  96. package/fesm2015/ng-nest-ui-empty.mjs.map +1 -1
  97. package/fesm2015/ng-nest-ui-i18n.mjs +306 -0
  98. package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
  99. package/fesm2015/ng-nest-ui-list.mjs +107 -22
  100. package/fesm2015/ng-nest-ui-list.mjs.map +1 -1
  101. package/fesm2015/ng-nest-ui-page-header.mjs +1 -1
  102. package/fesm2015/ng-nest-ui-page-header.mjs.map +1 -1
  103. package/fesm2015/ng-nest-ui-pagination.mjs +1 -1
  104. package/fesm2015/ng-nest-ui-pagination.mjs.map +1 -1
  105. package/fesm2015/ng-nest-ui-rate.mjs +27 -4
  106. package/fesm2015/ng-nest-ui-rate.mjs.map +1 -1
  107. package/fesm2015/ng-nest-ui-resizable.mjs +72 -34
  108. package/fesm2015/ng-nest-ui-resizable.mjs.map +1 -1
  109. package/fesm2015/ng-nest-ui-select.mjs +56 -16
  110. package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
  111. package/fesm2015/ng-nest-ui-text-retract.mjs +1 -1
  112. package/fesm2015/ng-nest-ui-text-retract.mjs.map +1 -1
  113. package/fesm2015/ng-nest-ui-upload.mjs +45 -10
  114. package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
  115. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  116. package/fesm2020/ng-nest-ui-date-picker.mjs +1 -1
  117. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  118. package/fesm2020/ng-nest-ui-dialog.mjs +242 -28
  119. package/fesm2020/ng-nest-ui-dialog.mjs.map +1 -1
  120. package/fesm2020/ng-nest-ui-empty.mjs +1 -1
  121. package/fesm2020/ng-nest-ui-empty.mjs.map +1 -1
  122. package/fesm2020/ng-nest-ui-i18n.mjs +306 -0
  123. package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
  124. package/fesm2020/ng-nest-ui-list.mjs +107 -22
  125. package/fesm2020/ng-nest-ui-list.mjs.map +1 -1
  126. package/fesm2020/ng-nest-ui-page-header.mjs +1 -1
  127. package/fesm2020/ng-nest-ui-page-header.mjs.map +1 -1
  128. package/fesm2020/ng-nest-ui-pagination.mjs +1 -1
  129. package/fesm2020/ng-nest-ui-pagination.mjs.map +1 -1
  130. package/fesm2020/ng-nest-ui-rate.mjs +27 -4
  131. package/fesm2020/ng-nest-ui-rate.mjs.map +1 -1
  132. package/fesm2020/ng-nest-ui-resizable.mjs +72 -34
  133. package/fesm2020/ng-nest-ui-resizable.mjs.map +1 -1
  134. package/fesm2020/ng-nest-ui-select.mjs +56 -16
  135. package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
  136. package/fesm2020/ng-nest-ui-text-retract.mjs +1 -1
  137. package/fesm2020/ng-nest-ui-text-retract.mjs.map +1 -1
  138. package/fesm2020/ng-nest-ui-upload.mjs +45 -10
  139. package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
  140. package/i18n/i18n.property.d.ts +8 -0
  141. package/i18n/languages/ar_EG.d.ts +6 -0
  142. package/i18n/languages/bg_BG.d.ts +6 -0
  143. package/i18n/languages/ca_ES.d.ts +6 -0
  144. package/i18n/languages/cs_CZ.d.ts +6 -0
  145. package/i18n/languages/da_DK.d.ts +6 -0
  146. package/i18n/languages/de_DE.d.ts +6 -0
  147. package/i18n/languages/el_GR.d.ts +6 -0
  148. package/i18n/languages/en_GB.d.ts +6 -0
  149. package/i18n/languages/en_US.d.ts +6 -0
  150. package/i18n/languages/es_ES.d.ts +6 -0
  151. package/i18n/languages/et_EE.d.ts +6 -0
  152. package/i18n/languages/fa_IR.d.ts +6 -0
  153. package/i18n/languages/fi_FI.d.ts +6 -0
  154. package/i18n/languages/fr_BE.d.ts +6 -0
  155. package/i18n/languages/fr_FR.d.ts +6 -0
  156. package/i18n/languages/he_IL.d.ts +6 -0
  157. package/i18n/languages/hi_IN.d.ts +6 -0
  158. package/i18n/languages/hr_HR.d.ts +6 -0
  159. package/i18n/languages/hu_HU.d.ts +6 -0
  160. package/i18n/languages/hy_AM.d.ts +6 -0
  161. package/i18n/languages/id_ID.d.ts +6 -0
  162. package/i18n/languages/is_IS.d.ts +6 -0
  163. package/i18n/languages/it_IT.d.ts +6 -0
  164. package/i18n/languages/ja_JP.d.ts +6 -0
  165. package/i18n/languages/ka_GE.d.ts +6 -0
  166. package/i18n/languages/kn_IN.d.ts +6 -0
  167. package/i18n/languages/ko_KR.d.ts +6 -0
  168. package/i18n/languages/ku_IQ.d.ts +6 -0
  169. package/i18n/languages/lv_LV.d.ts +6 -0
  170. package/i18n/languages/mn_MN.d.ts +6 -0
  171. package/i18n/languages/ms_MY.d.ts +6 -0
  172. package/i18n/languages/nb_NO.d.ts +6 -0
  173. package/i18n/languages/ne_NP.d.ts +6 -0
  174. package/i18n/languages/nl_BE.d.ts +6 -0
  175. package/i18n/languages/nl_NL.d.ts +6 -0
  176. package/i18n/languages/pl_PL.d.ts +6 -0
  177. package/i18n/languages/pt_BR.d.ts +6 -0
  178. package/i18n/languages/pt_PT.d.ts +6 -0
  179. package/i18n/languages/ro_RO.d.ts +6 -0
  180. package/i18n/languages/ru_RU.d.ts +6 -0
  181. package/i18n/languages/sk_SK.d.ts +6 -0
  182. package/i18n/languages/sl_SI.d.ts +6 -0
  183. package/i18n/languages/sr_RS.d.ts +6 -0
  184. package/i18n/languages/sv_SE.d.ts +6 -0
  185. package/i18n/languages/ta_IN.d.ts +6 -0
  186. package/i18n/languages/th_TH.d.ts +6 -0
  187. package/i18n/languages/tr_TR.d.ts +6 -0
  188. package/i18n/languages/uk_UA.d.ts +6 -0
  189. package/i18n/languages/vi_VN.d.ts +6 -0
  190. package/i18n/languages/zh_CN.d.ts +6 -0
  191. package/i18n/languages/zh_TW.d.ts +6 -0
  192. package/list/examples/en_US/default/size/README.md +6 -0
  193. package/list/examples/zh_CN/default/size/README.md +6 -0
  194. package/list/list-option.component.d.ts +8 -2
  195. package/list/list.component.d.ts +7 -1
  196. package/list/list.module.d.ts +3 -2
  197. package/list/list.property.d.ts +29 -4
  198. package/package.json +1 -1
  199. package/page-header/page-header.component.d.ts +1 -1
  200. package/pagination/pagination.component.d.ts +1 -1
  201. package/rate/examples/en_US/default/color/README.md +6 -0
  202. package/rate/examples/zh_CN/default/color/README.md +6 -0
  203. package/rate/rate.component.d.ts +1 -0
  204. package/rate/rate.property.d.ts +13 -1
  205. package/resizable/resizable.directive.d.ts +4 -8
  206. package/resizable/resizable.property.d.ts +5 -0
  207. package/select/select-portal.component.d.ts +10 -1
  208. package/select/select.component.d.ts +1 -0
  209. package/select/select.module.d.ts +2 -1
  210. package/select/select.property.d.ts +11 -1
  211. package/tag/examples/zh_CN/default/bordered/README.md +1 -1
  212. package/text-retract/text-retract.component.d.ts +1 -1
  213. package/upload/upload.component.d.ts +4 -4
  214. package/upload/upload.module.d.ts +1 -1
  215. package/upload/upload.property.d.ts +21 -1
@@ -47,7 +47,7 @@ export class XPaginationComponent extends XPaginationProperty {
47
47
  const { total, size, index } = changes;
48
48
  XIsChange(total, size, index) && this.setIndexes();
49
49
  }
50
- ngOnDestory() {
50
+ ngOnDestroy() {
51
51
  this._unSubject.next();
52
52
  this._unSubject.unsubscribe();
53
53
  }
@@ -129,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
129
129
  type: Component,
130
130
  args: [{ selector: `${XPaginationPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<x-buttons *ngIf=\"!simple; else simpleTpl\" [space]=\"space\" [hiddenBorder]=\"hiddenBorder\">\r\n <x-button\r\n *ngIf=\"showEllipsis\"\r\n [icon]=\"'fto-chevrons-left'\"\r\n [title]=\"'pagination.first' | xI18n\"\r\n [disabled]=\"disabled || firstActivated\"\r\n (click)=\"jump(1)\"\r\n ></x-button>\r\n <ng-container *xOutlet=\"previousTpl\"></ng-container>\r\n <x-button\r\n *ngFor=\"let item of indexes; trackBy: trackByItem\"\r\n [disabled]=\"disabled\"\r\n [activated]=\"getActivated(item)\"\r\n (click)=\"jump(item)\"\r\n >{{ item }}</x-button\r\n >\r\n <ng-container *xOutlet=\"nextTpl\"></ng-container>\r\n <x-button\r\n *ngIf=\"showEllipsis && !simple\"\r\n [icon]=\"'fto-chevrons-right'\"\r\n [title]=\"'pagination.last' | xI18n\"\r\n [disabled]=\"disabled || lastActivated\"\r\n (click)=\"jump(lastIndex)\"\r\n ></x-button>\r\n</x-buttons>\r\n<ng-template #simpleTpl>\r\n <div class=\"x-pagination-simple\">\r\n <x-input\r\n [bordered]=\"!hiddenBorder\"\r\n [before]=\"previousTpl\"\r\n [after]=\"nextTpl\"\r\n [style.width.px]=\"simpleIndexWidth\"\r\n [(ngModel)]=\"index\"\r\n (xKeydown)=\"onSimpleKeydown($event)\"\r\n ></x-input>\r\n <span>/</span>\r\n <span>{{ lastIndex }}</span>\r\n </div>\r\n</ng-template>\r\n<x-select\r\n *ngIf=\"showSize\"\r\n [style.width.px]=\"sizeWidth\"\r\n class=\"x-pagination-size\"\r\n [data]=\"sizeData\"\r\n clearable=\"false\"\r\n [disabled]=\"disabled\"\r\n [bordered]=\"!hiddenBorder\"\r\n [nodeTpl]=\"nodeTpl\"\r\n [(ngModel)]=\"size\"\r\n (ngModelChange)=\"sizeChanged()\"\r\n></x-select>\r\n<div *ngIf=\"showJump && !simple\" class=\"x-pagination-jump\">\r\n <span>{{ 'pagination.jump' | xI18n }}</span>\r\n <x-input [bordered]=\"!hiddenBorder\" [style.width.px]=\"jumpWidth\" [(ngModel)]=\"jumpPage\" (xKeydown)=\"onKeydown($event)\"></x-input>\r\n</div>\r\n<x-button *ngIf=\"showTotal\" [disabled]=\"disabled\" class=\"x-pagination-total\" [type]=\"hiddenBorder === true ? 'text' : 'initial'\"\r\n ><ng-container *xOutlet=\"totalTpl; context: { $total: total }\"\r\n >{{ 'pagination.total' | xI18n }} {{ total }} {{ 'pagination.item' | xI18n }}</ng-container\r\n ></x-button\r\n>\r\n\r\n<ng-template #previousTpl>\r\n <x-button\r\n [icon]=\"'fto-chevron-left'\"\r\n [title]=\"'pagination.previous' | xI18n\"\r\n [disabled]=\"disabled || leftDisabled\"\r\n (click)=\"jump(-1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nextTpl>\r\n <x-button\r\n [icon]=\"'fto-chevron-right'\"\r\n [title]=\"'pagination.next' | xI18n\"\r\n [disabled]=\"disabled || rightDisabled\"\r\n (click)=\"jump(1, true)\"\r\n ></x-button>\r\n</ng-template>\r\n\r\n<ng-template #nodeTpl let-node=\"$node\">\r\n <ng-container *ngIf=\"node\"> {{ node?.label }} {{ 'pagination.sizePage' | xI18n }} </ng-container>\r\n</ng-template>\r\n", styles: [".x-pagination{margin:0;padding:0;display:inline-flex}.x-pagination>.x-buttons.x-buttons-hiddenBorder>x-button>.x-button{min-width:1.75rem}.x-pagination>.x-buttons.x-buttons-hiddenBorder>x-button>.x-button-activated{background-color:#0000000d}.x-pagination-size,.x-pagination-total{margin-left:.5rem}.x-pagination-jump{margin-left:.5rem;display:inline-flex;align-items:center}.x-pagination-jump x-input{margin-left:.5rem}.x-pagination-simple{margin:0 .5rem;display:inline-flex;align-items:center}.x-pagination-simple>x-input input{text-align:center}.x-pagination-simple>span{margin-left:.5rem}\n"] }]
131
131
  }], ctorParameters: function () { return [{ type: i1.XConfigService }, { type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i2.XI18nService }]; } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQU14QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQVM5QyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBeUIzRCxZQUNTLGFBQTZCLEVBQzdCLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLEdBQXNCLEVBQ3RCLElBQWtCO1FBRXpCLEtBQUssRUFBRSxDQUFDO1FBTkQsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFjO1FBNUIzQixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixhQUFRLEdBQWtCLElBQUksQ0FBQztRQUV2QixlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQTBCdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBekJELElBQUksWUFBWTtRQUNkLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQWFELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDdkMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFjLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO1FBQzdCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUNyRCxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksS0FBSyxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDeEMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQztRQUVuQyxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQWEsRUFBRSxNQUFNLEdBQUcsS0FBSztRQUNoQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNFLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsS0FBb0I7UUFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtZQUNyRCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDNUI7aUJBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQzNCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzFCO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBb0I7UUFDbEMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtZQUNsRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO2FBQzlCO2lCQUFNLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDN0I7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFlLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3ZCO2FBQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxJQUFZO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7dUpBNUhVLG9CQUFvQjsySUFBcEIsb0JBQW9CLGdHQ3hCakMsKzJGQWtGQTsyRkQxRGEsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLEdBQUcsaUJBQWlCLEVBQUUsaUJBR2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBFbGVtZW50UmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBDaGFuZ2VEZXRlY3RvclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYUGFnaW5hdGlvblByZWZpeCwgWFBhZ2luYXRpb25Qcm9wZXJ0eSB9IGZyb20gJy4vcGFnaW5hdGlvbi5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJc0NoYW5nZSwgWENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBYSTE4blNlcnZpY2UgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFBhZ2luYXRpb25QcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGUvaW5kZXguc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhQYWdpbmF0aW9uQ29tcG9uZW50IGV4dGVuZHMgWFBhZ2luYXRpb25Qcm9wZXJ0eSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgbGFzdEluZGV4ITogbnVtYmVyO1xyXG4gIGluZGV4ZXM6IG51bWJlcltdID0gW107XHJcbiAgaW5kZXhGaXJzdDogbnVtYmVyID0gMTtcclxuICBpbmRleExhc3Q6IG51bWJlciA9IDE7XHJcbiAganVtcFBhZ2U6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBnZXQgbGVmdERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmluZGV4KSA9PT0gMSB8fCBOdW1iZXIodGhpcy50b3RhbCkgPT09IDA7XHJcbiAgfVxyXG5cclxuICBnZXQgcmlnaHREaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5pbmRleCkgPT09IHRoaXMubGFzdEluZGV4IHx8IE51bWJlcih0aGlzLnRvdGFsKSA9PT0gMDtcclxuICB9XHJcblxyXG4gIGdldCBmaXJzdEFjdGl2YXRlZCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5pbmRleCkgPT09IDE7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdEFjdGl2YXRlZCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5pbmRleCkgPT09IHRoaXMubGFzdEluZGV4O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgaTE4bjogWEkxOG5TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgWFBhZ2luYXRpb25QcmVmaXgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHRvdGFsLCBzaXplLCBpbmRleCB9ID0gY2hhbmdlcztcclxuICAgIFhJc0NoYW5nZSh0b3RhbCwgc2l6ZSwgaW5kZXgpICYmIHRoaXMuc2V0SW5kZXhlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3RvcnkoKSB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzaXplQ2hhbmdlZCgpIHtcclxuICAgIHRoaXMuc2V0SW5kZXhlcygpO1xyXG4gICAgdGhpcy5zaXplQ2hhbmdlLmVtaXQodGhpcy5zaXplIGFzIG51bWJlcik7XHJcbiAgfVxyXG5cclxuICBzZXRJbmRleGVzKCkge1xyXG4gICAgdGhpcy5sYXN0SW5kZXggPSBNYXRoLmNlaWwoTnVtYmVyKHRoaXMudG90YWwpIC8gTnVtYmVyKHRoaXMuc2l6ZSkpIHx8IDE7XHJcbiAgICBjb25zdCBpbmRleGVzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgY29uc3QgY3VycmVudCA9IE51bWJlcih0aGlzLmluZGV4KSAtIDE7XHJcbiAgICBjb25zdCBtYXhTaXplID0gTnVtYmVyKHRoaXMucGFnZUxpbmtTaXplKTtcclxuICAgIGNvbnN0IHBhZ2VzID0gTWF0aC5taW4obWF4U2l6ZSwgdGhpcy5sYXN0SW5kZXgpO1xyXG4gICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKGN1cnJlbnQgLSBwYWdlcyAvIDIpKSxcclxuICAgICAgZW5kID0gTWF0aC5taW4odGhpcy5sYXN0SW5kZXggLSAxLCBzdGFydCArIHBhZ2VzIC0gMSk7XHJcbiAgICB2YXIgZGVsdGEgPSBtYXhTaXplIC0gKGVuZCAtIHN0YXJ0ICsgMSk7XHJcbiAgICBzdGFydCA9IE1hdGgubWF4KDAsIHN0YXJ0IC0gZGVsdGEpO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xyXG4gICAgICBpbmRleGVzLnB1c2goaSArIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbmRleGVzID0gaW5kZXhlcztcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGp1bXAoaW5kZXg6IG51bWJlciwgaXNEaWZmID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGl4ID0gdGhpcy52YWxpZGF0ZUluZGV4KGlzRGlmZiA/IE51bWJlcih0aGlzLmluZGV4KSArIGluZGV4IDogaW5kZXgpO1xyXG4gICAgaWYgKGl4ICE9PSB0aGlzLmluZGV4KSB7XHJcbiAgICAgIHRoaXMuaW5kZXggPSBpeDtcclxuICAgICAgdGhpcy5zZXRJbmRleGVzKCk7XHJcbiAgICAgIHRoaXMuaW5kZXhDaGFuZ2UuZW1pdCh0aGlzLmluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuanVtcFBhZ2UgIT09IG51bGwgJiYgZXZlbnQua2V5Q29kZSA9PT0gRU5URVIpIHtcclxuICAgICAgaWYgKHRoaXMuanVtcFBhZ2UgPD0gdGhpcy5pbmRleEZpcnN0KSB7XHJcbiAgICAgICAgdGhpcy5qdW1wKHRoaXMuaW5kZXhGaXJzdCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5qdW1wUGFnZSA+PSB0aGlzLmxhc3RJbmRleCkge1xyXG4gICAgICAgIHRoaXMuanVtcCh0aGlzLmxhc3RJbmRleCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5qdW1wKHRoaXMuanVtcFBhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuanVtcFBhZ2UgPSBudWxsO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNpbXBsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmluZGV4ICE9PSBudWxsICYmIGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSB7XHJcbiAgICAgIGlmICh0aGlzLmluZGV4IDw9IHRoaXMuaW5kZXhGaXJzdCkge1xyXG4gICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmluZGV4Rmlyc3Q7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pbmRleCA+PSB0aGlzLmxhc3RJbmRleCkge1xyXG4gICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmxhc3RJbmRleDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmp1bXAodGhpcy5pbmRleCBhcyBudW1iZXIpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUluZGV4KHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgaWYgKHZhbHVlID4gdGhpcy5sYXN0SW5kZXgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubGFzdEluZGV4O1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSA8IDEpIHtcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmF0ZWQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmluZGV4KSA9PT0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShfaW5kZXg6IG51bWJlciwgaXRlbTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9XHJcbn1cclxuIiwiPHgtYnV0dG9ucyAqbmdJZj1cIiFzaW1wbGU7IGVsc2Ugc2ltcGxlVHBsXCIgW3NwYWNlXT1cInNwYWNlXCIgW2hpZGRlbkJvcmRlcl09XCJoaWRkZW5Cb3JkZXJcIj5cclxuICA8eC1idXR0b25cclxuICAgICpuZ0lmPVwic2hvd0VsbGlwc2lzXCJcclxuICAgIFtpY29uXT1cIidmdG8tY2hldnJvbnMtbGVmdCdcIlxyXG4gICAgW3RpdGxlXT1cIidwYWdpbmF0aW9uLmZpcnN0JyB8IHhJMThuXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBmaXJzdEFjdGl2YXRlZFwiXHJcbiAgICAoY2xpY2spPVwianVtcCgxKVwiXHJcbiAgPjwveC1idXR0b24+XHJcbiAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cInByZXZpb3VzVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPHgtYnV0dG9uXHJcbiAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbmRleGVzOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2FjdGl2YXRlZF09XCJnZXRBY3RpdmF0ZWQoaXRlbSlcIlxyXG4gICAgKGNsaWNrKT1cImp1bXAoaXRlbSlcIlxyXG4gICAgPnt7IGl0ZW0gfX08L3gtYnV0dG9uXHJcbiAgPlxyXG4gIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJuZXh0VHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPHgtYnV0dG9uXHJcbiAgICAqbmdJZj1cInNob3dFbGxpcHNpcyAmJiAhc2ltcGxlXCJcclxuICAgIFtpY29uXT1cIidmdG8tY2hldnJvbnMtcmlnaHQnXCJcclxuICAgIFt0aXRsZV09XCIncGFnaW5hdGlvbi5sYXN0JyB8IHhJMThuXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsYXN0QWN0aXZhdGVkXCJcclxuICAgIChjbGljayk9XCJqdW1wKGxhc3RJbmRleClcIlxyXG4gID48L3gtYnV0dG9uPlxyXG48L3gtYnV0dG9ucz5cclxuPG5nLXRlbXBsYXRlICNzaW1wbGVUcGw+XHJcbiAgPGRpdiBjbGFzcz1cIngtcGFnaW5hdGlvbi1zaW1wbGVcIj5cclxuICAgIDx4LWlucHV0XHJcbiAgICAgIFtib3JkZXJlZF09XCIhaGlkZGVuQm9yZGVyXCJcclxuICAgICAgW2JlZm9yZV09XCJwcmV2aW91c1RwbFwiXHJcbiAgICAgIFthZnRlcl09XCJuZXh0VHBsXCJcclxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInNpbXBsZUluZGV4V2lkdGhcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cImluZGV4XCJcclxuICAgICAgKHhLZXlkb3duKT1cIm9uU2ltcGxlS2V5ZG93bigkZXZlbnQpXCJcclxuICAgID48L3gtaW5wdXQ+XHJcbiAgICA8c3Bhbj4vPC9zcGFuPlxyXG4gICAgPHNwYW4+e3sgbGFzdEluZGV4IH19PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48eC1zZWxlY3RcclxuICAqbmdJZj1cInNob3dTaXplXCJcclxuICBbc3R5bGUud2lkdGgucHhdPVwic2l6ZVdpZHRoXCJcclxuICBjbGFzcz1cIngtcGFnaW5hdGlvbi1zaXplXCJcclxuICBbZGF0YV09XCJzaXplRGF0YVwiXHJcbiAgY2xlYXJhYmxlPVwiZmFsc2VcIlxyXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2JvcmRlcmVkXT1cIiFoaWRkZW5Cb3JkZXJcIlxyXG4gIFtub2RlVHBsXT1cIm5vZGVUcGxcIlxyXG4gIFsobmdNb2RlbCldPVwic2l6ZVwiXHJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwic2l6ZUNoYW5nZWQoKVwiXHJcbj48L3gtc2VsZWN0PlxyXG48ZGl2ICpuZ0lmPVwic2hvd0p1bXAgJiYgIXNpbXBsZVwiIGNsYXNzPVwieC1wYWdpbmF0aW9uLWp1bXBcIj5cclxuICA8c3Bhbj57eyAncGFnaW5hdGlvbi5qdW1wJyB8IHhJMThuIH19PC9zcGFuPlxyXG4gIDx4LWlucHV0IFtib3JkZXJlZF09XCIhaGlkZGVuQm9yZGVyXCIgW3N0eWxlLndpZHRoLnB4XT1cImp1bXBXaWR0aFwiIFsobmdNb2RlbCldPVwianVtcFBhZ2VcIiAoeEtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIj48L3gtaW5wdXQ+XHJcbjwvZGl2PlxyXG48eC1idXR0b24gKm5nSWY9XCJzaG93VG90YWxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBjbGFzcz1cIngtcGFnaW5hdGlvbi10b3RhbFwiIFt0eXBlXT1cImhpZGRlbkJvcmRlciA9PT0gdHJ1ZSA/ICd0ZXh0JyA6ICdpbml0aWFsJ1wiXHJcbiAgPjxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJ0b3RhbFRwbDsgY29udGV4dDogeyAkdG90YWw6IHRvdGFsIH1cIlxyXG4gICAgPnt7ICdwYWdpbmF0aW9uLnRvdGFsJyB8IHhJMThuIH19IHt7IHRvdGFsIH19IHt7ICdwYWdpbmF0aW9uLml0ZW0nIHwgeEkxOG4gfX08L25nLWNvbnRhaW5lclxyXG4gID48L3gtYnV0dG9uXHJcbj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcHJldmlvdXNUcGw+XHJcbiAgPHgtYnV0dG9uXHJcbiAgICBbaWNvbl09XCInZnRvLWNoZXZyb24tbGVmdCdcIlxyXG4gICAgW3RpdGxlXT1cIidwYWdpbmF0aW9uLnByZXZpb3VzJyB8IHhJMThuXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsZWZ0RGlzYWJsZWRcIlxyXG4gICAgKGNsaWNrKT1cImp1bXAoLTEsIHRydWUpXCJcclxuICA+PC94LWJ1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbmV4dFRwbD5cclxuICA8eC1idXR0b25cclxuICAgIFtpY29uXT1cIidmdG8tY2hldnJvbi1yaWdodCdcIlxyXG4gICAgW3RpdGxlXT1cIidwYWdpbmF0aW9uLm5leHQnIHwgeEkxOG5cIlxyXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJpZ2h0RGlzYWJsZWRcIlxyXG4gICAgKGNsaWNrKT1cImp1bXAoMSwgdHJ1ZSlcIlxyXG4gID48L3gtYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNub2RlVHBsIGxldC1ub2RlPVwiJG5vZGVcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZVwiPiB7eyBub2RlPy5sYWJlbCB9fSB7eyAncGFnaW5hdGlvbi5zaXplUGFnZScgfCB4STE4biB9fSA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQU14QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsU0FBUyxFQUFrQixNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7OztBQVM5QyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBeUIzRCxZQUNTLGFBQTZCLEVBQzdCLFVBQXNCLEVBQ3RCLFFBQW1CLEVBQ25CLEdBQXNCLEVBQ3RCLElBQWtCO1FBRXpCLEtBQUssRUFBRSxDQUFDO1FBTkQsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFjO1FBNUIzQixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixhQUFRLEdBQWtCLElBQUksQ0FBQztRQUV2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SUFBSSxDQUFDO0lBQ2QsQ0FBQzs7dUpBNUhVLG9CQUFvQjsySUFBcEIsb0JBQW9CLGdHQ3hCakMsKzJGQWtGQTsyRkQxRGEsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLEdBQUcsaUJBQWlCLEVBQUUsaUJBR2pCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBPbkNoYW5nZXMsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBFbGVtZW50UmVmLFxyXG4gIFJlbmRlcmVyMixcclxuICBDaGFuZ2VEZXRlY3RvclJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYUGFnaW5hdGlvblByZWZpeCwgWFBhZ2luYXRpb25Qcm9wZXJ0eSB9IGZyb20gJy4vcGFnaW5hdGlvbi5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhJc0NoYW5nZSwgWENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBYSTE4blNlcnZpY2UgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogYCR7WFBhZ2luYXRpb25QcmVmaXh9YCxcclxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGUvaW5kZXguc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFhQYWdpbmF0aW9uQ29tcG9uZW50IGV4dGVuZHMgWFBhZ2luYXRpb25Qcm9wZXJ0eSBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgbGFzdEluZGV4ITogbnVtYmVyO1xyXG4gIGluZGV4ZXM6IG51bWJlcltdID0gW107XHJcbiAgaW5kZXhGaXJzdDogbnVtYmVyID0gMTtcclxuICBpbmRleExhc3Q6IG51bWJlciA9IDE7XHJcbiAganVtcFBhZ2U6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF91blN1YmplY3QgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBnZXQgbGVmdERpc2FibGVkKCkge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmluZGV4KSA9PT0gMSB8fCBOdW1iZXIodGhpcy50b3RhbCkgPT09IDA7XHJcbiAgfVxyXG5cclxuICBnZXQgcmlnaHREaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5pbmRleCkgPT09IHRoaXMubGFzdEluZGV4IHx8IE51bWJlcih0aGlzLnRvdGFsKSA9PT0gMDtcclxuICB9XHJcblxyXG4gIGdldCBmaXJzdEFjdGl2YXRlZCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5pbmRleCkgPT09IDE7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdEFjdGl2YXRlZCgpIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5pbmRleCkgPT09IHRoaXMubGFzdEluZGV4O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2UsXHJcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgaTE4bjogWEkxOG5TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgWFBhZ2luYXRpb25QcmVmaXgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuX3VuU3ViamVjdCkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKSk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IHRvdGFsLCBzaXplLCBpbmRleCB9ID0gY2hhbmdlcztcclxuICAgIFhJc0NoYW5nZSh0b3RhbCwgc2l6ZSwgaW5kZXgpICYmIHRoaXMuc2V0SW5kZXhlcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl91blN1YmplY3QubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzaXplQ2hhbmdlZCgpIHtcclxuICAgIHRoaXMuc2V0SW5kZXhlcygpO1xyXG4gICAgdGhpcy5zaXplQ2hhbmdlLmVtaXQodGhpcy5zaXplIGFzIG51bWJlcik7XHJcbiAgfVxyXG5cclxuICBzZXRJbmRleGVzKCkge1xyXG4gICAgdGhpcy5sYXN0SW5kZXggPSBNYXRoLmNlaWwoTnVtYmVyKHRoaXMudG90YWwpIC8gTnVtYmVyKHRoaXMuc2l6ZSkpIHx8IDE7XHJcbiAgICBjb25zdCBpbmRleGVzOiBudW1iZXJbXSA9IFtdO1xyXG4gICAgY29uc3QgY3VycmVudCA9IE51bWJlcih0aGlzLmluZGV4KSAtIDE7XHJcbiAgICBjb25zdCBtYXhTaXplID0gTnVtYmVyKHRoaXMucGFnZUxpbmtTaXplKTtcclxuICAgIGNvbnN0IHBhZ2VzID0gTWF0aC5taW4obWF4U2l6ZSwgdGhpcy5sYXN0SW5kZXgpO1xyXG4gICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKGN1cnJlbnQgLSBwYWdlcyAvIDIpKSxcclxuICAgICAgZW5kID0gTWF0aC5taW4odGhpcy5sYXN0SW5kZXggLSAxLCBzdGFydCArIHBhZ2VzIC0gMSk7XHJcbiAgICB2YXIgZGVsdGEgPSBtYXhTaXplIC0gKGVuZCAtIHN0YXJ0ICsgMSk7XHJcbiAgICBzdGFydCA9IE1hdGgubWF4KDAsIHN0YXJ0IC0gZGVsdGEpO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKykge1xyXG4gICAgICBpbmRleGVzLnB1c2goaSArIDEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbmRleGVzID0gaW5kZXhlcztcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGp1bXAoaW5kZXg6IG51bWJlciwgaXNEaWZmID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGl4ID0gdGhpcy52YWxpZGF0ZUluZGV4KGlzRGlmZiA/IE51bWJlcih0aGlzLmluZGV4KSArIGluZGV4IDogaW5kZXgpO1xyXG4gICAgaWYgKGl4ICE9PSB0aGlzLmluZGV4KSB7XHJcbiAgICAgIHRoaXMuaW5kZXggPSBpeDtcclxuICAgICAgdGhpcy5zZXRJbmRleGVzKCk7XHJcbiAgICAgIHRoaXMuaW5kZXhDaGFuZ2UuZW1pdCh0aGlzLmluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuanVtcFBhZ2UgIT09IG51bGwgJiYgZXZlbnQua2V5Q29kZSA9PT0gRU5URVIpIHtcclxuICAgICAgaWYgKHRoaXMuanVtcFBhZ2UgPD0gdGhpcy5pbmRleEZpcnN0KSB7XHJcbiAgICAgICAgdGhpcy5qdW1wKHRoaXMuaW5kZXhGaXJzdCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5qdW1wUGFnZSA+PSB0aGlzLmxhc3RJbmRleCkge1xyXG4gICAgICAgIHRoaXMuanVtcCh0aGlzLmxhc3RJbmRleCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5qdW1wKHRoaXMuanVtcFBhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuanVtcFBhZ2UgPSBudWxsO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNpbXBsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmluZGV4ICE9PSBudWxsICYmIGV2ZW50LmtleUNvZGUgPT09IEVOVEVSKSB7XHJcbiAgICAgIGlmICh0aGlzLmluZGV4IDw9IHRoaXMuaW5kZXhGaXJzdCkge1xyXG4gICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmluZGV4Rmlyc3Q7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pbmRleCA+PSB0aGlzLmxhc3RJbmRleCkge1xyXG4gICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmxhc3RJbmRleDtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmp1bXAodGhpcy5pbmRleCBhcyBudW1iZXIpO1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZUluZGV4KHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgaWYgKHZhbHVlID4gdGhpcy5sYXN0SW5kZXgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubGFzdEluZGV4O1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSA8IDEpIHtcclxuICAgICAgcmV0dXJuIDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRBY3RpdmF0ZWQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmluZGV4KSA9PT0gaW5kZXg7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5SXRlbShfaW5kZXg6IG51bWJlciwgaXRlbTogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9XHJcbn1cclxuIiwiPHgtYnV0dG9ucyAqbmdJZj1cIiFzaW1wbGU7IGVsc2Ugc2ltcGxlVHBsXCIgW3NwYWNlXT1cInNwYWNlXCIgW2hpZGRlbkJvcmRlcl09XCJoaWRkZW5Cb3JkZXJcIj5cclxuICA8eC1idXR0b25cclxuICAgICpuZ0lmPVwic2hvd0VsbGlwc2lzXCJcclxuICAgIFtpY29uXT1cIidmdG8tY2hldnJvbnMtbGVmdCdcIlxyXG4gICAgW3RpdGxlXT1cIidwYWdpbmF0aW9uLmZpcnN0JyB8IHhJMThuXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBmaXJzdEFjdGl2YXRlZFwiXHJcbiAgICAoY2xpY2spPVwianVtcCgxKVwiXHJcbiAgPjwveC1idXR0b24+XHJcbiAgPG5nLWNvbnRhaW5lciAqeE91dGxldD1cInByZXZpb3VzVHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPHgtYnV0dG9uXHJcbiAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpbmRleGVzOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2FjdGl2YXRlZF09XCJnZXRBY3RpdmF0ZWQoaXRlbSlcIlxyXG4gICAgKGNsaWNrKT1cImp1bXAoaXRlbSlcIlxyXG4gICAgPnt7IGl0ZW0gfX08L3gtYnV0dG9uXHJcbiAgPlxyXG4gIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJuZXh0VHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPHgtYnV0dG9uXHJcbiAgICAqbmdJZj1cInNob3dFbGxpcHNpcyAmJiAhc2ltcGxlXCJcclxuICAgIFtpY29uXT1cIidmdG8tY2hldnJvbnMtcmlnaHQnXCJcclxuICAgIFt0aXRsZV09XCIncGFnaW5hdGlvbi5sYXN0JyB8IHhJMThuXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsYXN0QWN0aXZhdGVkXCJcclxuICAgIChjbGljayk9XCJqdW1wKGxhc3RJbmRleClcIlxyXG4gID48L3gtYnV0dG9uPlxyXG48L3gtYnV0dG9ucz5cclxuPG5nLXRlbXBsYXRlICNzaW1wbGVUcGw+XHJcbiAgPGRpdiBjbGFzcz1cIngtcGFnaW5hdGlvbi1zaW1wbGVcIj5cclxuICAgIDx4LWlucHV0XHJcbiAgICAgIFtib3JkZXJlZF09XCIhaGlkZGVuQm9yZGVyXCJcclxuICAgICAgW2JlZm9yZV09XCJwcmV2aW91c1RwbFwiXHJcbiAgICAgIFthZnRlcl09XCJuZXh0VHBsXCJcclxuICAgICAgW3N0eWxlLndpZHRoLnB4XT1cInNpbXBsZUluZGV4V2lkdGhcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cImluZGV4XCJcclxuICAgICAgKHhLZXlkb3duKT1cIm9uU2ltcGxlS2V5ZG93bigkZXZlbnQpXCJcclxuICAgID48L3gtaW5wdXQ+XHJcbiAgICA8c3Bhbj4vPC9zcGFuPlxyXG4gICAgPHNwYW4+e3sgbGFzdEluZGV4IH19PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48eC1zZWxlY3RcclxuICAqbmdJZj1cInNob3dTaXplXCJcclxuICBbc3R5bGUud2lkdGgucHhdPVwic2l6ZVdpZHRoXCJcclxuICBjbGFzcz1cIngtcGFnaW5hdGlvbi1zaXplXCJcclxuICBbZGF0YV09XCJzaXplRGF0YVwiXHJcbiAgY2xlYXJhYmxlPVwiZmFsc2VcIlxyXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2JvcmRlcmVkXT1cIiFoaWRkZW5Cb3JkZXJcIlxyXG4gIFtub2RlVHBsXT1cIm5vZGVUcGxcIlxyXG4gIFsobmdNb2RlbCldPVwic2l6ZVwiXHJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwic2l6ZUNoYW5nZWQoKVwiXHJcbj48L3gtc2VsZWN0PlxyXG48ZGl2ICpuZ0lmPVwic2hvd0p1bXAgJiYgIXNpbXBsZVwiIGNsYXNzPVwieC1wYWdpbmF0aW9uLWp1bXBcIj5cclxuICA8c3Bhbj57eyAncGFnaW5hdGlvbi5qdW1wJyB8IHhJMThuIH19PC9zcGFuPlxyXG4gIDx4LWlucHV0IFtib3JkZXJlZF09XCIhaGlkZGVuQm9yZGVyXCIgW3N0eWxlLndpZHRoLnB4XT1cImp1bXBXaWR0aFwiIFsobmdNb2RlbCldPVwianVtcFBhZ2VcIiAoeEtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIj48L3gtaW5wdXQ+XHJcbjwvZGl2PlxyXG48eC1idXR0b24gKm5nSWY9XCJzaG93VG90YWxcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBjbGFzcz1cIngtcGFnaW5hdGlvbi10b3RhbFwiIFt0eXBlXT1cImhpZGRlbkJvcmRlciA9PT0gdHJ1ZSA/ICd0ZXh0JyA6ICdpbml0aWFsJ1wiXHJcbiAgPjxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJ0b3RhbFRwbDsgY29udGV4dDogeyAkdG90YWw6IHRvdGFsIH1cIlxyXG4gICAgPnt7ICdwYWdpbmF0aW9uLnRvdGFsJyB8IHhJMThuIH19IHt7IHRvdGFsIH19IHt7ICdwYWdpbmF0aW9uLml0ZW0nIHwgeEkxOG4gfX08L25nLWNvbnRhaW5lclxyXG4gID48L3gtYnV0dG9uXHJcbj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcHJldmlvdXNUcGw+XHJcbiAgPHgtYnV0dG9uXHJcbiAgICBbaWNvbl09XCInZnRvLWNoZXZyb24tbGVmdCdcIlxyXG4gICAgW3RpdGxlXT1cIidwYWdpbmF0aW9uLnByZXZpb3VzJyB8IHhJMThuXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBsZWZ0RGlzYWJsZWRcIlxyXG4gICAgKGNsaWNrKT1cImp1bXAoLTEsIHRydWUpXCJcclxuICA+PC94LWJ1dHRvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbmV4dFRwbD5cclxuICA8eC1idXR0b25cclxuICAgIFtpY29uXT1cIidmdG8tY2hldnJvbi1yaWdodCdcIlxyXG4gICAgW3RpdGxlXT1cIidwYWdpbmF0aW9uLm5leHQnIHwgeEkxOG5cIlxyXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkIHx8IHJpZ2h0RGlzYWJsZWRcIlxyXG4gICAgKGNsaWNrKT1cImp1bXAoMSwgdHJ1ZSlcIlxyXG4gID48L3gtYnV0dG9uPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNub2RlVHBsIGxldC1ub2RlPVwiJG5vZGVcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZVwiPiB7eyBub2RlPy5sYWJlbCB9fSB7eyAncGFnaW5hdGlvbi5zaXplUGFnZScgfCB4STE4biB9fSA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -1,5 +1,5 @@
1
1
  import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild } from '@angular/core';
2
- import { XIsEmpty, XClearClass } from '@ng-nest/ui/core';
2
+ import { XIsEmpty, XClearClass, XIsString, XIsObject } from '@ng-nest/ui/core';
3
3
  import { XRatePrefix, XRateProperty } from './rate.property';
4
4
  import { XValueAccessor } from '@ng-nest/ui/base-form';
5
5
  import * as i0 from "@angular/core";
@@ -18,6 +18,23 @@ export class XRateComponent extends XRateProperty {
18
18
  this.hoverHalfActivated = 0;
19
19
  this.rateNodes = [];
20
20
  }
21
+ get getColor() {
22
+ let color = '';
23
+ if (XIsString(this.color)) {
24
+ color = this.color;
25
+ }
26
+ else if (XIsObject(this.color)) {
27
+ this.color = this.color;
28
+ let val = this.half ? (Math.floor(this.hoverActivated) + this.hoverHalfActivated) * 0.5 : this.hoverActivated;
29
+ for (let key in this.color) {
30
+ if (this.color[key](val)) {
31
+ color = key;
32
+ break;
33
+ }
34
+ }
35
+ }
36
+ return color;
37
+ }
21
38
  writeValue(value) {
22
39
  if (XIsEmpty(value))
23
40
  value = 0;
@@ -84,12 +101,12 @@ export class XRateComponent extends XRateProperty {
84
101
  }
85
102
  }
86
103
  /** @nocollapse */ /** @nocollapse */ XRateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XRateComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
87
- /** @nocollapse */ /** @nocollapse */ XRateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XRateComponent, selector: "x-rate", providers: [XValueAccessor(XRateComponent)], viewQueries: [{ propertyName: "rate", first: true, predicate: ["rate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #rate\r\n class=\"x-rate\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n>\r\n <label *ngIf=\"label\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-rate-icons\" (mouseleave)=\"leaveRates()\">\r\n <div\r\n class=\"x-rate-icon\"\r\n [class.activated]=\"rate <= hoverActivated\"\r\n [class.half-activated]=\"rate <= hoverHalfActivated\"\r\n *ngFor=\"let rate of rates; index as i; trackBy: trackByItem\"\r\n >\r\n <div *ngIf=\"half\" class=\"x-rate-half\" (mouseenter)=\"rateHalfHover(rate, $event)\" (click)=\"rateHalfClick(rate, $event)\">\r\n <ng-container *ngIf=\"customTemp; else iconTpl\">\r\n <ng-container *ngTemplateOutlet=\"customTemp\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"x-rate-back\" (mouseenter)=\"rateHover(rate, $event)\" (click)=\"rateClick(rate, $event)\">\r\n <ng-container *ngIf=\"customTemp; else iconTpl\">\r\n <ng-container *ngTemplateOutlet=\"customTemp\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #iconTpl>\r\n <x-icon type=\"adf-star\"></x-icon>\r\n</ng-template>\r\n", styles: [".x-rate{margin:0;padding:0;width:100%}.x-rate.x-flex{display:flex}.x-rate.x-justify-start{justify-content:flex-start}.x-rate.x-justify-center{justify-content:center}.x-rate.x-justify-end{justify-content:flex-end}.x-rate.x-justify-space-between{justify-content:space-between}.x-rate.x-justify-space-around{justify-content:space-around}.x-rate.x-align-start{align-items:flex-start}.x-rate.x-align-center{align-items:center}.x-rate.x-align-end{align-items:flex-end}.x-rate.x-direction-column{flex-direction:column}.x-rate.x-direction-column-reverse{flex-direction:column-reverse}.x-rate.x-direction-row{flex-direction:row}.x-rate.x-direction-row-reverse{flex-direction:row-reverse}.x-rate>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:600}.x-rate>label.x-text-align-start{text-align:start}.x-rate>label.x-text-align-center{text-align:center}.x-rate>label.x-text-align-end{text-align:end}.x-rate-icons{display:inline-flex;align-items:center;height:calc(var(--x-font-size) + .875rem);cursor:pointer}.x-rate-icon{margin:0 .2rem;display:flex;align-items:center;position:relative;color:var(--x-info);transition:transform var(--x-animation-duration-base),color var(--x-animation-duration-base);font-size:calc(var(--x-font-size-big) + .125rem)}.x-rate-icon .x-icon{vertical-align:0}.x-rate-icon:hover{transform:scale(1.1)}.x-rate-icon.activated,.x-rate-icon.half-activated .x-rate-half{color:var(--x-warning)}.x-rate-half{position:absolute;top:0;left:0;width:50%;height:100%;overflow:hidden;display:flex;align-items:center}.x-rate-half:hover{opacity:1}.x-rate-back{display:flex;align-items:center}.x-rate.x-invalid>label,.x-rate.x-required>label{color:var(--x-danger)}.x-rate.x-disabled .x-rate-icons{cursor:not-allowed}.x-rate.x-disabled .x-rate-icon{color:var(--x-info-500)}.x-rate.x-disabled .x-rate-icon:hover{transform:scale(1)}.x-rate.x-disabled .x-rate-icon.activated,.x-rate.x-disabled .x-rate-icon.half-activated .x-rate-half{color:var(--x-warning-500)}.x-rate.x-direction-row>label{padding:0 .5rem 0 0}.x-rate.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-rate.x-direction-column,.x-rate.x-direction-column-reverse{align-items:inherit}\n"], components: [{ type: i2.XIconComponent, selector: "x-icon" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
104
+ /** @nocollapse */ /** @nocollapse */ XRateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XRateComponent, selector: "x-rate", providers: [XValueAccessor(XRateComponent)], viewQueries: [{ propertyName: "rate", first: true, predicate: ["rate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\r\n #rate\r\n class=\"x-rate\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n>\r\n <label *ngIf=\"label\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-rate-icons\" (mouseleave)=\"leaveRates()\">\r\n <div\r\n class=\"x-rate-icon\"\r\n [class.activated]=\"rate <= hoverActivated\"\r\n [class.half-activated]=\"rate <= hoverHalfActivated\"\r\n [style.color]=\"rate <= hoverActivated ? getColor : ''\"\r\n *ngFor=\"let rate of rates; index as i; trackBy: trackByItem\"\r\n >\r\n <div\r\n *ngIf=\"half\"\r\n class=\"x-rate-half\"\r\n [style.color]=\"rate <= hoverHalfActivated ? getColor : ''\"\r\n (mouseenter)=\"rateHalfHover(rate, $event)\"\r\n (click)=\"rateHalfClick(rate, $event)\"\r\n >\r\n <ng-container *ngIf=\"customTemp; else iconTpl\">\r\n <ng-container *ngTemplateOutlet=\"customTemp\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"x-rate-back\" (mouseenter)=\"rateHover(rate, $event)\" (click)=\"rateClick(rate, $event)\">\r\n <ng-container *ngIf=\"customTemp; else iconTpl\">\r\n <ng-container *ngTemplateOutlet=\"customTemp\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #iconTpl>\r\n <x-icon type=\"adf-star\"></x-icon>\r\n</ng-template>\r\n", styles: [".x-rate{margin:0;padding:0;width:100%}.x-rate.x-flex{display:flex}.x-rate.x-justify-start{justify-content:flex-start}.x-rate.x-justify-center{justify-content:center}.x-rate.x-justify-end{justify-content:flex-end}.x-rate.x-justify-space-between{justify-content:space-between}.x-rate.x-justify-space-around{justify-content:space-around}.x-rate.x-align-start{align-items:flex-start}.x-rate.x-align-center{align-items:center}.x-rate.x-align-end{align-items:flex-end}.x-rate.x-direction-column{flex-direction:column}.x-rate.x-direction-column-reverse{flex-direction:column-reverse}.x-rate.x-direction-row{flex-direction:row}.x-rate.x-direction-row-reverse{flex-direction:row-reverse}.x-rate>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:600}.x-rate>label.x-text-align-start{text-align:start}.x-rate>label.x-text-align-center{text-align:center}.x-rate>label.x-text-align-end{text-align:end}.x-rate-icons{display:inline-flex;align-items:center;height:calc(var(--x-font-size) + .875rem);cursor:pointer}.x-rate-icon{margin:0 .2rem;display:flex;align-items:center;position:relative;color:var(--x-info);transition:transform var(--x-animation-duration-base),color var(--x-animation-duration-base);font-size:calc(var(--x-font-size-big) + .125rem)}.x-rate-icon .x-icon{vertical-align:0}.x-rate-icon:hover{transform:scale(1.1)}.x-rate-icon.activated,.x-rate-icon.half-activated .x-rate-half{color:var(--x-warning)}.x-rate-half{position:absolute;top:0;left:0;width:50%;height:100%;overflow:hidden;display:flex;align-items:center}.x-rate-half:hover{opacity:1}.x-rate-back{display:flex;align-items:center}.x-rate.x-invalid>label,.x-rate.x-required>label{color:var(--x-danger)}.x-rate.x-disabled .x-rate-icons{cursor:not-allowed;opacity:.8}.x-rate.x-direction-row>label{padding:0 .5rem 0 0}.x-rate.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-rate.x-direction-column,.x-rate.x-direction-column-reverse{align-items:inherit}\n"], components: [{ type: i2.XIconComponent, selector: "x-icon" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
88
105
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XRateComponent, decorators: [{
89
106
  type: Component,
90
- args: [{ selector: `${XRatePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XRateComponent)], template: "<div\r\n #rate\r\n class=\"x-rate\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n>\r\n <label *ngIf=\"label\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-rate-icons\" (mouseleave)=\"leaveRates()\">\r\n <div\r\n class=\"x-rate-icon\"\r\n [class.activated]=\"rate <= hoverActivated\"\r\n [class.half-activated]=\"rate <= hoverHalfActivated\"\r\n *ngFor=\"let rate of rates; index as i; trackBy: trackByItem\"\r\n >\r\n <div *ngIf=\"half\" class=\"x-rate-half\" (mouseenter)=\"rateHalfHover(rate, $event)\" (click)=\"rateHalfClick(rate, $event)\">\r\n <ng-container *ngIf=\"customTemp; else iconTpl\">\r\n <ng-container *ngTemplateOutlet=\"customTemp\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"x-rate-back\" (mouseenter)=\"rateHover(rate, $event)\" (click)=\"rateClick(rate, $event)\">\r\n <ng-container *ngIf=\"customTemp; else iconTpl\">\r\n <ng-container *ngTemplateOutlet=\"customTemp\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #iconTpl>\r\n <x-icon type=\"adf-star\"></x-icon>\r\n</ng-template>\r\n", styles: [".x-rate{margin:0;padding:0;width:100%}.x-rate.x-flex{display:flex}.x-rate.x-justify-start{justify-content:flex-start}.x-rate.x-justify-center{justify-content:center}.x-rate.x-justify-end{justify-content:flex-end}.x-rate.x-justify-space-between{justify-content:space-between}.x-rate.x-justify-space-around{justify-content:space-around}.x-rate.x-align-start{align-items:flex-start}.x-rate.x-align-center{align-items:center}.x-rate.x-align-end{align-items:flex-end}.x-rate.x-direction-column{flex-direction:column}.x-rate.x-direction-column-reverse{flex-direction:column-reverse}.x-rate.x-direction-row{flex-direction:row}.x-rate.x-direction-row-reverse{flex-direction:row-reverse}.x-rate>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:600}.x-rate>label.x-text-align-start{text-align:start}.x-rate>label.x-text-align-center{text-align:center}.x-rate>label.x-text-align-end{text-align:end}.x-rate-icons{display:inline-flex;align-items:center;height:calc(var(--x-font-size) + .875rem);cursor:pointer}.x-rate-icon{margin:0 .2rem;display:flex;align-items:center;position:relative;color:var(--x-info);transition:transform var(--x-animation-duration-base),color var(--x-animation-duration-base);font-size:calc(var(--x-font-size-big) + .125rem)}.x-rate-icon .x-icon{vertical-align:0}.x-rate-icon:hover{transform:scale(1.1)}.x-rate-icon.activated,.x-rate-icon.half-activated .x-rate-half{color:var(--x-warning)}.x-rate-half{position:absolute;top:0;left:0;width:50%;height:100%;overflow:hidden;display:flex;align-items:center}.x-rate-half:hover{opacity:1}.x-rate-back{display:flex;align-items:center}.x-rate.x-invalid>label,.x-rate.x-required>label{color:var(--x-danger)}.x-rate.x-disabled .x-rate-icons{cursor:not-allowed}.x-rate.x-disabled .x-rate-icon{color:var(--x-info-500)}.x-rate.x-disabled .x-rate-icon:hover{transform:scale(1)}.x-rate.x-disabled .x-rate-icon.activated,.x-rate.x-disabled .x-rate-icon.half-activated .x-rate-half{color:var(--x-warning-500)}.x-rate.x-direction-row>label{padding:0 .5rem 0 0}.x-rate.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-rate.x-direction-column,.x-rate.x-direction-column-reverse{align-items:inherit}\n"] }]
107
+ args: [{ selector: `${XRatePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [XValueAccessor(XRateComponent)], template: "<div\r\n #rate\r\n class=\"x-rate\"\r\n [class.x-flex]=\"justify || align || direction\"\r\n [class.x-disabled]=\"disabled\"\r\n [class.x-required]=\"requiredIsEmpty\"\r\n [class.x-invalid]=\"invalid\"\r\n>\r\n <label *ngIf=\"label\" [style.width]=\"labelWidth\" [ngClass]=\"labelMap\">{{ label }}</label>\r\n <div class=\"x-rate-icons\" (mouseleave)=\"leaveRates()\">\r\n <div\r\n class=\"x-rate-icon\"\r\n [class.activated]=\"rate <= hoverActivated\"\r\n [class.half-activated]=\"rate <= hoverHalfActivated\"\r\n [style.color]=\"rate <= hoverActivated ? getColor : ''\"\r\n *ngFor=\"let rate of rates; index as i; trackBy: trackByItem\"\r\n >\r\n <div\r\n *ngIf=\"half\"\r\n class=\"x-rate-half\"\r\n [style.color]=\"rate <= hoverHalfActivated ? getColor : ''\"\r\n (mouseenter)=\"rateHalfHover(rate, $event)\"\r\n (click)=\"rateHalfClick(rate, $event)\"\r\n >\r\n <ng-container *ngIf=\"customTemp; else iconTpl\">\r\n <ng-container *ngTemplateOutlet=\"customTemp\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div class=\"x-rate-back\" (mouseenter)=\"rateHover(rate, $event)\" (click)=\"rateClick(rate, $event)\">\r\n <ng-container *ngIf=\"customTemp; else iconTpl\">\r\n <ng-container *ngTemplateOutlet=\"customTemp\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #iconTpl>\r\n <x-icon type=\"adf-star\"></x-icon>\r\n</ng-template>\r\n", styles: [".x-rate{margin:0;padding:0;width:100%}.x-rate.x-flex{display:flex}.x-rate.x-justify-start{justify-content:flex-start}.x-rate.x-justify-center{justify-content:center}.x-rate.x-justify-end{justify-content:flex-end}.x-rate.x-justify-space-between{justify-content:space-between}.x-rate.x-justify-space-around{justify-content:space-around}.x-rate.x-align-start{align-items:flex-start}.x-rate.x-align-center{align-items:center}.x-rate.x-align-end{align-items:flex-end}.x-rate.x-direction-column{flex-direction:column}.x-rate.x-direction-column-reverse{flex-direction:column-reverse}.x-rate.x-direction-row{flex-direction:row}.x-rate.x-direction-row-reverse{flex-direction:row-reverse}.x-rate>label{display:inline-block;white-space:nowrap;height:calc(var(--x-font-size) + .875rem);line-height:calc(var(--x-font-size) + .875rem);position:relative;color:var(--x-text-300);font-weight:600}.x-rate>label.x-text-align-start{text-align:start}.x-rate>label.x-text-align-center{text-align:center}.x-rate>label.x-text-align-end{text-align:end}.x-rate-icons{display:inline-flex;align-items:center;height:calc(var(--x-font-size) + .875rem);cursor:pointer}.x-rate-icon{margin:0 .2rem;display:flex;align-items:center;position:relative;color:var(--x-info);transition:transform var(--x-animation-duration-base),color var(--x-animation-duration-base);font-size:calc(var(--x-font-size-big) + .125rem)}.x-rate-icon .x-icon{vertical-align:0}.x-rate-icon:hover{transform:scale(1.1)}.x-rate-icon.activated,.x-rate-icon.half-activated .x-rate-half{color:var(--x-warning)}.x-rate-half{position:absolute;top:0;left:0;width:50%;height:100%;overflow:hidden;display:flex;align-items:center}.x-rate-half:hover{opacity:1}.x-rate-back{display:flex;align-items:center}.x-rate.x-invalid>label,.x-rate.x-required>label{color:var(--x-danger)}.x-rate.x-disabled .x-rate-icons{cursor:not-allowed;opacity:.8}.x-rate.x-direction-row>label{padding:0 .5rem 0 0}.x-rate.x-direction-row-reverse>label{padding:0 0 0 .5rem}.x-rate.x-direction-column,.x-rate.x-direction-column-reverse{align-items:inherit}\n"] }]
91
108
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { rate: [{
92
109
  type: ViewChild,
93
110
  args: ['rate', { static: true }]
94
111
  }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9yYXRlL3JhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvcmF0ZS9yYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQTRDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBa0IsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7QUFVdkQsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBZ0IvQyxZQUNTLFFBQW1CLEVBQ25CLFVBQXNCLEVBQ3RCLEdBQXNCLEVBQ3RCLGFBQTZCO1FBRXBDLEtBQUssRUFBRSxDQUFDO1FBTEQsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQjtRQWxCdEMsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUVyQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQix1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFVdkIsY0FBUyxHQUFRLEVBQUUsQ0FBQztJQVFwQixDQUFDO0lBaEJRLFVBQVUsQ0FBQyxLQUFVO1FBQzVCLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQztZQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsR0FB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SSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDOztpSkFsRlUsY0FBYztxSUFBZCxjQUFjLGlDQUZkLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLDZKQ1g3QywrMENBaUNBOzJGRHBCYSxjQUFjO2tCQVIxQixTQUFTOytCQUNFLEdBQUcsV0FBVyxFQUFFLGlCQUdYLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxjQUFjLGdCQUFnQixDQUFDO3NMQUdOLElBQUk7c0JBQXhDLFNBQVM7dUJBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBSZW5kZXJlcjIsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWElzRW1wdHksIFhDbGVhckNsYXNzLCBYQ29uZmlnU2VydmljZSB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYUmF0ZVByZWZpeCwgWFJhdGVQcm9wZXJ0eSB9IGZyb20gJy4vcmF0ZS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYUmF0ZVByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yYXRlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtYVmFsdWVBY2Nlc3NvcihYUmF0ZUNvbXBvbmVudCldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYUmF0ZUNvbXBvbmVudCBleHRlbmRzIFhSYXRlUHJvcGVydHkge1xyXG4gIEBWaWV3Q2hpbGQoJ3JhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSByYXRlITogRWxlbWVudFJlZjtcclxuICByYXRlczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgaG92ZXJBY3RpdmF0ZWQgPSAwO1xyXG4gIGhvdmVySGFsZkFjdGl2YXRlZCA9IDA7XHJcblxyXG4gIG92ZXJyaWRlIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgaWYgKFhJc0VtcHR5KHZhbHVlKSkgdmFsdWUgPSAwO1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5ob3ZlckFjdGl2YXRlZCA9IHZhbHVlO1xyXG4gICAgdGhpcy5ob3ZlckhhbGZBY3RpdmF0ZWQgPSBNYXRoLmNlaWwodmFsdWUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcmF0ZU5vZGVzOiBhbnkgPSBbXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHB1YmxpYyBjb25maWdTZXJ2aWNlOiBYQ29uZmlnU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRSYXRlcygpO1xyXG4gICAgdGhpcy5zZXRGbGV4KHRoaXMucmF0ZS5uYXRpdmVFbGVtZW50LCB0aGlzLnJlbmRlcmVyLCB0aGlzLmp1c3RpZnksIHRoaXMuYWxpZ24sIHRoaXMuZGlyZWN0aW9uKTtcclxuICAgIHRoaXMuc2V0Q2xhc3NNYXAoKTtcclxuICB9XHJcblxyXG4gIHNldENsYXNzTWFwKCkge1xyXG4gICAgWENsZWFyQ2xhc3ModGhpcy5sYWJlbE1hcCk7XHJcbiAgICB0aGlzLmxhYmVsTWFwW2B4LXRleHQtYWxpZ24tJHt0aGlzLmxhYmVsQWxpZ259YF0gPSB0aGlzLmxhYmVsQWxpZ24gPyB0cnVlIDogZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzZXRSYXRlcygpIHtcclxuICAgIHRoaXMucmF0ZXMgPSBBcnJheSh0aGlzLmNvdW50KVxyXG4gICAgICAuZmlsbCgwKVxyXG4gICAgICAubWFwKChfLCBpKSA9PiBpICsgMSk7XHJcbiAgfVxyXG5cclxuICByYXRlSG92ZXIocmF0ZTogbnVtYmVyLCBfZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLmhvdmVyQWN0aXZhdGVkID0gcmF0ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGxlYXZlUmF0ZXMoKSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgYWN0aXZpdGVkID0gdGhpcy52YWx1ZTtcclxuICAgIHRoaXMuaG92ZXJBY3RpdmF0ZWQgPSBhY3Rpdml0ZWQ7XHJcbiAgICB0aGlzLmhvdmVySGFsZkFjdGl2YXRlZCA9IE1hdGguY2VpbChhY3Rpdml0ZWQpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcmF0ZUNsaWNrKHJhdGU6IG51bWJlciwgX2V2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgPT09IHJhdGUgPyAwIDogcmF0ZTtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcmF0ZUhhbGZIb3ZlcihyYXRlOiBudW1iZXIsIF9ldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIHRoaXMuaG92ZXJBY3RpdmF0ZWQgPSByYXRlIC0gMTtcclxuICAgIHRoaXMuaG92ZXJIYWxmQWN0aXZhdGVkID0gcmF0ZTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHJhdGVIYWxmQ2xpY2socmF0ZTogbnVtYmVyLCBfZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLnZhbHVlID0gcmF0ZSAtIDAuNTtcclxuICAgIGlmICh0aGlzLm9uQ2hhbmdlKSB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUl0ZW0oX2luZGV4OiBudW1iZXIsIGl0ZW06IG51bWJlcikge1xyXG4gICAgcmV0dXJuIGl0ZW07XHJcbiAgfVxyXG5cclxuICBmb3JtQ29udHJvbENoYW5nZXMoKSB7XHJcbiAgICB0aGlzLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICAjcmF0ZVxyXG4gIGNsYXNzPVwieC1yYXRlXCJcclxuICBbY2xhc3MueC1mbGV4XT1cImp1c3RpZnkgfHwgYWxpZ24gfHwgZGlyZWN0aW9uXCJcclxuICBbY2xhc3MueC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgW2NsYXNzLngtcmVxdWlyZWRdPVwicmVxdWlyZWRJc0VtcHR5XCJcclxuICBbY2xhc3MueC1pbnZhbGlkXT1cImludmFsaWRcIlxyXG4+XHJcbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbc3R5bGUud2lkdGhdPVwibGFiZWxXaWR0aFwiIFtuZ0NsYXNzXT1cImxhYmVsTWFwXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LXJhdGUtaWNvbnNcIiAobW91c2VsZWF2ZSk9XCJsZWF2ZVJhdGVzKClcIj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ4LXJhdGUtaWNvblwiXHJcbiAgICAgIFtjbGFzcy5hY3RpdmF0ZWRdPVwicmF0ZSA8PSBob3ZlckFjdGl2YXRlZFwiXHJcbiAgICAgIFtjbGFzcy5oYWxmLWFjdGl2YXRlZF09XCJyYXRlIDw9IGhvdmVySGFsZkFjdGl2YXRlZFwiXHJcbiAgICAgICpuZ0Zvcj1cImxldCByYXRlIG9mIHJhdGVzOyBpbmRleCBhcyBpOyB0cmFja0J5OiB0cmFja0J5SXRlbVwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJoYWxmXCIgY2xhc3M9XCJ4LXJhdGUtaGFsZlwiIChtb3VzZWVudGVyKT1cInJhdGVIYWxmSG92ZXIocmF0ZSwgJGV2ZW50KVwiIChjbGljayk9XCJyYXRlSGFsZkNsaWNrKHJhdGUsICRldmVudClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tVGVtcDsgZWxzZSBpY29uVHBsXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tVGVtcFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIngtcmF0ZS1iYWNrXCIgKG1vdXNlZW50ZXIpPVwicmF0ZUhvdmVyKHJhdGUsICRldmVudClcIiAoY2xpY2spPVwicmF0ZUNsaWNrKHJhdGUsICRldmVudClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tVGVtcDsgZWxzZSBpY29uVHBsXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tVGVtcFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaWNvblRwbD5cclxuICA8eC1pY29uIHR5cGU9XCJhZGYtc3RhclwiPjwveC1pY29uPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvbmctbmVzdC91aS9yYXRlL3JhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvcmF0ZS9yYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQTRDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBa0IsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQVV2RCxNQUFNLE9BQU8sY0FBZSxTQUFRLGFBQWE7SUFpQy9DLFlBQ1MsUUFBbUIsRUFDbkIsVUFBc0IsRUFDdEIsR0FBc0IsRUFDdEIsYUFBNkI7UUFFcEMsS0FBSyxFQUFFLENBQUM7UUFMRCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWdCO1FBbkN0QyxVQUFLLEdBQWEsRUFBRSxDQUFDO1FBRXJCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLHVCQUFrQixHQUFHLENBQUMsQ0FBQztRQTJCdkIsY0FBUyxHQUFRLEVBQUUsQ0FBQztJQVFwQixDQUFDO0lBakNELElBQUksUUFBUTtRQUNWLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQWUsQ0FBQztTQUM5QjthQUFNLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUF1RCxDQUFDO1lBQzFFLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQzlHLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUN4QixLQUFLLEdBQUcsR0FBRyxDQUFDO29CQUNaLE1BQU07aUJBQ1A7YUFDRjtTQUNGO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRVEsVUFBVSxDQUFDLEtBQVU7UUFDNUIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFZRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9GLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNULFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEYsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQzNCLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDUCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFZLEVBQUUsTUFBa0I7UUFDeEMsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsU0FBUyxDQUFDLElBQVksRUFBRSxNQUFrQjtRQUN4QyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM1QyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZLEVBQUUsTUFBa0I7UUFDNUMsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsYUFBYSxDQUFDLElBQVksRUFBRSxNQUFrQjtRQUM1QyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYyxFQUFFLElBQVk7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7O2lKQW5HVSxjQUFjO3FJQUFkLGNBQWMsaUNBRmQsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsNkpDWDdDLCtnREF3Q0E7MkZEM0JhLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UsR0FBRyxXQUFXLEVBQUUsaUJBR1gsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGNBQWMsZ0JBQWdCLENBQUM7c0xBR04sSUFBSTtzQkFBeEMsU0FBUzt1QkFBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIFJlbmRlcmVyMiwgRWxlbWVudFJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBYSXNFbXB0eSwgWENsZWFyQ2xhc3MsIFhDb25maWdTZXJ2aWNlLCBYSXNTdHJpbmcsIFhJc09iamVjdCB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBYUmF0ZVByZWZpeCwgWFJhdGVQcm9wZXJ0eSB9IGZyb20gJy4vcmF0ZS5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7IFhWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQG5nLW5lc3QvdWkvYmFzZS1mb3JtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYUmF0ZVByZWZpeH1gLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yYXRlLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtYVmFsdWVBY2Nlc3NvcihYUmF0ZUNvbXBvbmVudCldXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYUmF0ZUNvbXBvbmVudCBleHRlbmRzIFhSYXRlUHJvcGVydHkge1xyXG4gIEBWaWV3Q2hpbGQoJ3JhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSByYXRlITogRWxlbWVudFJlZjtcclxuICByYXRlczogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgaG92ZXJBY3RpdmF0ZWQgPSAwO1xyXG4gIGhvdmVySGFsZkFjdGl2YXRlZCA9IDA7XHJcblxyXG4gIGdldCBnZXRDb2xvcigpIHtcclxuICAgIGxldCBjb2xvciA9ICcnO1xyXG4gICAgaWYgKFhJc1N0cmluZyh0aGlzLmNvbG9yKSkge1xyXG4gICAgICBjb2xvciA9IHRoaXMuY29sb3IgYXMgc3RyaW5nO1xyXG4gICAgfSBlbHNlIGlmIChYSXNPYmplY3QodGhpcy5jb2xvcikpIHtcclxuICAgICAgdGhpcy5jb2xvciA9IHRoaXMuY29sb3IgYXMgeyBbY29sb3I6IHN0cmluZ106IChyYXRlOiBudW1iZXIpID0+IGJvb2xlYW4gfTtcclxuICAgICAgbGV0IHZhbCA9IHRoaXMuaGFsZiA/IChNYXRoLmZsb29yKHRoaXMuaG92ZXJBY3RpdmF0ZWQpICsgdGhpcy5ob3ZlckhhbGZBY3RpdmF0ZWQpICogMC41IDogdGhpcy5ob3ZlckFjdGl2YXRlZDtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuY29sb3IpIHtcclxuICAgICAgICBpZiAodGhpcy5jb2xvcltrZXldKHZhbCkpIHtcclxuICAgICAgICAgIGNvbG9yID0ga2V5O1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29sb3I7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmIChYSXNFbXB0eSh2YWx1ZSkpIHZhbHVlID0gMDtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuaG92ZXJBY3RpdmF0ZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMuaG92ZXJIYWxmQWN0aXZhdGVkID0gTWF0aC5jZWlsKHZhbHVlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHJhdGVOb2RlczogYW55ID0gW107XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogWENvbmZpZ1NlcnZpY2VcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0UmF0ZXMoKTtcclxuICAgIHRoaXMuc2V0RmxleCh0aGlzLnJhdGUubmF0aXZlRWxlbWVudCwgdGhpcy5yZW5kZXJlciwgdGhpcy5qdXN0aWZ5LCB0aGlzLmFsaWduLCB0aGlzLmRpcmVjdGlvbik7XHJcbiAgICB0aGlzLnNldENsYXNzTWFwKCk7XHJcbiAgfVxyXG5cclxuICBzZXRDbGFzc01hcCgpIHtcclxuICAgIFhDbGVhckNsYXNzKHRoaXMubGFiZWxNYXApO1xyXG4gICAgdGhpcy5sYWJlbE1hcFtgeC10ZXh0LWFsaWduLSR7dGhpcy5sYWJlbEFsaWdufWBdID0gdGhpcy5sYWJlbEFsaWduID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgc2V0UmF0ZXMoKSB7XHJcbiAgICB0aGlzLnJhdGVzID0gQXJyYXkodGhpcy5jb3VudClcclxuICAgICAgLmZpbGwoMClcclxuICAgICAgLm1hcCgoXywgaSkgPT4gaSArIDEpO1xyXG4gIH1cclxuXHJcbiAgcmF0ZUhvdmVyKHJhdGU6IG51bWJlciwgX2V2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5ob3ZlckFjdGl2YXRlZCA9IHJhdGU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBsZWF2ZVJhdGVzKCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIGNvbnN0IGFjdGl2aXRlZCA9IHRoaXMudmFsdWU7XHJcbiAgICB0aGlzLmhvdmVyQWN0aXZhdGVkID0gYWN0aXZpdGVkO1xyXG4gICAgdGhpcy5ob3ZlckhhbGZBY3RpdmF0ZWQgPSBNYXRoLmNlaWwoYWN0aXZpdGVkKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHJhdGVDbGljayhyYXRlOiBudW1iZXIsIF9ldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlID09PSByYXRlID8gMCA6IHJhdGU7XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHJhdGVIYWxmSG92ZXIocmF0ZTogbnVtYmVyLCBfZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XHJcbiAgICB0aGlzLmhvdmVyQWN0aXZhdGVkID0gcmF0ZSAtIDE7XHJcbiAgICB0aGlzLmhvdmVySGFsZkFjdGl2YXRlZCA9IHJhdGU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICByYXRlSGFsZkNsaWNrKHJhdGU6IG51bWJlciwgX2V2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgdGhpcy52YWx1ZSA9IHJhdGUgLSAwLjU7XHJcbiAgICBpZiAodGhpcy5vbkNoYW5nZSkgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJdGVtKF9pbmRleDogbnVtYmVyLCBpdGVtOiBudW1iZXIpIHtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH1cclxuXHJcbiAgZm9ybUNvbnRyb2xDaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgI3JhdGVcclxuICBjbGFzcz1cIngtcmF0ZVwiXHJcbiAgW2NsYXNzLngtZmxleF09XCJqdXN0aWZ5IHx8IGFsaWduIHx8IGRpcmVjdGlvblwiXHJcbiAgW2NsYXNzLngtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtjbGFzcy54LXJlcXVpcmVkXT1cInJlcXVpcmVkSXNFbXB0eVwiXHJcbiAgW2NsYXNzLngtaW52YWxpZF09XCJpbnZhbGlkXCJcclxuPlxyXG4gIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgW3N0eWxlLndpZHRoXT1cImxhYmVsV2lkdGhcIiBbbmdDbGFzc109XCJsYWJlbE1hcFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cclxuICA8ZGl2IGNsYXNzPVwieC1yYXRlLWljb25zXCIgKG1vdXNlbGVhdmUpPVwibGVhdmVSYXRlcygpXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwieC1yYXRlLWljb25cIlxyXG4gICAgICBbY2xhc3MuYWN0aXZhdGVkXT1cInJhdGUgPD0gaG92ZXJBY3RpdmF0ZWRcIlxyXG4gICAgICBbY2xhc3MuaGFsZi1hY3RpdmF0ZWRdPVwicmF0ZSA8PSBob3ZlckhhbGZBY3RpdmF0ZWRcIlxyXG4gICAgICBbc3R5bGUuY29sb3JdPVwicmF0ZSA8PSBob3ZlckFjdGl2YXRlZCA/IGdldENvbG9yIDogJydcIlxyXG4gICAgICAqbmdGb3I9XCJsZXQgcmF0ZSBvZiByYXRlczsgaW5kZXggYXMgaTsgdHJhY2tCeTogdHJhY2tCeUl0ZW1cIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJoYWxmXCJcclxuICAgICAgICBjbGFzcz1cIngtcmF0ZS1oYWxmXCJcclxuICAgICAgICBbc3R5bGUuY29sb3JdPVwicmF0ZSA8PSBob3ZlckhhbGZBY3RpdmF0ZWQgPyBnZXRDb2xvciA6ICcnXCJcclxuICAgICAgICAobW91c2VlbnRlcik9XCJyYXRlSGFsZkhvdmVyKHJhdGUsICRldmVudClcIlxyXG4gICAgICAgIChjbGljayk9XCJyYXRlSGFsZkNsaWNrKHJhdGUsICRldmVudClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVRlbXA7IGVsc2UgaWNvblRwbFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbVRlbXBcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LXJhdGUtYmFja1wiIChtb3VzZWVudGVyKT1cInJhdGVIb3ZlcihyYXRlLCAkZXZlbnQpXCIgKGNsaWNrKT1cInJhdGVDbGljayhyYXRlLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVRlbXA7IGVsc2UgaWNvblRwbFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbVRlbXBcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2ljb25UcGw+XHJcbiAgPHgtaWNvbiB0eXBlPVwiYWRmLXN0YXJcIj48L3gtaWNvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -1,5 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
- import { XInputNumber, XInputBoolean } from '@ng-nest/ui/core';
2
+ import { XInputNumber, XInputBoolean, XWithConfig } from '@ng-nest/ui/core';
3
3
  import { Input, Component } from '@angular/core';
4
4
  import { XControlValueAccessor } from '@ng-nest/ui/base-form';
5
5
  import * as i0 from "@angular/core";
@@ -9,6 +9,7 @@ import * as i0 from "@angular/core";
9
9
  * @decorator component
10
10
  */
11
11
  export const XRatePrefix = 'x-rate';
12
+ const X_CONFIG_NAME = 'rate';
12
13
  /**
13
14
  * Rate Property
14
15
  */
@@ -23,13 +24,16 @@ export class XRateProperty extends XControlValueAccessor {
23
24
  }
24
25
  }
25
26
  /** @nocollapse */ /** @nocollapse */ XRateProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XRateProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
26
- /** @nocollapse */ /** @nocollapse */ XRateProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XRateProperty, selector: "ng-component", inputs: { count: "count", half: "half", customTemp: "customTemp" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
27
+ /** @nocollapse */ /** @nocollapse */ XRateProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.2", type: XRateProperty, selector: "ng-component", inputs: { count: "count", half: "half", color: "color", customTemp: "customTemp" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
27
28
  __decorate([
28
29
  XInputNumber()
29
30
  ], XRateProperty.prototype, "count", void 0);
30
31
  __decorate([
31
32
  XInputBoolean()
32
33
  ], XRateProperty.prototype, "half", void 0);
34
+ __decorate([
35
+ XWithConfig(X_CONFIG_NAME)
36
+ ], XRateProperty.prototype, "color", void 0);
33
37
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XRateProperty, decorators: [{
34
38
  type: Component,
35
39
  args: [{ template: '' }]
@@ -37,7 +41,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
37
41
  type: Input
38
42
  }], half: [{
39
43
  type: Input
44
+ }], color: [{
45
+ type: Input
40
46
  }], customTemp: [{
41
47
  type: Input
42
48
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZS5wcm9wZXJ0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3JhdGUvcmF0ZS5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBVyxhQUFhLEVBQXVCLE1BQU0sa0JBQWtCLENBQUM7QUFDN0YsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7O0FBRTNFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDO0FBRXBDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGFBQWMsU0FBUSxxQkFBMEI7SUFEN0Q7O1FBRUU7OztXQUdHO1FBQ3NCLFVBQUssR0FBWSxDQUFDLENBQUM7S0FXN0M7O2dKQWhCWSxhQUFhO29JQUFiLGFBQWEsK0lBREgsRUFBRTtBQU1FO0lBQWYsWUFBWSxFQUFFOzRDQUFvQjtBQUtsQjtJQUFoQixhQUFhLEVBQUU7MkNBQWlCOzJGQVYvQixhQUFhO2tCQUR6QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTs4QkFNQSxLQUFLO3NCQUE3QixLQUFLO2dCQUtvQixJQUFJO3NCQUE3QixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBYSW5wdXROdW1iZXIsIFhOdW1iZXIsIFhJbnB1dEJvb2xlYW4sIFhCb29sZWFuLCBYVGVtcGxhdGUgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgSW5wdXQsIENvbXBvbmVudCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBYRm9ybU9wdGlvbiB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcblxyXG4vKipcclxuICogUmF0ZVxyXG4gKiBAc2VsZWN0b3IgeC1yYXRlXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWFJhdGVQcmVmaXggPSAneC1yYXRlJztcclxuXHJcbi8qKlxyXG4gKiBSYXRlIFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXHJcbmV4cG9ydCBjbGFzcyBYUmF0ZVByb3BlcnR5IGV4dGVuZHMgWENvbnRyb2xWYWx1ZUFjY2Vzc29yPGFueT4gaW1wbGVtZW50cyBYUmF0ZU9wdGlvbiB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOivhOWIhuS4quaVsFxyXG4gICAqIEBlbl9VUyBOdW1iZXIgb2YgcmF0aW5nc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXROdW1iZXIoKSBjb3VudDogWE51bWJlciA9IDU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWNiuaYn+aooeW8j1xyXG4gICAqIEBlbl9VUyBOdW1iZXIgb2YgcmF0aW5nc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgaGFsZj86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoh6rlrprkuYnmqKHmnb9cclxuICAgKiBAZW5fVVMgQ3VzdG9tIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgY3VzdG9tVGVtcCE6IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSYXRlIE9wdGlvblxyXG4gKiBAdW5kb2N1bWVudCB0cnVlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhSYXRlT3B0aW9uIGV4dGVuZHMgWEZvcm1PcHRpb24ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDor4TliIbkuKrmlbBcclxuICAgKiBAZW5fVVMgTnVtYmVyIG9mIHJhdGluZ3NcclxuICAgKi9cclxuICBjb3VudD86IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWNiuaYn+aooeW8j1xyXG4gICAqIEBlbl9VUyBOdW1iZXIgb2YgcmF0aW5nc1xyXG4gICAqL1xyXG4gIGhhbGY/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6Ieq5a6a5LmJ5qih5p2/XHJcbiAgICogQGVuX1VTIEN1c3RvbSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIGN1c3RvbVRlbXA/OiBYVGVtcGxhdGU7XHJcbn1cclxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZS5wcm9wZXJ0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3JhdGUvcmF0ZS5wcm9wZXJ0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBVyxhQUFhLEVBQXVCLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFHLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxxQkFBcUIsRUFBZSxNQUFNLHVCQUF1QixDQUFDOztBQUUzRTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQztBQUNwQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUM7QUFFN0I7O0dBRUc7QUFFSCxNQUFNLE9BQU8sYUFBYyxTQUFRLHFCQUEwQjtJQUQ3RDs7UUFFRTs7O1dBR0c7UUFDc0IsVUFBSyxHQUFZLENBQUMsQ0FBQztLQWdCN0M7O2dKQXJCWSxhQUFhO29JQUFiLGFBQWEsK0pBREgsRUFBRTtBQU1FO0lBQWYsWUFBWSxFQUFFOzRDQUFvQjtBQUtsQjtJQUFoQixhQUFhLEVBQUU7MkNBQWlCO0FBS087SUFBdkMsV0FBVyxDQUFhLGFBQWEsQ0FBQzs0Q0FBb0I7MkZBZnpELGFBQWE7a0JBRHpCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFOzhCQU1BLEtBQUs7c0JBQTdCLEtBQUs7Z0JBS29CLElBQUk7c0JBQTdCLEtBQUs7Z0JBSzJDLEtBQUs7c0JBQXJELEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFhJbnB1dE51bWJlciwgWE51bWJlciwgWElucHV0Qm9vbGVhbiwgWEJvb2xlYW4sIFhUZW1wbGF0ZSwgWFdpdGhDb25maWcgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgSW5wdXQsIENvbXBvbmVudCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgWENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBYRm9ybU9wdGlvbiB9IGZyb20gJ0BuZy1uZXN0L3VpL2Jhc2UtZm9ybSc7XHJcblxyXG4vKipcclxuICogUmF0ZVxyXG4gKiBAc2VsZWN0b3IgeC1yYXRlXHJcbiAqIEBkZWNvcmF0b3IgY29tcG9uZW50XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgWFJhdGVQcmVmaXggPSAneC1yYXRlJztcclxuY29uc3QgWF9DT05GSUdfTkFNRSA9ICdyYXRlJztcclxuXHJcbi8qKlxyXG4gKiBSYXRlIFByb3BlcnR5XHJcbiAqL1xyXG5AQ29tcG9uZW50KHsgdGVtcGxhdGU6ICcnIH0pXHJcbmV4cG9ydCBjbGFzcyBYUmF0ZVByb3BlcnR5IGV4dGVuZHMgWENvbnRyb2xWYWx1ZUFjY2Vzc29yPGFueT4gaW1wbGVtZW50cyBYUmF0ZU9wdGlvbiB7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOivhOWIhuS4quaVsFxyXG4gICAqIEBlbl9VUyBOdW1iZXIgb2YgcmF0aW5nc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXROdW1iZXIoKSBjb3VudDogWE51bWJlciA9IDU7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWNiuaYn+aooeW8j1xyXG4gICAqIEBlbl9VUyBOdW1iZXIgb2YgcmF0aW5nc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIEBYSW5wdXRCb29sZWFuKCkgaGFsZj86IFhCb29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDpopzoibJcclxuICAgKiBAZW5fVVMgQ29sb3JcclxuICAgKi9cclxuICBASW5wdXQoKSBAWFdpdGhDb25maWc8WFJhdGVDb2xvcj4oWF9DT05GSUdfTkFNRSkgY29sb3I/OiBYUmF0ZUNvbG9yO1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDoh6rlrprkuYnmqKHmnb9cclxuICAgKiBAZW5fVVMgQ3VzdG9tIHRlbXBsYXRlXHJcbiAgICovXHJcbiAgQElucHV0KCkgY3VzdG9tVGVtcCE6IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBAemhfQ04g6aKc6Imy57G75Z6LXHJcbiAqIEBlbl9VUyBDb2xvciB0eXBlXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBYUmF0ZUNvbG9yID0gc3RyaW5nIHwgeyBbY29sb3I6IHN0cmluZ106IChyYXRlOiBudW1iZXIpID0+IGJvb2xlYW4gfTtcclxuXHJcbi8qKlxyXG4gKiBSYXRlIE9wdGlvblxyXG4gKiBAdW5kb2N1bWVudCB0cnVlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFhSYXRlT3B0aW9uIGV4dGVuZHMgWEZvcm1PcHRpb24ge1xyXG4gIC8qKlxyXG4gICAqIEB6aF9DTiDor4TliIbkuKrmlbBcclxuICAgKiBAZW5fVVMgTnVtYmVyIG9mIHJhdGluZ3NcclxuICAgKi9cclxuICBjb3VudD86IFhOdW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQHpoX0NOIOWNiuaYn+aooeW8j1xyXG4gICAqIEBlbl9VUyBOdW1iZXIgb2YgcmF0aW5nc1xyXG4gICAqL1xyXG4gIGhhbGY/OiBYQm9vbGVhbjtcclxuICAvKipcclxuICAgKiBAemhfQ04g6Ieq5a6a5LmJ5qih5p2/XHJcbiAgICogQGVuX1VTIEN1c3RvbSB0ZW1wbGF0ZVxyXG4gICAqL1xyXG4gIGN1c3RvbVRlbXA/OiBYVGVtcGxhdGU7XHJcbn1cclxuIl19
@@ -1,6 +1,6 @@
1
1
  import { DOCUMENT } from '@angular/common';
2
2
  import { Directive, HostListener, Inject } from '@angular/core';
3
- import { XIsArray, XIsString } from '@ng-nest/ui/core';
3
+ import { XIsArray, XIsChange, XIsString } from '@ng-nest/ui/core';
4
4
  import { fromEvent, takeUntil } from 'rxjs';
5
5
  import { XResizablePrefix, XResizableProperty } from './resizable.property';
6
6
  import * as i0 from "@angular/core";
@@ -15,6 +15,7 @@ export class XResizableDirective extends XResizableProperty {
15
15
  this.newBox = { clientWidth: 0, clientHeight: 0, offsetLeft: 0, offsetTop: 0 };
16
16
  this.positionNodes = {};
17
17
  this.activatingNodes = [];
18
+ this.firstLoaded = true;
18
19
  this.document = doc;
19
20
  this.ele = this.elementRef.nativeElement;
20
21
  }
@@ -27,6 +28,10 @@ export class XResizableDirective extends XResizableProperty {
27
28
  ngOnDestroy() {
28
29
  this.destroySubscription();
29
30
  }
31
+ ngOnChanges(changes) {
32
+ const { xResizable } = changes;
33
+ XIsChange(xResizable) && this.setPosition();
34
+ }
30
35
  mousedown(event) {
31
36
  if (!this.xResizable)
32
37
  return;
@@ -61,7 +66,7 @@ export class XResizableDirective extends XResizableProperty {
61
66
  this.renderer.addClass(this.ele, XResizablePrefix);
62
67
  }
63
68
  setPosition() {
64
- if (!this.xResizable)
69
+ if (!this.xResizable && !this.firstLoaded)
65
70
  return;
66
71
  let positions = [];
67
72
  if (XIsString(this.position)) {
@@ -78,10 +83,13 @@ export class XResizableDirective extends XResizableProperty {
78
83
  }
79
84
  this.createNode(...this.positions);
80
85
  const computedStyle = window.getComputedStyle(this.ele);
81
- this.minWidth = parseFloat(computedStyle.minWidth);
82
- this.maxWidth = parseFloat(computedStyle.maxWidth);
83
- this.minHeight = parseFloat(computedStyle.minHeight);
84
- this.maxHeight = parseFloat(computedStyle.maxHeight);
86
+ setTimeout(() => {
87
+ this.minWidth = parseFloat(computedStyle.minWidth);
88
+ this.maxWidth = parseFloat(computedStyle.maxWidth);
89
+ this.minHeight = parseFloat(computedStyle.minHeight);
90
+ this.maxHeight = parseFloat(computedStyle.maxHeight);
91
+ this.firstLoaded = false;
92
+ });
85
93
  }
86
94
  setActivatingNodes(direction) {
87
95
  if (!this.positions.includes(direction))
@@ -159,46 +167,76 @@ export class XResizableDirective extends XResizableProperty {
159
167
  offsetLeft: this.newBox.offsetLeft - Number(this.offsetLeft),
160
168
  offsetTop: this.newBox.offsetTop - Number(this.offsetTop)
161
169
  };
162
- this.resizeWidth(box);
163
- this.resizeHeight(box);
164
- this.resizing.emit({ ...this.newBox, event: evt });
170
+ this.resizeBox(box);
171
+ this.resizing.emit({ ...this.newBox, event: evt, direction: this.direction });
165
172
  }
166
- resizeWidth(box) {
173
+ resizeBox(box) {
174
+ if (this.ghost)
175
+ return;
167
176
  const overMinWidth = !this.minWidth || box.clientWidth >= this.minWidth;
168
177
  const underMaxWidth = !this.maxWidth || box.clientWidth <= this.maxWidth;
169
- if (['bottom-end', 'right', 'top-end'].includes(this.direction)) {
170
- if (overMinWidth && underMaxWidth) {
171
- if (!this.ghost) {
178
+ const overMinHeight = !this.minHeight || box.clientHeight >= this.minHeight;
179
+ const underMaxHeight = !this.maxHeight || box.clientHeight <= this.maxHeight;
180
+ switch (this.direction) {
181
+ case 'right':
182
+ if (overMinWidth && underMaxWidth) {
172
183
  this.renderer.setStyle(this.ele, 'width', `${box.clientWidth}px`);
173
184
  }
174
- }
175
- }
176
- if (['bottom-start', 'left', 'top-start'].includes(this.direction)) {
177
- if (overMinWidth && underMaxWidth) {
178
- if (!this.ghost) {
185
+ break;
186
+ case 'top-end':
187
+ if (overMinWidth && underMaxWidth) {
188
+ this.renderer.setStyle(this.ele, 'width', `${box.clientWidth}px`);
189
+ }
190
+ if (overMinHeight && underMaxHeight) {
191
+ this.renderer.setStyle(this.ele, 'top', `${box.offsetTop}px`);
192
+ this.renderer.setStyle(this.ele, 'height', `${box.clientHeight}px`);
193
+ }
194
+ break;
195
+ case 'bottom-end':
196
+ if (overMinWidth && underMaxWidth) {
197
+ this.renderer.setStyle(this.ele, 'width', `${box.clientWidth}px`);
198
+ }
199
+ if (overMinHeight && underMaxHeight) {
200
+ this.renderer.setStyle(this.ele, 'height', `${box.clientHeight}px`);
201
+ }
202
+ break;
203
+ case 'bottom-start':
204
+ if (overMinWidth && underMaxWidth) {
179
205
  this.renderer.setStyle(this.ele, 'left', `${box.offsetLeft}px`);
180
206
  this.renderer.setStyle(this.ele, 'width', `${box.clientWidth}px`);
181
207
  }
182
- }
183
- }
184
- }
185
- resizeHeight(box) {
186
- const overMinHeight = !this.minHeight || box.clientHeight >= this.minHeight;
187
- const underMaxHeight = !this.maxHeight || box.clientHeight <= this.maxHeight;
188
- if (['bottom-end', 'bottom', 'bottom-start'].includes(this.direction)) {
189
- if (overMinHeight && underMaxHeight) {
190
- if (!this.ghost) {
208
+ if (overMinHeight && underMaxHeight) {
191
209
  this.renderer.setStyle(this.ele, 'height', `${box.clientHeight}px`);
192
210
  }
193
- }
194
- }
195
- if (['top-start', 'top', 'top-end'].includes(this.direction)) {
196
- if (overMinHeight && underMaxHeight) {
197
- if (!this.ghost) {
211
+ break;
212
+ case 'left':
213
+ console.log(this.minWidth);
214
+ if (overMinWidth && underMaxWidth) {
215
+ this.renderer.setStyle(this.ele, 'left', `${box.offsetLeft}px`);
216
+ this.renderer.setStyle(this.ele, 'width', `${box.clientWidth}px`);
217
+ }
218
+ break;
219
+ case 'top-start':
220
+ if (overMinWidth && underMaxWidth) {
221
+ this.renderer.setStyle(this.ele, 'left', `${box.offsetLeft}px`);
222
+ this.renderer.setStyle(this.ele, 'width', `${box.clientWidth}px`);
223
+ }
224
+ if (overMinHeight && underMaxHeight) {
198
225
  this.renderer.setStyle(this.ele, 'top', `${box.offsetTop}px`);
199
226
  this.renderer.setStyle(this.ele, 'height', `${box.clientHeight}px`);
200
227
  }
201
- }
228
+ break;
229
+ case 'top':
230
+ if (overMinHeight && underMaxHeight) {
231
+ this.renderer.setStyle(this.ele, 'top', `${box.offsetTop}px`);
232
+ this.renderer.setStyle(this.ele, 'height', `${box.clientHeight}px`);
233
+ }
234
+ break;
235
+ case 'bottom':
236
+ if (overMinHeight && underMaxHeight) {
237
+ this.renderer.setStyle(this.ele, 'height', `${box.clientHeight}px`);
238
+ }
239
+ break;
202
240
  }
203
241
  }
204
242
  destroySubscription() {
@@ -209,7 +247,7 @@ export class XResizableDirective extends XResizableProperty {
209
247
  }
210
248
  }
211
249
  /** @nocollapse */ /** @nocollapse */ XResizableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XResizableDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });
212
- /** @nocollapse */ /** @nocollapse */ XResizableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: XResizableDirective, selector: "[xResizable]", host: { listeners: { "mousedown": "mousedown($event)", "touchstart": "mousedown($event)" } }, usesInheritance: true, ngImport: i0 });
250
+ /** @nocollapse */ /** @nocollapse */ XResizableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.2", type: XResizableDirective, selector: "[xResizable]", host: { listeners: { "mousedown": "mousedown($event)", "touchstart": "mousedown($event)" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 });
213
251
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: XResizableDirective, decorators: [{
214
252
  type: Directive,
215
253
  args: [{ selector: '[xResizable]' }]
@@ -223,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImpor
223
261
  type: HostListener,
224
262
  args: ['touchstart', ['$event']]
225
263
  }] } });
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3Jlc2l6YWJsZS9yZXNpemFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBc0IsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHaEcsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGtCQUFrQjtJQWtCekQsWUFBb0IsUUFBbUIsRUFBVSxVQUFzQixFQUFvQixHQUFRO1FBQ2pHLEtBQUssRUFBRSxDQUFDO1FBRFUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFmdkUsb0JBQWUsR0FBeUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMvRixpQkFBWSxHQUF5QixDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqRyxjQUFTLEdBQXlCLEVBQUUsQ0FBQztRQUVyQyxXQUFNLEdBQUcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFRMUUsa0JBQWEsR0FBbUMsRUFBRSxDQUFDO1FB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Q0FBQztpQkFDckU7YUFDRjtTQUNGO1FBRUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFtQixDQUFDLEVBQUU7WUFDdEUsSUFBSSxhQUFhLElBQUksY0FBYyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDO29CQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO2lCQUNyRTthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQzs7c0pBek9VLG1CQUFtQixxRUFrQm1ELFFBQVE7MElBbEI5RSxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEL0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUU7OzBCQW1CcUMsTUFBTTsyQkFBQyxRQUFROzRDQW9CekYsU0FBUztzQkFGUixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3BDLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhJc0FycmF5LCBYSXNTdHJpbmcgfSBmcm9tICdAbmctbmVzdC91aS9jb3JlJztcclxuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24sIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBYUmVzaXphYmxlUG9zaXRpb24sIFhSZXNpemFibGVQcmVmaXgsIFhSZXNpemFibGVQcm9wZXJ0eSB9IGZyb20gJy4vcmVzaXphYmxlLnByb3BlcnR5JztcclxuXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t4UmVzaXphYmxlXScgfSlcclxuZXhwb3J0IGNsYXNzIFhSZXNpemFibGVEaXJlY3RpdmUgZXh0ZW5kcyBYUmVzaXphYmxlUHJvcGVydHkgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZG9jdW1lbnQhOiBEb2N1bWVudDtcclxuICBlbGUhOiBIVE1MRWxlbWVudDtcclxuICBjb3JuZXJQb3NpdGlvbnM6IFhSZXNpemFibGVQb3NpdGlvbltdID0gWyd0b3Atc3RhcnQnLCAndG9wLWVuZCcsICdib3R0b20tc3RhcnQnLCAnYm90dG9tLWVuZCddO1xyXG4gIGFsbFBvc2l0aW9uczogWFJlc2l6YWJsZVBvc2l0aW9uW10gPSBbJ2xlZnQnLCAncmlnaHQnLCAndG9wJywgJ2JvdHRvbScsIC4uLnRoaXMuY29ybmVyUG9zaXRpb25zXTtcclxuICBwb3NpdGlvbnM6IFhSZXNpemFibGVQb3NpdGlvbltdID0gW107XHJcbiAgZGlyZWN0aW9uPzogWFJlc2l6YWJsZVBvc2l0aW9uIHwgbnVsbDtcclxuICBuZXdCb3ggPSB7IGNsaWVudFdpZHRoOiAwLCBjbGllbnRIZWlnaHQ6IDAsIG9mZnNldExlZnQ6IDAsIG9mZnNldFRvcDogMCB9O1xyXG4gIG1vdXNlVXBTdWI/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIG1pbldpZHRoPzogbnVtYmVyO1xyXG4gIG1heFdpZHRoPzogbnVtYmVyO1xyXG4gIG1pbkhlaWdodD86IG51bWJlcjtcclxuICBtYXhIZWlnaHQ/OiBudW1iZXI7XHJcblxyXG4gIHBvc2l0aW9uTm9kZXM6IHsgW2tleTogc3RyaW5nXTogSFRNTEVsZW1lbnQgfSA9IHt9O1xyXG4gIGFjdGl2YXRpbmdOb2RlczogSFRNTEVsZW1lbnRbXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgQEluamVjdChET0NVTUVOVCkgZG9jOiBhbnkpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLmRvY3VtZW50ID0gZG9jO1xyXG4gICAgdGhpcy5lbGUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZXRNYXBDbGFzcygpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5zZXRQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRlc3Ryb3lTdWJzY3JpcHRpb24oKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXHJcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcsIFsnJGV2ZW50J10pXHJcbiAgbW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLnhSZXNpemFibGUpIHJldHVybjtcclxuICAgIGNvbnN0IGNsYXNzTGlzdCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsYXNzTGlzdDtcclxuICAgIGxldCBkaXJlY3Rpb246IFhSZXNpemFibGVQb3NpdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgcG9zIG9mIHRoaXMuYWxsUG9zaXRpb25zKSB7XHJcbiAgICAgIGlmIChjbGFzc0xpc3QuY29udGFpbnMoYHgtcmVzaXphYmxlLSR7cG9zfWApKSB7XHJcbiAgICAgICAgZGlyZWN0aW9uID0gcG9zO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIWRpcmVjdGlvbikgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGV2dCA9IGV2ZW50LnR5cGUuc3RhcnRzV2l0aCgndG91Y2gnKSA/IChldmVudCBhcyBUb3VjaEV2ZW50KS50YXJnZXRUb3VjaGVzWzBdIDogKGV2ZW50IGFzIE1vdXNlRXZlbnQpO1xyXG4gICAgY29uc3QgeyBjbGllbnRXaWR0aCwgY2xpZW50SGVpZ2h0LCBvZmZzZXRMZWZ0LCBvZmZzZXRUb3AgfSA9IHRoaXMuZWxlO1xyXG4gICAgY29uc3QgeyBzY3JlZW5YLCBzY3JlZW5ZIH0gPSBldnQ7XHJcbiAgICBjb25zdCBpc1RvdWNoRXZlbnQgPSBldmVudC50eXBlLnN0YXJ0c1dpdGgoJ3RvdWNoJyk7XHJcbiAgICBjb25zdCBtb3ZlRXZlbnQgPSBpc1RvdWNoRXZlbnQgPyAndG91Y2htb3ZlJyA6ICdtb3VzZW1vdmUnO1xyXG4gICAgY29uc3QgdXBFdmVudCA9IGlzVG91Y2hFdmVudCA/ICd0b3VjaGVuZCcgOiAnbW91c2V1cCc7XHJcblxyXG4gICAgdGhpcy5zZXRBY3RpdmF0aW5nTm9kZXMoZGlyZWN0aW9uKTtcclxuICAgIHRoaXMuaW5pdFJlc2l6ZShldmVudCwgZGlyZWN0aW9uKTtcclxuXHJcbiAgICBjb25zdCBtb3VzZXVwID0gZnJvbUV2ZW50KHRoaXMuZG9jdW1lbnQsIHVwRXZlbnQpO1xyXG4gICAgdGhpcy5tb3VzZVVwU3ViID0gbW91c2V1cC5zdWJzY3JpYmUoKGV2KSA9PiB7XHJcbiAgICAgIHRoaXMubW91c2V1cChldiBhcyBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk7XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IG1vdXNlTW92ZVN1YiA9IGZyb21FdmVudChkb2N1bWVudCwgbW92ZUV2ZW50KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwobW91c2V1cCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2KSA9PiB0aGlzLm1vdmUoZXYgYXMgTW91c2VFdmVudCB8IFRvdWNoRXZlbnQsIGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQsIG9mZnNldFRvcCwgb2Zmc2V0TGVmdCwgc2NyZWVuWCwgc2NyZWVuWSkpO1xyXG5cclxuICAgIHRoaXMubW91c2VVcFN1Yi5hZGQobW91c2VNb3ZlU3ViKTtcclxuICB9XHJcblxyXG4gIHNldE1hcENsYXNzKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZSwgWFJlc2l6YWJsZVByZWZpeCk7XHJcbiAgfVxyXG5cclxuICBzZXRQb3NpdGlvbigpIHtcclxuICAgIGlmICghdGhpcy54UmVzaXphYmxlKSByZXR1cm47XHJcbiAgICBsZXQgcG9zaXRpb25zOiBYUmVzaXphYmxlUG9zaXRpb25bXSA9IFtdO1xyXG4gICAgaWYgKFhJc1N0cmluZyh0aGlzLnBvc2l0aW9uKSkge1xyXG4gICAgICBwb3NpdGlvbnMucHVzaCh0aGlzLnBvc2l0aW9uIGFzIFhSZXNpemFibGVQb3NpdGlvbik7XHJcbiAgICB9IGVsc2UgaWYgKFhJc0FycmF5KHRoaXMucG9zaXRpb24pKSB7XHJcbiAgICAgIHBvc2l0aW9ucyA9IHRoaXMucG9zaXRpb24gYXMgWFJlc2l6YWJsZVBvc2l0aW9uW107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHBvc2l0aW9ucy5pbmNsdWRlcygnYWxsJykpIHtcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSB0aGlzLmFsbFBvc2l0aW9ucztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucG9zaXRpb25zID0gcG9zaXRpb25zO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jcmVhdGVOb2RlKC4uLnRoaXMucG9zaXRpb25zKTtcclxuXHJcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5lbGUpO1xyXG4gICAgdGhpcy5taW5XaWR0aCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5taW5XaWR0aCk7XHJcbiAgICB0aGlzLm1heFdpZHRoID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLm1heFdpZHRoKTtcclxuICAgIHRoaXMubWluSGVpZ2h0ID0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlLm1pbkhlaWdodCk7XHJcbiAgICB0aGlzLm1heEhlaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5tYXhIZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZhdGluZ05vZGVzKGRpcmVjdGlvbjogWFJlc2l6YWJsZVBvc2l0aW9uKSB7XHJcbiAgICBpZiAoIXRoaXMucG9zaXRpb25zLmluY2x1ZGVzKGRpcmVjdGlvbikpIHJldHVybjtcclxuICAgIGNvbnN0IGFkZEFjdGl2YXRpbmdOb2RlID0gKC4uLmRpcmVjdGlvbjogWFJlc2l6YWJsZVBvc2l0aW9uW10pID0+IHtcclxuICAgICAgZm9yIChsZXQgaXRlbSBvZiBkaXJlY3Rpb24pIHtcclxuICAgICAgICBjb25zdCBuZCA9IHRoaXMucG9zaXRpb25Ob2Rlc1tpdGVtXTtcclxuICAgICAgICBjb25zdCBpc05kID0gdGhpcy5hY3RpdmF0aW5nTm9kZXMuaW5jbHVkZXMobmQpO1xyXG4gICAgICAgIGlmICghbmQgfHwgaXNOZCkgY29udGludWU7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhuZCwgJ3gtcmVzaXphYmxlLWFjdGl2YXRpbmcnKTtcclxuICAgICAgICB0aGlzLmFjdGl2YXRpbmdOb2Rlcy5wdXNoKG5kKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGlmICh0aGlzLmNvcm5lclBvc2l0aW9ucy5pbmNsdWRlcyhkaXJlY3Rpb24pKSB7XHJcbiAgICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgY2FzZSAnYm90dG9tLWVuZCc6XHJcbiAgICAgICAgICBhZGRBY3RpdmF0aW5nTm9kZSgnYm90dG9tJywgJ3JpZ2h0Jyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd0b3AtZW5kJzpcclxuICAgICAgICAgIGFkZEFjdGl2YXRpbmdOb2RlKCd0b3AnLCAncmlnaHQnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2JvdHRvbS1zdGFydCc6XHJcbiAgICAgICAgICBhZGRBY3RpdmF0aW5nTm9kZSgnYm90dG9tJywgJ2xlZnQnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3RvcC1zdGFydCc6XHJcbiAgICAgICAgICBhZGRBY3RpdmF0aW5nTm9kZSgndG9wJywgJ2xlZnQnKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhZGRBY3RpdmF0aW5nTm9kZShkaXJlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlTm9kZSguLi5jbGFzc2VzOiBYUmVzaXphYmxlUG9zaXRpb25bXSkge1xyXG4gICAgZm9yIChsZXQgY2xhIG9mIGNsYXNzZXMpIHtcclxuICAgICAgY29uc3QgcG9zID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhwb3MsIGB4LXJlc2l6YWJsZS0ke2NsYX1gKTtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsZSwgcG9zKTtcclxuICAgICAgdGhpcy5wb3NpdGlvbk5vZGVzW2NsYV0gPSBwb3M7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0UmVzaXplKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgZGlyZWN0aW9uOiBYUmVzaXphYmxlUG9zaXRpb24pIHtcclxuICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZSwgYHgtcmVzaXphYmxlLXJlc2l6aW5nYCk7XHJcbiAgICBsZXQgeyBjbGllbnRXaWR0aCwgY2xpZW50SGVpZ2h0LCBvZmZzZXRMZWZ0LCBvZmZzZXRUb3AgfSA9IHRoaXMuZWxlO1xyXG4gICAgdGhpcy5uZXdCb3ggPSB7IGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQsIG9mZnNldExlZnQsIG9mZnNldFRvcCB9O1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnJlc2l6ZUJlZ2luLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIG1vdXNldXAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XHJcbiAgICB0aGlzLmVuZFJlc2l6ZShldmVudCk7XHJcbiAgICB0aGlzLmRlc3Ryb3lTdWJzY3JpcHRpb24oKTtcclxuICB9XHJcblxyXG4gIGVuZFJlc2l6ZShldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcclxuICAgIGNvbnN0IGV2dCA9IGV2ZW50LnR5cGUuc3RhcnRzV2l0aCgndG91Y2gnKSA/IChldmVudCBhcyBUb3VjaEV2ZW50KS50YXJnZXRUb3VjaGVzWzBdIDogKGV2ZW50IGFzIE1vdXNlRXZlbnQpO1xyXG4gICAgdGhpcy5kaXJlY3Rpb24gPSBudWxsO1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmVsZSwgYHgtcmVzaXphYmxlLXJlc2l6aW5nYCk7XHJcbiAgICBmb3IgKGNvbnN0IG5vZGUgb2YgdGhpcy5hY3RpdmF0aW5nTm9kZXMpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhub2RlLCAneC1yZXNpemFibGUtYWN0aXZhdGluZycpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5hY3RpdmF0aW5nTm9kZXMgPSBbXTtcclxuICAgIHRoaXMucmVzaXplRW5kLmVtaXQoeyBldmVudDogZXZ0LCAuLi50aGlzLm5ld0JveCB9KTtcclxuICB9XHJcblxyXG4gIG1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgdG9wOiBudW1iZXIsIGxlZnQ6IG51bWJlciwgc2NyZWVuWDogbnVtYmVyLCBzY3JlZW5ZOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGV2dCA9IGV2ZW50LnR5cGUuc3RhcnRzV2l0aCgndG91Y2gnKSA/IChldmVudCBhcyBUb3VjaEV2ZW50KS50YXJnZXRUb3VjaGVzWzBdIDogKGV2ZW50IGFzIE1vdXNlRXZlbnQpO1xyXG4gICAgY29uc3QgbW92ZW1lbnRYID0gZXZ0LnNjcmVlblggLSBzY3JlZW5YO1xyXG4gICAgY29uc3QgbW92ZW1lbnRZID0gZXZ0LnNjcmVlblkgLSBzY3JlZW5ZO1xyXG5cclxuICAgIHRoaXMubmV3Qm94ID0ge1xyXG4gICAgICBjbGllbnRXaWR0aDogd2lkdGggLSAoWydib3R0b20tc3RhcnQnLCAnbGVmdCcsICd0b3Atc3RhcnQnXS5pbmNsdWRlcyh0aGlzLmRpcmVjdGlvbiBhcyBzdHJpbmcpID8gbW92ZW1lbnRYIDogLW1vdmVtZW50WCksXHJcbiAgICAgIGNsaWVudEhlaWdodDogaGVpZ2h0IC0gKFsndG9wLXN0YXJ0JywgJ3RvcCcsICd0b3AtZW5kJ10uaW5jbHVkZXModGhpcy5kaXJlY3Rpb24gYXMgc3RyaW5nKSA/IG1vdmVtZW50WSA6IC1tb3ZlbWVudFkpLFxyXG4gICAgICBvZmZzZXRMZWZ0OiBsZWZ0ICsgbW92ZW1lbnRYLFxyXG4gICAgICBvZmZzZXRUb3A6IHRvcCArIG1vdmVtZW50WVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBib3ggPSB7XHJcbiAgICAgIC4uLnRoaXMubmV3Qm94LFxyXG4gICAgICBvZmZzZXRMZWZ0OiB0aGlzLm5ld0JveC5vZmZzZXRMZWZ0IC0gTnVtYmVyKHRoaXMub2Zmc2V0TGVmdCksXHJcbiAgICAgIG9mZnNldFRvcDogdGhpcy5uZXdCb3gub2Zmc2V0VG9wIC0gTnVtYmVyKHRoaXMub2Zmc2V0VG9wKVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnJlc2l6ZVdpZHRoKGJveCk7XHJcbiAgICB0aGlzLnJlc2l6ZUhlaWdodChib3gpO1xyXG5cclxuICAgIHRoaXMucmVzaXppbmcuZW1pdCh7IC4uLnRoaXMubmV3Qm94LCBldmVudDogZXZ0IH0pO1xyXG4gIH1cclxuXHJcbiAgcmVzaXplV2lkdGgoYm94OiB7IGNsaWVudFdpZHRoOiBudW1iZXI7IGNsaWVudEhlaWdodDogbnVtYmVyOyBvZmZzZXRMZWZ0OiBudW1iZXI7IG9mZnNldFRvcDogbnVtYmVyIH0pOiB2b2lkIHtcclxuICAgIGNvbnN0IG92ZXJNaW5XaWR0aCA9ICF0aGlzLm1pbldpZHRoIHx8IGJveC5jbGllbnRXaWR0aCA+PSB0aGlzLm1pbldpZHRoO1xyXG4gICAgY29uc3QgdW5kZXJNYXhXaWR0aCA9ICF0aGlzLm1heFdpZHRoIHx8IGJveC5jbGllbnRXaWR0aCA8PSB0aGlzLm1heFdpZHRoO1xyXG5cclxuICAgIGlmIChbJ2JvdHRvbS1lbmQnLCAncmlnaHQnLCAndG9wLWVuZCddLmluY2x1ZGVzKHRoaXMuZGlyZWN0aW9uIGFzIHN0cmluZykpIHtcclxuICAgICAgaWYgKG92ZXJNaW5XaWR0aCAmJiB1bmRlck1heFdpZHRoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdob3N0KSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnd2lkdGgnLCBgJHtib3guY2xpZW50V2lkdGh9cHhgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChbJ2JvdHRvbS1zdGFydCcsICdsZWZ0JywgJ3RvcC1zdGFydCddLmluY2x1ZGVzKHRoaXMuZGlyZWN0aW9uIGFzIHN0cmluZykpIHtcclxuICAgICAgaWYgKG92ZXJNaW5XaWR0aCAmJiB1bmRlck1heFdpZHRoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmdob3N0KSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnbGVmdCcsIGAke2JveC5vZmZzZXRMZWZ0fXB4YCk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnd2lkdGgnLCBgJHtib3guY2xpZW50V2lkdGh9cHhgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2l6ZUhlaWdodChib3g6IHsgY2xpZW50V2lkdGg6IG51bWJlcjsgY2xpZW50SGVpZ2h0OiBudW1iZXI7IG9mZnNldExlZnQ6IG51bWJlcjsgb2Zmc2V0VG9wOiBudW1iZXIgfSk6IHZvaWQge1xyXG4gICAgY29uc3Qgb3Zlck1pbkhlaWdodCA9ICF0aGlzLm1pbkhlaWdodCB8fCBib3guY2xpZW50SGVpZ2h0ID49IHRoaXMubWluSGVpZ2h0O1xyXG4gICAgY29uc3QgdW5kZXJNYXhIZWlnaHQgPSAhdGhpcy5tYXhIZWlnaHQgfHwgYm94LmNsaWVudEhlaWdodCA8PSB0aGlzLm1heEhlaWdodDtcclxuICAgIGlmIChbJ2JvdHRvbS1lbmQnLCAnYm90dG9tJywgJ2JvdHRvbS1zdGFydCddLmluY2x1ZGVzKHRoaXMuZGlyZWN0aW9uIGFzIHN0cmluZykpIHtcclxuICAgICAgaWYgKG92ZXJNaW5IZWlnaHQgJiYgdW5kZXJNYXhIZWlnaHQpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZ2hvc3QpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGUsICdoZWlnaHQnLCBgJHtib3guY2xpZW50SGVpZ2h0fXB4YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFsndG9wLXN0YXJ0JywgJ3RvcCcsICd0b3AtZW5kJ10uaW5jbHVkZXModGhpcy5kaXJlY3Rpb24gYXMgc3RyaW5nKSkge1xyXG4gICAgICBpZiAob3Zlck1pbkhlaWdodCAmJiB1bmRlck1heEhlaWdodCkge1xyXG4gICAgICAgIGlmICghdGhpcy5naG9zdCkge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZSwgJ3RvcCcsIGAke2JveC5vZmZzZXRUb3B9cHhgKTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGUsICdoZWlnaHQnLCBgJHtib3guY2xpZW50SGVpZ2h0fXB4YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRlc3Ryb3lTdWJzY3JpcHRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5tb3VzZVVwU3ViKSB7XHJcbiAgICAgIHRoaXMubW91c2VVcFN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB0aGlzLm1vdXNlVXBTdWIgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXphYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9uZy1uZXN0L3VpL3Jlc2l6YWJsZS9yZXNpemFibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxTQUFTLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQXNCLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBR2hHLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxrQkFBa0I7SUFvQnpELFlBQW9CLFFBQW1CLEVBQVUsVUFBc0IsRUFBb0IsR0FBUTtRQUNqRyxLQUFLLEVBQUUsQ0FBQztRQURVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBakJ2RSxvQkFBZSxHQUF5QixDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQy9GLGlCQUFZLEdBQXlCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pHLGNBQVMsR0FBeUIsRUFBRSxDQUFDO1FBRXJDLFdBQU0sR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQVExRSxrQkFBYSxHQUFtQyxF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QVE7Z0JBQ1gsSUFBSSxhQUFhLElBQUksY0FBYyxFQUFFO29CQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO2lCQUNyRTtnQkFDRCxNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQzs7c0pBOVFVLG1CQUFtQixxRUFvQm1ELFFBQVE7MElBcEI5RSxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEL0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUU7OzBCQXFCcUMsTUFBTTsyQkFBQyxRQUFROzRDQXlCekYsU0FBUztzQkFGUixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQ3BDLFlBQVk7dUJBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFhJc0FycmF5LCBYSXNDaGFuZ2UsIFhJc1N0cmluZyB9IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YnNjcmlwdGlvbiwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFhSZXNpemFibGVQb3NpdGlvbiwgWFJlc2l6YWJsZVByZWZpeCwgWFJlc2l6YWJsZVByb3BlcnR5IH0gZnJvbSAnLi9yZXNpemFibGUucHJvcGVydHknO1xyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3hSZXNpemFibGVdJyB9KVxyXG5leHBvcnQgY2xhc3MgWFJlc2l6YWJsZURpcmVjdGl2ZSBleHRlbmRzIFhSZXNpemFibGVQcm9wZXJ0eSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBkb2N1bWVudCE6IERvY3VtZW50O1xyXG4gIGVsZSE6IEhUTUxFbGVtZW50O1xyXG4gIGNvcm5lclBvc2l0aW9uczogWFJlc2l6YWJsZVBvc2l0aW9uW10gPSBbJ3RvcC1zdGFydCcsICd0b3AtZW5kJywgJ2JvdHRvbS1zdGFydCcsICdib3R0b20tZW5kJ107XHJcbiAgYWxsUG9zaXRpb25zOiBYUmVzaXphYmxlUG9zaXRpb25bXSA9IFsnbGVmdCcsICdyaWdodCcsICd0b3AnLCAnYm90dG9tJywgLi4udGhpcy5jb3JuZXJQb3NpdGlvbnNdO1xyXG4gIHBvc2l0aW9uczogWFJlc2l6YWJsZVBvc2l0aW9uW10gPSBbXTtcclxuICBkaXJlY3Rpb24/OiBYUmVzaXphYmxlUG9zaXRpb24gfCBudWxsO1xyXG4gIG5ld0JveCA9IHsgY2xpZW50V2lkdGg6IDAsIGNsaWVudEhlaWdodDogMCwgb2Zmc2V0TGVmdDogMCwgb2Zmc2V0VG9wOiAwIH07XHJcbiAgbW91c2VVcFN1Yj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgbWluV2lkdGg/OiBudW1iZXI7XHJcbiAgbWF4V2lkdGg/OiBudW1iZXI7XHJcbiAgbWluSGVpZ2h0PzogbnVtYmVyO1xyXG4gIG1heEhlaWdodD86IG51bWJlcjtcclxuXHJcbiAgcG9zaXRpb25Ob2RlczogeyBba2V5OiBzdHJpbmddOiBIVE1MRWxlbWVudCB9ID0ge307XHJcbiAgYWN0aXZhdGluZ05vZGVzOiBIVE1MRWxlbWVudFtdID0gW107XHJcblxyXG4gIGZpcnN0TG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIEBJbmplY3QoRE9DVU1FTlQpIGRvYzogYW55KSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgdGhpcy5kb2N1bWVudCA9IGRvYztcclxuICAgIHRoaXMuZWxlID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2V0TWFwQ2xhc3MoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc2V0UG9zaXRpb24oKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95U3Vic2NyaXB0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBjb25zdCB7IHhSZXNpemFibGUgfSA9IGNoYW5nZXM7XHJcbiAgICBYSXNDaGFuZ2UoeFJlc2l6YWJsZSkgJiYgdGhpcy5zZXRQb3NpdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcclxuICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSlcclxuICBtb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMueFJlc2l6YWJsZSkgcmV0dXJuO1xyXG4gICAgY29uc3QgY2xhc3NMaXN0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0O1xyXG4gICAgbGV0IGRpcmVjdGlvbjogWFJlc2l6YWJsZVBvc2l0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgICBmb3IgKGxldCBwb3Mgb2YgdGhpcy5hbGxQb3NpdGlvbnMpIHtcclxuICAgICAgaWYgKGNsYXNzTGlzdC5jb250YWlucyhgeC1yZXNpemFibGUtJHtwb3N9YCkpIHtcclxuICAgICAgICBkaXJlY3Rpb24gPSBwb3M7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghZGlyZWN0aW9uKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgZXZ0ID0gZXZlbnQudHlwZS5zdGFydHNXaXRoKCd0b3VjaCcpID8gKGV2ZW50IGFzIFRvdWNoRXZlbnQpLnRhcmdldFRvdWNoZXNbMF0gOiAoZXZlbnQgYXMgTW91c2VFdmVudCk7XHJcbiAgICBjb25zdCB7IGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQsIG9mZnNldExlZnQsIG9mZnNldFRvcCB9ID0gdGhpcy5lbGU7XHJcbiAgICBjb25zdCB7IHNjcmVlblgsIHNjcmVlblkgfSA9IGV2dDtcclxuICAgIGNvbnN0IGlzVG91Y2hFdmVudCA9IGV2ZW50LnR5cGUuc3RhcnRzV2l0aCgndG91Y2gnKTtcclxuICAgIGNvbnN0IG1vdmVFdmVudCA9IGlzVG91Y2hFdmVudCA/ICd0b3VjaG1vdmUnIDogJ21vdXNlbW92ZSc7XHJcbiAgICBjb25zdCB1cEV2ZW50ID0gaXNUb3VjaEV2ZW50ID8gJ3RvdWNoZW5kJyA6ICdtb3VzZXVwJztcclxuXHJcbiAgICB0aGlzLnNldEFjdGl2YXRpbmdOb2RlcyhkaXJlY3Rpb24pO1xyXG4gICAgdGhpcy5pbml0UmVzaXplKGV2ZW50LCBkaXJlY3Rpb24pO1xyXG5cclxuICAgIGNvbnN0IG1vdXNldXAgPSBmcm9tRXZlbnQodGhpcy5kb2N1bWVudCwgdXBFdmVudCk7XHJcbiAgICB0aGlzLm1vdXNlVXBTdWIgPSBtb3VzZXVwLnN1YnNjcmliZSgoZXYpID0+IHtcclxuICAgICAgdGhpcy5tb3VzZXVwKGV2IGFzIE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgbW91c2VNb3ZlU3ViID0gZnJvbUV2ZW50KGRvY3VtZW50LCBtb3ZlRXZlbnQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbChtb3VzZXVwKSlcclxuICAgICAgLnN1YnNjcmliZSgoZXYpID0+IHRoaXMubW92ZShldiBhcyBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgY2xpZW50V2lkdGgsIGNsaWVudEhlaWdodCwgb2Zmc2V0VG9wLCBvZmZzZXRMZWZ0LCBzY3JlZW5YLCBzY3JlZW5ZKSk7XHJcblxyXG4gICAgdGhpcy5tb3VzZVVwU3ViLmFkZChtb3VzZU1vdmVTdWIpO1xyXG4gIH1cclxuXHJcbiAgc2V0TWFwQ2xhc3MoKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlLCBYUmVzaXphYmxlUHJlZml4KTtcclxuICB9XHJcblxyXG4gIHNldFBvc2l0aW9uKCkge1xyXG4gICAgaWYgKCF0aGlzLnhSZXNpemFibGUgJiYgIXRoaXMuZmlyc3RMb2FkZWQpIHJldHVybjtcclxuICAgIGxldCBwb3NpdGlvbnM6IFhSZXNpemFibGVQb3NpdGlvbltdID0gW107XHJcbiAgICBpZiAoWElzU3RyaW5nKHRoaXMucG9zaXRpb24pKSB7XHJcbiAgICAgIHBvc2l0aW9ucy5wdXNoKHRoaXMucG9zaXRpb24gYXMgWFJlc2l6YWJsZVBvc2l0aW9uKTtcclxuICAgIH0gZWxzZSBpZiAoWElzQXJyYXkodGhpcy5wb3NpdGlvbikpIHtcclxuICAgICAgcG9zaXRpb25zID0gdGhpcy5wb3NpdGlvbiBhcyBYUmVzaXphYmxlUG9zaXRpb25bXTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocG9zaXRpb25zLmluY2x1ZGVzKCdhbGwnKSkge1xyXG4gICAgICB0aGlzLnBvc2l0aW9ucyA9IHRoaXMuYWxsUG9zaXRpb25zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wb3NpdGlvbnMgPSBwb3NpdGlvbnM7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNyZWF0ZU5vZGUoLi4udGhpcy5wb3NpdGlvbnMpO1xyXG5cclxuICAgIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5taW5XaWR0aCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5taW5XaWR0aCk7XHJcbiAgICAgIHRoaXMubWF4V2lkdGggPSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGUubWF4V2lkdGgpO1xyXG4gICAgICB0aGlzLm1pbkhlaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5taW5IZWlnaHQpO1xyXG4gICAgICB0aGlzLm1heEhlaWdodCA9IHBhcnNlRmxvYXQoY29tcHV0ZWRTdHlsZS5tYXhIZWlnaHQpO1xyXG4gICAgICB0aGlzLmZpcnN0TG9hZGVkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEFjdGl2YXRpbmdOb2RlcyhkaXJlY3Rpb246IFhSZXNpemFibGVQb3NpdGlvbikge1xyXG4gICAgaWYgKCF0aGlzLnBvc2l0aW9ucy5pbmNsdWRlcyhkaXJlY3Rpb24pKSByZXR1cm47XHJcbiAgICBjb25zdCBhZGRBY3RpdmF0aW5nTm9kZSA9ICguLi5kaXJlY3Rpb246IFhSZXNpemFibGVQb3NpdGlvbltdKSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGl0ZW0gb2YgZGlyZWN0aW9uKSB7XHJcbiAgICAgICAgY29uc3QgbmQgPSB0aGlzLnBvc2l0aW9uTm9kZXNbaXRlbV07XHJcbiAgICAgICAgY29uc3QgaXNOZCA9IHRoaXMuYWN0aXZhdGluZ05vZGVzLmluY2x1ZGVzKG5kKTtcclxuICAgICAgICBpZiAoIW5kIHx8IGlzTmQpIGNvbnRpbnVlO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MobmQsICd4LXJlc2l6YWJsZS1hY3RpdmF0aW5nJyk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmF0aW5nTm9kZXMucHVzaChuZCk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5jb3JuZXJQb3NpdGlvbnMuaW5jbHVkZXMoZGlyZWN0aW9uKSkge1xyXG4gICAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xyXG4gICAgICAgIGNhc2UgJ2JvdHRvbS1lbmQnOlxyXG4gICAgICAgICAgYWRkQWN0aXZhdGluZ05vZGUoJ2JvdHRvbScsICdyaWdodCcpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAndG9wLWVuZCc6XHJcbiAgICAgICAgICBhZGRBY3RpdmF0aW5nTm9kZSgndG9wJywgJ3JpZ2h0Jyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdib3R0b20tc3RhcnQnOlxyXG4gICAgICAgICAgYWRkQWN0aXZhdGluZ05vZGUoJ2JvdHRvbScsICdsZWZ0Jyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd0b3Atc3RhcnQnOlxyXG4gICAgICAgICAgYWRkQWN0aXZhdGluZ05vZGUoJ3RvcCcsICdsZWZ0Jyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWRkQWN0aXZhdGluZ05vZGUoZGlyZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZU5vZGUoLi4uY2xhc3NlczogWFJlc2l6YWJsZVBvc2l0aW9uW10pIHtcclxuICAgIGZvciAobGV0IGNsYSBvZiBjbGFzc2VzKSB7XHJcbiAgICAgIGNvbnN0IHBvcyA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MocG9zLCBgeC1yZXNpemFibGUtJHtjbGF9YCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5lbGUsIHBvcyk7XHJcbiAgICAgIHRoaXMucG9zaXRpb25Ob2Rlc1tjbGFdID0gcG9zO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdFJlc2l6ZShldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQsIGRpcmVjdGlvbjogWFJlc2l6YWJsZVBvc2l0aW9uKSB7XHJcbiAgICB0aGlzLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjtcclxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGUsIGB4LXJlc2l6YWJsZS1yZXNpemluZ2ApO1xyXG4gICAgbGV0IHsgY2xpZW50V2lkdGgsIGNsaWVudEhlaWdodCwgb2Zmc2V0TGVmdCwgb2Zmc2V0VG9wIH0gPSB0aGlzLmVsZTtcclxuICAgIHRoaXMubmV3Qm94ID0geyBjbGllbnRXaWR0aCwgY2xpZW50SGVpZ2h0LCBvZmZzZXRMZWZ0LCBvZmZzZXRUb3AgfTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5yZXNpemVCZWdpbi5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBtb3VzZXVwKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkge1xyXG4gICAgdGhpcy5lbmRSZXNpemUoZXZlbnQpO1xyXG4gICAgdGhpcy5kZXN0cm95U3Vic2NyaXB0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBlbmRSZXNpemUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XHJcbiAgICBjb25zdCBldnQgPSBldmVudC50eXBlLnN0YXJ0c1dpdGgoJ3RvdWNoJykgPyAoZXZlbnQgYXMgVG91Y2hFdmVudCkudGFyZ2V0VG91Y2hlc1swXSA6IChldmVudCBhcyBNb3VzZUV2ZW50KTtcclxuICAgIHRoaXMuZGlyZWN0aW9uID0gbnVsbDtcclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbGUsIGB4LXJlc2l6YWJsZS1yZXNpemluZ2ApO1xyXG4gICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMuYWN0aXZhdGluZ05vZGVzKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3Mobm9kZSwgJ3gtcmVzaXphYmxlLWFjdGl2YXRpbmcnKTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZhdGluZ05vZGVzID0gW107XHJcbiAgICB0aGlzLnJlc2l6ZUVuZC5lbWl0KHsgZXZlbnQ6IGV2dCwgLi4udGhpcy5uZXdCb3ggfSk7XHJcbiAgfVxyXG5cclxuICBtb3ZlKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIHRvcDogbnVtYmVyLCBsZWZ0OiBudW1iZXIsIHNjcmVlblg6IG51bWJlciwgc2NyZWVuWTogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBldnQgPSBldmVudC50eXBlLnN0YXJ0c1dpdGgoJ3RvdWNoJykgPyAoZXZlbnQgYXMgVG91Y2hFdmVudCkudGFyZ2V0VG91Y2hlc1swXSA6IChldmVudCBhcyBNb3VzZUV2ZW50KTtcclxuICAgIGNvbnN0IG1vdmVtZW50WCA9IGV2dC5zY3JlZW5YIC0gc2NyZWVuWDtcclxuICAgIGNvbnN0IG1vdmVtZW50WSA9IGV2dC5zY3JlZW5ZIC0gc2NyZWVuWTtcclxuXHJcbiAgICB0aGlzLm5ld0JveCA9IHtcclxuICAgICAgY2xpZW50V2lkdGg6IHdpZHRoIC0gKFsnYm90dG9tLXN0YXJ0JywgJ2xlZnQnLCAndG9wLXN0YXJ0J10uaW5jbHVkZXModGhpcy5kaXJlY3Rpb24gYXMgc3RyaW5nKSA/IG1vdmVtZW50WCA6IC1tb3ZlbWVudFgpLFxyXG4gICAgICBjbGllbnRIZWlnaHQ6IGhlaWdodCAtIChbJ3RvcC1zdGFydCcsICd0b3AnLCAndG9wLWVuZCddLmluY2x1ZGVzKHRoaXMuZGlyZWN0aW9uIGFzIHN0cmluZykgPyBtb3ZlbWVudFkgOiAtbW92ZW1lbnRZKSxcclxuICAgICAgb2Zmc2V0TGVmdDogbGVmdCArIG1vdmVtZW50WCxcclxuICAgICAgb2Zmc2V0VG9wOiB0b3AgKyBtb3ZlbWVudFlcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgYm94ID0ge1xyXG4gICAgICAuLi50aGlzLm5ld0JveCxcclxuICAgICAgb2Zmc2V0TGVmdDogdGhpcy5uZXdCb3gub2Zmc2V0TGVmdCAtIE51bWJlcih0aGlzLm9mZnNldExlZnQpLFxyXG4gICAgICBvZmZzZXRUb3A6IHRoaXMubmV3Qm94Lm9mZnNldFRvcCAtIE51bWJlcih0aGlzLm9mZnNldFRvcClcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5yZXNpemVCb3goYm94KTtcclxuXHJcbiAgICB0aGlzLnJlc2l6aW5nLmVtaXQoeyAuLi50aGlzLm5ld0JveCwgZXZlbnQ6IGV2dCwgZGlyZWN0aW9uOiB0aGlzLmRpcmVjdGlvbiB9KTtcclxuICB9XHJcblxyXG4gIHJlc2l6ZUJveChib3g6IHsgY2xpZW50V2lkdGg6IG51bWJlcjsgY2xpZW50SGVpZ2h0OiBudW1iZXI7IG9mZnNldExlZnQ6IG51bWJlcjsgb2Zmc2V0VG9wOiBudW1iZXIgfSkge1xyXG4gICAgaWYgKHRoaXMuZ2hvc3QpIHJldHVybjtcclxuICAgIGNvbnN0IG92ZXJNaW5XaWR0aCA9ICF0aGlzLm1pbldpZHRoIHx8IGJveC5jbGllbnRXaWR0aCA+PSB0aGlzLm1pbldpZHRoO1xyXG4gICAgY29uc3QgdW5kZXJNYXhXaWR0aCA9ICF0aGlzLm1heFdpZHRoIHx8IGJveC5jbGllbnRXaWR0aCA8PSB0aGlzLm1heFdpZHRoO1xyXG4gICAgY29uc3Qgb3Zlck1pbkhlaWdodCA9ICF0aGlzLm1pbkhlaWdodCB8fCBib3guY2xpZW50SGVpZ2h0ID49IHRoaXMubWluSGVpZ2h0O1xyXG4gICAgY29uc3QgdW5kZXJNYXhIZWlnaHQgPSAhdGhpcy5tYXhIZWlnaHQgfHwgYm94LmNsaWVudEhlaWdodCA8PSB0aGlzLm1heEhlaWdodDtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuZGlyZWN0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgICBpZiAob3Zlck1pbldpZHRoICYmIHVuZGVyTWF4V2lkdGgpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGUsICd3aWR0aCcsIGAke2JveC5jbGllbnRXaWR0aH1weGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndG9wLWVuZCc6XHJcbiAgICAgICAgaWYgKG92ZXJNaW5XaWR0aCAmJiB1bmRlck1heFdpZHRoKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnd2lkdGgnLCBgJHtib3guY2xpZW50V2lkdGh9cHhgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG92ZXJNaW5IZWlnaHQgJiYgdW5kZXJNYXhIZWlnaHQpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGUsICd0b3AnLCBgJHtib3gub2Zmc2V0VG9wfXB4YCk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnaGVpZ2h0JywgYCR7Ym94LmNsaWVudEhlaWdodH1weGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnYm90dG9tLWVuZCc6XHJcbiAgICAgICAgaWYgKG92ZXJNaW5XaWR0aCAmJiB1bmRlck1heFdpZHRoKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnd2lkdGgnLCBgJHtib3guY2xpZW50V2lkdGh9cHhgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG92ZXJNaW5IZWlnaHQgJiYgdW5kZXJNYXhIZWlnaHQpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGUsICdoZWlnaHQnLCBgJHtib3guY2xpZW50SGVpZ2h0fXB4YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdib3R0b20tc3RhcnQnOlxyXG4gICAgICAgIGlmIChvdmVyTWluV2lkdGggJiYgdW5kZXJNYXhXaWR0aCkge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZSwgJ2xlZnQnLCBgJHtib3gub2Zmc2V0TGVmdH1weGApO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZSwgJ3dpZHRoJywgYCR7Ym94LmNsaWVudFdpZHRofXB4YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvdmVyTWluSGVpZ2h0ICYmIHVuZGVyTWF4SGVpZ2h0KSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnaGVpZ2h0JywgYCR7Ym94LmNsaWVudEhlaWdodH1weGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbGVmdCc6XHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy5taW5XaWR0aCk7XHJcbiAgICAgICAgaWYgKG92ZXJNaW5XaWR0aCAmJiB1bmRlck1heFdpZHRoKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnbGVmdCcsIGAke2JveC5vZmZzZXRMZWZ0fXB4YCk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnd2lkdGgnLCBgJHtib3guY2xpZW50V2lkdGh9cHhgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3RvcC1zdGFydCc6XHJcbiAgICAgICAgaWYgKG92ZXJNaW5XaWR0aCAmJiB1bmRlck1heFdpZHRoKSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnbGVmdCcsIGAke2JveC5vZmZzZXRMZWZ0fXB4YCk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnd2lkdGgnLCBgJHtib3guY2xpZW50V2lkdGh9cHhgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG92ZXJNaW5IZWlnaHQgJiYgdW5kZXJNYXhIZWlnaHQpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGUsICd0b3AnLCBgJHtib3gub2Zmc2V0VG9wfXB4YCk7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnaGVpZ2h0JywgYCR7Ym94LmNsaWVudEhlaWdodH1weGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAndG9wJzpcclxuICAgICAgICBpZiAob3Zlck1pbkhlaWdodCAmJiB1bmRlck1heEhlaWdodCkge1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmVsZSwgJ3RvcCcsIGAke2JveC5vZmZzZXRUb3B9cHhgKTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5lbGUsICdoZWlnaHQnLCBgJHtib3guY2xpZW50SGVpZ2h0fXB4YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdib3R0b20nOlxyXG4gICAgICAgIGlmIChvdmVyTWluSGVpZ2h0ICYmIHVuZGVyTWF4SGVpZ2h0KSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlLCAnaGVpZ2h0JywgYCR7Ym94LmNsaWVudEhlaWdodH1weGApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveVN1YnNjcmlwdGlvbigpIHtcclxuICAgIGlmICh0aGlzLm1vdXNlVXBTdWIpIHtcclxuICAgICAgdGhpcy5tb3VzZVVwU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgIHRoaXMubW91c2VVcFN1YiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19