ps-toolkit-ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/README.md +24 -0
  2. package/bundles/ps-toolkit-ui.umd.js +7344 -0
  3. package/bundles/ps-toolkit-ui.umd.js.map +1 -0
  4. package/bundles/ps-toolkit-ui.umd.min.js +2 -0
  5. package/bundles/ps-toolkit-ui.umd.min.js.map +1 -0
  6. package/esm2015/lib/classes/enum.class.js +162 -0
  7. package/esm2015/lib/classes/form.class.js +467 -0
  8. package/esm2015/lib/classes/helper.class.js +275 -0
  9. package/esm2015/lib/classes/lang.class.js +32 -0
  10. package/esm2015/lib/classes/login.class.js +22 -0
  11. package/esm2015/lib/classes/modal.class.js +52 -0
  12. package/esm2015/lib/classes/permission.class.js +29 -0
  13. package/esm2015/lib/classes/request.class.js +255 -0
  14. package/esm2015/lib/classes/safestyle.class.js +15 -0
  15. package/esm2015/lib/classes/sidebar.class.js +14 -0
  16. package/esm2015/lib/classes/steps.class.js +20 -0
  17. package/esm2015/lib/classes/string.class.js +203 -0
  18. package/esm2015/lib/classes/table.class.js +278 -0
  19. package/esm2015/lib/components/accordion/accordion.component.js +45 -0
  20. package/esm2015/lib/components/alert/alert.component.js +41 -0
  21. package/esm2015/lib/components/base.component.js +55 -0
  22. package/esm2015/lib/components/confirm/confirm.component.js +50 -0
  23. package/esm2015/lib/components/footer/footer.component.js +23 -0
  24. package/esm2015/lib/components/form/bank-card/form.bank-card.component.js +148 -0
  25. package/esm2015/lib/components/form/button/form.button.component.js +68 -0
  26. package/esm2015/lib/components/form/car/form.car.component.js +84 -0
  27. package/esm2015/lib/components/form/car/search/form.car.search.component.js +173 -0
  28. package/esm2015/lib/components/form/checkbox/form.checkbox.component.js +66 -0
  29. package/esm2015/lib/components/form/date/form.date.component.js +256 -0
  30. package/esm2015/lib/components/form/datetime/form.datetime.component.js +104 -0
  31. package/esm2015/lib/components/form/file/form.file.component.js +133 -0
  32. package/esm2015/lib/components/form/finger/form.finger.component.js +138 -0
  33. package/esm2015/lib/components/form/icon/form.icon.component.js +76 -0
  34. package/esm2015/lib/components/form/index/form.component.js +48 -0
  35. package/esm2015/lib/components/form/label/form.label.component.js +31 -0
  36. package/esm2015/lib/components/form/plaque/form.plaque.component.js +176 -0
  37. package/esm2015/lib/components/form/plaque/select/form.plaque.select.component.js +390 -0
  38. package/esm2015/lib/components/form/radio/form.radio.component.js +79 -0
  39. package/esm2015/lib/components/form/select/form.select.component.js +369 -0
  40. package/esm2015/lib/components/form/select/item/form.select.item.component.js +43 -0
  41. package/esm2015/lib/components/form/table/form.table.component.js +98 -0
  42. package/esm2015/lib/components/form/textarea/form.textarea.component.js +78 -0
  43. package/esm2015/lib/components/form/textbox/form.textbox.component.js +186 -0
  44. package/esm2015/lib/components/form/time/form.time.component.js +145 -0
  45. package/esm2015/lib/components/form/tree/form.tree.component.js +93 -0
  46. package/esm2015/lib/components/form/tree/item/form.tree.item.component.js +48 -0
  47. package/esm2015/lib/components/header/header.component.js +28 -0
  48. package/esm2015/lib/components/header/sub/sub.header.component.js +14 -0
  49. package/esm2015/lib/components/layout/layout.component.js +23 -0
  50. package/esm2015/lib/components/loading/loading.component.js +22 -0
  51. package/esm2015/lib/components/login/login.component.js +145 -0
  52. package/esm2015/lib/components/modal/modal.component.js +25 -0
  53. package/esm2015/lib/components/notfound/notfound.component.js +29 -0
  54. package/esm2015/lib/components/notification/notification.component.js +14 -0
  55. package/esm2015/lib/components/sidebar/item/sidebar.item.component.js +53 -0
  56. package/esm2015/lib/components/sidebar/sidebar.component.js +65 -0
  57. package/esm2015/lib/components/steps/steps.component.js +51 -0
  58. package/esm2015/lib/components/table/loading/table.loading.component.js +17 -0
  59. package/esm2015/lib/components/table/pagination/table.pagination.component.js +84 -0
  60. package/esm2015/lib/components/table/report/table.report.component.js +245 -0
  61. package/esm2015/lib/components/table/row/table.row.component.js +274 -0
  62. package/esm2015/lib/components/table/table.component.js +207 -0
  63. package/esm2015/lib/components/tooltip/tooltip.component.js +19 -0
  64. package/esm2015/lib/ps-toolkit-ui.module.js +89 -0
  65. package/esm2015/lib/services/config.service.js +14 -0
  66. package/esm2015/ps-toolkit-ui.js +16 -0
  67. package/esm2015/public-api.js +52 -0
  68. package/fesm2015/ps-toolkit-ui.js +6277 -0
  69. package/fesm2015/ps-toolkit-ui.js.map +1 -0
  70. package/lib/classes/enum.class.d.ts +137 -0
  71. package/lib/classes/form.class.d.ts +173 -0
  72. package/lib/classes/helper.class.d.ts +26 -0
  73. package/lib/classes/lang.class.d.ts +5 -0
  74. package/lib/classes/login.class.d.ts +17 -0
  75. package/lib/classes/modal.class.d.ts +19 -0
  76. package/lib/classes/permission.class.d.ts +19 -0
  77. package/lib/classes/request.class.d.ts +12 -0
  78. package/lib/classes/safestyle.class.d.ts +7 -0
  79. package/lib/classes/sidebar.class.d.ts +11 -0
  80. package/lib/classes/steps.class.d.ts +17 -0
  81. package/lib/classes/string.class.d.ts +201 -0
  82. package/lib/classes/table.class.d.ts +67 -0
  83. package/lib/components/accordion/accordion.component.d.ts +7 -0
  84. package/lib/components/alert/alert.component.d.ts +10 -0
  85. package/lib/components/base.component.d.ts +12 -0
  86. package/lib/components/confirm/confirm.component.d.ts +14 -0
  87. package/lib/components/footer/footer.component.d.ts +6 -0
  88. package/lib/components/form/bank-card/form.bank-card.component.d.ts +22 -0
  89. package/lib/components/form/button/form.button.component.d.ts +15 -0
  90. package/lib/components/form/car/form.car.component.d.ts +16 -0
  91. package/lib/components/form/car/search/form.car.search.component.d.ts +18 -0
  92. package/lib/components/form/checkbox/form.checkbox.component.d.ts +14 -0
  93. package/lib/components/form/date/form.date.component.d.ts +41 -0
  94. package/lib/components/form/datetime/form.datetime.component.d.ts +13 -0
  95. package/lib/components/form/file/form.file.component.d.ts +17 -0
  96. package/lib/components/form/finger/form.finger.component.d.ts +15 -0
  97. package/lib/components/form/icon/form.icon.component.d.ts +15 -0
  98. package/lib/components/form/index/form.component.d.ts +10 -0
  99. package/lib/components/form/label/form.label.component.d.ts +8 -0
  100. package/lib/components/form/plaque/form.plaque.component.d.ts +22 -0
  101. package/lib/components/form/plaque/select/form.plaque.select.component.d.ts +36 -0
  102. package/lib/components/form/radio/form.radio.component.d.ts +13 -0
  103. package/lib/components/form/select/form.select.component.d.ts +39 -0
  104. package/lib/components/form/select/item/form.select.item.component.d.ts +12 -0
  105. package/lib/components/form/table/form.table.component.d.ts +9 -0
  106. package/lib/components/form/textarea/form.textarea.component.d.ts +13 -0
  107. package/lib/components/form/textbox/form.textbox.component.d.ts +20 -0
  108. package/lib/components/form/time/form.time.component.d.ts +25 -0
  109. package/lib/components/form/tree/form.tree.component.d.ts +16 -0
  110. package/lib/components/form/tree/item/form.tree.item.component.d.ts +17 -0
  111. package/lib/components/header/header.component.d.ts +7 -0
  112. package/lib/components/header/sub/sub.header.component.d.ts +3 -0
  113. package/lib/components/layout/layout.component.d.ts +6 -0
  114. package/lib/components/loading/loading.component.d.ts +5 -0
  115. package/lib/components/login/login.component.d.ts +13 -0
  116. package/lib/components/modal/modal.component.d.ts +9 -0
  117. package/lib/components/notfound/notfound.component.d.ts +7 -0
  118. package/lib/components/notification/notification.component.d.ts +3 -0
  119. package/lib/components/sidebar/item/sidebar.item.component.d.ts +14 -0
  120. package/lib/components/sidebar/sidebar.component.d.ts +18 -0
  121. package/lib/components/steps/steps.component.d.ts +10 -0
  122. package/lib/components/table/loading/table.loading.component.d.ts +5 -0
  123. package/lib/components/table/pagination/table.pagination.component.d.ts +15 -0
  124. package/lib/components/table/report/table.report.component.d.ts +34 -0
  125. package/lib/components/table/row/table.row.component.d.ts +36 -0
  126. package/lib/components/table/table.component.d.ts +39 -0
  127. package/lib/components/tooltip/tooltip.component.d.ts +5 -0
  128. package/lib/ps-toolkit-ui.module.d.ts +4 -0
  129. package/lib/services/config.service.d.ts +6 -0
  130. package/package.json +22 -0
  131. package/ps-toolkit-ui.d.ts +15 -0
  132. package/ps-toolkit-ui.metadata.json +1 -0
  133. package/public-api.d.ts +48 -0
  134. package/src/assets/fonts/Vazir.eot +0 -0
  135. package/src/assets/fonts/Vazir.ttf +0 -0
  136. package/src/assets/fonts/Vazir.woff +0 -0
  137. package/src/assets/fonts/Vazir.woff2 +0 -0
  138. package/src/assets/fonts/VazirBlack.eot +0 -0
  139. package/src/assets/fonts/VazirBlack.ttf +0 -0
  140. package/src/assets/fonts/VazirBlack.woff +0 -0
  141. package/src/assets/fonts/VazirBlack.woff2 +0 -0
  142. package/src/assets/fonts/VazirBold.eot +0 -0
  143. package/src/assets/fonts/VazirBold.ttf +0 -0
  144. package/src/assets/fonts/VazirBold.woff +0 -0
  145. package/src/assets/fonts/VazirBold.woff2 +0 -0
  146. package/src/assets/fonts/VazirLight.eot +0 -0
  147. package/src/assets/fonts/VazirLight.ttf +0 -0
  148. package/src/assets/fonts/VazirLight.woff +0 -0
  149. package/src/assets/fonts/VazirLight.woff2 +0 -0
  150. package/src/assets/fonts/VazirMedium.eot +0 -0
  151. package/src/assets/fonts/VazirMedium.ttf +0 -0
  152. package/src/assets/fonts/VazirMedium.woff +0 -0
  153. package/src/assets/fonts/VazirMedium.woff2 +0 -0
  154. package/src/assets/fonts/VazirThin.eot +0 -0
  155. package/src/assets/fonts/VazirThin.ttf +0 -0
  156. package/src/assets/fonts/VazirThin.woff +0 -0
  157. package/src/assets/fonts/VazirThin.woff2 +0 -0
  158. package/src/assets/images/partsilicon.png +0 -0
  159. package/src/assets/images/plaque.png +0 -0
  160. package/src/assets/images/plaque_m.png +0 -0
  161. package/src/assets/scripts/base.js +26 -0
  162. package/src/assets/styles/base.css +259 -0
@@ -0,0 +1,84 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { InputClass, OptionClass } from '../../../classes/form.class';
3
+ import { InputType } from '../../../classes/enum.class';
4
+ export class TablePaginationComponent {
5
+ get type() { return InputType; }
6
+ getButtons() {
7
+ this.size = parseInt((this.table.count / this.table.perPage).toString(), 10) + (this.table.count % this.table.perPage > 0 ? 1 : 0);
8
+ if (this.size <= 1) {
9
+ return [];
10
+ }
11
+ const previous = new InputClass(this.table.environment, this.table.l, null, 'fad fa-angle-right', InputType.Button, 'h-25', this.table.page - 1);
12
+ previous.onClick = (btn) => this.changePage(btn);
13
+ const next = new InputClass(this.table.environment, this.table.l, null, 'fad fa-angle-left', InputType.Button, 'h-25', this.table.page + 1);
14
+ next.onClick = (btn) => this.changePage(btn);
15
+ const last = new InputClass(this.table.environment, this.table.l, this.size.toString(), null, InputType.Button, 'h-25 last', this.size);
16
+ last.onClick = (btn) => this.changePage(btn);
17
+ const first = new InputClass(this.table.environment, this.table.l, '1', null, InputType.Button, 'h-25 first', 1);
18
+ first.onClick = (btn) => this.changePage(btn);
19
+ const dots = new InputClass(this.table.environment, this.table.l, 'dots', '', InputType.Icon);
20
+ let buttons = [];
21
+ buttons.push(previous);
22
+ if (this.table.page === 1) {
23
+ previous.onClick = null;
24
+ }
25
+ if (this.size < 6) {
26
+ buttons = buttons.concat(this.add(1, this.size + 1));
27
+ }
28
+ else if (this.table.page < 4) {
29
+ buttons = buttons.concat(this.add(1, 5), [dots, last]);
30
+ }
31
+ else if (this.table.page > this.size - 3) {
32
+ buttons = buttons.concat([first, dots], this.add(this.size - 3, this.size + 1));
33
+ }
34
+ else {
35
+ buttons = buttons.concat([first, dots], this.add(this.table.page - 1, this.table.page + 2), [dots, last]);
36
+ }
37
+ buttons.push(next);
38
+ if (this.table.page === this.size) {
39
+ next.onClick = null;
40
+ }
41
+ return buttons;
42
+ }
43
+ add(s, f) {
44
+ const l = [];
45
+ for (let i = s; i < f; i++) {
46
+ const b = new InputClass(this.table.environment, this.table.l, i.toString(), null, InputType.Button, 'h-25' + (this.table.page === i ? ' active' : ' extra'), i);
47
+ b.onClick = (btn) => this.changePage(btn);
48
+ l.push(b);
49
+ }
50
+ return l;
51
+ }
52
+ changePage(btn) {
53
+ this.table.page = btn.value;
54
+ this.table.load(btn);
55
+ }
56
+ ngOnInit() {
57
+ this.perPageSelect = new InputClass(this.table.environment, this.table.l, 'PerPage', '', InputType.Select, 'h-25 w-80-p f-l');
58
+ this.perPageSelect.value = this.table.perPage.toString();
59
+ this.perPageSelect.options = [
60
+ new OptionClass('5', '5'),
61
+ new OptionClass('10', '10'),
62
+ new OptionClass('50', '50'),
63
+ new OptionClass('100', '100'),
64
+ ];
65
+ this.perPageSelect.value = this.perPageSelect.search = this.table.perPage.toString();
66
+ this.perPageSelect.displayLabel = false;
67
+ this.perPageSelect.onChange = (v) => {
68
+ this.table.page = 1;
69
+ this.table.perPage = parseInt(v.value, 10);
70
+ this.table.load();
71
+ };
72
+ }
73
+ }
74
+ TablePaginationComponent.decorators = [
75
+ { type: Component, args: [{
76
+ selector: 'lib-table-pagination',
77
+ template: "<div class=\"pagination\">\r\n <div class=\"items\">\r\n <span *ngFor=\"let btn of getButtons()\">\r\n <lib-form-button *ngIf=\"btn.type === type.Button\" [inp]=\"btn\"></lib-form-button>\r\n <div class=\"dots\" *ngIf=\"btn.type === type.Icon\"><div class=\"w-100\"><i class=\"fas fa-ellipsis-h icon\"></i></div></div>\r\n </span>\r\n </div>\r\n <lib-form-select [inp]=\"perPageSelect\"></lib-form-select>\r\n</div>\r\n",
78
+ styles: [".pagination{float:right;text-align:center;width:100%}.pagination .items{display:inline-block;position:relative}::ng-deep .table-con .pagination .form-input-con.button{display:inline-block;float:unset;margin:0 2px;min-width:25px;padding:0 5px;vertical-align:middle;width:unset}::ng-deep .table-con .pagination .items .dots{display:inline-block;height:25px;line-height:25px;margin:0 5px;min-width:25px}::ng-deep .table-con .pagination .form-input-con.select{display:inline-block;float:left;margin:0 5px;min-width:25px;padding:0 5px;width:unset}@media (max-width:399.98px){::ng-deep .table-con .pagination .form-input-con.button.extra,::ng-deep .table-con .pagination .form-input-con.button.first,::ng-deep .table-con .pagination .form-input-con.button.last{display:none}::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{display:none}}@media (min-width:400px) and (max-width:499.98px){::ng-deep .table-con .pagination .form-input-con.button.extra,::ng-deep .table-con .pagination .form-input-con.button.first,::ng-deep .table-con .pagination .form-input-con.button.last{display:none}::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{display:none}}@media (min-width:500px) and (max-width:599.98px){::ng-deep .table-con .pagination .form-input-con.button.extra{display:none}::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{font-size:10px;margin:0}}@media (min-width:600px) and (max-width:699.98px){::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{font-size:10px;margin:0}}@media (min-width:700px) and (max-width:799.98px){::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{font-size:10px;margin:0}}@media (min-width:800px) and (max-width:899.98px){::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{font-size:10px;margin:0}}@media (min-width:900px) and (max-width:999.98px){::ng-deep .table-con .pagination .form-input-con.button{margin:0 3px;padding:0 3px}::ng-deep .table-con .pagination .items .dots{font-size:10px;margin:0}}"]
79
+ },] }
80
+ ];
81
+ TablePaginationComponent.propDecorators = {
82
+ table: [{ type: Input }]
83
+ };
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUucGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiRDovUHJvamVjdHMvUHNUb29sa2l0L1VJL3Byb2plY3RzL3BzLXRvb2xraXQtdWkvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvdGFibGUvcGFnaW5hdGlvbi90YWJsZS5wYWdpbmF0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUV2RCxPQUFPLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQU90RCxNQUFNLE9BQU8sd0JBQXdCO0lBTW5DLElBQUksSUFBSSxLQUF1QixPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFbEQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFO1lBQ2xCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQ3hFLG9CQUFvQixFQUFFLFNBQVMsQ0FBQyxNQUFN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LENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQztJQUNKLENBQUM7OztZQWxGRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsa2NBQWdEOzthQUVqRDs7O29CQUVFLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VGFibGVDbGFzc30gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy90YWJsZS5jbGFzcyc7XHJcbmltcG9ydCB7SW5wdXRDbGFzcywgT3B0aW9uQ2xhc3N9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS5jbGFzcyc7XHJcbmltcG9ydCB7SW5wdXRUeXBlfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudW0uY2xhc3MnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItdGFibGUtcGFnaW5hdGlvbicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLnBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLnBhZ2luYXRpb24uY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVBhZ2luYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpXHJcbiAgdGFibGU6IFRhYmxlQ2xhc3M7XHJcbiAgc2l6ZTogbnVtYmVyO1xyXG4gIHBlclBhZ2VTZWxlY3Q6IElucHV0Q2xhc3M7XHJcbiAgbmV4dDogSW5wdXRDbGFzcztcclxuICBnZXQgdHlwZSgpOiB0eXBlb2YgSW5wdXRUeXBlIHsgcmV0dXJuIElucHV0VHlwZTsgfVxyXG5cclxuICBnZXRCdXR0b25zKCk6IElucHV0Q2xhc3NbXXtcclxuICAgIHRoaXMuc2l6ZSA9IHBhcnNlSW50KCh0aGlzLnRhYmxlLmNvdW50IC8gdGhpcy50YWJsZS5wZXJQYWdlKS50b1N0cmluZygpLCAxMCkgKyAodGhpcy50YWJsZS5jb3VudCAlIHRoaXMudGFibGUucGVyUGFnZSA+IDAgPyAxIDogMCk7XHJcbiAgICBpZiAodGhpcy5zaXplIDw9IDEpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcHJldmlvdXMgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwsIG51bGwsXHJcbiAgICAgICdmYWQgZmEtYW5nbGUtcmlnaHQnLCBJbnB1dFR5cGUuQnV0dG9uLCAnaC0yNScsIHRoaXMudGFibGUucGFnZSAtIDEpO1xyXG4gICAgcHJldmlvdXMub25DbGljayA9IChidG4pID0+IHRoaXMuY2hhbmdlUGFnZShidG4pO1xyXG4gICAgY29uc3QgbmV4dCA9IG5ldyBJbnB1dENsYXNzKHRoaXMudGFibGUuZW52aXJvbm1lbnQsIHRoaXMudGFibGUubCwgbnVsbCxcclxuICAgICAgJ2ZhZCBmYS1hbmdsZS1sZWZ0JywgSW5wdXRUeXBlLkJ1dHRvbiwgJ2gtMjUnLCB0aGlzLnRhYmxlLnBhZ2UgKyAxKTtcclxuICAgIG5leHQub25DbGljayA9IChidG4pID0+IHRoaXMuY2hhbmdlUGFnZShidG4pO1xyXG4gICAgY29uc3QgbGFzdCA9IG5ldyBJbnB1dENsYXNzKHRoaXMudGFibGUuZW52aXJvbm1lbnQsIHRoaXMudGFibGUubCwgdGhpcy5zaXplLnRvU3RyaW5nKCksIG51bGwsXHJcbiAgICAgIElucHV0VHlwZS5CdXR0b24sICdoLTI1IGxhc3QnLCB0aGlzLnNpemUpO1xyXG4gICAgbGFzdC5vbkNsaWNrID0gKGJ0bikgPT4gdGhpcy5jaGFuZ2VQYWdlKGJ0bik7XHJcbiAgICBjb25zdCBmaXJzdCA9IG5ldyBJbnB1dENsYXNzKHRoaXMudGFibGUuZW52aXJvbm1lbnQsIHRoaXMudGFibGUubCwgJzEnLCBudWxsLCBJbnB1dFR5cGUuQnV0dG9uLCAnaC0yNSBmaXJzdCcsIDEpO1xyXG4gICAgZmlyc3Qub25DbGljayA9IChidG4pID0+IHRoaXMuY2hhbmdlUGFnZShidG4pO1xyXG4gICAgY29uc3QgZG90cyA9IG5ldyBJbnB1dENsYXNzKHRoaXMudGFibGUuZW52aXJvbm1lbnQsIHRoaXMudGFibGUubCwgJ2RvdHMnLCAnJywgSW5wdXRUeXBlLkljb24pO1xyXG4gICAgbGV0IGJ1dHRvbnM6IElucHV0Q2xhc3NbXSA9IFtdO1xyXG4gICAgYnV0dG9ucy5wdXNoKHByZXZpb3VzKTtcclxuICAgIGlmICh0aGlzLnRhYmxlLnBhZ2UgPT09IDEpe1xyXG4gICAgICBwcmV2aW91cy5vbkNsaWNrID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNpemUgPCA2KSB7XHJcbiAgICAgIGJ1dHRvbnMgPSBidXR0b25zLmNvbmNhdCh0aGlzLmFkZCgxLCB0aGlzLnNpemUgKyAxKSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudGFibGUucGFnZSA8IDQpIHtcclxuICAgICAgYnV0dG9ucyA9IGJ1dHRvbnMuY29uY2F0KHRoaXMuYWRkKDEsIDUpLCBbZG90cywgbGFzdF0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlLnBhZ2UgPiB0aGlzLnNpemUgLSAzKSB7XHJcbiAgICAgIGJ1dHRvbnMgPSBidXR0b25zLmNvbmNhdChbZmlyc3QsIGRvdHNdLCB0aGlzLmFkZCh0aGlzLnNpemUgLSAzLCB0aGlzLnNpemUgKyAxKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBidXR0b25zID0gYnV0dG9ucy5jb25jYXQoW2ZpcnN0LCBkb3RzXSwgdGhpcy5hZGQodGhpcy50YWJsZS5wYWdlIC0gMSwgdGhpcy50YWJsZS5wYWdlICsgMiksIFtkb3RzLCBsYXN0XSk7XHJcbiAgICB9XHJcbiAgICBidXR0b25zLnB1c2gobmV4dCk7XHJcbiAgICBpZiAodGhpcy50YWJsZS5wYWdlID09PSB0aGlzLnNpemUpe1xyXG4gICAgICBuZXh0Lm9uQ2xpY2sgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ1dHRvbnM7XHJcbiAgfVxyXG5cclxuICBhZGQoczogbnVtYmVyLCBmOiBudW1iZXIpOiBJbnB1dENsYXNzW10ge1xyXG4gICAgY29uc3QgbDogSW5wdXRDbGFzc1tdID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gczsgaSA8IGY7IGkrKykge1xyXG4gICAgICBjb25zdCBiID0gbmV3IElucHV0Q2xhc3ModGhpcy50YWJsZS5lbnZpcm9ubWVudCwgdGhpcy50YWJsZS5sLCBpLnRvU3RyaW5nKCksXHJcbiAgICAgICAgbnVsbCwgSW5wdXRUeXBlLkJ1dHRvbiwgJ2gtMjUnICsgKHRoaXMudGFibGUucGFnZSA9PT0gaSA/ICcgYWN0aXZlJyA6ICcgZXh0cmEnKSwgaSk7XHJcbiAgICAgIGIub25DbGljayA9IChidG4pID0+IHRoaXMuY2hhbmdlUGFnZShidG4pO1xyXG4gICAgICBsLnB1c2goYik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbDtcclxuICB9XHJcbiAgY2hhbmdlUGFnZShidG4pOiB2b2lke1xyXG4gICAgdGhpcy50YWJsZS5wYWdlID0gYnRuLnZhbHVlO1xyXG4gICAgdGhpcy50YWJsZS5sb2FkKGJ0bik7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lke1xyXG4gICAgdGhpcy5wZXJQYWdlU2VsZWN0ID0gbmV3IElucHV0Q2xhc3ModGhpcy50YWJsZS5lbnZpcm9ubWVudCwgdGhpcy50YWJsZS5sLCAnUGVyUGFnZScsICcnLCBJbnB1dFR5cGUuU2VsZWN0LCAnaC0yNSB3LTgwLXAgZi1sJyk7XHJcbiAgICB0aGlzLnBlclBhZ2VTZWxlY3QudmFsdWUgPSB0aGlzLnRhYmxlLnBlclBhZ2UudG9TdHJpbmcoKTtcclxuICAgIHRoaXMucGVyUGFnZVNlbGVjdC5vcHRpb25zID0gW1xyXG4gICAgICBuZXcgT3B0aW9uQ2xhc3MoJzUnLCAnNScpLFxyXG4gICAgICBuZXcgT3B0aW9uQ2xhc3MoJzEwJywgJzEwJyksXHJcbiAgICAgIG5ldyBPcHRpb25DbGFzcygnNTAnLCAnNTAnKSxcclxuICAgICAgbmV3IE9wdGlvbkNsYXNzKCcxMDAnLCAnMTAwJyksXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wZXJQYWdlU2VsZWN0LnZhbHVlID0gdGhpcy5wZXJQYWdlU2VsZWN0LnNlYXJjaCA9IHRoaXMudGFibGUucGVyUGFnZS50b1N0cmluZygpO1xyXG4gICAgdGhpcy5wZXJQYWdlU2VsZWN0LmRpc3BsYXlMYWJlbCA9IGZhbHNlO1xyXG4gICAgdGhpcy5wZXJQYWdlU2VsZWN0Lm9uQ2hhbmdlID0gKHYpID0+IHtcclxuICAgICAgdGhpcy50YWJsZS5wYWdlID0gMTtcclxuICAgICAgdGhpcy50YWJsZS5wZXJQYWdlID0gcGFyc2VJbnQodi52YWx1ZSwgMTApO1xyXG4gICAgICB0aGlzLnRhYmxlLmxvYWQoKTtcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,245 @@
1
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
+ import * as _ from 'lodash';
3
+ import { InputType, Method, PermissionTypeEnum, TableCollType } from '../../../classes/enum.class';
4
+ import { InputClass } from '../../../classes/form.class';
5
+ import { RequestClass } from '../../../classes/request.class';
6
+ import { HelperClass } from '../../../classes/helper.class';
7
+ import { PsToolkitUiConfigService } from '../../../services/config.service';
8
+ import * as $ from 'jquery';
9
+ export class TableReportComponent {
10
+ constructor(service) {
11
+ this.service = service;
12
+ this.changeRows = new EventEmitter();
13
+ this.loadParent = new EventEmitter();
14
+ this.showChildren = null;
15
+ this.addChildren = null;
16
+ this.itemsWidth = 0;
17
+ this.children = [];
18
+ }
19
+ get type() { return InputType; }
20
+ ngOnInit() {
21
+ this.itemsWidth = this.table.cols.reduce((a, { percent }) => a + percent, 0);
22
+ this.optEdit = new InputClass(this.table.environment, this.table.l, this.table.name + 'Update', 'fad fa-pen', InputType.Icon, 'blue h-25 m-h-5 d-ib va-m f-u');
23
+ this.optDelete = new InputClass(this.table.environment, this.table.l, this.table.name + 'Delete', 'fad fa-trash', InputType.Icon, 'red h-25 m-h-5 d-ib va-m f-u');
24
+ if (this.table.hasChildren) {
25
+ if (this.table.permissions.hasAccess('Insert')) {
26
+ this.addChildren = new InputClass(this.table.environment, this.table.l, 'Add', 'fad fa-plus fa-rotate-90', InputType.Icon, 'green m-h-5 h-25 d-ib va-m f-u');
27
+ this.addChildren.onClick = () => {
28
+ this.table.form.url = this.table.url + 'Insert';
29
+ this.table.form.inputs.find(x => x.name === 'ParentId').setValue(this.row.Id, false);
30
+ this.table.form.onSuccessBase = () => {
31
+ this.table.modal.hide();
32
+ this.showChildren.type = InputType.Icon;
33
+ this.loadChildren(this.row.Id);
34
+ };
35
+ this.table.showInsertModal();
36
+ };
37
+ }
38
+ this.showChildren = new InputClass(this.table.environment, this.table.l, 'Subset', 'fad fa-angle-left f-s-22', this.row.CountChild > 0 ? InputType.Icon : InputType.Hidden, 'h-25 m-h-5 d-ib va-m f-u');
39
+ this.showChildren.onClick = () => {
40
+ if ($(this.childrenDiv.nativeElement).is(':visible')) {
41
+ $(this.childrenDiv.nativeElement).hide();
42
+ this.showChildren.icon = 'fad fa-angle-left f-s-22';
43
+ }
44
+ else if (this.children.length === 0) {
45
+ this.loadChildren(this.row.Id);
46
+ }
47
+ else {
48
+ $(this.childrenDiv.nativeElement).show();
49
+ this.showChildren.icon = 'fad fa-angle-down f-s-22';
50
+ }
51
+ };
52
+ }
53
+ if (this.table.hasStatus) {
54
+ this.optStatus = new InputClass(this.table.environment, this.table.l, 'Status', this.row.Active ? 'fa-toggle-on' : 'fa-toggle-off', InputType.Icon, 'm-h-5 h-20 ' + (this.row.Active ? 'green' : ''));
55
+ this.optStatus.row = this.row;
56
+ this.optStatus.onClick = (btn) => {
57
+ new RequestClass(this.table.l).send(this.table.url + '/Status/' + btn.row.Id, Method.Post, null, btn, (r) => {
58
+ btn.class = 'm-h-5 h-20 ' + (r ? 'green' : '');
59
+ btn.icon = r ? 'fa-toggle-on' : 'fa-toggle-off';
60
+ });
61
+ };
62
+ }
63
+ this.options = this.getOptions();
64
+ if (this.table.form) {
65
+ this.optEdit.onClick = () => {
66
+ this.table.form.url = this.table.url + 'Update/' + this.row.Id;
67
+ if (this.table.hasChildren && this.row.ParentId != null) {
68
+ this.table.form.onSuccessBase = () => {
69
+ this.table.modal.hide();
70
+ this.loadParent.emit(this.row.parent_id);
71
+ };
72
+ }
73
+ else {
74
+ this.table.form.onSuccessBase = () => {
75
+ this.table.modal.hide();
76
+ this.table.load();
77
+ };
78
+ }
79
+ this.edit();
80
+ };
81
+ }
82
+ else {
83
+ this.optEdit.url = this.table.url + '/' + this.row.Id;
84
+ }
85
+ if (this.table.sortable) {
86
+ this.setSortRow();
87
+ }
88
+ }
89
+ loadChildren(p) {
90
+ new RequestClass(this.table.l).send(this.table.url + `List?ParentId=${p}`, Method.Post, null, this.showChildren, (result) => {
91
+ this.children = result.List;
92
+ setTimeout(() => {
93
+ $(this.childrenDiv.nativeElement).slideDown();
94
+ this.showChildren.icon = 'fad fa-angle-down f-s-22';
95
+ }, 50);
96
+ });
97
+ }
98
+ select() {
99
+ this.row.selected = !this.row.selected;
100
+ }
101
+ onChangeRows(e) {
102
+ return this.changeRows.emit(e);
103
+ }
104
+ setSortRow() {
105
+ setTimeout(() => {
106
+ if (this.table.hasChildren) {
107
+ // @ts-ignore
108
+ $(this.childrenDiv.nativeElement).sortable({
109
+ axis: 'y',
110
+ handle: '> .row > .item-con > .handle-sortable',
111
+ update: () => {
112
+ const data = [];
113
+ // @ts-ignore
114
+ $(this.childrenDiv.nativeElement).sortable('toArray').forEach(x => data.push(x));
115
+ new RequestClass(this.table.l).send(this.table.url + 'Sort', Method.Post, data, null, () => {
116
+ if (this.table.onSort) {
117
+ this.table.onSort();
118
+ }
119
+ });
120
+ }
121
+ });
122
+ }
123
+ }, 500);
124
+ }
125
+ getOptions() {
126
+ return (this.addChildren !== null && (this.table.level === null || this.table.level > this.level) ? [this.addChildren] : [])
127
+ .concat(this.table.options.filter(x => x.condition == null || x.condition(this.row)).map((o) => {
128
+ const i = HelperClass.clone(o);
129
+ if (i.url) {
130
+ i.url = i.url.replace('{}', this.row.Id);
131
+ }
132
+ if (i.modal && i.modal.form) {
133
+ i.modal.form.url = i.modal.form.url.replace('{}', this.row.Id);
134
+ }
135
+ i.row = this.row;
136
+ i.class = i.class + ' m-h-5 h-25 d-ib va-m f-u';
137
+ return i;
138
+ })).concat(this.table.hasStatus ? [this.optStatus] : [])
139
+ .concat(this.table.permissions.hasAccess('Update') ? [this.optEdit] : [])
140
+ .concat(this.table.permissions.hasAccess('Delete') ? [this.optDelete] : []);
141
+ }
142
+ getCell(col) {
143
+ console.log('getCell');
144
+ const cv = _.get(this.row, col.name);
145
+ if (col.fun != null) {
146
+ return col.fun(this.row);
147
+ }
148
+ else if (col.enum !== null) {
149
+ return col.enum.get(cv);
150
+ }
151
+ else if (col.type === TableCollType.DateDif) {
152
+ return HelperClass.getDateDif(this.table.l, cv);
153
+ }
154
+ else if (col.type === TableCollType.Date) {
155
+ return HelperClass.getDate(cv);
156
+ }
157
+ else if (col.type === TableCollType.DateTime) {
158
+ return HelperClass.getDateTime(cv);
159
+ }
160
+ else if (col.type === TableCollType.Time) {
161
+ return HelperClass.getTime(cv);
162
+ }
163
+ else if (col.type === TableCollType.Url) {
164
+ return '<a target="_blank" href="' + cv + '">' + cv + '</a>';
165
+ }
166
+ else if (col.type === TableCollType.Image) {
167
+ return '<img class="h-100" alt="" src="' + this.service.environment.url + cv + '"/>';
168
+ }
169
+ else if (col.type === TableCollType.Price) {
170
+ return cv.toLocaleString() + ' ' + this.table.l('Rial');
171
+ }
172
+ else if (col.type === TableCollType.Plaque) {
173
+ const parts = cv.split('_');
174
+ if (parts.length === 4) {
175
+ return '<div class="plaque' + (parts[1] === 'ع' ? ' p' : '') + (parts[1] === 'الف' ? ' g' : '') + '">' +
176
+ '<div class="part1">' + parts[0] + '</div>' +
177
+ '<div class="part2">' + parts[1] + '</div>' +
178
+ '<div class="part3">' + parts[2] + '</div>' +
179
+ '<div class="part4">' + parts[3] + '</div>' +
180
+ '</div>';
181
+ }
182
+ else if (parts.length === 2) {
183
+ return '<div class="plaque plaque-m">' +
184
+ '<div class="part1">' + parts[0] + '</div>' +
185
+ '<div class="part2">' + parts[1] + '</div>' +
186
+ '</div>';
187
+ }
188
+ }
189
+ else if (col.type === TableCollType.PlaqueText) {
190
+ const parts = cv.split('_');
191
+ if (parts.length === 4) {
192
+ return `<div class="ltr">${parts[0]} ${parts[1]}&lrm; ${parts[2]} ${parts[3]}</div>`;
193
+ }
194
+ }
195
+ return this.table.l(cv);
196
+ }
197
+ getCol(n) {
198
+ let c = this.row;
199
+ n.split('.').forEach((x) => {
200
+ c = c[x];
201
+ });
202
+ return c;
203
+ }
204
+ edit() {
205
+ if (this.table.permissions.Type === PermissionTypeEnum.Form) {
206
+ this.table.form.name = 'Update';
207
+ this.table.form.setData(this.row);
208
+ this.table.form.setButtons(this.table.form.onTop, true, this.row.Id);
209
+ this.table.form.inputs.filter(x => x.inEditDisabled).forEach(x => x.disabled = true);
210
+ this.table.form.inputs.filter(x => !x.inEditVisible).forEach(x => x.visible = false);
211
+ }
212
+ else {
213
+ new RequestClass(this.table.environment, this.table.l).send(this.table.url + 'Get/' + this.row.Id, Method.Post, null, this.optEdit, (result) => {
214
+ this.table.form.name = 'Update';
215
+ this.table.form.setButtons(this.table.form.onTop, true, this.row.Id);
216
+ this.table.form.setData(result);
217
+ this.table.form.inputs.filter(x => x.inEditDisabled).forEach(x => x.disabled = true);
218
+ this.table.form.inputs.filter(x => !x.inEditVisible).forEach(x => x.visible = false);
219
+ if (this.table.modal) {
220
+ this.table.modal.show();
221
+ }
222
+ });
223
+ }
224
+ }
225
+ }
226
+ TableReportComponent.decorators = [
227
+ { type: Component, args: [{
228
+ selector: 'lib-table-report',
229
+ template: "<tr class=\"underline\" [id]=\"row.Id ? row.Id : ''\" [style]=\"{height: table.height + 'px', zIndex: row.RowNum }\">\r\n <td style=\"width: 50px\" *ngIf=\"table.hasChildren && (table.level === null || table.level > level)\"><lib-form-icon *ngIf=\"showChildren != null && showChildren.type === type.Icon\" [inp]=\"showChildren\"></lib-form-icon></td>\r\n <td style=\"width: 50px\" *ngIf=\"table.withSelect\"><i (click)=\"select()\" [className]=\"(row.selected ? 'fas fa-check-square green' : 'far fa-square') + ' select-row'\"></i></td>\r\n <td style=\"width: 50px\" *ngIf=\"table.sortable\"><i class=\"fad fa-grip-vertical handle-sortable\"></i></td>\r\n <td [style]=\"{width: col.percent + '%'}\" [className]=\"col.class + ' item'\" *ngFor=\"let col of table.cols\" [innerHTML]=\"getCell(col)\"></td>\r\n <td [style]=\"{width: (100 - itemsWidth) + '%'}\" class=\"t-l\" *ngIf=\"table.hasOption()\">\r\n <span *ngFor=\"let opt of getOptions()\">\r\n <lib-form-button *ngIf=\"opt.type == type.Button\" [inp]=\"opt\"></lib-form-button>\r\n <lib-form-icon *ngIf=\"opt.type == type.Icon\" [inp]=\"opt\"></lib-form-icon>\r\n </span>\r\n </td>\r\n</tr>\r\n<tr #childrenDiv *ngIf=\"table.hasChildren && (table.level === null || table.level > level)\" class=\"children rightline\">\r\n <td [colSpan]=\"table.cols.length + (table.hasChildren ? 1 : 0) + (table.hasOption() ? 1 : 0)\">\r\n <table style=\"width: 94%; margin: 15px 3% 15px 0;\">\r\n <lib-table-row (loadParent)=\"loadChildren($event)\" [level]=\"level + 1\" (changeRows)=\"onChangeRows($event)\" [id]=\"child.id ? child.id : ''\" [table]=\"table\" [row]=\"child\" *ngFor=\"let child of children\"></lib-table-row>\r\n </table>\r\n </td>\r\n</tr>\r\n",
230
+ styles: ["::ng-deep lib-table-row{display:contents}tr,tr td{position:relative}tr td{font-family:VazirLight;font-size:12px;font-weight:400;text-align:center;vertical-align:middle}tr.children{display:none}tr.children.rightline:after{right:20px}::ng-deep tr td .select-row{cursor:pointer;font-size:18px;height:30px;line-height:30px}::ng-deep tr td .handle-sortable{cursor:move}::ng-deep tr td .status{-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;border-radius:5px;cursor:default;display:inline-block;font-size:10px;padding:3px 10px;vertical-align:middle}::ng-deep tr td .status.blue{background-color:var(--blue-22);color:var(--blue)}::ng-deep tr td .status.green{background-color:var(--green-22);color:var(--green)}::ng-deep tr td .status.red{background-color:var(--red-22);color:var(--red)}::ng-deep tr td .status.gray{background-color:var(--black-22);color:var(--black)}::ng-deep tr td .status.yellow{background-color:var(--yellow-22);color:var(--yellow)}::ng-deep tr td .plaque{background-color:#fff;background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAABVCAYAAABn7bJ/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAIW2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE3IChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTktMTItMDNUMTg6NTA6NDUrMDM6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjEtMDItMTNUMTE6MTE6MzgrMDM6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDIxLTAyLTEzVDExOjExOjM4KzAzOjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk4NDVkODgwLTg4M2EtMWE0MS1hZDk3LTdmNTk5MTMzMTQ0NiIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjcwY2VlZGU4LTE1ZTAtMTFlYS05MDExLThhM2U0NjBjNjY2OCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjY4NDI0YzA3LWUwMTUtZjk0ZC04MWNkLWZmMTY4YTM4ZjA4NyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgdGlmZjpPcmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAiIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiIGV4aWY6Q29sb3JTcGFjZT0iNjU1MzUiIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSI0MDAiIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSI4NSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Njg0MjRjMDctZTAxNS1mOTRkLTgxY2QtZmYxNjhhMzhmMDg3IiBzdEV2dDp3aGVuPSIyMDE5LTEyLTAzVDE4OjUwOjQ1KzAzOjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmJiYzEwYzI2LTNlOGYtNzk0NS05YTYxLWNlZjc0Yjg5ZmIyNiIgc3RFdnQ6d2hlbj0iMjAxOS0xMi0wM1QxODo1MDo0NSswMzozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZl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\");background-position:50%;background-repeat:no-repeat;background-size:contain;border-radius:4px;float:right;font-size:14px;height:30px;margin-right:calc(50% - 70px);margin-top:5px;width:140px}::ng-deep tr td .plaque.plaque-m{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAABVCAYAAABn7bJ/AAAACXBIWXMAAAsTAAALEwEAmpwYAAANlmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDE4OjUwOjQ1KzAzOjMwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTA2LTEwVDE0OjM1OjA1KzA0OjMwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wNi0xMFQxNDozNTowNSswNDozMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpjOWI2MmM5Mi1hNmQ4LWY4NGUtYTM3OS0wZWJmZTZkOTYzNzQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkNmZhOTJjMi1mNGM1LTFjNDktYTUzMy05MmY1Mzk2MDVjNTMiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo2ODQyNGMwNy1lMDE1LWY5NGQtODFjZC1mZjE2OGEzOGYwODciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHRpZmY6T3JpZW50YXRpb249IjEiIHRpZmY6WFJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIgdGlmZjpZUmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAwIiB0aWZmOlJlc29sdXRpb25Vbml0PSIyIiBleGlmOkNvbG9yU3BhY2U9IjEiIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSI0MDAiIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSI4NSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Njg0MjRjMDctZTAxNS1mOTRkLTgxY2QtZmYxNjhhMzhmMDg3IiBzdEV2dDp3aGVuPSIyMDE5LTEyLTAzVDE4OjUwOjQ1KzAzOjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmJiYzEwYzI2LTNlOGYtNzk0NS05YTYxLWNlZjc0Yjg5ZmIyNiIgc3RFdnQ6d2hlbj0iMjAxOS0xMi0wM1QxODo1MDo0NSswMzozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpkMmY2YTViYy0yZGQ1LTlkNDEtOGYxYi02OTFkYTJlNmQzMDYiIHN0RXZ0OndoZW49IjIwMjEtMDYtMTBUMTQ6MzQ6MzgrMDQ6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4yIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGltYWdlL3BuZyB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBpbWFnZS9wbmcgdG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZGIzMTM2ZmEtN2RkZC03YTQ5LTgzNjQtYjZmYWI3ZGVlZmE5IiBzdEV2dDp3aGVuPSIyMDIxLTA2LTEwVDE0OjM0OjM4KzA0OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmM3Y2U3NTk1LWM3NDUtOTg0Yi1hMmI1LTQ1MjA4N2E0MTBkOCIgc3RFdnQ6d2hlbj0iMjAyMS0wNi0xMFQxNDozNTowNSswNDozMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjb252ZXJ0ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImRlcml2ZWQiIHN0RXZ0OnBhcmFtZXRlcnM9ImNvbnZlcnRlZCBmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpjOWI2MmM5Mi1hNmQ4LWY4NGUtYTM3OS0wZWJmZTZkOTYzNzQiIHN0RXZ0OndoZW49IjIwMjEtMDYtMTBUMTQ6MzU6MDUrMDQ6MzAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4yIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6YzdjZTc1OTUtYzc0NS05ODRiLWEyYjUtNDUyMDg3YTQxMGQ4IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NTMxYzM1ZDUtMzExNy02NzQ4LWE5OGEtYTlmOGEyYzVmMGU0IiBzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6Njg0MjRjMDctZTAxNS1mOTRkLTgxY2QtZmYxNjhhMzhmMDg3Ii8+IDxwaG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDxyZGY6QmFnPiA8cmRmOmxpPjUxNjAzQkE4NTUzMTE3NEFEOTU5RTFCMjgwNkNFMjFFPC9yZGY6bGk+IDwvcmRmOkJhZz4gPC9waG90b3Nob3A6RG9jdW1lbnRBbmNlc3RvcnM+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+D6fWAwAAOJhJREFUeAHtwQmgbmdZ2Pv/87zvWuub9nD2cM5JQhICIWEOQREBKVooor2CtThgqzJYQNSr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\")}::ng-deep tr td .plaque.p{background-color:#ffc913}::ng-deep tr td .plaque.g{background-color:#e20600}::ng-deep tr td .plaque .part1{float:left;height:30px;line-height:33px;margin-left:13px;width:32px}::ng-deep tr td .plaque.plaque-m .part1{margin-left:13px;width:42px}::ng-deep tr td .plaque .part2{float:left;height:30px;line-height:30px;width:25px}::ng-deep tr td .plaque.plaque-m .part2{line-height:33px;width:57px}::ng-deep tr td .plaque .part3{float:left;height:30px;line-height:33px;width:42px}::ng-deep tr td .plaque .part4{float:left;height:30px;width:28px}"]
231
+ },] }
232
+ ];
233
+ TableReportComponent.ctorParameters = () => [
234
+ { type: PsToolkitUiConfigService }
235
+ ];
236
+ TableReportComponent.propDecorators = {
237
+ confirmShow: [{ type: Input }],
238
+ changeRows: [{ type: Output }],
239
+ level: [{ type: Input }],
240
+ table: [{ type: Input }],
241
+ row: [{ type: Input }],
242
+ loadParent: [{ type: Output }],
243
+ childrenDiv: [{ type: ViewChild, args: ['childrenDiv',] }]
244
+ };
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUucmVwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJEOi9Qcm9qZWN0cy9Qc1Rvb2xraXQvVUkvcHJvamVjdHMvcHMtdG9vbGtpdC11aS9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90YWJsZS9yZXBvcnQvdGFibGUucmVwb3J0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQU81QixNQUFNLE9BQU8sb0JBQW9CO0lBdUIvQixZQUFtQixPQUFpQztRQUFqQyxZQUFPLEdBQVAsT0FBTyxDQUEwQjtRQW5CcEQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFReEMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFNeEMsaUJBQVksR0FBZSxJQUFJLENBQUM7UUFDaEMsZ0JBQVcsR0FBZSxJQUFJLENBQUM7UUFDL0IsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGFBQVEsR0FBVSxFQUFFLENBQUM7SUFHckIsQ0FBQztJQVhELElBQUksSUFBSSxLQUF1QixPQUFPLFNBQVMsQ0FB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QztvQkFDbkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ3pCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7OztZQWpPRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsOHREQUE0Qzs7YUFFN0M7OztZQVBPLHdCQUF3Qjs7OzBCQVM3QixLQUFLO3lCQUVMLE1BQU07b0JBRU4sS0FBSztvQkFFTCxLQUFLO2tCQUVMLEtBQUs7eUJBRUwsTUFBTTswQkFXTixTQUFTLFNBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQge1RhYmxlQ2xhc3MsIFRhYmxlQ29sbENsYXNzfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3RhYmxlLmNsYXNzJztcclxuaW1wb3J0IHtJbnB1dFR5cGUsIE1ldGhvZCwgUGVybWlzc2lvblR5cGVFbnVtLCBUYWJsZUNvbGxUeXBlfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudW0uY2xhc3MnO1xyXG5pbXBvcnQge0lucHV0Q2xhc3N9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZm9ybS5jbGFzcyc7XHJcbmltcG9ydCB7UmVxdWVzdENsYXNzfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL3JlcXVlc3QuY2xhc3MnO1xyXG5pbXBvcnQge0hlbHBlckNsYXNzfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2hlbHBlci5jbGFzcyc7XHJcbmltcG9ydCB7UHNUb29sa2l0VWlDb25maWdTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCAqIGFzICQgZnJvbSAnanF1ZXJ5JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXRhYmxlLXJlcG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLnJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUucmVwb3J0LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVSZXBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXR7XHJcbiAgQElucHV0KClcclxuICBjb25maXJtU2hvdzogYW55O1xyXG4gIEBPdXRwdXQoKVxyXG4gIGNoYW5nZVJvd3MgPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcclxuICBASW5wdXQoKVxyXG4gIGxldmVsOiBudW1iZXI7XHJcbiAgQElucHV0KClcclxuICB0YWJsZTogVGFibGVDbGFzcztcclxuICBASW5wdXQoKVxyXG4gIHJvdztcclxuICBAT3V0cHV0KClcclxuICBsb2FkUGFyZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgZ2V0IHR5cGUoKTogdHlwZW9mIElucHV0VHlwZSB7IHJldHVybiBJbnB1dFR5cGU7IH1cclxuICBvcHRpb25zOiBJbnB1dENsYXNzW107XHJcbiAgb3B0RWRpdDogSW5wdXRDbGFzcztcclxuICBvcHREZWxldGU6IElucHV0Q2xhc3M7XHJcbiAgb3B0U3RhdHVzOiBJbnB1dENsYXNzO1xyXG4gIHNob3dDaGlsZHJlbjogSW5wdXRDbGFzcyA9IG51bGw7XHJcbiAgYWRkQ2hpbGRyZW46IElucHV0Q2xhc3MgPSBudWxsO1xyXG4gIGl0ZW1zV2lkdGggPSAwO1xyXG4gIGNoaWxkcmVuOiBhbnlbXSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ2NoaWxkcmVuRGl2JykgY2hpbGRyZW5EaXY6IEVsZW1lbnRSZWY7XHJcbiAgY29uc3RydWN0b3IocHVibGljIHNlcnZpY2U6IFBzVG9vbGtpdFVpQ29uZmlnU2VydmljZSkge1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXRlbXNXaWR0aCA9IHRoaXMudGFibGUuY29scy5yZWR1Y2UoKGEsIHtwZXJjZW50fSkgPT4gYSArIHBlcmNlbnQsIDApO1xyXG4gICAgdGhpcy5vcHRFZGl0ID0gbmV3IElucHV0Q2xhc3ModGhpcy50YWJsZS5lbnZpcm9ubWVudCwgdGhpcy50YWJsZS5sLCB0aGlzLnRhYmxlLm5hbWUgKyAnVXBkYXRlJywgJ2ZhZCBmYS1wZW4nLCBJbnB1dFR5cGUuSWNvbixcclxuICAgICAgJ2JsdWUgaC0yNSBtLWgtNSBkLWliIHZhLW0gZi11Jyk7XHJcbiAgICB0aGlzLm9wdERlbGV0ZSA9IG5ldyBJbnB1dENsYXNzKHRoaXMudGFibGUuZW52aXJvbm1lbnQsIHRoaXMudGFibGUubCwgdGhpcy50YWJsZS5uYW1lICsgJ0RlbGV0ZScsICdmYWQgZmEtdHJhc2gnLCBJbnB1dFR5cGUuSWNvbixcclxuICAgICAgJ3JlZCBoLTI1IG0taC01IGQtaWIgdmEtbSBmLXUnKTtcclxuICAgIGlmICh0aGlzLnRhYmxlLmhhc0NoaWxkcmVuKXtcclxuICAgICAgaWYgKHRoaXMudGFibGUucGVybWlzc2lvbnMuaGFzQWNjZXNzKCdJbnNlcnQnKSl7XHJcbiAgICAgICAgdGhpcy5hZGRDaGlsZHJlbiA9IG5ldyBJbnB1dENsYXNzKHRoaXMudGFibGUuZW52aXJvbm1lbnQsIHRoaXMudGFibGUubCwgJ0FkZCcsICdmYWQgZmEtcGx1cyBmYS1yb3RhdGUtOTAnLCBJbnB1dFR5cGUuSWNvbixcclxuICAgICAgICAgICdncmVlbiBtLWgtNSBoLTI1IGQtaWIgdmEtbSBmLXUnKTtcclxuICAgICAgICB0aGlzLmFkZENoaWxkcmVuLm9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlLmZvcm0udXJsID0gdGhpcy50YWJsZS51cmwgKyAnSW5zZXJ0JztcclxuICAgICAgICAgIHRoaXMudGFibGUuZm9ybS5pbnB1dHMuZmluZCh4ID0+IHgubmFtZSA9PT0gJ1BhcmVudElkJykuc2V0VmFsdWUodGhpcy5yb3cuSWQsIGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMudGFibGUuZm9ybS5vblN1Y2Nlc3NCYXNlID0gKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlLm1vZGFsLmhpZGUoKTtcclxuICAgICAgICAgICAgdGhpcy5zaG93Q2hpbGRyZW4udHlwZSA9IElucHV0VHlwZS5JY29uO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRDaGlsZHJlbih0aGlzLnJvdy5JZCk7XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdGhpcy50YWJsZS5zaG93SW5zZXJ0TW9kYWwoKTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2hvd0NoaWxkcmVuID0gbmV3IElucHV0Q2xhc3ModGhpcy50YWJsZS5lbnZpcm9ubWVudCwgdGhpcy50YWJsZS5sLCAnU3Vic2V0JywgJ2ZhZCBmYS1hbmdsZS1sZWZ0IGYtcy0yMicsXHJcbiAgICAgICAgdGhpcy5yb3cuQ291bnRDaGlsZCA+IDAgPyBJbnB1dFR5cGUuSWNvbiA6IElucHV0VHlwZS5IaWRkZW4sICdoLTI1IG0taC01IGQtaWIgdmEtbSBmLXUnKTtcclxuICAgICAgdGhpcy5zaG93Q2hpbGRyZW4ub25DbGljayA9ICgpID0+IHtcclxuICAgICAgICBpZiAoJCh0aGlzLmNoaWxkcmVuRGl2Lm5hdGl2ZUVsZW1lbnQpLmlzKCc6dmlzaWJsZScpKXtcclxuICAgICAgICAgICQodGhpcy5jaGlsZHJlbkRpdi5uYXRpdmVFbGVtZW50KS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnNob3dDaGlsZHJlbi5pY29uID0gJ2ZhZCBmYS1hbmdsZS1sZWZ0IGYtcy0yMic7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCl7XHJcbiAgICAgICAgICB0aGlzLmxvYWRDaGlsZHJlbih0aGlzLnJvdy5JZCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICQodGhpcy5jaGlsZHJlbkRpdi5uYXRpdmVFbGVtZW50KS5zaG93KCk7XHJcbiAgICAgICAgICB0aGlzLnNob3dDaGlsZHJlbi5pY29uID0gJ2ZhZCBmYS1hbmdsZS1kb3duIGYtcy0yMic7XHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudGFibGUuaGFzU3RhdHVzKXtcclxuICAgICAgdGhpcy5vcHRTdGF0dXMgPSBuZXcgSW5wdXRDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwsICdTdGF0dXMnLFxyXG4gICAgICAgIHRoaXMucm93LkFjdGl2ZSA/ICdmYS10b2dnbGUtb24nIDogJ2ZhLXRvZ2dsZS1vZmYnLCBJbnB1dFR5cGUuSWNvbixcclxuICAgICAgICAnbS1oLTUgaC0yMCAnICsgKHRoaXMucm93LkFjdGl2ZSA/ICdncmVlbicgOiAnJykpO1xyXG4gICAgICB0aGlzLm9wdFN0YXR1cy5yb3cgPSB0aGlzLnJvdztcclxuICAgICAgdGhpcy5vcHRTdGF0dXMub25DbGljayA9IChidG4pID0+IHtcclxuICAgICAgICBuZXcgUmVxdWVzdENsYXNzKHRoaXMudGFibGUubCkuc2VuZCh0aGlzLnRhYmxlLnVybCArICcvU3RhdHVzLycgKyBidG4ucm93LklkLCBNZXRob2QuUG9zdCwgbnVsbCwgYnRuLCAocikgPT4ge1xyXG4gICAgICAgICAgYnRuLmNsYXNzID0gJ20taC01IGgtMjAgJyArIChyID8gJ2dyZWVuJyA6ICcnKTtcclxuICAgICAgICAgIGJ0bi5pY29uID0gciA/ICdmYS10b2dnbGUtb24nIDogJ2ZhLXRvZ2dsZS1vZmYnO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zID0gdGhpcy5nZXRPcHRpb25zKCk7XHJcbiAgICBpZiAodGhpcy50YWJsZS5mb3JtKXtcclxuICAgICAgdGhpcy5vcHRFZGl0Lm9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50YWJsZS5mb3JtLnVybCA9IHRoaXMudGFibGUudXJsICsgJ1VwZGF0ZS8nICsgdGhpcy5yb3cuSWQ7XHJcbiAgICAgICAgaWYgKHRoaXMudGFibGUuaGFzQ2hpbGRyZW4gJiYgdGhpcy5yb3cuUGFyZW50SWQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZS5mb3JtLm9uU3VjY2Vzc0Jhc2UgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUubW9kYWwuaGlkZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRQYXJlbnQuZW1pdCh0aGlzLnJvdy5wYXJlbnRfaWQpO1xyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50YWJsZS5mb3JtLm9uU3VjY2Vzc0Jhc2UgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUubW9kYWwuaGlkZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlLmxvYWQoKTtcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZWRpdCgpO1xyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcHRFZGl0LnVybCA9IHRoaXMudGFibGUudXJsICsgJy8nICsgdGhpcy5yb3cuSWQ7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YWJsZS5zb3J0YWJsZSl7XHJcbiAgICAgIHRoaXMuc2V0U29ydFJvdygpO1xyXG4gICAgfVxyXG4gIH1cclxuICBsb2FkQ2hpbGRyZW4ocCk6IHZvaWR7XHJcbiAgICBuZXcgUmVxdWVzdENsYXNzKHRoaXMudGFibGUubCkuc2VuZCh0aGlzLnRhYmxlLnVybCArIGBMaXN0P1BhcmVudElkPSR7cH1gLCBNZXRob2QuUG9zdCwgbnVsbCwgdGhpcy5zaG93Q2hpbGRyZW4sIChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5jaGlsZHJlbiA9IHJlc3VsdC5MaXN0O1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAkKHRoaXMuY2hpbGRyZW5EaXYubmF0aXZlRWxlbWVudCkuc2xpZGVEb3duKCk7XHJcbiAgICAgICAgdGhpcy5zaG93Q2hpbGRyZW4uaWNvbiA9ICdmYWQgZmEtYW5nbGUtZG93biBmLXMtMjInO1xyXG4gICAgICB9LCA1MCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2VsZWN0KCk6IHZvaWR7XHJcbiAgICB0aGlzLnJvdy5zZWxlY3RlZCA9ICF0aGlzLnJvdy5zZWxlY3RlZDtcclxuICB9XHJcbiAgb25DaGFuZ2VSb3dzKGUpOiB2b2lke1xyXG4gICAgcmV0dXJuIHRoaXMuY2hhbmdlUm93cy5lbWl0KGUpO1xyXG4gIH1cclxuICBzZXRTb3J0Um93KCk6IHZvaWR7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMudGFibGUuaGFzQ2hpbGRyZW4pIHtcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgJCh0aGlzLmNoaWxkcmVuRGl2Lm5hdGl2ZUVsZW1lbnQpLnNvcnRhYmxlKHtcclxuICAgICAgICAgIGF4aXM6ICd5JyxcclxuICAgICAgICAgIGhhbmRsZTogJz4gLnJvdyA+IC5pdGVtLWNvbiA+IC5oYW5kbGUtc29ydGFibGUnLFxyXG4gICAgICAgICAgdXBkYXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBbXTtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAkKHRoaXMuY2hpbGRyZW5EaXYubmF0aXZlRWxlbWVudCkuc29ydGFibGUoJ3RvQXJyYXknKS5mb3JFYWNoKHggPT4gZGF0YS5wdXNoKHgpKTtcclxuICAgICAgICAgICAgbmV3IFJlcXVlc3RDbGFzcyh0aGlzLnRhYmxlLmwpLnNlbmQodGhpcy50YWJsZS51cmwgKyAnU29ydCcsIE1ldGhvZC5Qb3N0LCBkYXRhLCBudWxsLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMudGFibGUub25Tb3J0KXtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGUub25Tb3J0KCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgNTAwKTtcclxuICB9XHJcbiAgZ2V0T3B0aW9ucygpOiBJbnB1dENsYXNzW117XHJcbiAgICByZXR1cm4gKHRoaXMuYWRkQ2hpbGRyZW4gIT09IG51bGwgJiYgKHRoaXMudGFibGUubGV2ZWwgPT09IG51bGwgfHwgdGhpcy50YWJsZS5sZXZlbCA+IHRoaXMubGV2ZWwpID8gW3RoaXMuYWRkQ2hpbGRyZW5dIDogW10pXHJcbiAgICAgIC5jb25jYXQodGhpcy50YWJsZS5vcHRpb25zLmZpbHRlcih4ID0+IHguY29uZGl0aW9uID09IG51bGwgfHwgeC5jb25kaXRpb24odGhpcy5yb3cpKS5tYXAoKG8pID0+IHtcclxuICAgICAgICBjb25zdCBpID0gSGVscGVyQ2xhc3MuY2xvbmUobyk7XHJcbiAgICAgICAgaWYgKGkudXJsKXtcclxuICAgICAgICAgIGkudXJsID0gaS51cmwucmVwbGFjZSgne30nLCB0aGlzLnJvdy5JZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpLm1vZGFsICYmIGkubW9kYWwuZm9ybSl7XHJcbiAgICAgICAgICBpLm1vZGFsLmZvcm0udXJsID0gaS5tb2RhbC5mb3JtLnVybC5yZXBsYWNlKCd7fScsIHRoaXMucm93LklkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaS5yb3cgPSB0aGlzLnJvdztcclxuICAgICAgICBpLmNsYXNzID0gaS5jbGFzcyArICcgbS1oLTUgaC0yNSBkLWliIHZhLW0gZi11JztcclxuICAgICAgICByZXR1cm4gaTtcclxuICAgIH0pKS5jb25jYXQodGhpcy50YWJsZS5oYXNTdGF0dXMgPyBbdGhpcy5vcHRTdGF0dXNdIDogW10pXHJcbiAgICAgICAgLmNvbmNhdCh0aGlzLnRhYmxlLnBlcm1pc3Npb25zLmhhc0FjY2VzcygnVXBkYXRlJykgPyBbdGhpcy5vcHRFZGl0XSA6IFtdKVxyXG4gICAgICAgIC5jb25jYXQodGhpcy50YWJsZS5wZXJtaXNzaW9ucy5oYXNBY2Nlc3MoJ0RlbGV0ZScpID8gW3RoaXMub3B0RGVsZXRlXSA6IFtdKTtcclxuICB9XHJcbiAgZ2V0Q2VsbChjb2w6IFRhYmxlQ29sbENsYXNzKTogYW55e1xyXG4gICAgY29uc29sZS5sb2coJ2dldENlbGwnKTtcclxuICAgIGNvbnN0IGN2ID0gXy5nZXQodGhpcy5yb3csIGNvbC5uYW1lKTtcclxuICAgIGlmIChjb2wuZnVuICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIGNvbC5mdW4odGhpcy5yb3cpO1xyXG4gICAgfSBlbHNlIGlmIChjb2wuZW51bSAhPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gY29sLmVudW0uZ2V0KGN2KTtcclxuICAgIH0gZWxzZSBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuRGF0ZURpZikge1xyXG4gICAgICByZXR1cm4gSGVscGVyQ2xhc3MuZ2V0RGF0ZURpZih0aGlzLnRhYmxlLmwsIGN2KTtcclxuICAgIH0gZWxzZSBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuRGF0ZSkge1xyXG4gICAgICByZXR1cm4gSGVscGVyQ2xhc3MuZ2V0RGF0ZShjdik7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLkRhdGVUaW1lKSB7XHJcbiAgICAgIHJldHVybiBIZWxwZXJDbGFzcy5nZXREYXRlVGltZShjdik7XHJcbiAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09PSBUYWJsZUNvbGxUeXBlLlRpbWUpIHtcclxuICAgICAgcmV0dXJuIEhlbHBlckNsYXNzLmdldFRpbWUoY3YpO1xyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5VcmwpIHtcclxuICAgICAgcmV0dXJuICc8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiJyArIGN2ICsgJ1wiPicgKyBjdiArICc8L2E+JztcclxuICAgIH0gZWxzZSBpZiAoY29sLnR5cGUgPT09IFRhYmxlQ29sbFR5cGUuSW1hZ2UpIHtcclxuICAgICAgcmV0dXJuICc8aW1nIGNsYXNzPVwiaC0xMDBcIiBhbHQ9XCJcIiBzcmM9XCInICsgdGhpcy5zZXJ2aWNlLmVudmlyb25tZW50LnVybCArIGN2ICsgJ1wiLz4nO1xyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5QcmljZSkge1xyXG4gICAgICByZXR1cm4gY3YudG9Mb2NhbGVTdHJpbmcoKSArICcgJyArIHRoaXMudGFibGUubCgnUmlhbCcpO1xyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5QbGFxdWUpIHtcclxuICAgICAgY29uc3QgcGFydHMgPSBjdi5zcGxpdCgnXycpO1xyXG4gICAgICBpZiAocGFydHMubGVuZ3RoID09PSA0KSB7XHJcbiAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPVwicGxhcXVlJyArIChwYXJ0c1sxXSA9PT0gJ9i5JyA/ICcgcCcgOiAnJykgKyAocGFydHNbMV0gPT09ICfYp9mE2YEnID8gJyBnJyA6ICcnKSArICdcIj4nICtcclxuICAgICAgICAgICc8ZGl2IGNsYXNzPVwicGFydDFcIj4nICsgcGFydHNbMF0gKyAnPC9kaXY+JyArXHJcbiAgICAgICAgICAnPGRpdiBjbGFzcz1cInBhcnQyXCI+JyArIHBhcnRzWzFdICsgJzwvZGl2PicgK1xyXG4gICAgICAgICAgJzxkaXYgY2xhc3M9XCJwYXJ0M1wiPicgKyBwYXJ0c1syXSArICc8L2Rpdj4nICtcclxuICAgICAgICAgICc8ZGl2IGNsYXNzPVwicGFydDRcIj4nICsgcGFydHNbM10gKyAnPC9kaXY+JyArXHJcbiAgICAgICAgICAnPC9kaXY+JztcclxuICAgICAgfSBlbHNlIGlmIChwYXJ0cy5sZW5ndGggPT09IDIpe1xyXG4gICAgICAgIHJldHVybiAnPGRpdiBjbGFzcz1cInBsYXF1ZSBwbGFxdWUtbVwiPicgK1xyXG4gICAgICAgICAgJzxkaXYgY2xhc3M9XCJwYXJ0MVwiPicgKyBwYXJ0c1swXSArICc8L2Rpdj4nICtcclxuICAgICAgICAgICc8ZGl2IGNsYXNzPVwicGFydDJcIj4nICsgcGFydHNbMV0gKyAnPC9kaXY+JyArXHJcbiAgICAgICAgICAnPC9kaXY+JztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PT0gVGFibGVDb2xsVHlwZS5QbGFxdWVUZXh0KSB7XHJcbiAgICAgIGNvbnN0IHBhcnRzID0gY3Yuc3BsaXQoJ18nKTtcclxuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gNCl7XHJcbiAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwibHRyXCI+JHtwYXJ0c1swXX0gJHtwYXJ0c1sxXX0mbHJtOyAke3BhcnRzWzJdfSAke3BhcnRzWzNdfTwvZGl2PmA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnRhYmxlLmwoY3YpO1xyXG4gIH1cclxuICBnZXRDb2wobik6IHN0cmluZ3tcclxuICAgIGxldCBjID0gdGhpcy5yb3c7XHJcbiAgICBuLnNwbGl0KCcuJykuZm9yRWFjaCgoeCkgPT4ge1xyXG4gICAgICBjID0gY1t4XTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGM7XHJcbiAgfVxyXG4gIGVkaXQoKTogdm9pZHtcclxuICAgIGlmICh0aGlzLnRhYmxlLnBlcm1pc3Npb25zLlR5cGUgPT09IFBlcm1pc3Npb25UeXBlRW51bS5Gb3JtKXtcclxuICAgICAgdGhpcy50YWJsZS5mb3JtLm5hbWUgPSAnVXBkYXRlJztcclxuICAgICAgdGhpcy50YWJsZS5mb3JtLnNldERhdGEodGhpcy5yb3cpO1xyXG4gICAgICB0aGlzLnRhYmxlLmZvcm0uc2V0QnV0dG9ucyh0aGlzLnRhYmxlLmZvcm0ub25Ub3AsIHRydWUsIHRoaXMucm93LklkKTtcclxuICAgICAgdGhpcy50YWJsZS5mb3JtLmlucHV0cy5maWx0ZXIoeCA9PiB4LmluRWRpdERpc2FibGVkKS5mb3JFYWNoKHggPT4geC5kaXNhYmxlZCA9IHRydWUpO1xyXG4gICAgICB0aGlzLnRhYmxlLmZvcm0uaW5wdXRzLmZpbHRlcih4ID0+ICF4LmluRWRpdFZpc2libGUpLmZvckVhY2goeCA9PiB4LnZpc2libGUgPSBmYWxzZSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgbmV3IFJlcXVlc3RDbGFzcyh0aGlzLnRhYmxlLmVudmlyb25tZW50LCB0aGlzLnRhYmxlLmwpLnNlbmQodGhpcy50YWJsZS51cmwgKyAnR2V0LycgKyB0aGlzLnJvdy5JZCwgTWV0aG9kLlBvc3QsIG51bGwsXHJcbiAgICAgICAgdGhpcy5vcHRFZGl0LCAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgdGhpcy50YWJsZS5mb3JtLm5hbWUgPSAnVXBkYXRlJztcclxuICAgICAgICB0aGlzLnRhYmxlLmZvcm0uc2V0QnV0dG9ucyh0aGlzLnRhYmxlLmZvcm0ub25Ub3AsIHRydWUsIHRoaXMucm93LklkKTtcclxuICAgICAgICB0aGlzLnRhYmxlLmZvcm0uc2V0RGF0YShyZXN1bHQpO1xyXG4gICAgICAgIHRoaXMudGFibGUuZm9ybS5pbnB1dHMuZmlsdGVyKHggPT4geC5pbkVkaXREaXNhYmxlZCkuZm9yRWFjaCh4ID0+IHguZGlzYWJsZWQgPSB0cnVlKTtcclxuICAgICAgICAgIHRoaXMudGFibGUuZm9ybS5pbnB1dHMuZmlsdGVyKHggPT4gIXguaW5FZGl0VmlzaWJsZSkuZm9yRWFjaCh4ID0+IHgudmlzaWJsZSA9IGZhbHNlKTtcclxuICAgICAgICBpZiAodGhpcy50YWJsZS5tb2RhbCl7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlLm1vZGFsLnNob3coKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=