fabrikantencore 2.4.3 → 2.4.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 (1071) hide show
  1. package/.editorconfig +16 -0
  2. package/.vscode/extensions.json +4 -0
  3. package/.vscode/launch.json +20 -0
  4. package/.vscode/tasks.json +42 -0
  5. package/angular.json +112 -0
  6. package/karma.conf.js +44 -0
  7. package/ng-package.json +6 -0
  8. package/package.json +46 -56
  9. package/public_api.ts +13 -0
  10. package/src/app/app-routing.module.ts +10 -0
  11. package/src/app/app.component.html +1 -0
  12. package/src/app/app.component.scss +8 -0
  13. package/src/app/app.component.spec.ts +35 -0
  14. package/src/app/app.component.ts +39 -0
  15. package/src/app/app.module.ts +22 -0
  16. package/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.html +52 -0
  17. package/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.scss +11 -0
  18. package/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.spec.ts +23 -0
  19. package/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.ts +58 -0
  20. package/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.html +46 -0
  21. package/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.scss +0 -0
  22. package/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.spec.ts +23 -0
  23. package/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.ts +79 -0
  24. package/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.html +33 -0
  25. package/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.scss +15 -0
  26. package/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.spec.ts +23 -0
  27. package/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.ts +42 -0
  28. package/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.html +11 -0
  29. package/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.scss +8 -0
  30. package/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.spec.ts +23 -0
  31. package/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.ts +33 -0
  32. package/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.html +73 -0
  33. package/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.scss +41 -0
  34. package/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.spec.ts +23 -0
  35. package/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.ts +147 -0
  36. package/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.html +72 -0
  37. package/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.scss +111 -0
  38. package/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.spec.ts +23 -0
  39. package/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.ts +249 -0
  40. package/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.html +54 -0
  41. package/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.scss +123 -0
  42. package/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.spec.ts +23 -0
  43. package/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.ts +139 -0
  44. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.html +12 -0
  45. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.scss +0 -0
  46. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.spec.ts +23 -0
  47. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.ts +55 -0
  48. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.html +33 -0
  49. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.scss +60 -0
  50. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.spec.ts +23 -0
  51. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.ts +99 -0
  52. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-opbouw.component.html +20 -0
  53. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-opbouw.component.scss +38 -0
  54. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-opbouw.component.spec.ts +23 -0
  55. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-opbouw.component.ts +0 -0
  56. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.html +8 -0
  57. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.scss +31 -0
  58. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.spec.ts +23 -0
  59. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.ts +33 -0
  60. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.html +92 -0
  61. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.scss +50 -0
  62. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.spec.ts +23 -0
  63. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.ts +73 -0
  64. package/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.html +42 -0
  65. package/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.scss +44 -0
  66. package/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.spec.ts +23 -0
  67. package/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.ts +43 -0
  68. package/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.css +0 -0
  69. package/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.html +1 -0
  70. package/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.spec.ts +25 -0
  71. package/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.ts +17 -0
  72. package/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.html +44 -0
  73. package/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.scss +34 -0
  74. package/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.spec.ts +23 -0
  75. package/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.ts +51 -0
  76. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.html +42 -0
  77. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.scss +41 -0
  78. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.spec.ts +23 -0
  79. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.ts +51 -0
  80. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.html +44 -0
  81. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.scss +7 -0
  82. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.spec.ts +23 -0
  83. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.ts +114 -0
  84. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.html +54 -0
  85. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.scss +52 -0
  86. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.spec.ts +23 -0
  87. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.ts +193 -0
  88. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-opbouw.component.html +16 -0
  89. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-opbouw.component.scss +51 -0
  90. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-opbouw.component.spec.ts +23 -0
  91. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-opbouw.component.ts +0 -0
  92. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.html +84 -0
  93. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.scss +51 -0
  94. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.spec.ts +23 -0
  95. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.ts +224 -0
  96. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.html +5 -0
  97. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.scss +7 -0
  98. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.spec.ts +23 -0
  99. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.ts +18 -0
  100. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.html +97 -0
  101. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.scss +11 -0
  102. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.spec.ts +23 -0
  103. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.ts +185 -0
  104. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.html +26 -0
  105. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.scss +15 -0
  106. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.spec.ts +23 -0
  107. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.ts +23 -0
  108. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.html +96 -0
  109. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.scss +89 -0
  110. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.spec.ts +23 -0
  111. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.ts +175 -0
  112. package/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.html +24 -0
  113. package/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.scss +67 -0
  114. package/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.spec.ts +23 -0
  115. package/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.ts +88 -0
  116. package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.html +45 -0
  117. package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.scss +14 -0
  118. package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.spec.ts +23 -0
  119. package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.ts +89 -0
  120. package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.html +119 -0
  121. package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.scss +69 -0
  122. package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.spec.ts +23 -0
  123. package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.ts +346 -0
  124. package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.html +57 -0
  125. package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.scss +11 -0
  126. package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.spec.ts +23 -0
  127. package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.ts +104 -0
  128. package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.html +49 -0
  129. package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.scss +3 -0
  130. package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.spec.ts +23 -0
  131. package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.ts +86 -0
  132. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.html +26 -0
  133. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.scss +8 -0
  134. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.spec.ts +23 -0
  135. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.ts +42 -0
  136. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.html +38 -0
  137. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.scss +30 -0
  138. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.spec.ts +23 -0
  139. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.ts +19 -0
  140. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.html +40 -0
  141. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.scss +30 -0
  142. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.spec.ts +23 -0
  143. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.ts +19 -0
  144. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.html +50 -0
  145. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.scss +34 -0
  146. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.spec.ts +23 -0
  147. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.ts +17 -0
  148. package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.html +142 -0
  149. package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.scss +15 -0
  150. package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.spec.ts +23 -0
  151. package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.ts +120 -0
  152. package/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.html +1 -0
  153. package/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.scss +0 -0
  154. package/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.spec.ts +23 -0
  155. package/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.ts +15 -0
  156. package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.html +343 -0
  157. package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.scss +29 -0
  158. package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.spec.ts +23 -0
  159. package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.ts +154 -0
  160. package/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.html +1 -0
  161. package/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.scss +0 -0
  162. package/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.spec.ts +23 -0
  163. package/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.ts +15 -0
  164. package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.html +64 -0
  165. package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.scss +99 -0
  166. package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.spec.ts +23 -0
  167. package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.ts +82 -0
  168. package/src/app/modules/fabrikantencore/components/fab-button/fab-button.component.html +5 -0
  169. package/src/app/modules/fabrikantencore/components/fab-button/fab-button.component.scss +89 -0
  170. package/src/app/modules/fabrikantencore/components/fab-button/fab-button.component.spec.ts +23 -0
  171. package/src/app/modules/fabrikantencore/components/fab-button/fab-button.component.ts +20 -0
  172. package/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.html +10 -0
  173. package/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.scss +16 -0
  174. package/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.spec.ts +23 -0
  175. package/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.ts +29 -0
  176. package/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.html +6 -0
  177. package/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.scss +3 -0
  178. package/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.spec.ts +23 -0
  179. package/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.ts +70 -0
  180. package/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.html +16 -0
  181. package/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.scss +38 -0
  182. package/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.spec.ts +23 -0
  183. package/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.ts +46 -0
  184. package/src/app/modules/fabrikantencore/components/fab-category-tile/no-photo.png +0 -0
  185. package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.html +41 -0
  186. package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.scss +88 -0
  187. package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.spec.ts +23 -0
  188. package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.ts +139 -0
  189. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.html +1973 -0
  190. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.scss +30 -0
  191. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.spec.ts +23 -0
  192. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.ts +316 -0
  193. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.html +10 -0
  194. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.scss +11 -0
  195. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.spec.ts +23 -0
  196. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.ts +56 -0
  197. package/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.html +20 -0
  198. package/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.scss +11 -0
  199. package/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.spec.ts +23 -0
  200. package/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.ts +56 -0
  201. package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.html +66 -0
  202. package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.scss +68 -0
  203. package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.spec.ts +23 -0
  204. package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.ts +89 -0
  205. package/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.html +75 -0
  206. package/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.scss +106 -0
  207. package/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.spec.ts +23 -0
  208. package/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.ts +140 -0
  209. package/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.html +23 -0
  210. package/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.scss +44 -0
  211. package/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.spec.ts +25 -0
  212. package/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.ts +40 -0
  213. package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.html +35 -0
  214. package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.scss +25 -0
  215. package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.spec.ts +23 -0
  216. package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.ts +50 -0
  217. package/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.html +4 -0
  218. package/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.scss +0 -0
  219. package/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.spec.ts +23 -0
  220. package/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.ts +32 -0
  221. package/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.html +1 -0
  222. package/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.scss +2143 -0
  223. package/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.spec.ts +23 -0
  224. package/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.ts +17 -0
  225. package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.html +11 -0
  226. package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.scss +24 -0
  227. package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.spec.ts +23 -0
  228. package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.ts +58 -0
  229. package/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.html +15 -0
  230. package/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.scss +16 -0
  231. package/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.spec.ts +23 -0
  232. package/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.ts +25 -0
  233. package/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.html +32 -0
  234. package/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.scss +0 -0
  235. package/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.spec.ts +23 -0
  236. package/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.ts +21 -0
  237. package/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.html +5 -0
  238. package/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.scss +8 -0
  239. package/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.spec.ts +23 -0
  240. package/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.ts +20 -0
  241. package/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.html +3 -0
  242. package/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.scss +7 -0
  243. package/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.spec.ts +23 -0
  244. package/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.ts +15 -0
  245. package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.html +9 -0
  246. package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.scss +5 -0
  247. package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.spec.ts +23 -0
  248. package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.ts +43 -0
  249. package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.html +21 -0
  250. package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.scss +61 -0
  251. package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.spec.ts +23 -0
  252. package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.ts +34 -0
  253. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.html +21 -0
  254. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.scss +65 -0
  255. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.spec.ts +23 -0
  256. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.ts +50 -0
  257. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.html +15 -0
  258. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.scss +28 -0
  259. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.spec.ts +23 -0
  260. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.ts +27 -0
  261. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.html +15 -0
  262. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.scss +20 -0
  263. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.spec.ts +23 -0
  264. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.ts +17 -0
  265. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.html +17 -0
  266. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.scss +13 -0
  267. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.spec.ts +23 -0
  268. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.ts +40 -0
  269. package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.html +77 -0
  270. package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.scss +70 -0
  271. package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.spec.ts +23 -0
  272. package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.ts +103 -0
  273. package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.html +33 -0
  274. package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.scss +64 -0
  275. package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.spec.ts +23 -0
  276. package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.ts +101 -0
  277. package/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.html +43 -0
  278. package/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.scss +63 -0
  279. package/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.spec.ts +23 -0
  280. package/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.ts +63 -0
  281. package/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.html +10 -0
  282. package/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.scss +34 -0
  283. package/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.spec.ts +23 -0
  284. package/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.ts +50 -0
  285. package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.html +13 -0
  286. package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.scss +3 -0
  287. package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.spec.ts +23 -0
  288. package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.ts +99 -0
  289. package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.html +24 -0
  290. package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.scss +59 -0
  291. package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.spec.ts +23 -0
  292. package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.ts +32 -0
  293. package/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.html +10 -0
  294. package/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.scss +13 -0
  295. package/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.spec.ts +23 -0
  296. package/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.ts +17 -0
  297. package/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.html +7 -0
  298. package/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.scss +24 -0
  299. package/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.spec.ts +23 -0
  300. package/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.ts +25 -0
  301. package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.html +23 -0
  302. package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.scss +92 -0
  303. package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.spec.ts +23 -0
  304. package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.ts +76 -0
  305. package/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.html +35 -0
  306. package/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.scss +74 -0
  307. package/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.spec.ts +23 -0
  308. package/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.ts +33 -0
  309. package/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.html +24 -0
  310. package/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.scss +74 -0
  311. package/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.spec.ts +23 -0
  312. package/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.ts +103 -0
  313. package/src/app/modules/fabrikantencore/fabrikantencore.module.spec.ts +13 -0
  314. package/src/app/modules/fabrikantencore/fabrikantencore.module.ts +317 -0
  315. package/src/app/modules/fabrikantencore/helpers/auth.guard.ts +28 -0
  316. package/src/app/modules/fabrikantencore/helpers/basic-auth.interceptor.ts +24 -0
  317. package/src/app/modules/fabrikantencore/helpers/error.interceptor.ts +24 -0
  318. package/src/app/modules/fabrikantencore/services/authentication.service.ts +55 -0
  319. package/src/app/modules/fabrikantencore/services/bestek.service.ts +109 -0
  320. package/src/app/modules/fabrikantencore/services/fabrikanten.service.ts +1306 -0
  321. package/src/app/modules/fabrikantencore/services/importsets.service.ts +164 -0
  322. package/src/app/modules/fabrikantencore/services/mobile.service.ts +57 -0
  323. package/src/app/modules/fabrikantencore/services/navigate.service.ts +40 -0
  324. package/src/app/modules/fabrikantencore/services/photo.service.ts +121 -0
  325. package/src/app/modules/fabrikantencore/services/products.service.ts +281 -0
  326. package/src/app/modules/fabrikantencore/services/projectsetting.service.ts +97 -0
  327. package/src/app/modules/fabrikantencore/services/statistics.service.ts +96 -0
  328. package/src/app/modules/fabrikantencore/services/svg.service.ts +88 -0
  329. package/src/app/modules/fabrikantencore/services/texture.service.ts +33 -0
  330. package/src/app/modules/fabrikantencore/services/toebehoren.service.ts +65 -0
  331. package/src/app/modules/fabrikantencore/services/translate.service.ts +399 -0
  332. package/src/app/modules/fabrikantencore/services/webgl.service.ts +80 -0
  333. package/src/app/modules/fabrikantencore/swagger/SwaggerClient.ts +12529 -0
  334. package/src/assets/.gitkeep +0 -0
  335. package/src/assets/bouwconnect-achtergrond.png +0 -0
  336. package/src/assets/flags/1x1/ac.svg +76 -0
  337. package/src/assets/flags/1x1/ad.svg +148 -0
  338. package/src/assets/flags/1x1/ae.svg +6 -0
  339. package/src/assets/flags/1x1/af.svg +81 -0
  340. package/src/assets/flags/1x1/ag.svg +14 -0
  341. package/src/assets/flags/1x1/ai.svg +758 -0
  342. package/src/assets/flags/1x1/al.svg +5 -0
  343. package/src/assets/flags/1x1/am.svg +5 -0
  344. package/src/assets/flags/1x1/ao.svg +13 -0
  345. package/src/assets/flags/1x1/aq.svg +5 -0
  346. package/src/assets/flags/1x1/ar.svg +32 -0
  347. package/src/assets/flags/1x1/as.svg +73 -0
  348. package/src/assets/flags/1x1/at.svg +6 -0
  349. package/src/assets/flags/1x1/au.svg +8 -0
  350. package/src/assets/flags/1x1/aw.svg +186 -0
  351. package/src/assets/flags/1x1/ax.svg +18 -0
  352. package/src/assets/flags/1x1/az.svg +8 -0
  353. package/src/assets/flags/1x1/ba.svg +12 -0
  354. package/src/assets/flags/1x1/bb.svg +6 -0
  355. package/src/assets/flags/1x1/bd.svg +4 -0
  356. package/src/assets/flags/1x1/be.svg +7 -0
  357. package/src/assets/flags/1x1/bf.svg +7 -0
  358. package/src/assets/flags/1x1/bg.svg +7 -0
  359. package/src/assets/flags/1x1/bh.svg +4 -0
  360. package/src/assets/flags/1x1/bi.svg +15 -0
  361. package/src/assets/flags/1x1/bj.svg +14 -0
  362. package/src/assets/flags/1x1/bl.svg +7 -0
  363. package/src/assets/flags/1x1/bm.svg +97 -0
  364. package/src/assets/flags/1x1/bn.svg +36 -0
  365. package/src/assets/flags/1x1/bo.svg +678 -0
  366. package/src/assets/flags/1x1/bq.svg +5 -0
  367. package/src/assets/flags/1x1/br.svg +45 -0
  368. package/src/assets/flags/1x1/bs.svg +13 -0
  369. package/src/assets/flags/1x1/bt.svg +89 -0
  370. package/src/assets/flags/1x1/bv.svg +13 -0
  371. package/src/assets/flags/1x1/bw.svg +7 -0
  372. package/src/assets/flags/1x1/by.svg +22 -0
  373. package/src/assets/flags/1x1/bz.svg +145 -0
  374. package/src/assets/flags/1x1/ca.svg +4 -0
  375. package/src/assets/flags/1x1/cc.svg +19 -0
  376. package/src/assets/flags/1x1/cd.svg +12 -0
  377. package/src/assets/flags/1x1/cefta.svg +13 -0
  378. package/src/assets/flags/1x1/cf.svg +15 -0
  379. package/src/assets/flags/1x1/cg.svg +12 -0
  380. package/src/assets/flags/1x1/ch.svg +9 -0
  381. package/src/assets/flags/1x1/ci.svg +7 -0
  382. package/src/assets/flags/1x1/ck.svg +9 -0
  383. package/src/assets/flags/1x1/cl.svg +13 -0
  384. package/src/assets/flags/1x1/cm.svg +15 -0
  385. package/src/assets/flags/1x1/cn.svg +11 -0
  386. package/src/assets/flags/1x1/co.svg +7 -0
  387. package/src/assets/flags/1x1/cp.svg +7 -0
  388. package/src/assets/flags/1x1/cr.svg +7 -0
  389. package/src/assets/flags/1x1/cu.svg +13 -0
  390. package/src/assets/flags/1x1/cv.svg +13 -0
  391. package/src/assets/flags/1x1/cw.svg +14 -0
  392. package/src/assets/flags/1x1/cx.svg +15 -0
  393. package/src/assets/flags/1x1/cy.svg +6 -0
  394. package/src/assets/flags/1x1/cz.svg +5 -0
  395. package/src/assets/flags/1x1/de.svg +5 -0
  396. package/src/assets/flags/1x1/dg.svg +129 -0
  397. package/src/assets/flags/1x1/dj.svg +13 -0
  398. package/src/assets/flags/1x1/dk.svg +5 -0
  399. package/src/assets/flags/1x1/dm.svg +152 -0
  400. package/src/assets/flags/1x1/do.svg +6745 -0
  401. package/src/assets/flags/1x1/dz.svg +5 -0
  402. package/src/assets/flags/1x1/ea.svg +547 -0
  403. package/src/assets/flags/1x1/ec.svg +138 -0
  404. package/src/assets/flags/1x1/ee.svg +7 -0
  405. package/src/assets/flags/1x1/eg.svg +38 -0
  406. package/src/assets/flags/1x1/eh.svg +11 -0
  407. package/src/assets/flags/1x1/er.svg +13 -0
  408. package/src/assets/flags/1x1/es-ct.svg +4 -0
  409. package/src/assets/flags/1x1/es-ga.svg +187 -0
  410. package/src/assets/flags/1x1/es.svg +547 -0
  411. package/src/assets/flags/1x1/et.svg +14 -0
  412. package/src/assets/flags/1x1/eu.svg +28 -0
  413. package/src/assets/flags/1x1/fi.svg +5 -0
  414. package/src/assets/flags/1x1/fj.svg +123 -0
  415. package/src/assets/flags/1x1/fk.svg +89 -0
  416. package/src/assets/flags/1x1/fm.svg +11 -0
  417. package/src/assets/flags/1x1/fo.svg +12 -0
  418. package/src/assets/flags/1x1/fr.svg +7 -0
  419. package/src/assets/flags/1x1/ga.svg +7 -0
  420. package/src/assets/flags/1x1/gb-eng.svg +5 -0
  421. package/src/assets/flags/1x1/gb-nir.svg +131 -0
  422. package/src/assets/flags/1x1/gb-sct.svg +4 -0
  423. package/src/assets/flags/1x1/gb-wls.svg +9 -0
  424. package/src/assets/flags/1x1/gb.svg +7 -0
  425. package/src/assets/flags/1x1/gd.svg +27 -0
  426. package/src/assets/flags/1x1/ge.svg +6 -0
  427. package/src/assets/flags/1x1/gf.svg +7 -0
  428. package/src/assets/flags/1x1/gg.svg +9 -0
  429. package/src/assets/flags/1x1/gh.svg +6 -0
  430. package/src/assets/flags/1x1/gi.svg +32 -0
  431. package/src/assets/flags/1x1/gl.svg +4 -0
  432. package/src/assets/flags/1x1/gm.svg +9 -0
  433. package/src/assets/flags/1x1/gn.svg +7 -0
  434. package/src/assets/flags/1x1/gp.svg +7 -0
  435. package/src/assets/flags/1x1/gq.svg +23 -0
  436. package/src/assets/flags/1x1/gr.svg +16 -0
  437. package/src/assets/flags/1x1/gs.svg +132 -0
  438. package/src/assets/flags/1x1/gt.svg +220 -0
  439. package/src/assets/flags/1x1/gu.svg +23 -0
  440. package/src/assets/flags/1x1/gw.svg +15 -0
  441. package/src/assets/flags/1x1/gy.svg +9 -0
  442. package/src/assets/flags/1x1/hk.svg +30 -0
  443. package/src/assets/flags/1x1/hm.svg +8 -0
  444. package/src/assets/flags/1x1/hn.svg +18 -0
  445. package/src/assets/flags/1x1/hr.svg +56 -0
  446. package/src/assets/flags/1x1/ht.svg +116 -0
  447. package/src/assets/flags/1x1/hu.svg +7 -0
  448. package/src/assets/flags/1x1/ic.svg +7 -0
  449. package/src/assets/flags/1x1/id.svg +4 -0
  450. package/src/assets/flags/1x1/ie.svg +7 -0
  451. package/src/assets/flags/1x1/il.svg +14 -0
  452. package/src/assets/flags/1x1/im.svg +36 -0
  453. package/src/assets/flags/1x1/in.svg +25 -0
  454. package/src/assets/flags/1x1/io.svg +129 -0
  455. package/src/assets/flags/1x1/iq.svg +10 -0
  456. package/src/assets/flags/1x1/ir.svg +219 -0
  457. package/src/assets/flags/1x1/is.svg +12 -0
  458. package/src/assets/flags/1x1/it.svg +7 -0
  459. package/src/assets/flags/1x1/je.svg +44 -0
  460. package/src/assets/flags/1x1/jm.svg +8 -0
  461. package/src/assets/flags/1x1/jo.svg +16 -0
  462. package/src/assets/flags/1x1/jp.svg +11 -0
  463. package/src/assets/flags/1x1/ke.svg +23 -0
  464. package/src/assets/flags/1x1/kg.svg +15 -0
  465. package/src/assets/flags/1x1/kh.svg +61 -0
  466. package/src/assets/flags/1x1/ki.svg +36 -0
  467. package/src/assets/flags/1x1/km.svg +16 -0
  468. package/src/assets/flags/1x1/kn.svg +14 -0
  469. package/src/assets/flags/1x1/kp.svg +15 -0
  470. package/src/assets/flags/1x1/kr.svg +17 -0
  471. package/src/assets/flags/1x1/kw.svg +13 -0
  472. package/src/assets/flags/1x1/ky.svg +109 -0
  473. package/src/assets/flags/1x1/kz.svg +23 -0
  474. package/src/assets/flags/1x1/la.svg +12 -0
  475. package/src/assets/flags/1x1/lb.svg +15 -0
  476. package/src/assets/flags/1x1/lc.svg +8 -0
  477. package/src/assets/flags/1x1/li.svg +43 -0
  478. package/src/assets/flags/1x1/lk.svg +22 -0
  479. package/src/assets/flags/1x1/lr.svg +14 -0
  480. package/src/assets/flags/1x1/ls.svg +8 -0
  481. package/src/assets/flags/1x1/lt.svg +7 -0
  482. package/src/assets/flags/1x1/lu.svg +5 -0
  483. package/src/assets/flags/1x1/lv.svg +6 -0
  484. package/src/assets/flags/1x1/ly.svg +13 -0
  485. package/src/assets/flags/1x1/ma.svg +4 -0
  486. package/src/assets/flags/1x1/mc.svg +6 -0
  487. package/src/assets/flags/1x1/md.svg +71 -0
  488. package/src/assets/flags/1x1/me.svg +118 -0
  489. package/src/assets/flags/1x1/mf.svg +7 -0
  490. package/src/assets/flags/1x1/mg.svg +7 -0
  491. package/src/assets/flags/1x1/mh.svg +8 -0
  492. package/src/assets/flags/1x1/mk.svg +5 -0
  493. package/src/assets/flags/1x1/ml.svg +7 -0
  494. package/src/assets/flags/1x1/mm.svg +10 -0
  495. package/src/assets/flags/1x1/mn.svg +14 -0
  496. package/src/assets/flags/1x1/mo.svg +9 -0
  497. package/src/assets/flags/1x1/mp.svg +86 -0
  498. package/src/assets/flags/1x1/mq.svg +7 -0
  499. package/src/assets/flags/1x1/mr.svg +6 -0
  500. package/src/assets/flags/1x1/ms.svg +25 -0
  501. package/src/assets/flags/1x1/mt.svg +50 -0
  502. package/src/assets/flags/1x1/mu.svg +8 -0
  503. package/src/assets/flags/1x1/mv.svg +6 -0
  504. package/src/assets/flags/1x1/mw.svg +15 -0
  505. package/src/assets/flags/1x1/mx.svg +378 -0
  506. package/src/assets/flags/1x1/my.svg +7 -0
  507. package/src/assets/flags/1x1/mz.svg +21 -0
  508. package/src/assets/flags/1x1/na.svg +16 -0
  509. package/src/assets/flags/1x1/nc.svg +12 -0
  510. package/src/assets/flags/1x1/ne.svg +6 -0
  511. package/src/assets/flags/1x1/nf.svg +11 -0
  512. package/src/assets/flags/1x1/ng.svg +6 -0
  513. package/src/assets/flags/1x1/ni.svg +129 -0
  514. package/src/assets/flags/1x1/nl.svg +5 -0
  515. package/src/assets/flags/1x1/no.svg +7 -0
  516. package/src/assets/flags/1x1/np.svg +19 -0
  517. package/src/assets/flags/1x1/nr.svg +12 -0
  518. package/src/assets/flags/1x1/nu.svg +10 -0
  519. package/src/assets/flags/1x1/nz.svg +36 -0
  520. package/src/assets/flags/1x1/om.svg +115 -0
  521. package/src/assets/flags/1x1/pa.svg +13 -0
  522. package/src/assets/flags/1x1/pe.svg +244 -0
  523. package/src/assets/flags/1x1/pf.svg +18 -0
  524. package/src/assets/flags/1x1/pg.svg +16 -0
  525. package/src/assets/flags/1x1/ph.svg +8 -0
  526. package/src/assets/flags/1x1/pk.svg +15 -0
  527. package/src/assets/flags/1x1/pl.svg +6 -0
  528. package/src/assets/flags/1x1/pm.svg +7 -0
  529. package/src/assets/flags/1x1/pn.svg +53 -0
  530. package/src/assets/flags/1x1/pr.svg +13 -0
  531. package/src/assets/flags/1x1/ps.svg +15 -0
  532. package/src/assets/flags/1x1/pt.svg +57 -0
  533. package/src/assets/flags/1x1/pw.svg +11 -0
  534. package/src/assets/flags/1x1/py.svg +156 -0
  535. package/src/assets/flags/1x1/qa.svg +4 -0
  536. package/src/assets/flags/1x1/re.svg +7 -0
  537. package/src/assets/flags/1x1/ro.svg +7 -0
  538. package/src/assets/flags/1x1/rs.svg +296 -0
  539. package/src/assets/flags/1x1/ru.svg +7 -0
  540. package/src/assets/flags/1x1/rw.svg +13 -0
  541. package/src/assets/flags/1x1/sa.svg +26 -0
  542. package/src/assets/flags/1x1/sb.svg +13 -0
  543. package/src/assets/flags/1x1/sc.svg +7 -0
  544. package/src/assets/flags/1x1/sd.svg +13 -0
  545. package/src/assets/flags/1x1/se.svg +4 -0
  546. package/src/assets/flags/1x1/sg.svg +13 -0
  547. package/src/assets/flags/1x1/sh.svg +76 -0
  548. package/src/assets/flags/1x1/si.svg +18 -0
  549. package/src/assets/flags/1x1/sj.svg +7 -0
  550. package/src/assets/flags/1x1/sk.svg +9 -0
  551. package/src/assets/flags/1x1/sl.svg +12 -0
  552. package/src/assets/flags/1x1/sm.svg +73 -0
  553. package/src/assets/flags/1x1/sn.svg +8 -0
  554. package/src/assets/flags/1x1/so.svg +11 -0
  555. package/src/assets/flags/1x1/sr.svg +6 -0
  556. package/src/assets/flags/1x1/ss.svg +8 -0
  557. package/src/assets/flags/1x1/st.svg +16 -0
  558. package/src/assets/flags/1x1/sv.svg +594 -0
  559. package/src/assets/flags/1x1/sx.svg +56 -0
  560. package/src/assets/flags/1x1/sy.svg +6 -0
  561. package/src/assets/flags/1x1/sz.svg +34 -0
  562. package/src/assets/flags/1x1/ta.svg +76 -0
  563. package/src/assets/flags/1x1/tc.svg +50 -0
  564. package/src/assets/flags/1x1/td.svg +7 -0
  565. package/src/assets/flags/1x1/tf.svg +15 -0
  566. package/src/assets/flags/1x1/tg.svg +14 -0
  567. package/src/assets/flags/1x1/th.svg +7 -0
  568. package/src/assets/flags/1x1/tj.svg +26 -0
  569. package/src/assets/flags/1x1/tk.svg +5 -0
  570. package/src/assets/flags/1x1/tl.svg +13 -0
  571. package/src/assets/flags/1x1/tm.svg +202 -0
  572. package/src/assets/flags/1x1/tn.svg +13 -0
  573. package/src/assets/flags/1x1/to.svg +10 -0
  574. package/src/assets/flags/1x1/tr.svg +8 -0
  575. package/src/assets/flags/1x1/tt.svg +7 -0
  576. package/src/assets/flags/1x1/tv.svg +9 -0
  577. package/src/assets/flags/1x1/tw.svg +32 -0
  578. package/src/assets/flags/1x1/tz.svg +15 -0
  579. package/src/assets/flags/1x1/ua.svg +6 -0
  580. package/src/assets/flags/1x1/ug.svg +30 -0
  581. package/src/assets/flags/1x1/um.svg +15 -0
  582. package/src/assets/flags/1x1/un.svg +16 -0
  583. package/src/assets/flags/1x1/us.svg +10 -0
  584. package/src/assets/flags/1x1/uy.svg +28 -0
  585. package/src/assets/flags/1x1/uz.svg +30 -0
  586. package/src/assets/flags/1x1/va.svg +479 -0
  587. package/src/assets/flags/1x1/vc.svg +8 -0
  588. package/src/assets/flags/1x1/ve.svg +26 -0
  589. package/src/assets/flags/1x1/vg.svg +63 -0
  590. package/src/assets/flags/1x1/vi.svg +28 -0
  591. package/src/assets/flags/1x1/vn.svg +11 -0
  592. package/src/assets/flags/1x1/vu.svg +21 -0
  593. package/src/assets/flags/1x1/wf.svg +7 -0
  594. package/src/assets/flags/1x1/ws.svg +7 -0
  595. package/src/assets/flags/1x1/xk.svg +8 -0
  596. package/src/assets/flags/1x1/xx.svg +4 -0
  597. package/src/assets/flags/1x1/ye.svg +7 -0
  598. package/src/assets/flags/1x1/yt.svg +7 -0
  599. package/src/assets/flags/1x1/za.svg +17 -0
  600. package/src/assets/flags/1x1/zm.svg +27 -0
  601. package/src/assets/flags/1x1/zw.svg +21 -0
  602. package/src/assets/flags/4x3/ac.svg +76 -0
  603. package/src/assets/flags/4x3/ad.svg +150 -0
  604. package/src/assets/flags/4x3/ae.svg +6 -0
  605. package/src/assets/flags/4x3/af.svg +81 -0
  606. package/src/assets/flags/4x3/ag.svg +14 -0
  607. package/src/assets/flags/4x3/ai.svg +758 -0
  608. package/src/assets/flags/4x3/al.svg +5 -0
  609. package/src/assets/flags/4x3/am.svg +5 -0
  610. package/src/assets/flags/4x3/ao.svg +13 -0
  611. package/src/assets/flags/4x3/aq.svg +5 -0
  612. package/src/assets/flags/4x3/ar.svg +32 -0
  613. package/src/assets/flags/4x3/as.svg +72 -0
  614. package/src/assets/flags/4x3/at.svg +6 -0
  615. package/src/assets/flags/4x3/au.svg +8 -0
  616. package/src/assets/flags/4x3/aw.svg +186 -0
  617. package/src/assets/flags/4x3/ax.svg +18 -0
  618. package/src/assets/flags/4x3/az.svg +8 -0
  619. package/src/assets/flags/4x3/ba.svg +12 -0
  620. package/src/assets/flags/4x3/bb.svg +6 -0
  621. package/src/assets/flags/4x3/bd.svg +4 -0
  622. package/src/assets/flags/4x3/be.svg +7 -0
  623. package/src/assets/flags/4x3/bf.svg +7 -0
  624. package/src/assets/flags/4x3/bg.svg +7 -0
  625. package/src/assets/flags/4x3/bh.svg +4 -0
  626. package/src/assets/flags/4x3/bi.svg +15 -0
  627. package/src/assets/flags/4x3/bj.svg +14 -0
  628. package/src/assets/flags/4x3/bl.svg +7 -0
  629. package/src/assets/flags/4x3/bm.svg +97 -0
  630. package/src/assets/flags/4x3/bn.svg +36 -0
  631. package/src/assets/flags/4x3/bo.svg +676 -0
  632. package/src/assets/flags/4x3/bq.svg +5 -0
  633. package/src/assets/flags/4x3/br.svg +45 -0
  634. package/src/assets/flags/4x3/bs.svg +13 -0
  635. package/src/assets/flags/4x3/bt.svg +89 -0
  636. package/src/assets/flags/4x3/bv.svg +13 -0
  637. package/src/assets/flags/4x3/bw.svg +7 -0
  638. package/src/assets/flags/4x3/by.svg +20 -0
  639. package/src/assets/flags/4x3/bz.svg +145 -0
  640. package/src/assets/flags/4x3/ca.svg +4 -0
  641. package/src/assets/flags/4x3/cc.svg +19 -0
  642. package/src/assets/flags/4x3/cd.svg +5 -0
  643. package/src/assets/flags/4x3/cefta.svg +13 -0
  644. package/src/assets/flags/4x3/cf.svg +15 -0
  645. package/src/assets/flags/4x3/cg.svg +12 -0
  646. package/src/assets/flags/4x3/ch.svg +9 -0
  647. package/src/assets/flags/4x3/ci.svg +7 -0
  648. package/src/assets/flags/4x3/ck.svg +9 -0
  649. package/src/assets/flags/4x3/cl.svg +13 -0
  650. package/src/assets/flags/4x3/cm.svg +15 -0
  651. package/src/assets/flags/4x3/cn.svg +11 -0
  652. package/src/assets/flags/4x3/co.svg +7 -0
  653. package/src/assets/flags/4x3/cp.svg +7 -0
  654. package/src/assets/flags/4x3/cr.svg +7 -0
  655. package/src/assets/flags/4x3/cu.svg +13 -0
  656. package/src/assets/flags/4x3/cv.svg +13 -0
  657. package/src/assets/flags/4x3/cw.svg +14 -0
  658. package/src/assets/flags/4x3/cx.svg +15 -0
  659. package/src/assets/flags/4x3/cy.svg +6 -0
  660. package/src/assets/flags/4x3/cz.svg +5 -0
  661. package/src/assets/flags/4x3/de.svg +5 -0
  662. package/src/assets/flags/4x3/dg.svg +129 -0
  663. package/src/assets/flags/4x3/dj.svg +13 -0
  664. package/src/assets/flags/4x3/dk.svg +5 -0
  665. package/src/assets/flags/4x3/dm.svg +152 -0
  666. package/src/assets/flags/4x3/do.svg +6745 -0
  667. package/src/assets/flags/4x3/dz.svg +5 -0
  668. package/src/assets/flags/4x3/ea.svg +544 -0
  669. package/src/assets/flags/4x3/ec.svg +138 -0
  670. package/src/assets/flags/4x3/ee.svg +7 -0
  671. package/src/assets/flags/4x3/eg.svg +38 -0
  672. package/src/assets/flags/4x3/eh.svg +16 -0
  673. package/src/assets/flags/4x3/er.svg +8 -0
  674. package/src/assets/flags/4x3/es-ct.svg +4 -0
  675. package/src/assets/flags/4x3/es-ga.svg +187 -0
  676. package/src/assets/flags/4x3/es.svg +544 -0
  677. package/src/assets/flags/4x3/et.svg +14 -0
  678. package/src/assets/flags/4x3/eu.svg +28 -0
  679. package/src/assets/flags/4x3/fi.svg +5 -0
  680. package/src/assets/flags/4x3/fj.svg +120 -0
  681. package/src/assets/flags/4x3/fk.svg +90 -0
  682. package/src/assets/flags/4x3/fm.svg +11 -0
  683. package/src/assets/flags/4x3/fo.svg +12 -0
  684. package/src/assets/flags/4x3/fr.svg +7 -0
  685. package/src/assets/flags/4x3/ga.svg +7 -0
  686. package/src/assets/flags/4x3/gb-eng.svg +5 -0
  687. package/src/assets/flags/4x3/gb-nir.svg +132 -0
  688. package/src/assets/flags/4x3/gb-sct.svg +4 -0
  689. package/src/assets/flags/4x3/gb-wls.svg +9 -0
  690. package/src/assets/flags/4x3/gb.svg +7 -0
  691. package/src/assets/flags/4x3/gd.svg +27 -0
  692. package/src/assets/flags/4x3/ge.svg +6 -0
  693. package/src/assets/flags/4x3/gf.svg +7 -0
  694. package/src/assets/flags/4x3/gg.svg +9 -0
  695. package/src/assets/flags/4x3/gh.svg +6 -0
  696. package/src/assets/flags/4x3/gi.svg +32 -0
  697. package/src/assets/flags/4x3/gl.svg +4 -0
  698. package/src/assets/flags/4x3/gm.svg +14 -0
  699. package/src/assets/flags/4x3/gn.svg +7 -0
  700. package/src/assets/flags/4x3/gp.svg +7 -0
  701. package/src/assets/flags/4x3/gq.svg +23 -0
  702. package/src/assets/flags/4x3/gr.svg +16 -0
  703. package/src/assets/flags/4x3/gs.svg +133 -0
  704. package/src/assets/flags/4x3/gt.svg +220 -0
  705. package/src/assets/flags/4x3/gu.svg +23 -0
  706. package/src/assets/flags/4x3/gw.svg +13 -0
  707. package/src/assets/flags/4x3/gy.svg +9 -0
  708. package/src/assets/flags/4x3/hk.svg +30 -0
  709. package/src/assets/flags/4x3/hm.svg +8 -0
  710. package/src/assets/flags/4x3/hn.svg +18 -0
  711. package/src/assets/flags/4x3/hr.svg +58 -0
  712. package/src/assets/flags/4x3/ht.svg +116 -0
  713. package/src/assets/flags/4x3/hu.svg +7 -0
  714. package/src/assets/flags/4x3/ic.svg +7 -0
  715. package/src/assets/flags/4x3/id.svg +4 -0
  716. package/src/assets/flags/4x3/ie.svg +7 -0
  717. package/src/assets/flags/4x3/il.svg +14 -0
  718. package/src/assets/flags/4x3/im.svg +36 -0
  719. package/src/assets/flags/4x3/in.svg +25 -0
  720. package/src/assets/flags/4x3/io.svg +129 -0
  721. package/src/assets/flags/4x3/iq.svg +10 -0
  722. package/src/assets/flags/4x3/ir.svg +219 -0
  723. package/src/assets/flags/4x3/is.svg +12 -0
  724. package/src/assets/flags/4x3/it.svg +7 -0
  725. package/src/assets/flags/4x3/je.svg +45 -0
  726. package/src/assets/flags/4x3/jm.svg +8 -0
  727. package/src/assets/flags/4x3/jo.svg +16 -0
  728. package/src/assets/flags/4x3/jp.svg +11 -0
  729. package/src/assets/flags/4x3/ke.svg +23 -0
  730. package/src/assets/flags/4x3/kg.svg +15 -0
  731. package/src/assets/flags/4x3/kh.svg +61 -0
  732. package/src/assets/flags/4x3/ki.svg +36 -0
  733. package/src/assets/flags/4x3/km.svg +16 -0
  734. package/src/assets/flags/4x3/kn.svg +14 -0
  735. package/src/assets/flags/4x3/kp.svg +15 -0
  736. package/src/assets/flags/4x3/kr.svg +24 -0
  737. package/src/assets/flags/4x3/kw.svg +13 -0
  738. package/src/assets/flags/4x3/ky.svg +109 -0
  739. package/src/assets/flags/4x3/kz.svg +23 -0
  740. package/src/assets/flags/4x3/la.svg +12 -0
  741. package/src/assets/flags/4x3/lb.svg +15 -0
  742. package/src/assets/flags/4x3/lc.svg +8 -0
  743. package/src/assets/flags/4x3/li.svg +43 -0
  744. package/src/assets/flags/4x3/lk.svg +22 -0
  745. package/src/assets/flags/4x3/lr.svg +14 -0
  746. package/src/assets/flags/4x3/ls.svg +8 -0
  747. package/src/assets/flags/4x3/lt.svg +7 -0
  748. package/src/assets/flags/4x3/lu.svg +5 -0
  749. package/src/assets/flags/4x3/lv.svg +6 -0
  750. package/src/assets/flags/4x3/ly.svg +13 -0
  751. package/src/assets/flags/4x3/ma.svg +4 -0
  752. package/src/assets/flags/4x3/mc.svg +6 -0
  753. package/src/assets/flags/4x3/md.svg +70 -0
  754. package/src/assets/flags/4x3/me.svg +116 -0
  755. package/src/assets/flags/4x3/mf.svg +7 -0
  756. package/src/assets/flags/4x3/mg.svg +7 -0
  757. package/src/assets/flags/4x3/mh.svg +7 -0
  758. package/src/assets/flags/4x3/mk.svg +5 -0
  759. package/src/assets/flags/4x3/ml.svg +7 -0
  760. package/src/assets/flags/4x3/mm.svg +12 -0
  761. package/src/assets/flags/4x3/mn.svg +14 -0
  762. package/src/assets/flags/4x3/mo.svg +9 -0
  763. package/src/assets/flags/4x3/mp.svg +86 -0
  764. package/src/assets/flags/4x3/mq.svg +7 -0
  765. package/src/assets/flags/4x3/mr.svg +6 -0
  766. package/src/assets/flags/4x3/ms.svg +33 -0
  767. package/src/assets/flags/4x3/mt.svg +49 -0
  768. package/src/assets/flags/4x3/mu.svg +8 -0
  769. package/src/assets/flags/4x3/mv.svg +6 -0
  770. package/src/assets/flags/4x3/mw.svg +10 -0
  771. package/src/assets/flags/4x3/mx.svg +382 -0
  772. package/src/assets/flags/4x3/my.svg +7 -0
  773. package/src/assets/flags/4x3/mz.svg +21 -0
  774. package/src/assets/flags/4x3/na.svg +16 -0
  775. package/src/assets/flags/4x3/nc.svg +13 -0
  776. package/src/assets/flags/4x3/ne.svg +6 -0
  777. package/src/assets/flags/4x3/nf.svg +9 -0
  778. package/src/assets/flags/4x3/ng.svg +6 -0
  779. package/src/assets/flags/4x3/ni.svg +129 -0
  780. package/src/assets/flags/4x3/nl.svg +5 -0
  781. package/src/assets/flags/4x3/no.svg +7 -0
  782. package/src/assets/flags/4x3/np.svg +14 -0
  783. package/src/assets/flags/4x3/nr.svg +12 -0
  784. package/src/assets/flags/4x3/nu.svg +10 -0
  785. package/src/assets/flags/4x3/nz.svg +36 -0
  786. package/src/assets/flags/4x3/om.svg +115 -0
  787. package/src/assets/flags/4x3/pa.svg +14 -0
  788. package/src/assets/flags/4x3/pe.svg +244 -0
  789. package/src/assets/flags/4x3/pf.svg +19 -0
  790. package/src/assets/flags/4x3/pg.svg +9 -0
  791. package/src/assets/flags/4x3/ph.svg +6 -0
  792. package/src/assets/flags/4x3/pk.svg +15 -0
  793. package/src/assets/flags/4x3/pl.svg +6 -0
  794. package/src/assets/flags/4x3/pm.svg +7 -0
  795. package/src/assets/flags/4x3/pn.svg +53 -0
  796. package/src/assets/flags/4x3/pr.svg +13 -0
  797. package/src/assets/flags/4x3/ps.svg +15 -0
  798. package/src/assets/flags/4x3/pt.svg +57 -0
  799. package/src/assets/flags/4x3/pw.svg +11 -0
  800. package/src/assets/flags/4x3/py.svg +157 -0
  801. package/src/assets/flags/4x3/qa.svg +4 -0
  802. package/src/assets/flags/4x3/re.svg +7 -0
  803. package/src/assets/flags/4x3/ro.svg +7 -0
  804. package/src/assets/flags/4x3/rs.svg +292 -0
  805. package/src/assets/flags/4x3/ru.svg +7 -0
  806. package/src/assets/flags/4x3/rw.svg +13 -0
  807. package/src/assets/flags/4x3/sa.svg +26 -0
  808. package/src/assets/flags/4x3/sb.svg +13 -0
  809. package/src/assets/flags/4x3/sc.svg +7 -0
  810. package/src/assets/flags/4x3/sd.svg +13 -0
  811. package/src/assets/flags/4x3/se.svg +4 -0
  812. package/src/assets/flags/4x3/sg.svg +13 -0
  813. package/src/assets/flags/4x3/sh.svg +76 -0
  814. package/src/assets/flags/4x3/si.svg +18 -0
  815. package/src/assets/flags/4x3/sj.svg +7 -0
  816. package/src/assets/flags/4x3/sk.svg +9 -0
  817. package/src/assets/flags/4x3/sl.svg +7 -0
  818. package/src/assets/flags/4x3/sm.svg +75 -0
  819. package/src/assets/flags/4x3/sn.svg +8 -0
  820. package/src/assets/flags/4x3/so.svg +11 -0
  821. package/src/assets/flags/4x3/sr.svg +6 -0
  822. package/src/assets/flags/4x3/ss.svg +8 -0
  823. package/src/assets/flags/4x3/st.svg +16 -0
  824. package/src/assets/flags/4x3/sv.svg +594 -0
  825. package/src/assets/flags/4x3/sx.svg +56 -0
  826. package/src/assets/flags/4x3/sy.svg +6 -0
  827. package/src/assets/flags/4x3/sz.svg +34 -0
  828. package/src/assets/flags/4x3/ta.svg +76 -0
  829. package/src/assets/flags/4x3/tc.svg +50 -0
  830. package/src/assets/flags/4x3/td.svg +7 -0
  831. package/src/assets/flags/4x3/tf.svg +15 -0
  832. package/src/assets/flags/4x3/tg.svg +14 -0
  833. package/src/assets/flags/4x3/th.svg +7 -0
  834. package/src/assets/flags/4x3/tj.svg +22 -0
  835. package/src/assets/flags/4x3/tk.svg +5 -0
  836. package/src/assets/flags/4x3/tl.svg +13 -0
  837. package/src/assets/flags/4x3/tm.svg +205 -0
  838. package/src/assets/flags/4x3/tn.svg +13 -0
  839. package/src/assets/flags/4x3/to.svg +10 -0
  840. package/src/assets/flags/4x3/tr.svg +8 -0
  841. package/src/assets/flags/4x3/tt.svg +5 -0
  842. package/src/assets/flags/4x3/tv.svg +9 -0
  843. package/src/assets/flags/4x3/tw.svg +34 -0
  844. package/src/assets/flags/4x3/tz.svg +13 -0
  845. package/src/assets/flags/4x3/ua.svg +6 -0
  846. package/src/assets/flags/4x3/ug.svg +30 -0
  847. package/src/assets/flags/4x3/um.svg +15 -0
  848. package/src/assets/flags/4x3/un.svg +16 -0
  849. package/src/assets/flags/4x3/us.svg +10 -0
  850. package/src/assets/flags/4x3/uy.svg +28 -0
  851. package/src/assets/flags/4x3/uz.svg +30 -0
  852. package/src/assets/flags/4x3/va.svg +479 -0
  853. package/src/assets/flags/4x3/vc.svg +8 -0
  854. package/src/assets/flags/4x3/ve.svg +26 -0
  855. package/src/assets/flags/4x3/vg.svg +63 -0
  856. package/src/assets/flags/4x3/vi.svg +28 -0
  857. package/src/assets/flags/4x3/vn.svg +11 -0
  858. package/src/assets/flags/4x3/vu.svg +21 -0
  859. package/src/assets/flags/4x3/wf.svg +7 -0
  860. package/src/assets/flags/4x3/ws.svg +7 -0
  861. package/src/assets/flags/4x3/xk.svg +8 -0
  862. package/src/assets/flags/4x3/xx.svg +4 -0
  863. package/src/assets/flags/4x3/ye.svg +7 -0
  864. package/src/assets/flags/4x3/yt.svg +7 -0
  865. package/src/assets/flags/4x3/za.svg +17 -0
  866. package/src/assets/flags/4x3/zm.svg +27 -0
  867. package/src/assets/flags/4x3/zw.svg +21 -0
  868. package/src/environments/environment.prod.ts +3 -0
  869. package/src/environments/environment.ts +16 -0
  870. package/src/favicon.ico +0 -0
  871. package/src/index.html +23 -0
  872. package/src/main.ts +12 -0
  873. package/src/polyfills.ts +53 -0
  874. package/src/styles.scss +39 -0
  875. package/src/test.ts +14 -0
  876. package/src/webgl/WebGLQuery.min.js +6 -0
  877. package/src/webgl/WebGLViewerLight.min.js +89 -0
  878. package/src/webgl/gl-matrix.min.js +47 -0
  879. package/tsconfig.app.json +15 -0
  880. package/tsconfig.json +34 -0
  881. package/tsconfig.spec.json +18 -0
  882. package/esm2020/fabrikantencore.mjs +0 -5
  883. package/esm2020/public_api.mjs +0 -13
  884. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.mjs +0 -56
  885. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.mjs +0 -77
  886. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.mjs +0 -43
  887. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.mjs +0 -28
  888. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.mjs +0 -133
  889. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.mjs +0 -218
  890. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.mjs +0 -120
  891. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.mjs +0 -56
  892. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.mjs +0 -90
  893. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.mjs +0 -30
  894. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.mjs +0 -74
  895. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.mjs +0 -44
  896. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.mjs +0 -16
  897. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.mjs +0 -47
  898. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.mjs +0 -56
  899. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.mjs +0 -106
  900. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.mjs +0 -169
  901. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.mjs +0 -199
  902. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.mjs +0 -16
  903. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.mjs +0 -157
  904. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.mjs +0 -28
  905. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.mjs +0 -153
  906. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.mjs +0 -87
  907. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.mjs +0 -89
  908. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.mjs +0 -299
  909. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.mjs +0 -102
  910. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.mjs +0 -76
  911. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.mjs +0 -40
  912. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.mjs +0 -24
  913. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.mjs +0 -24
  914. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.mjs +0 -27
  915. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.mjs +0 -114
  916. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.mjs +0 -15
  917. package/esm2020/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.mjs +0 -137
  918. package/esm2020/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.mjs +0 -14
  919. package/esm2020/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.mjs +0 -73
  920. package/esm2020/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.mjs +0 -31
  921. package/esm2020/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.mjs +0 -61
  922. package/esm2020/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.mjs +0 -42
  923. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.mjs +0 -121
  924. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.mjs +0 -293
  925. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.mjs +0 -50
  926. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.mjs +0 -50
  927. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.mjs +0 -81
  928. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.mjs +0 -121
  929. package/esm2020/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.mjs +0 -38
  930. package/esm2020/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.mjs +0 -48
  931. package/esm2020/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.mjs +0 -32
  932. package/esm2020/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.mjs +0 -16
  933. package/esm2020/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.mjs +0 -57
  934. package/esm2020/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.mjs +0 -29
  935. package/esm2020/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.mjs +0 -29
  936. package/esm2020/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.mjs +0 -23
  937. package/esm2020/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.mjs +0 -15
  938. package/esm2020/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.mjs +0 -41
  939. package/esm2020/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.mjs +0 -33
  940. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.mjs +0 -46
  941. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.mjs +0 -32
  942. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.mjs +0 -21
  943. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.mjs +0 -41
  944. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.mjs +0 -99
  945. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.mjs +0 -86
  946. package/esm2020/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.mjs +0 -63
  947. package/esm2020/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.mjs +0 -46
  948. package/esm2020/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.mjs +0 -85
  949. package/esm2020/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.mjs +0 -33
  950. package/esm2020/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.mjs +0 -19
  951. package/esm2020/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.mjs +0 -27
  952. package/esm2020/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.mjs +0 -69
  953. package/esm2020/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.mjs +0 -35
  954. package/esm2020/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.mjs +0 -89
  955. package/esm2020/src/app/modules/fabrikantencore/fabrikantencore.module.mjs +0 -464
  956. package/esm2020/src/app/modules/fabrikantencore/helpers/auth.guard.mjs +0 -29
  957. package/esm2020/src/app/modules/fabrikantencore/helpers/basic-auth.interceptor.mjs +0 -26
  958. package/esm2020/src/app/modules/fabrikantencore/helpers/error.interceptor.mjs +0 -27
  959. package/esm2020/src/app/modules/fabrikantencore/services/authentication.service.mjs +0 -47
  960. package/esm2020/src/app/modules/fabrikantencore/services/bestek.service.mjs +0 -91
  961. package/esm2020/src/app/modules/fabrikantencore/services/fabrikanten.service.mjs +0 -1021
  962. package/esm2020/src/app/modules/fabrikantencore/services/importsets.service.mjs +0 -135
  963. package/esm2020/src/app/modules/fabrikantencore/services/mobile.service.mjs +0 -47
  964. package/esm2020/src/app/modules/fabrikantencore/services/navigate.service.mjs +0 -39
  965. package/esm2020/src/app/modules/fabrikantencore/services/photo.service.mjs +0 -98
  966. package/esm2020/src/app/modules/fabrikantencore/services/products.service.mjs +0 -235
  967. package/esm2020/src/app/modules/fabrikantencore/services/projectsetting.service.mjs +0 -84
  968. package/esm2020/src/app/modules/fabrikantencore/services/statistics.service.mjs +0 -82
  969. package/esm2020/src/app/modules/fabrikantencore/services/svg.service.mjs +0 -73
  970. package/esm2020/src/app/modules/fabrikantencore/services/texture.service.mjs +0 -33
  971. package/esm2020/src/app/modules/fabrikantencore/services/toebehoren.service.mjs +0 -58
  972. package/esm2020/src/app/modules/fabrikantencore/services/translate.service.mjs +0 -322
  973. package/esm2020/src/app/modules/fabrikantencore/services/webgl.service.mjs +0 -66
  974. package/esm2020/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +0 -10236
  975. package/fesm2015/fabrikantencore.mjs +0 -17515
  976. package/fesm2015/fabrikantencore.mjs.map +0 -1
  977. package/fesm2020/fabrikantencore.mjs +0 -17397
  978. package/fesm2020/fabrikantencore.mjs.map +0 -1
  979. package/index.d.ts +0 -5
  980. package/public_api.d.ts +0 -12
  981. package/src/app/modules/fabrikantencore/beheer/components/beheer-categories/beheer-categories.component.d.ts +0 -14
  982. package/src/app/modules/fabrikantencore/beheer/components/beheer-connect-category-dialog/beheer-connect-category-dialog.component.d.ts +0 -22
  983. package/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.d.ts +0 -16
  984. package/src/app/modules/fabrikantencore/beheer/components/beheer-display-ebo/beheer-display-ebo.component.d.ts +0 -11
  985. package/src/app/modules/fabrikantencore/beheer/components/beheer-ebo-koppel/beheer-ebo-koppel/beheer-ebo-koppel.component.d.ts +0 -23
  986. package/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.d.ts +0 -28
  987. package/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.d.ts +0 -24
  988. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-dialog/beheer-import-sets-dialog.component.d.ts +0 -20
  989. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-ebo/beheer-import-sets-ebo.component.d.ts +0 -29
  990. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets-eigenschap/beheer-import-sets-eigenschap.component.d.ts +0 -14
  991. package/src/app/modules/fabrikantencore/beheer/components/beheer-import-sets/beheer-import-sets.component.d.ts +0 -23
  992. package/src/app/modules/fabrikantencore/beheer/components/beheer-inlog/beheer-inlog.component.d.ts +0 -21
  993. package/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.d.ts +0 -8
  994. package/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.d.ts +0 -19
  995. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-bcbproduct/beheer-products-bcbproduct.component.d.ts +0 -17
  996. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.d.ts +0 -32
  997. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.d.ts +0 -34
  998. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.d.ts +0 -28
  999. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap-bereik/beheer-products-eigenschap-bereik.component.d.ts +0 -10
  1000. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.d.ts +0 -35
  1001. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-product/beheer-products-product.component.d.ts +0 -14
  1002. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.d.ts +0 -27
  1003. package/src/app/modules/fabrikantencore/beheer/components/beheer-rangeinput/beheer-rangeinput.component.d.ts +0 -17
  1004. package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts-koppel-dialog/beheer-searchproducts-koppel-dialog.component.d.ts +0 -23
  1005. package/src/app/modules/fabrikantencore/beheer/components/beheer-searchproducts/beheer-searchproducts.component.d.ts +0 -41
  1006. package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.d.ts +0 -28
  1007. package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filteroption-dialog/beheer-select-filteroption-dialog.component.d.ts +0 -23
  1008. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-boolean/beheer-settings-boolean.component.d.ts +0 -14
  1009. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-options/beheer-settings-options.component.d.ts +0 -12
  1010. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings-string/beheer-settings-string.component.d.ts +0 -12
  1011. package/src/app/modules/fabrikantencore/beheer/components/beheer-settings/beheer-settings.component.d.ts +0 -11
  1012. package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.d.ts +0 -21
  1013. package/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.d.ts +0 -8
  1014. package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.d.ts +0 -48
  1015. package/src/app/modules/fabrikantencore/components/fab-bcb-product/fab-bcb-product.component.d.ts +0 -8
  1016. package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.d.ts +0 -22
  1017. package/src/app/modules/fabrikantencore/components/fab-categories/fab-categories.component.d.ts +0 -15
  1018. package/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.d.ts +0 -21
  1019. package/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.d.ts +0 -20
  1020. package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.d.ts +0 -26
  1021. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.d.ts +0 -36
  1022. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.d.ts +0 -20
  1023. package/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.d.ts +0 -20
  1024. package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.d.ts +0 -26
  1025. package/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.d.ts +0 -26
  1026. package/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.d.ts +0 -21
  1027. package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.d.ts +0 -16
  1028. package/src/app/modules/fabrikantencore/components/fab-filters-overview/fab-filters-overview.component.d.ts +0 -12
  1029. package/src/app/modules/fabrikantencore/components/fab-flag/fab-flag.component.d.ts +0 -9
  1030. package/src/app/modules/fabrikantencore/components/fab-header/fab-header.component.d.ts +0 -20
  1031. package/src/app/modules/fabrikantencore/components/fab-iframe/fab-iframe.component.d.ts +0 -12
  1032. package/src/app/modules/fabrikantencore/components/fab-input/fab-input.component.d.ts +0 -9
  1033. package/src/app/modules/fabrikantencore/components/fab-language-select/fab-language-select.component.d.ts +0 -13
  1034. package/src/app/modules/fabrikantencore/components/fab-loader/fab-loader.component.d.ts +0 -8
  1035. package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.d.ts +0 -18
  1036. package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.d.ts +0 -18
  1037. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-bestek/fab-product-bestek.component.d.ts +0 -23
  1038. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo/fab-product-info-photo.component.d.ts +0 -15
  1039. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info-photo-dialog/fab-product-info-photo-dialog.component.d.ts +0 -12
  1040. package/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.d.ts +0 -17
  1041. package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.d.ts +0 -33
  1042. package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.d.ts +0 -25
  1043. package/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.d.ts +0 -25
  1044. package/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.d.ts +0 -22
  1045. package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.d.ts +0 -23
  1046. package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.d.ts +0 -18
  1047. package/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.d.ts +0 -12
  1048. package/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.d.ts +0 -15
  1049. package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.d.ts +0 -27
  1050. package/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.d.ts +0 -17
  1051. package/src/app/modules/fabrikantencore/components/fab-webgl-viewer/fab-webgl-viewer.component.d.ts +0 -25
  1052. package/src/app/modules/fabrikantencore/fabrikantencore.module.d.ts +0 -103
  1053. package/src/app/modules/fabrikantencore/helpers/auth.guard.d.ts +0 -11
  1054. package/src/app/modules/fabrikantencore/helpers/basic-auth.interceptor.d.ts +0 -11
  1055. package/src/app/modules/fabrikantencore/helpers/error.interceptor.d.ts +0 -11
  1056. package/src/app/modules/fabrikantencore/services/authentication.service.d.ts +0 -16
  1057. package/src/app/modules/fabrikantencore/services/bestek.service.d.ts +0 -20
  1058. package/src/app/modules/fabrikantencore/services/fabrikanten.service.d.ts +0 -97
  1059. package/src/app/modules/fabrikantencore/services/importsets.service.d.ts +0 -29
  1060. package/src/app/modules/fabrikantencore/services/mobile.service.d.ts +0 -19
  1061. package/src/app/modules/fabrikantencore/services/navigate.service.d.ts +0 -15
  1062. package/src/app/modules/fabrikantencore/services/photo.service.d.ts +0 -20
  1063. package/src/app/modules/fabrikantencore/services/products.service.d.ts +0 -30
  1064. package/src/app/modules/fabrikantencore/services/projectsetting.service.d.ts +0 -18
  1065. package/src/app/modules/fabrikantencore/services/statistics.service.d.ts +0 -17
  1066. package/src/app/modules/fabrikantencore/services/svg.service.d.ts +0 -22
  1067. package/src/app/modules/fabrikantencore/services/texture.service.d.ts +0 -12
  1068. package/src/app/modules/fabrikantencore/services/toebehoren.service.d.ts +0 -18
  1069. package/src/app/modules/fabrikantencore/services/translate.service.d.ts +0 -51
  1070. package/src/app/modules/fabrikantencore/services/webgl.service.d.ts +0 -21
  1071. package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +0 -2757
@@ -1,1021 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { FabrikantenRequestModel, SelectProductRequest, SelectBCBProductRequest, SelectFilterOptionRequest, SelectCategoryRequest, SetRangeInputRequest, ResetFilterRequest, ResetAllFiltersRequest, ResetCategoryLayerRequest, RemoveProductSelectionRequest, ResetAllCategoriesRequest, BCBLinkRequestModel, FabrikantenFileRequestModel, SelectColourRequest } from '../swagger/SwaggerClient';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../swagger/SwaggerClient";
5
- import * as i2 from "./bestek.service";
6
- import * as i3 from "./translate.service";
7
- import * as i4 from "./webgl.service";
8
- import * as i5 from "./svg.service";
9
- import * as i6 from "./texture.service";
10
- import * as i7 from "./navigate.service";
11
- import * as i8 from "@angular/router";
12
- import * as i9 from "./statistics.service";
13
- export class FabrikantenService {
14
- constructor(FabrikantenApiClient, BestekService, TranslateService, WebGLService, SVGService, TextureService, NavigateService, Router, StatisticsService) {
15
- this.FabrikantenApiClient = FabrikantenApiClient;
16
- this.BestekService = BestekService;
17
- this.TranslateService = TranslateService;
18
- this.WebGLService = WebGLService;
19
- this.SVGService = SVGService;
20
- this.TextureService = TextureService;
21
- this.NavigateService = NavigateService;
22
- this.Router = Router;
23
- this.StatisticsService = StatisticsService;
24
- this.Init = false;
25
- this.Loading = true;
26
- this.DownloadARKEYAdomiLoading = false;
27
- this.DownloadIFCLoading = false;
28
- this.DownloadRevitPluginLoading = false;
29
- this.Download3DAutoCADDwgLoading = false;
30
- this.Download3DDxfLoading = false;
31
- this.Download2DAutoCADDwgLoading = false;
32
- this.Download2DDxfLoading = false;
33
- this.DownloadRFALoading = false;
34
- this.SelectedTabIndex = 0;
35
- this.SettingsLoaded = false;
36
- this.SelectedPhoto = 0;
37
- this.SelectedToebehoren = null;
38
- this.SelectedTabSet = false;
39
- this.SelectedTab = "Informatie";
40
- this.Loaded = false;
41
- this.NavigateService.FabrikantenService = this;
42
- this.SVGService.FabrikantenService = this;
43
- this.WebGLService.FabrikantenService = this;
44
- this.BestekService.FabrikantenService = this;
45
- }
46
- ResetAllFilters(ChangeDetectorRef) {
47
- this.Loading = true;
48
- ChangeDetectorRef.detectChanges();
49
- var request = new ResetAllFiltersRequest();
50
- request.sessionId = this.FabrikantenViewModel.sessionId;
51
- this.FabrikantenApiClient.resetAllFilters(request).subscribe(() => {
52
- this.ReloadModel(ChangeDetectorRef);
53
- }, (error) => {
54
- if (error.status == 400)
55
- console.log(error.json());
56
- else {
57
- console.log('An unexpected error occured');
58
- console.log(error);
59
- }
60
- this.Loading = false;
61
- ChangeDetectorRef.detectChanges();
62
- });
63
- }
64
- SelectOption(filterid, filteroptionid, ChangeDetectorRef) {
65
- this.Loading = true;
66
- ChangeDetectorRef.detectChanges();
67
- var request = new SelectFilterOptionRequest();
68
- request.sessionId = this.FabrikantenViewModel.sessionId;
69
- request.filterOptionId = filteroptionid;
70
- request.filterId = filterid;
71
- if (this.StatisticsService.Active) {
72
- this.StatisticsService.SelectFilterOption(this.TranslateService.GetActiveValueFilter(filterid) + ": " + this.TranslateService.GetActiveValueFilterOption(filteroptionid));
73
- }
74
- this.FabrikantenApiClient.selectFilterOption(request).subscribe(() => {
75
- this.ReloadModel(ChangeDetectorRef);
76
- }, (error) => {
77
- if (error.status == 400)
78
- console.log(error.json());
79
- else {
80
- console.log('An unexpected error occured');
81
- console.log(error);
82
- }
83
- this.Loading = false;
84
- ChangeDetectorRef.detectChanges();
85
- });
86
- }
87
- SelectColour(filterid, colour, colourvalue, ChangeDetectorRef) {
88
- this.Loading = true;
89
- ChangeDetectorRef.detectChanges();
90
- var request = new SelectColourRequest();
91
- request.sessionId = this.FabrikantenViewModel.sessionId;
92
- request.colourName = colour;
93
- request.colourValue = colourvalue;
94
- request.filterId = filterid;
95
- this.FabrikantenApiClient.selectColour(request).subscribe(() => {
96
- this.ReloadModel(ChangeDetectorRef);
97
- }, (error) => {
98
- if (error.status == 400)
99
- console.log(error.json());
100
- else {
101
- console.log('An unexpected error occured');
102
- console.log(error);
103
- }
104
- this.Loading = false;
105
- ChangeDetectorRef.detectChanges();
106
- });
107
- }
108
- SetRangeInput(rangeinputid, value, ChangeDetectorRef) {
109
- this.Loading = true;
110
- ChangeDetectorRef.detectChanges();
111
- var request = new SetRangeInputRequest();
112
- request.sessionId = this.FabrikantenViewModel.sessionId;
113
- request.rangeInputId = rangeinputid;
114
- request.value = value;
115
- if (this.StatisticsService.Active) {
116
- this.StatisticsService.SelectRangeValue(this.TranslateService.GetActiveValueRangeInput(rangeinputid) + ": " + value);
117
- }
118
- this.FabrikantenApiClient.setRangeInput(request).subscribe(() => {
119
- this.ReloadModel(ChangeDetectorRef);
120
- }, (error) => {
121
- if (error.status == 400)
122
- console.log(error.json());
123
- else {
124
- console.log('An unexpected error occured');
125
- console.log(error);
126
- }
127
- this.Loading = false;
128
- ChangeDetectorRef.detectChanges();
129
- });
130
- }
131
- ForceSelectCategory(categoryid, ChangeDetectorRef) {
132
- if (this.FabrikantenViewModel != null) {
133
- this.Loading = true;
134
- var request = new ResetAllCategoriesRequest();
135
- request.sessionId = this.FabrikantenViewModel.sessionId;
136
- this.FabrikantenApiClient.resetAllCategories(request).subscribe(() => {
137
- var requestcat = new SelectCategoryRequest();
138
- requestcat.sessionId = this.FabrikantenViewModel.sessionId;
139
- requestcat.categoryId = categoryid;
140
- requestcat.categoryLayer = 0;
141
- this.FabrikantenApiClient.selectCategory(requestcat).subscribe(() => {
142
- this.ReloadModel(ChangeDetectorRef);
143
- }, (error) => {
144
- if (error.status == 400)
145
- console.log(error.json());
146
- else {
147
- console.log('An unexpected error occured');
148
- console.log(error);
149
- }
150
- this.Loading = false;
151
- ChangeDetectorRef.detectChanges();
152
- });
153
- }, (error) => {
154
- if (error.status == 400)
155
- console.log(error.json());
156
- else {
157
- console.log('An unexpected error occured');
158
- console.log(error);
159
- }
160
- this.Loading = false;
161
- ChangeDetectorRef.detectChanges();
162
- });
163
- }
164
- }
165
- SelectCategory(category, ChangeDetectorRef) {
166
- this.Loading = true;
167
- ChangeDetectorRef.detectChanges();
168
- var request = new SelectCategoryRequest();
169
- request.sessionId = this.FabrikantenViewModel.sessionId;
170
- request.categoryId = category.id;
171
- request.categoryLayer = category.layer;
172
- if (this.StatisticsService.Active) {
173
- this.StatisticsService.SelectCategory(this.TranslateService.GetActiveValueCategory(category.id));
174
- }
175
- this.FabrikantenApiClient.selectCategory(request).subscribe(() => {
176
- this.ReloadModel(ChangeDetectorRef);
177
- }, (error) => {
178
- if (error.status == 400)
179
- console.log(error.json());
180
- else {
181
- console.log('An unexpected error occured');
182
- console.log(error);
183
- }
184
- this.Loading = false;
185
- ChangeDetectorRef.detectChanges();
186
- });
187
- }
188
- SelectProduct(product, ChangeDetectorRef) {
189
- this.Loading = true;
190
- ChangeDetectorRef.detectChanges();
191
- var request = new SelectProductRequest();
192
- request.sessionId = this.FabrikantenViewModel.sessionId;
193
- request.productId = product.id;
194
- if (this.StatisticsService.Active) {
195
- this.StatisticsService.SelectProduct(this.TranslateService.GetActiveValueProduct(product.id));
196
- }
197
- this.FabrikantenApiClient.selectProduct(request).subscribe(() => {
198
- this.SelectedToebehoren = null;
199
- this.ResetTabs();
200
- this.ReloadModel(ChangeDetectorRef);
201
- }, (error) => {
202
- if (error.status == 400)
203
- console.log(error.json());
204
- else {
205
- console.log('An unexpected error occured');
206
- console.log(error);
207
- }
208
- this.Loading = false;
209
- ChangeDetectorRef.detectChanges();
210
- });
211
- }
212
- SelectBCBProduct(bcbproduct, ChangeDetectorRef) {
213
- this.Loading = true;
214
- ChangeDetectorRef.detectChanges();
215
- var request = new SelectBCBProductRequest();
216
- request.sessionId = this.FabrikantenViewModel.sessionId;
217
- request.bcbProductId = bcbproduct.id;
218
- this.FabrikantenApiClient.selectBCBProduct(request).subscribe(() => {
219
- this.ReloadModel(ChangeDetectorRef);
220
- }, (error) => {
221
- if (error.status == 400)
222
- console.log(error.json());
223
- else {
224
- console.log('An unexpected error occured');
225
- console.log(error);
226
- }
227
- this.Loading = false;
228
- ChangeDetectorRef.detectChanges();
229
- });
230
- }
231
- ResetSelectionFilter(filter, ChangeDetectorRef) {
232
- this.Loading = true;
233
- ChangeDetectorRef.detectChanges();
234
- var request = new ResetFilterRequest();
235
- request.filterId = filter.id;
236
- request.sessionId = this.FabrikantenViewModel.sessionId;
237
- this.FabrikantenApiClient.resetFilterSelection(request).subscribe(() => {
238
- this.ReloadModel(ChangeDetectorRef);
239
- }, (error) => {
240
- if (error.status == 400)
241
- console.log(error.json());
242
- else {
243
- console.log('An unexpected error occured');
244
- console.log(error);
245
- }
246
- this.Loading = false;
247
- ChangeDetectorRef.detectChanges();
248
- });
249
- }
250
- ResetAllCategories(ChangeDetectorRef) {
251
- if (this.FabrikantenViewModel != null) {
252
- this.Loading = true;
253
- var request = new ResetAllCategoriesRequest();
254
- request.sessionId = this.FabrikantenViewModel.sessionId;
255
- this.FabrikantenApiClient.resetAllCategories(request).subscribe(() => {
256
- this.ReloadModel(ChangeDetectorRef);
257
- }, (error) => {
258
- if (error.status == 400)
259
- console.log(error.json());
260
- else {
261
- console.log('An unexpected error occured');
262
- console.log(error);
263
- }
264
- this.Loading = false;
265
- ChangeDetectorRef.detectChanges();
266
- });
267
- }
268
- }
269
- ResetSelectionCategory(categorylayer, ChangeDetectorRef) {
270
- this.Loading = true;
271
- ChangeDetectorRef.detectChanges();
272
- var request = new ResetCategoryLayerRequest();
273
- request.categoryLayer = categorylayer.layer;
274
- request.sessionId = this.FabrikantenViewModel.sessionId;
275
- this.FabrikantenApiClient.resetCategoryLayerSelection(request).subscribe(() => {
276
- this.ResetAllFilters(ChangeDetectorRef);
277
- }, (error) => {
278
- if (error.status == 400)
279
- console.log(error.json());
280
- else {
281
- console.log('An unexpected error occured');
282
- console.log(error);
283
- }
284
- this.Loading = false;
285
- ChangeDetectorRef.detectChanges();
286
- });
287
- }
288
- RemoveProductSelection(ChangeDetectorRef) {
289
- if (this.FabrikantenViewModel != null) {
290
- this.Loading = true;
291
- var request = new RemoveProductSelectionRequest();
292
- request.sessionId = this.FabrikantenViewModel.sessionId;
293
- this.FabrikantenApiClient.removeProductSelection(request).subscribe(() => {
294
- this.SelectedToebehoren = null;
295
- this.ResetTabs();
296
- this.ReloadModel(ChangeDetectorRef);
297
- }, (error) => {
298
- if (error.status == 400)
299
- console.log(error.json());
300
- else {
301
- console.log('An unexpected error occured');
302
- console.log(error);
303
- }
304
- this.Loading = false;
305
- ChangeDetectorRef.detectChanges();
306
- });
307
- }
308
- }
309
- TabSelectionChanged(tab, ChangeDetectorRef) {
310
- this.SelectedTab = tab;
311
- this.TriggerReloads(ChangeDetectorRef);
312
- }
313
- GetFirstOpenCategoryLayer() {
314
- var arraylayers = this.FabrikantenViewModel?.categoryLayers;
315
- if (arraylayers != null) {
316
- for (var i = 0; i < arraylayers.length; i++) {
317
- if (arraylayers[i].selectedOption == 0) {
318
- return arraylayers[i];
319
- }
320
- }
321
- }
322
- return null;
323
- }
324
- ShowCategories() {
325
- return this.GetFirstOpenCategoryLayer() != null;
326
- }
327
- ShowRequired() {
328
- if (this.FabrikantenViewModel.inputs != null) {
329
- for (var i = 0; i < this.FabrikantenViewModel.inputs.length; i++) {
330
- if (this.FabrikantenViewModel.inputs[i].required && !this.FabrikantenViewModel.inputs[i].filled) {
331
- return true;
332
- }
333
- }
334
- }
335
- return false;
336
- }
337
- ShowTexture() {
338
- if (this.FabrikantenViewModel.selectedProduct?.textureBaseViewModel != null) {
339
- return true;
340
- }
341
- return false;
342
- }
343
- ShowToebehoren() {
344
- if (this.FabrikantenSettingsViewModel?.enableToebehoren == true) {
345
- return true;
346
- }
347
- return false;
348
- }
349
- ShowVariants() {
350
- if (this.FabrikantenViewModel != null && this.FabrikantenSettingsViewModel != null) {
351
- if (!this.FabrikantenSettingsViewModel.alwaysShowVariant) {
352
- var bcbproducts = this.FabrikantenViewModel.selectedProduct?.fabrikantenBCBProductViewModels;
353
- if (bcbproducts != null && bcbproducts.length > 1) {
354
- return true;
355
- }
356
- }
357
- }
358
- return false;
359
- }
360
- ShowActionMenu() {
361
- if (this.FabrikantenViewModel?.selectedProduct == null) {
362
- return false;
363
- }
364
- if (this.ShowVariants()) {
365
- return false;
366
- }
367
- if (this.SelectedTab == "3D") {
368
- return true;
369
- }
370
- if (this.SelectedTab == "2D") {
371
- return true;
372
- }
373
- if (this.SelectedTab == "Bestek") {
374
- return true;
375
- }
376
- if (this.SelectedTab == "Texture") {
377
- return true;
378
- }
379
- if (this.SelectedTab == "Toebehoren") {
380
- if (this.HasToebehoren()) {
381
- return true;
382
- }
383
- }
384
- return false;
385
- }
386
- HasToebehoren() {
387
- if (this.FabrikantenViewModel?.selectedProduct?.fabrikantenBCBProductViewModels != null) {
388
- if (this.FabrikantenViewModel?.selectedProduct?.fabrikantenBCBProductViewModels.length > 0) {
389
- if (this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren != null) {
390
- if (this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren.length > 0) {
391
- return true;
392
- }
393
- }
394
- }
395
- }
396
- return false;
397
- }
398
- OpenBCBLink(wuid) {
399
- this.Loading = true;
400
- var request = new BCBLinkRequestModel();
401
- request.wuid = wuid;
402
- this.FabrikantenApiClient.getBCBLink(request).subscribe((model) => {
403
- window.open(model.url, '_blank');
404
- this.Loading = false;
405
- }, (error) => {
406
- if (error.status == 400)
407
- console.log(error.json());
408
- else {
409
- console.log('An unexpected error occured');
410
- console.log(error);
411
- }
412
- this.Loading = false;
413
- });
414
- }
415
- ReloadModel(ChangeDetectorRef) {
416
- this.Init = false;
417
- this.LoadFabrikantenViewModel(ChangeDetectorRef, null);
418
- }
419
- LoadFabrikantenViewModel(ChangeDetectorRef, ActivatedRoute) {
420
- if (!this.Init) {
421
- this.Loading = true;
422
- ChangeDetectorRef.detectChanges();
423
- if (!this.SettingsLoaded) {
424
- this.LoadFabrikantenSettingsViewModel(ChangeDetectorRef, ActivatedRoute);
425
- }
426
- else {
427
- if (!this.TranslateService.Init) {
428
- this.TranslateService.LoadTranslations(ChangeDetectorRef, this, ActivatedRoute);
429
- }
430
- else {
431
- this.Init = true;
432
- var request = new FabrikantenRequestModel();
433
- if (this.FabrikantenViewModel != null) {
434
- request.sessionId = this.FabrikantenViewModel.sessionId;
435
- }
436
- else {
437
- request.sessionId = "";
438
- }
439
- this.FabrikantenApiClient.getFabrikantenViewModel(request).subscribe((model) => {
440
- this.FabrikantenViewModel = model;
441
- this.SelectedPhoto = 0;
442
- this.Loading = false;
443
- ChangeDetectorRef.detectChanges();
444
- this.TriggerReloads(ChangeDetectorRef);
445
- if (this.ProcessParameters(ActivatedRoute, ChangeDetectorRef)) {
446
- this.NavigateService.RefreshPage();
447
- this.Loaded = true;
448
- }
449
- }, (error) => {
450
- if (error.status == 400)
451
- console.log(error.json());
452
- else {
453
- console.log('An unexpected error occured');
454
- console.log(error);
455
- }
456
- this.Loading = false;
457
- ChangeDetectorRef.detectChanges();
458
- });
459
- }
460
- }
461
- }
462
- }
463
- LoadFabrikantenSettingsViewModel(ChangeDetectorRef, ActivatedRoute) {
464
- if (!this.SettingsLoaded) {
465
- this.Loading = true;
466
- ChangeDetectorRef.detectChanges();
467
- this.FabrikantenApiClient.getFabrikantenSettingsViewModel().subscribe((model) => {
468
- this.FabrikantenSettingsViewModel = model;
469
- this.Loading = false;
470
- this.SettingsLoaded = true;
471
- ChangeDetectorRef.detectChanges();
472
- if (this.FabrikantenSettingsViewModel.customRedirect != null && this.FabrikantenSettingsViewModel.customRedirect != "") {
473
- window.location.href = this.FabrikantenSettingsViewModel.customRedirect;
474
- }
475
- else {
476
- this.LoadFabrikantenViewModel(ChangeDetectorRef, ActivatedRoute);
477
- }
478
- }, (error) => {
479
- if (error.status == 400)
480
- console.log(error.json());
481
- else {
482
- console.log('An unexpected error occured');
483
- console.log(error);
484
- }
485
- this.Loading = false;
486
- ChangeDetectorRef.detectChanges();
487
- });
488
- }
489
- }
490
- ProcessParameters(ActivatedRoute, ChangeDetectorRef) {
491
- if (ActivatedRoute != null) {
492
- var productname = ActivatedRoute.snapshot.paramMap.get("product");
493
- if (this.FabrikantenViewModel.products != null) {
494
- var product = null;
495
- for (var i = 0; i < this.FabrikantenViewModel.products.length; i++) {
496
- if (this.FabrikantenViewModel.products[i].urlName == productname) {
497
- product = this.FabrikantenViewModel.products[i];
498
- break;
499
- }
500
- }
501
- if (product != null) {
502
- this.SelectProduct(product, ChangeDetectorRef);
503
- return false;
504
- }
505
- }
506
- }
507
- return true;
508
- }
509
- ResetTabs() {
510
- if (this.FabrikantenSettingsViewModel.startTab != null) {
511
- this.SelectedTab = this.FabrikantenSettingsViewModel.startTab;
512
- }
513
- else if (this.FabrikantenSettingsViewModel.hideInformationTab) {
514
- this.SelectedTab = "3D";
515
- }
516
- else {
517
- this.SelectedTab = "Informatie";
518
- }
519
- if (this.FabrikantenSettingsViewModel.hideInformationTab) {
520
- if (this.SelectedTab == "3D") {
521
- this.SelectedTabIndex = 0;
522
- }
523
- if (this.SelectedTab == "2D") {
524
- this.SelectedTabIndex = 1;
525
- }
526
- if (this.SelectedTab == "Bestek") {
527
- this.SelectedTabIndex = 2;
528
- }
529
- }
530
- else {
531
- if (this.SelectedTab == "Informatie") {
532
- this.SelectedTabIndex = 0;
533
- }
534
- if (this.SelectedTab == "3D") {
535
- this.SelectedTabIndex = 1;
536
- }
537
- if (this.SelectedTab == "2D") {
538
- this.SelectedTabIndex = 2;
539
- }
540
- if (this.SelectedTab == "Bestek") {
541
- this.SelectedTabIndex = 3;
542
- }
543
- }
544
- }
545
- // Dynamic models
546
- GetDynamicDisplayValues() {
547
- if (this.FabrikantenViewModel != null) {
548
- if (this.WebGLService.Fabrikanten3DViewModel != null && this.WebGLService.Fabrikanten3DViewModel.checksum == this.FabrikantenViewModel.checksum) {
549
- if (this.WebGLService.Fabrikanten3DViewModel.dynamicDisplayValues != null) {
550
- return this.WebGLService.Fabrikanten3DViewModel.dynamicDisplayValues;
551
- }
552
- }
553
- if (this.SVGService.FabrikantenSVGViewModel != null && this.SVGService.FabrikantenSVGViewModel.checksum == this.FabrikantenViewModel.checksum) {
554
- if (this.SVGService.FabrikantenSVGViewModel.dynamicDisplayValues != null) {
555
- return this.SVGService.FabrikantenSVGViewModel.dynamicDisplayValues;
556
- }
557
- }
558
- if (this.BestekService.FabrikantenBestekViewModel != null && this.BestekService.FabrikantenBestekViewModel.checksum == this.FabrikantenViewModel.checksum) {
559
- if (this.BestekService.FabrikantenBestekViewModel.dynamicDisplayValues != null) {
560
- return this.BestekService.FabrikantenBestekViewModel.dynamicDisplayValues;
561
- }
562
- }
563
- }
564
- return new Array();
565
- }
566
- ProcessDynamicModels() {
567
- if (this.FabrikantenViewModel != null) {
568
- if (this.WebGLService.Fabrikanten3DViewModel != null && this.WebGLService.Fabrikanten3DViewModel.checksum == this.FabrikantenViewModel.checksum) {
569
- if (this.WebGLService.Fabrikanten3DViewModel.dynamicFilters != null) {
570
- this.ProcessDynamicFilters(this.WebGLService.Fabrikanten3DViewModel.dynamicFilters);
571
- }
572
- if (this.WebGLService.Fabrikanten3DViewModel.dynamicRangeInputs != null) {
573
- this.ProcessDynamicRangeInputs(this.WebGLService.Fabrikanten3DViewModel.dynamicRangeInputs);
574
- }
575
- }
576
- else if (this.SVGService.FabrikantenSVGViewModel != null && this.SVGService.FabrikantenSVGViewModel.checksum == this.FabrikantenViewModel.checksum) {
577
- if (this.SVGService.FabrikantenSVGViewModel.dynamicFilters != null) {
578
- this.ProcessDynamicFilters(this.SVGService.FabrikantenSVGViewModel.dynamicFilters);
579
- }
580
- if (this.SVGService.FabrikantenSVGViewModel.dynamicRangeInputs != null) {
581
- this.ProcessDynamicRangeInputs(this.SVGService.FabrikantenSVGViewModel.dynamicRangeInputs);
582
- }
583
- }
584
- else if (this.BestekService.FabrikantenBestekViewModel != null && this.BestekService.FabrikantenBestekViewModel.checksum == this.FabrikantenViewModel.checksum) {
585
- if (this.BestekService.FabrikantenBestekViewModel.dynamicFilters != null) {
586
- this.ProcessDynamicFilters(this.BestekService.FabrikantenBestekViewModel.dynamicFilters);
587
- }
588
- if (this.BestekService.FabrikantenBestekViewModel.dynamicRangeInputs != null) {
589
- this.ProcessDynamicRangeInputs(this.BestekService.FabrikantenBestekViewModel.dynamicRangeInputs);
590
- }
591
- }
592
- }
593
- }
594
- ProcessDynamicFilters(filters) {
595
- if (this.FabrikantenViewModel.inputs != null) {
596
- for (var i = 0; i < filters.length; i++) {
597
- var array = filters[i].filters;
598
- if (array != null) {
599
- for (var p = 0; p < array.length; p++) {
600
- for (var j = 0; j < this.FabrikantenViewModel.inputs.length; j++) {
601
- if (array[p].filterId == this.FabrikantenViewModel.inputs[j].filter?.id) {
602
- var options = this.FabrikantenViewModel.inputs[j].filter?.options;
603
- var allowedarray = array[p].filterOptionsAllowed;
604
- if (options != null && allowedarray != null) {
605
- for (var k = 0; k < options.length; k++) {
606
- var allowed = false;
607
- for (var l = 0; l < allowedarray.length; l++) {
608
- if (allowedarray[l] == options[k].id) {
609
- allowed = true;
610
- break;
611
- }
612
- }
613
- if (!allowed) {
614
- options[k].hidden = true;
615
- console.log("disable: " + options[k].name);
616
- }
617
- }
618
- }
619
- }
620
- }
621
- }
622
- }
623
- }
624
- }
625
- }
626
- ProcessDynamicRangeInputs(rangeinputs) {
627
- if (this.FabrikantenViewModel.inputs != null) {
628
- for (var i = 0; i < rangeinputs.length; i++) {
629
- var array = rangeinputs[i].rangeInputs;
630
- if (array != null) {
631
- for (var p = 0; p < array.length; p++) {
632
- for (var j = 0; j < this.FabrikantenViewModel.inputs.length; j++) {
633
- if (array[p] == this.FabrikantenViewModel.inputs[j].range?.id) {
634
- console.log('bereik rangeinput:' + this.FabrikantenViewModel.inputs[j].range?.name);
635
- var rangeobject = this.FabrikantenViewModel.inputs[j].range;
636
- if (rangeobject != null) {
637
- rangeobject.inclusiefMinimum = rangeinputs[i].inclusiefMinimum;
638
- rangeobject.minimum = rangeinputs[i].minimum;
639
- rangeobject.inclusiefMaximum = rangeinputs[i].inclusiefMaximum;
640
- rangeobject.maximum = rangeinputs[i].maximum;
641
- }
642
- }
643
- }
644
- }
645
- }
646
- }
647
- }
648
- }
649
- // Downloads
650
- DownloadARKEYAdomi(custombcbeboid) {
651
- this.DownloadARKEYAdomiLoading = true;
652
- var request = new FabrikantenFileRequestModel();
653
- request.sessionId = this.FabrikantenViewModel.sessionId;
654
- request.fileType = "dhg";
655
- request.model3D = true;
656
- request.customBCBEBOId = custombcbeboid;
657
- if (this.StatisticsService.Active) {
658
- if (this.FabrikantenViewModel?.selectedProduct != null) {
659
- this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
660
- }
661
- }
662
- this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
663
- this.StartDownload(model.file + "", ".dhg");
664
- this.DownloadARKEYAdomiLoading = false;
665
- }, (error) => {
666
- if (error.status == 400)
667
- console.log(error.json());
668
- else {
669
- console.log('An unexpected error occured');
670
- console.log(error);
671
- }
672
- });
673
- }
674
- DownloadIFC(custombcbeboid) {
675
- this.DownloadIFCLoading = true;
676
- var request = new FabrikantenFileRequestModel();
677
- request.sessionId = this.FabrikantenViewModel.sessionId;
678
- request.fileType = "ifc";
679
- request.model3D = true;
680
- request.customBCBEBOId = custombcbeboid;
681
- if (this.StatisticsService.Active) {
682
- if (this.FabrikantenViewModel?.selectedProduct != null) {
683
- this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
684
- }
685
- }
686
- this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
687
- this.StartDownload(model.file + "", ".ifc");
688
- this.DownloadIFCLoading = false;
689
- }, (error) => {
690
- if (error.status == 400)
691
- console.log(error.json());
692
- else {
693
- console.log('An unexpected error occured');
694
- console.log(error);
695
- }
696
- });
697
- }
698
- DownloadRevitPlugin(custombcbeboid) {
699
- this.DownloadRevitPluginLoading = false;
700
- var request = new FabrikantenFileRequestModel();
701
- request.sessionId = this.FabrikantenViewModel.sessionId;
702
- request.fileType = "hdhRevit";
703
- request.model3D = true;
704
- request.customBCBEBOId = custombcbeboid;
705
- if (this.StatisticsService.Active) {
706
- if (this.FabrikantenViewModel?.selectedProduct != null) {
707
- this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
708
- }
709
- }
710
- this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
711
- window.location.href = model.file + "";
712
- this.DownloadRevitPluginLoading = false;
713
- }, (error) => {
714
- if (error.status == 400)
715
- console.log(error.json());
716
- else {
717
- console.log('An unexpected error occured');
718
- console.log(error);
719
- }
720
- });
721
- }
722
- Download3DAutoCADDwg(custombcbeboid) {
723
- this.Download3DAutoCADDwgLoading = true;
724
- var request = new FabrikantenFileRequestModel();
725
- request.sessionId = this.FabrikantenViewModel.sessionId;
726
- request.fileType = "dwg";
727
- request.model3D = true;
728
- request.customBCBEBOId = custombcbeboid;
729
- if (this.StatisticsService.Active) {
730
- if (this.FabrikantenViewModel?.selectedProduct != null) {
731
- this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
732
- }
733
- }
734
- this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
735
- this.StartDownload(model.file + "", ".dwg");
736
- this.Download3DAutoCADDwgLoading = false;
737
- }, (error) => {
738
- if (error.status == 400)
739
- console.log(error.json());
740
- else {
741
- console.log('An unexpected error occured');
742
- console.log(error);
743
- }
744
- });
745
- }
746
- Download3DDxf(custombcbeboid) {
747
- this.Download3DDxfLoading = true;
748
- var request = new FabrikantenFileRequestModel();
749
- request.sessionId = this.FabrikantenViewModel.sessionId;
750
- request.fileType = "dxf";
751
- request.model3D = true;
752
- request.customBCBEBOId = custombcbeboid;
753
- if (this.StatisticsService.Active) {
754
- if (this.FabrikantenViewModel?.selectedProduct != null) {
755
- this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
756
- }
757
- }
758
- this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
759
- this.StartDownload(model.file + "", ".dxf");
760
- this.Download3DDxfLoading = false;
761
- }, (error) => {
762
- if (error.status == 400)
763
- console.log(error.json());
764
- else {
765
- console.log('An unexpected error occured');
766
- console.log(error);
767
- }
768
- });
769
- }
770
- Download2DAutoCADDwg(custombcbeboid) {
771
- this.Download2DAutoCADDwgLoading = true;
772
- var request = new FabrikantenFileRequestModel();
773
- request.sessionId = this.FabrikantenViewModel.sessionId;
774
- request.fileType = "dwg";
775
- request.model3D = false;
776
- request.customBCBEBOId = custombcbeboid;
777
- if (this.StatisticsService.Active) {
778
- if (this.FabrikantenViewModel?.selectedProduct != null) {
779
- this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
780
- }
781
- }
782
- this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
783
- this.StartDownload(model.file + "", ".dwg");
784
- this.Download2DAutoCADDwgLoading = false;
785
- }, (error) => {
786
- if (error.status == 400)
787
- console.log(error.json());
788
- else {
789
- console.log('An unexpected error occured');
790
- console.log(error);
791
- }
792
- });
793
- }
794
- Download2DDxf(custombcbeboid) {
795
- this.Download2DDxfLoading = true;
796
- var request = new FabrikantenFileRequestModel();
797
- request.sessionId = this.FabrikantenViewModel.sessionId;
798
- request.fileType = "dxf";
799
- request.model3D = false;
800
- request.customBCBEBOId = custombcbeboid;
801
- if (this.StatisticsService.Active) {
802
- if (this.FabrikantenViewModel?.selectedProduct != null) {
803
- this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
804
- }
805
- }
806
- this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
807
- this.StartDownload(model.file + "", ".dxf");
808
- this.Download2DDxfLoading = false;
809
- }, (error) => {
810
- if (error.status == 400)
811
- console.log(error.json());
812
- else {
813
- console.log('An unexpected error occured');
814
- console.log(error);
815
- }
816
- });
817
- }
818
- DownloadRFA(custombcbeboid, webview2) {
819
- this.DownloadRFALoading = true;
820
- var request = new FabrikantenFileRequestModel();
821
- request.sessionId = this.FabrikantenViewModel.sessionId;
822
- request.fileType = "rfa";
823
- request.model3D = false;
824
- request.webView2 = webview2;
825
- request.customBCBEBOId = custombcbeboid;
826
- if (this.StatisticsService.Active) {
827
- if (this.FabrikantenViewModel?.selectedProduct != null) {
828
- this.StatisticsService.DownloadFile(request.fileType, this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
829
- }
830
- }
831
- this.FabrikantenApiClient.getFabrikantenFileViewModel(request).subscribe((model) => {
832
- if (model.customRFAZip) {
833
- if (this.IsInWebViewBrowser()) {
834
- this.PostWebview2Message(model);
835
- }
836
- else {
837
- this.StartDownload(model.file + "", ".zip");
838
- }
839
- }
840
- else {
841
- if (model.rvtExtension) {
842
- this.StartDownload(model.file + "", ".rvt");
843
- }
844
- else {
845
- if (this.IsInWebViewBrowser()) {
846
- this.PostWebview2Message(model);
847
- }
848
- else {
849
- this.StartDownload(model.file + "", ".rfa");
850
- }
851
- }
852
- }
853
- this.DownloadRFALoading = false;
854
- }, (error) => {
855
- if (error.status == 400)
856
- console.log(error.json());
857
- else {
858
- console.log('An unexpected error occured');
859
- console.log(error);
860
- }
861
- });
862
- }
863
- PostWebview2Message(model) {
864
- var action = "download";
865
- var file = model.file + "";
866
- var filename = this.CollectFileName();
867
- var parametersnames = model.revitParametersNames;
868
- var parametersvalues = model.revitParametersValues;
869
- window.chrome.webview.postMessage({ action, file, filename, parametersnames, parametersvalues });
870
- }
871
- IsInWebViewBrowser() {
872
- if (window != undefined) {
873
- if (window.chrome != undefined) {
874
- if (window.chrome.webview != undefined) {
875
- return true;
876
- }
877
- }
878
- }
879
- return false;
880
- }
881
- StartDownload(url, extension) {
882
- var filename = this.CollectFileName();
883
- if (this.FabrikantenSettingsViewModel.disableCustomFileNames) {
884
- filename = url.substring(url.lastIndexOf('\\') + 1);
885
- }
886
- if (filename != "") {
887
- filename = filename + extension;
888
- window.location.href = "/Download/Download?pUrl=" + url + "&pFileName=" + filename;
889
- }
890
- else {
891
- alert('error: no product selected');
892
- }
893
- }
894
- DownloadBestek(data) {
895
- if (this.BestekService.TypeBestek == "STABU") {
896
- this.DownloadBestekInner(data, ".S01");
897
- }
898
- if (this.BestekService.TypeBestek == "OSF") {
899
- this.DownloadBestekInner(data, ".txt");
900
- }
901
- if (this.BestekService.TypeBestek == "Vrij") {
902
- this.DownloadBestekInner(data, ".txt");
903
- }
904
- if (this.StatisticsService.Active) {
905
- if (this.FabrikantenViewModel?.selectedProduct != null) {
906
- this.StatisticsService.DownloadFile("bestek", this.TranslateService.GetActiveValueProduct(this.FabrikantenViewModel.selectedProduct.id));
907
- }
908
- }
909
- }
910
- DownloadBestekInner(data, extension) {
911
- var c = document.createElement("a");
912
- c.download = this.CollectFileName() + extension;
913
- var t = new Blob([data], {
914
- type: "text/plain"
915
- });
916
- c.href = window.URL.createObjectURL(t);
917
- c.click();
918
- }
919
- CollectFileName() {
920
- var filename = "";
921
- if (this.SelectedTab == "3D") {
922
- if (this.WebGLService.Fabrikanten3DViewModel != null) {
923
- filename = this.WebGLService.Fabrikanten3DViewModel.instantieNaam + "";
924
- }
925
- }
926
- if (this.SelectedTab == "2D") {
927
- if (this.SVGService.FabrikantenSVGViewModel != null) {
928
- filename = this.SVGService.FabrikantenSVGViewModel.instantieNaam + "";
929
- }
930
- }
931
- if (this.SelectedTab == "Bestek") {
932
- if (this.BestekService.FabrikantenBestekViewModel != null) {
933
- filename = this.BestekService.FabrikantenBestekViewModel.instantieNaam + "";
934
- }
935
- }
936
- if (this.SelectedTab == "Toebehoren") {
937
- if (this.GetSelectedToebehoren() != null) {
938
- filename = this.GetSelectedToebehoren()?.name + "";
939
- }
940
- }
941
- if (filename == "" && this.FabrikantenViewModel?.selectedProduct?.id != null) {
942
- var id = this.FabrikantenViewModel?.selectedProduct?.id;
943
- filename = this.TranslateService.GetActiveValueProduct(id);
944
- }
945
- filename = filename.replace(/[^a-z0-9]/gi, '_');
946
- return filename;
947
- }
948
- // Reloads
949
- TriggerReloads(ChangeDetectorRef) {
950
- if (!this.ShowRequired()) {
951
- var array = this.FabrikantenViewModel.selectedProduct?.fabrikantenBCBProductViewModels;
952
- if (array != null && (array.length == 1 || this.FabrikantenSettingsViewModel.alwaysShowVariant)) {
953
- if (this.SelectedTab == "Bestek") {
954
- if (this.FabrikantenViewModel.checksum != this.BestekService.FabrikantenBestekViewModel?.checksum) {
955
- this.BestekService.LoadFabrikantenBestekViewModel(this.FabrikantenViewModel.sessionId, ChangeDetectorRef);
956
- }
957
- }
958
- else if (this.SelectedTab == "3D") {
959
- if (this.FabrikantenViewModel.checksum != this.WebGLService.Fabrikanten3DViewModel?.checksum) {
960
- this.WebGLService.LoadFabrikanten3DViewModel(this.FabrikantenViewModel.sessionId, ChangeDetectorRef);
961
- }
962
- }
963
- else if (this.SelectedTab == "2D") {
964
- if (this.FabrikantenViewModel.checksum != this.SVGService.FabrikantenSVGViewModel?.checksum) {
965
- this.SVGService.LoadFabrikantenSVGViewModel(this.FabrikantenViewModel.sessionId, ChangeDetectorRef);
966
- }
967
- }
968
- else if (this.SelectedTab == "Texture") {
969
- this.TextureService.LoadFabrikantenTextureViewModel(this.FabrikantenViewModel.sessionId, ChangeDetectorRef);
970
- }
971
- else if (this.SelectedTab == "Toebehoren") {
972
- //this.ToebehorenService.LoadFabrikantenToebehorenViewModel(this.FabrikantenViewModel.sessionId as string, ChangeDetectorRef);
973
- }
974
- }
975
- }
976
- }
977
- // Breadcrumb
978
- GetSteps() {
979
- var returnarray = new Array();
980
- var array = this.FabrikantenViewModel?.categoryLayers;
981
- if (array != null) {
982
- for (var i = 0; i < array.length; i++) {
983
- if (array[i].selectedOption != 0) {
984
- var options = array[i].categories;
985
- if (options != null) {
986
- for (var j = 0; j < options.length; j++) {
987
- if (options[j].id === array[i].selectedOption) {
988
- returnarray.push(options[j]);
989
- }
990
- }
991
- }
992
- }
993
- else {
994
- break;
995
- }
996
- }
997
- }
998
- return returnarray;
999
- }
1000
- GetSelectedToebehoren() {
1001
- var toebehoren = null;
1002
- if (this.FabrikantenViewModel.selectedProduct?.fabrikantenBCBProductViewModels != null &&
1003
- this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels.length > 0 &&
1004
- this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren != null &&
1005
- this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren.length > 0) {
1006
- for (var i = 0; i < this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren.length; i++) {
1007
- if (this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren[i].id == this.SelectedToebehoren?.id) {
1008
- toebehoren = this.FabrikantenViewModel.selectedProduct.fabrikantenBCBProductViewModels[0].bcbProductToebehoren[i];
1009
- }
1010
- }
1011
- }
1012
- return toebehoren;
1013
- }
1014
- }
1015
- FabrikantenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: FabrikantenService, deps: [{ token: i1.FabrikantenApiClient }, { token: i2.BestekService }, { token: i3.TranslateService }, { token: i4.WebGLService }, { token: i5.SVGService }, { token: i6.TextureService }, { token: i7.NavigateService }, { token: i8.Router }, { token: i9.StatisticsService }], target: i0.ɵɵFactoryTarget.Injectable });
1016
- FabrikantenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: FabrikantenService, providedIn: 'root' });
1017
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: FabrikantenService, decorators: [{
1018
- type: Injectable,
1019
- args: [{ providedIn: 'root' }]
1020
- }], ctorParameters: function () { return [{ type: i1.FabrikantenApiClient }, { type: i2.BestekService }, { type: i3.TranslateService }, { type: i4.WebGLService }, { type: i5.SVGService }, { type: i6.TextureService }, { type: i7.NavigateService }, { type: i8.Router }, { type: i9.StatisticsService }]; } });
1021
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmlrYW50ZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvZmFicmlrYW50ZW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUc5RCxPQUFPLEVBU0wsdUJBQXVCLEVBRXZCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsNkJBQTZCLEVBQzdCLHlCQUF5QixFQUl6QixtQkFBbUIsRUFFbkIsMkJBQTJCLEVBRTNCLG1CQUFtQixFQUNwQixNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7OztBQWlCbEMsTUFBTSxPQUFPLGtCQUFrQjtJQTRCN0IsWUFDVSxvQkFBMEMsRUFDMUMsYUFBNEIsRUFDNUIsZ0JBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLGVBQWdDLEVBQ2hDLE1BQWMsRUFDZCxpQkFBb0M7UUFScEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQXBDdEMsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUV2QixZQUFPLEdBQVksSUFBSSxDQUFDO1FB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Q2hhbmdlRGV0ZWN0b3JSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQge1xyXG4gIEZhYnJpa2FudGVuQXBpQ2xpZW50LFxyXG4gIEZhYnJpa2FudGVuRmlsdGVyVmlld01vZGVsLFxyXG4gIEZhYnJpa2FudGVuVmlld01vZGVsLFxyXG4gIEZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwsXHJcbiAgRmFicmlrYW50ZW5Qcm9kdWN0Vmlld01vZGVsLFxyXG4gIEZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbCxcclxuICBGYWJyaWthbnRlbkNhdGVnb3J5TGF5ZXJWaWV3TW9kZWwsXHJcbiAgRmFicmlrYW50ZW5CQ0JQcm9kdWN0VG9lYmVob3JlblZpZXdNb2RlbCxcclxuICBGYWJyaWthbnRlblJlcXVlc3RNb2RlbCxcclxuICBGYWJyaWthbnRlbkNhdGVnb3J5Vmlld01vZGVsLFxyXG4gIFNlbGVjdFByb2R1Y3RSZXF1ZXN0LFxyXG4gIFNlbGVjdEJDQlByb2R1Y3RSZXF1ZXN0LFxyXG4gIFNlbGVjdEZpbHRlck9wdGlvblJlcXVlc3QsXHJcbiAgU2VsZWN0Q2F0ZWdvcnlSZXF1ZXN0LFxyXG4gIFNldFJhbmdlSW5wdXRSZXF1ZXN0LFxyXG4gIFJlc2V0RmlsdGVyUmVxdWVzdCxcclxuICBSZXNldEFsbEZpbHRlcnNSZXF1ZXN0LFxyXG4gIFJlc2V0Q2F0ZWdvcnlMYXllclJlcXVlc3QsXHJcbiAgUmVtb3ZlUHJvZHVjdFNlbGVjdGlvblJlcXVlc3QsXHJcbiAgUmVzZXRBbGxDYXRlZ29yaWVzUmVxdWVzdCxcclxuICBEeW5hbWljRmlsdGVyc1ZpZXdNb2RlbCxcclxuICBEeW5hbWljUmFuZ2VJbnB1dFZpZXdNb2RlbCxcclxuICBEeW5hbWljRGlzcGxheVZhbHVlVmlld01vZGVsLFxyXG4gIEJDQkxpbmtSZXF1ZXN0TW9kZWwsXHJcbiAgQkNCTGlua1Jlc3BvbnNlTW9kZWwsXHJcbiAgRmFicmlrYW50ZW5GaWxlUmVxdWVzdE1vZGVsLFxyXG4gIEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbCxcclxuICBTZWxlY3RDb2xvdXJSZXF1ZXN0XHJcbn0gZnJvbSAnLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQmVzdGVrU2VydmljZSB9IGZyb20gJy4vYmVzdGVrLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0ZVNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdGF0aXN0aWNzU2VydmljZSB9IGZyb20gJy4vc3RhdGlzdGljcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU1ZHU2VydmljZSB9IGZyb20gJy4vc3ZnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZXh0dXJlU2VydmljZSB9IGZyb20gJy4vdGV4dHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVG9lYmVob3JlblNlcnZpY2UgfSBmcm9tICcuL3RvZWJlaG9yZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2ViR0xTZXJ2aWNlIH0gZnJvbSAnLi93ZWJnbC5zZXJ2aWNlJztcclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHtcclxuICAgIGNocm9tZT86IGFueTtcclxuICB9XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBGYWJyaWthbnRlblNlcnZpY2Uge1xyXG4gIHByaXZhdGUgSW5pdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIERvd25sb2FkQVJLRVlBZG9taUxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgRG93bmxvYWRJRkNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIERvd25sb2FkUmV2aXRQbHVnaW5Mb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIERvd25sb2FkM0RBdXRvQ0FERHdnTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBEb3dubG9hZDNERHhmTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBEb3dubG9hZDJEQXV0b0NBRER3Z0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgRG93bmxvYWQyRER4ZkxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgRG93bmxvYWRSRkFMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RlZFRhYkluZGV4OiBudW1iZXIgPSAwO1xyXG5cclxuICBwdWJsaWMgRmFicmlrYW50ZW5WaWV3TW9kZWw6IEZhYnJpa2FudGVuVmlld01vZGVsO1xyXG5cclxuICBwdWJsaWMgU2V0dGluZ3NMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbDogRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbDtcclxuXHJcbiAgcHVibGljIFNlbGVjdGVkUGhvdG86IG51bWJlciA9IDA7XHJcbiAgcHVibGljIFNlbGVjdGVkVG9lYmVob3JlbjogRmFicmlrYW50ZW5CQ0JQcm9kdWN0VG9lYmVob3JlblZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIFNlbGVjdGVkVGFiU2V0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIFNlbGVjdGVkVGFiOiBzdHJpbmcgPSBcIkluZm9ybWF0aWVcIjtcclxuXHJcbiAgcHVibGljIExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgRmFicmlrYW50ZW5BcGlDbGllbnQ6IEZhYnJpa2FudGVuQXBpQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBCZXN0ZWtTZXJ2aWNlOiBCZXN0ZWtTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBXZWJHTFNlcnZpY2U6IFdlYkdMU2VydmljZSxcclxuICAgIHByaXZhdGUgU1ZHU2VydmljZTogU1ZHU2VydmljZSxcclxuICAgIHByaXZhdGUgVGV4dHVyZVNlcnZpY2U6IFRleHR1cmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBOYXZpZ2F0ZVNlcnZpY2U6IE5hdmlnYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgUm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIFN0YXRpc3RpY3NTZXJ2aWNlOiBTdGF0aXN0aWNzU2VydmljZSkge1xyXG4gICAgdGhpcy5OYXZpZ2F0ZVNlcnZpY2UuRmFicmlrYW50ZW5TZXJ2aWNlID0gdGhpcztcclxuICAgIHRoaXMuU1ZHU2VydmljZS5GYWJyaWthbnRlblNlcnZpY2UgPSB0aGlzO1xyXG4gICAgdGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW5TZXJ2aWNlID0gdGhpcztcclxuICAgIHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlblNlcnZpY2UgPSB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlc2V0QWxsRmlsdGVycyhDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVzZXRBbGxGaWx0ZXJzUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnJlc2V0QWxsRmlsdGVycyhyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLlJlbG9hZE1vZGVsKENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGVjdE9wdGlvbihmaWx0ZXJpZDogbnVtYmVyLCBmaWx0ZXJvcHRpb25pZDogbnVtYmVyLCBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgU2VsZWN0RmlsdGVyT3B0aW9uUmVxdWVzdCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0LmZpbHRlck9wdGlvbklkID0gZmlsdGVyb3B0aW9uaWQ7XHJcbiAgICByZXF1ZXN0LmZpbHRlcklkID0gZmlsdGVyaWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuQWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuU2VsZWN0RmlsdGVyT3B0aW9uKHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZUZpbHRlcihmaWx0ZXJpZCkgKyBcIjogXCIgKyB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVGaWx0ZXJPcHRpb24oZmlsdGVyb3B0aW9uaWQpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnNlbGVjdEZpbHRlck9wdGlvbihyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLlJlbG9hZE1vZGVsKENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGVjdENvbG91cihmaWx0ZXJpZDogbnVtYmVyLCBjb2xvdXI6IHN0cmluZywgY29sb3VydmFsdWU6IHN0cmluZywgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFNlbGVjdENvbG91clJlcXVlc3QoKTtcclxuXHJcbiAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgcmVxdWVzdC5jb2xvdXJOYW1lID0gY29sb3VyO1xyXG4gICAgcmVxdWVzdC5jb2xvdXJWYWx1ZSA9IGNvbG91cnZhbHVlO1xyXG4gICAgcmVxdWVzdC5maWx0ZXJJZCA9IGZpbHRlcmlkO1xyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuc2VsZWN0Q29sb3VyKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuUmVsb2FkTW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2V0UmFuZ2VJbnB1dChyYW5nZWlucHV0aWQ6IG51bWJlciwgdmFsdWU6IG51bWJlciwgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFNldFJhbmdlSW5wdXRSZXF1ZXN0KCk7XHJcblxyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuICAgIHJlcXVlc3QucmFuZ2VJbnB1dElkID0gcmFuZ2VpbnB1dGlkO1xyXG4gICAgcmVxdWVzdC52YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLlNlbGVjdFJhbmdlVmFsdWUodGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlUmFuZ2VJbnB1dChyYW5nZWlucHV0aWQpICsgXCI6IFwiICsgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuc2V0UmFuZ2VJbnB1dChyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLlJlbG9hZE1vZGVsKENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEZvcmNlU2VsZWN0Q2F0ZWdvcnkoY2F0ZWdvcnlpZDogbnVtYmVyLCBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlc2V0QWxsQ2F0ZWdvcmllc1JlcXVlc3QoKTtcclxuXHJcbiAgICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcblxyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnJlc2V0QWxsQ2F0ZWdvcmllcyhyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHZhciByZXF1ZXN0Y2F0ID0gbmV3IFNlbGVjdENhdGVnb3J5UmVxdWVzdCgpO1xyXG5cclxuICAgICAgICByZXF1ZXN0Y2F0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgICAgIHJlcXVlc3RjYXQuY2F0ZWdvcnlJZCA9IGNhdGVnb3J5aWQ7XHJcbiAgICAgICAgcmVxdWVzdGNhdC5jYXRlZ29yeUxheWVyID0gMDtcclxuXHJcbiAgICAgICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5zZWxlY3RDYXRlZ29yeShyZXF1ZXN0Y2F0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5SZWxvYWRNb2RlbChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIFNlbGVjdENhdGVnb3J5KGNhdGVnb3J5OiBGYWJyaWthbnRlbkNhdGVnb3J5Vmlld01vZGVsLCBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgU2VsZWN0Q2F0ZWdvcnlSZXF1ZXN0KCk7XHJcblxyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuICAgIHJlcXVlc3QuY2F0ZWdvcnlJZCA9IGNhdGVnb3J5LmlkO1xyXG4gICAgcmVxdWVzdC5jYXRlZ29yeUxheWVyID0gY2F0ZWdvcnkubGF5ZXI7XHJcblxyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuQWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuU2VsZWN0Q2F0ZWdvcnkodGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlQ2F0ZWdvcnkoY2F0ZWdvcnkuaWQpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnNlbGVjdENhdGVnb3J5KHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuUmVsb2FkTW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2VsZWN0UHJvZHVjdChwcm9kdWN0OiBGYWJyaWthbnRlblByb2R1Y3RWaWV3TW9kZWwsIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBTZWxlY3RQcm9kdWN0UmVxdWVzdCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0LnByb2R1Y3RJZCA9IHByb2R1Y3QuaWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuQWN0aXZlKSB7XHJcbiAgICAgIHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuU2VsZWN0UHJvZHVjdCh0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVQcm9kdWN0KHByb2R1Y3QuaWQpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnNlbGVjdFByb2R1Y3QocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5TZWxlY3RlZFRvZWJlaG9yZW4gPSBudWxsO1xyXG4gICAgICB0aGlzLlJlc2V0VGFicygpO1xyXG5cclxuICAgICAgdGhpcy5SZWxvYWRNb2RlbChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RCQ0JQcm9kdWN0KGJjYnByb2R1Y3Q6IEZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbCwgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFNlbGVjdEJDQlByb2R1Y3RSZXF1ZXN0KCk7XHJcblxyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuICAgIHJlcXVlc3QuYmNiUHJvZHVjdElkID0gYmNicHJvZHVjdC5pZDtcclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnNlbGVjdEJDQlByb2R1Y3QocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5SZWxvYWRNb2RlbChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZXNldFNlbGVjdGlvbkZpbHRlcihmaWx0ZXI6IEZhYnJpa2FudGVuRmlsdGVyVmlld01vZGVsLCBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVzZXRGaWx0ZXJSZXF1ZXN0KCk7XHJcbiAgICByZXF1ZXN0LmZpbHRlcklkID0gZmlsdGVyLmlkO1xyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LnJlc2V0RmlsdGVyU2VsZWN0aW9uKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuUmVsb2FkTW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVzZXRBbGxDYXRlZ29yaWVzKENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVzZXRBbGxDYXRlZ29yaWVzUmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuXHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQucmVzZXRBbGxDYXRlZ29yaWVzKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5SZWxvYWRNb2RlbChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlc2V0U2VsZWN0aW9uQ2F0ZWdvcnkoY2F0ZWdvcnlsYXllcjogRmFicmlrYW50ZW5DYXRlZ29yeVZpZXdNb2RlbCwgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlc2V0Q2F0ZWdvcnlMYXllclJlcXVlc3QoKTtcclxuICAgIHJlcXVlc3QuY2F0ZWdvcnlMYXllciA9IGNhdGVnb3J5bGF5ZXIubGF5ZXI7XHJcbiAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQucmVzZXRDYXRlZ29yeUxheWVyU2VsZWN0aW9uKHJlcXVlc3QpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuUmVzZXRBbGxGaWx0ZXJzKENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlbW92ZVByb2R1Y3RTZWxlY3Rpb24oQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZW1vdmVQcm9kdWN0U2VsZWN0aW9uUmVxdWVzdCgpO1xyXG5cclxuICAgICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuXHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQucmVtb3ZlUHJvZHVjdFNlbGVjdGlvbihyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRUb2ViZWhvcmVuID0gbnVsbDtcclxuICAgICAgICB0aGlzLlJlc2V0VGFicygpO1xyXG5cclxuICAgICAgICB0aGlzLlJlbG9hZE1vZGVsKENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgVGFiU2VsZWN0aW9uQ2hhbmdlZCh0YWI6IHN0cmluZywgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICB0aGlzLlNlbGVjdGVkVGFiID0gdGFiO1xyXG5cclxuICAgIHRoaXMuVHJpZ2dlclJlbG9hZHMoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEZpcnN0T3BlbkNhdGVnb3J5TGF5ZXIoKTogRmFicmlrYW50ZW5DYXRlZ29yeUxheWVyVmlld01vZGVsIHwgbnVsbCB7XHJcbiAgICB2YXIgYXJyYXlsYXllcnMgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsPy5jYXRlZ29yeUxheWVycztcclxuXHJcbiAgICBpZiAoYXJyYXlsYXllcnMgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5bGF5ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFycmF5bGF5ZXJzW2ldLnNlbGVjdGVkT3B0aW9uID09IDApIHtcclxuICAgICAgICAgIHJldHVybiBhcnJheWxheWVyc1tpXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93Q2F0ZWdvcmllcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLkdldEZpcnN0T3BlbkNhdGVnb3J5TGF5ZXIoKSAhPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dSZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0cyAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHNbaV0ucmVxdWlyZWQgJiYgIXRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzW2ldLmZpbGxlZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dUZXh0dXJlKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0Py50ZXh0dXJlQmFzZVZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93VG9lYmVob3JlbigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWw/LmVuYWJsZVRvZWJlaG9yZW4gPT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1ZhcmlhbnRzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwgIT0gbnVsbCAmJiB0aGlzLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICBpZiAoIXRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5hbHdheXNTaG93VmFyaWFudCkge1xyXG4gICAgICAgIHZhciBiY2Jwcm9kdWN0cyA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0Py5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzO1xyXG5cclxuICAgICAgICBpZiAoYmNicHJvZHVjdHMgIT0gbnVsbCAmJiBiY2Jwcm9kdWN0cy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd0FjdGlvbk1lbnUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlNob3dWYXJpYW50cygpKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIjNEXCIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCIyRFwiKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiQmVzdGVrXCIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCJUZXh0dXJlXCIpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCJUb2ViZWhvcmVuXCIpIHtcclxuICAgICAgaWYgKHRoaXMuSGFzVG9lYmVob3JlbigpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgSGFzVG9lYmVob3JlbigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3Q/LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHMgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0Py5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuZmFicmlrYW50ZW5CQ0JQcm9kdWN0Vmlld01vZGVsc1swXS5iY2JQcm9kdWN0VG9lYmVob3JlbiAhPSBudWxsKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuZmFicmlrYW50ZW5CQ0JQcm9kdWN0Vmlld01vZGVsc1swXS5iY2JQcm9kdWN0VG9lYmVob3Jlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBPcGVuQkNCTGluayh3dWlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgQkNCTGlua1JlcXVlc3RNb2RlbCgpO1xyXG4gICAgcmVxdWVzdC53dWlkID0gd3VpZDtcclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEJDQkxpbmsocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogQkNCTGlua1Jlc3BvbnNlTW9kZWwpID0+IHtcclxuICAgICAgd2luZG93Lm9wZW4obW9kZWwudXJsLCAnX2JsYW5rJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBSZWxvYWRNb2RlbChDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHRoaXMuSW5pdCA9IGZhbHNlO1xyXG4gICAgdGhpcy5Mb2FkRmFicmlrYW50ZW5WaWV3TW9kZWwoQ2hhbmdlRGV0ZWN0b3JSZWYsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIExvYWRGYWJyaWthbnRlblZpZXdNb2RlbChDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIEFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5Jbml0KSB7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuU2V0dGluZ3NMb2FkZWQpIHtcclxuICAgICAgICB0aGlzLkxvYWRGYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsKENoYW5nZURldGVjdG9yUmVmLCBBY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuSW5pdCkge1xyXG4gICAgICAgICAgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxvYWRUcmFuc2xhdGlvbnMoQ2hhbmdlRGV0ZWN0b3JSZWYsIHRoaXMsIEFjdGl2YXRlZFJvdXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkluaXQgPSB0cnVlO1xyXG4gICAgICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5SZXF1ZXN0TW9kZWwoKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmVxdWVzdC5zZXNzaW9uSWQgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuZ2V0RmFicmlrYW50ZW5WaWV3TW9kZWwocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogRmFicmlrYW50ZW5WaWV3TW9kZWwpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbCA9IG1vZGVsO1xyXG4gICAgICAgICAgICB0aGlzLlNlbGVjdGVkUGhvdG8gPSAwO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuVHJpZ2dlclJlbG9hZHMoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuUHJvY2Vzc1BhcmFtZXRlcnMoQWN0aXZhdGVkUm91dGUsIENoYW5nZURldGVjdG9yUmVmKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuTmF2aWdhdGVTZXJ2aWNlLlJlZnJlc2hQYWdlKCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5Mb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2FkRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbChDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsIEFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSB8IG51bGwpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5TZXR0aW5nc0xvYWRlZCkge1xyXG4gICAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICBDaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwoKS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsKSA9PiB7XHJcbiAgICAgICAgdGhpcy5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuU2V0dGluZ3NMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5jdXN0b21SZWRpcmVjdCAhPSBudWxsICYmIHRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5jdXN0b21SZWRpcmVjdCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRoaXMuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5jdXN0b21SZWRpcmVjdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLkxvYWRGYWJyaWthbnRlblZpZXdNb2RlbChDaGFuZ2VEZXRlY3RvclJlZiwgQWN0aXZhdGVkUm91dGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIENoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUHJvY2Vzc1BhcmFtZXRlcnMoQWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlIHwgbnVsbCwgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoQWN0aXZhdGVkUm91dGUgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgcHJvZHVjdG5hbWUgPSBBY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJwcm9kdWN0XCIpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwucHJvZHVjdHMgIT0gbnVsbCkge1xyXG4gICAgICAgIHZhciBwcm9kdWN0OiBGYWJyaWthbnRlblByb2R1Y3RWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnByb2R1Y3RzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5wcm9kdWN0c1tpXS51cmxOYW1lID09IHByb2R1Y3RuYW1lKSB7XHJcbiAgICAgICAgICAgIHByb2R1Y3QgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnByb2R1Y3RzW2ldO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChwcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuU2VsZWN0UHJvZHVjdChwcm9kdWN0LCBDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFJlc2V0VGFicygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWwuc3RhcnRUYWIgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLlNlbGVjdGVkVGFiID0gdGhpcy5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLnN0YXJ0VGFiO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmhpZGVJbmZvcm1hdGlvblRhYikge1xyXG4gICAgICB0aGlzLlNlbGVjdGVkVGFiID0gXCIzRFwiO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuU2VsZWN0ZWRUYWIgPSBcIkluZm9ybWF0aWVcIjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmhpZGVJbmZvcm1hdGlvblRhYikge1xyXG4gICAgICBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIjNEXCIpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkVGFiSW5kZXggPSAwO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIjJEXCIpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkVGFiSW5kZXggPSAxO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIkJlc3Rla1wiKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZFRhYkluZGV4ID0gMjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiSW5mb3JtYXRpZVwiKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZFRhYkluZGV4ID0gMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCIzRFwiKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZFRhYkluZGV4ID0gMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCIyRFwiKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZFRhYkluZGV4ID0gMjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCJCZXN0ZWtcIikge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRUYWJJbmRleCA9IDM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIER5bmFtaWMgbW9kZWxzXHJcblxyXG4gIHB1YmxpYyBHZXREeW5hbWljRGlzcGxheVZhbHVlcygpOiBEeW5hbWljRGlzcGxheVZhbHVlVmlld01vZGVsW10ge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwuY2hlY2tzdW0gPT0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5jaGVja3N1bSkge1xyXG4gICAgICAgIGlmICh0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsLmR5bmFtaWNEaXNwbGF5VmFsdWVzICE9IG51bGwpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsLmR5bmFtaWNEaXNwbGF5VmFsdWVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuU1ZHU2VydmljZS5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuU1ZHU2VydmljZS5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbC5jaGVja3N1bSA9PSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmNoZWNrc3VtKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuU1ZHU2VydmljZS5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbC5keW5hbWljRGlzcGxheVZhbHVlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5TVkdTZXJ2aWNlLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsLmR5bmFtaWNEaXNwbGF5VmFsdWVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbCAhPSBudWxsICYmIHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5jaGVja3N1bSA9PSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmNoZWNrc3VtKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5keW5hbWljRGlzcGxheVZhbHVlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLmR5bmFtaWNEaXNwbGF5VmFsdWVzO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuZXcgQXJyYXk8RHluYW1pY0Rpc3BsYXlWYWx1ZVZpZXdNb2RlbD4oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBQcm9jZXNzRHluYW1pY01vZGVscygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwgIT0gbnVsbCAmJiB0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsLmNoZWNrc3VtID09IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuY2hlY2tzdW0pIHtcclxuICAgICAgICBpZiAodGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbC5keW5hbWljRmlsdGVycyAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLlByb2Nlc3NEeW5hbWljRmlsdGVycyh0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsLmR5bmFtaWNGaWx0ZXJzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLldlYkdMU2VydmljZS5GYWJyaWthbnRlbjNEVmlld01vZGVsLmR5bmFtaWNSYW5nZUlucHV0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLlByb2Nlc3NEeW5hbWljUmFuZ2VJbnB1dHModGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbC5keW5hbWljUmFuZ2VJbnB1dHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwgIT0gbnVsbCAmJiB0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwuY2hlY2tzdW0gPT0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5jaGVja3N1bSkge1xyXG4gICAgICAgIGlmICh0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwuZHluYW1pY0ZpbHRlcnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5Qcm9jZXNzRHluYW1pY0ZpbHRlcnModGhpcy5TVkdTZXJ2aWNlLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsLmR5bmFtaWNGaWx0ZXJzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwuZHluYW1pY1JhbmdlSW5wdXRzICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuUHJvY2Vzc0R5bmFtaWNSYW5nZUlucHV0cyh0aGlzLlNWR1NlcnZpY2UuRmFicmlrYW50ZW5TVkdWaWV3TW9kZWwuZHluYW1pY1JhbmdlSW5wdXRzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsICE9IG51bGwgJiYgdGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLmNoZWNrc3VtID09IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuY2hlY2tzdW0pIHtcclxuICAgICAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLmR5bmFtaWNGaWx0ZXJzICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuUHJvY2Vzc0R5bmFtaWNGaWx0ZXJzKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbC5keW5hbWljRmlsdGVycyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLmR5bmFtaWNSYW5nZUlucHV0cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLlByb2Nlc3NEeW5hbWljUmFuZ2VJbnB1dHModGhpcy5CZXN0ZWtTZXJ2aWNlLkZhYnJpa2FudGVuQmVzdGVrVmlld01vZGVsLmR5bmFtaWNSYW5nZUlucHV0cyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIFByb2Nlc3NEeW5hbWljRmlsdGVycyhmaWx0ZXJzOiBEeW5hbWljRmlsdGVyc1ZpZXdNb2RlbFtdKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHMgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbHRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YXIgYXJyYXkgPSBmaWx0ZXJzW2ldLmZpbHRlcnM7XHJcbiAgICAgICAgaWYgKGFycmF5ICE9IG51bGwpIHtcclxuICAgICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgYXJyYXkubGVuZ3RoOyBwKyspIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGlmIChhcnJheVtwXS5maWx0ZXJJZCA9PSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0c1tqXS5maWx0ZXI/LmlkKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzW2pdLmZpbHRlcj8ub3B0aW9ucztcclxuICAgICAgICAgICAgICAgIHZhciBhbGxvd2VkYXJyYXkgPSBhcnJheVtwXS5maWx0ZXJPcHRpb25zQWxsb3dlZDtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucyAhPSBudWxsICYmIGFsbG93ZWRhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3B0aW9ucy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBhbGxvd2VkID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgYWxsb3dlZGFycmF5Lmxlbmd0aDsgbCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsb3dlZGFycmF5W2xdID09IG9wdGlvbnNba10uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxvd2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zW2tdLmhpZGRlbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImRpc2FibGU6IFwiICsgb3B0aW9uc1trXS5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgUHJvY2Vzc0R5bmFtaWNSYW5nZUlucHV0cyhyYW5nZWlucHV0czogRHluYW1pY1JhbmdlSW5wdXRWaWV3TW9kZWxbXSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYW5nZWlucHV0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBhcnJheSA9IHJhbmdlaW5wdXRzW2ldLnJhbmdlSW5wdXRzO1xyXG4gICAgICAgIGlmIChhcnJheSAhPSBudWxsKSB7XHJcbiAgICAgICAgICBmb3IgKHZhciBwID0gMDsgcCA8IGFycmF5Lmxlbmd0aDsgcCsrKSB7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBpZiAoYXJyYXlbcF0gPT0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHNbal0ucmFuZ2U/LmlkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnYmVyZWlrIHJhbmdlaW5wdXQ6JyArIHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzW2pdLnJhbmdlPy5uYW1lKTtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgcmFuZ2VvYmplY3QgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0c1tqXS5yYW5nZTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocmFuZ2VvYmplY3QgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICByYW5nZW9iamVjdC5pbmNsdXNpZWZNaW5pbXVtID0gcmFuZ2VpbnB1dHNbaV0uaW5jbHVzaWVmTWluaW11bTtcclxuICAgICAgICAgICAgICAgICAgcmFuZ2VvYmplY3QubWluaW11bSA9IHJhbmdlaW5wdXRzW2ldLm1pbmltdW07XHJcblxyXG4gICAgICAgICAgICAgICAgICByYW5nZW9iamVjdC5pbmNsdXNpZWZNYXhpbXVtID0gcmFuZ2VpbnB1dHNbaV0uaW5jbHVzaWVmTWF4aW11bTtcclxuICAgICAgICAgICAgICAgICAgcmFuZ2VvYmplY3QubWF4aW11bSA9IHJhbmdlaW5wdXRzW2ldLm1heGltdW07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBEb3dubG9hZHNcclxuXHJcbiAgcHVibGljIERvd25sb2FkQVJLRVlBZG9taShjdXN0b21iY2JlYm9pZDogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLkRvd25sb2FkQVJLRVlBZG9taUxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuRmlsZVJlcXVlc3RNb2RlbCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0LmZpbGVUeXBlID0gXCJkaGdcIjtcclxuICAgIHJlcXVlc3QubW9kZWwzRCA9IHRydWU7XHJcbiAgICByZXF1ZXN0LmN1c3RvbUJDQkVCT0lkID0gY3VzdG9tYmNiZWJvaWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuQWN0aXZlKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuRG93bmxvYWRGaWxlKHJlcXVlc3QuZmlsZVR5cGUsIHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZVByb2R1Y3QodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuaWQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuZ2V0RmFicmlrYW50ZW5GaWxlVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLlN0YXJ0RG93bmxvYWQobW9kZWwuZmlsZSArIFwiXCIsIFwiLmRoZ1wiKTtcclxuICAgICAgdGhpcy5Eb3dubG9hZEFSS0VZQWRvbWlMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkSUZDKGN1c3RvbWJjYmVib2lkOiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIHRoaXMuRG93bmxvYWRJRkNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuRmlsZVJlcXVlc3RNb2RlbCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0LmZpbGVUeXBlID0gXCJpZmNcIjtcclxuICAgIHJlcXVlc3QubW9kZWwzRCA9IHRydWU7XHJcbiAgICByZXF1ZXN0LmN1c3RvbUJDQkVCT0lkID0gY3VzdG9tYmNiZWJvaWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuQWN0aXZlKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuRG93bmxvYWRGaWxlKHJlcXVlc3QuZmlsZVR5cGUsIHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZVByb2R1Y3QodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuaWQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuZ2V0RmFicmlrYW50ZW5GaWxlVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLlN0YXJ0RG93bmxvYWQobW9kZWwuZmlsZSArIFwiXCIsIFwiLmlmY1wiKTtcclxuICAgICAgdGhpcy5Eb3dubG9hZElGQ0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWRSZXZpdFBsdWdpbihjdXN0b21iY2JlYm9pZDogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLkRvd25sb2FkUmV2aXRQbHVnaW5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBGYWJyaWthbnRlbkZpbGVSZXF1ZXN0TW9kZWwoKTtcclxuXHJcbiAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgcmVxdWVzdC5maWxlVHlwZSA9IFwiaGRoUmV2aXRcIjtcclxuICAgIHJlcXVlc3QubW9kZWwzRCA9IHRydWU7XHJcbiAgICByZXF1ZXN0LmN1c3RvbUJDQkVCT0lkID0gY3VzdG9tYmNiZWJvaWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuQWN0aXZlKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuRG93bmxvYWRGaWxlKHJlcXVlc3QuZmlsZVR5cGUsIHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZVByb2R1Y3QodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuaWQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuZ2V0RmFicmlrYW50ZW5GaWxlVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG1vZGVsLmZpbGUgKyBcIlwiO1xyXG4gICAgICB0aGlzLkRvd25sb2FkUmV2aXRQbHVnaW5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkM0RBdXRvQ0FERHdnKGN1c3RvbWJjYmVib2lkOiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIHRoaXMuRG93bmxvYWQzREF1dG9DQUREd2dMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuRmlsZVJlcXVlc3RNb2RlbCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0LmZpbGVUeXBlID0gXCJkd2dcIjtcclxuICAgIHJlcXVlc3QubW9kZWwzRCA9IHRydWU7XHJcbiAgICByZXF1ZXN0LmN1c3RvbUJDQkVCT0lkID0gY3VzdG9tYmNiZWJvaWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuQWN0aXZlKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuRG93bmxvYWRGaWxlKHJlcXVlc3QuZmlsZVR5cGUsIHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZVByb2R1Y3QodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuaWQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuZ2V0RmFicmlrYW50ZW5GaWxlVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLlN0YXJ0RG93bmxvYWQobW9kZWwuZmlsZSArIFwiXCIsIFwiLmR3Z1wiKTtcclxuICAgICAgdGhpcy5Eb3dubG9hZDNEQXV0b0NBRER3Z0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWQzRER4ZihjdXN0b21iY2JlYm9pZDogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLkRvd25sb2FkM0REeGZMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBGYWJyaWthbnRlbkZpbGVSZXF1ZXN0TW9kZWwoKTtcclxuXHJcbiAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgcmVxdWVzdC5maWxlVHlwZSA9IFwiZHhmXCI7XHJcbiAgICByZXF1ZXN0Lm1vZGVsM0QgPSB0cnVlO1xyXG4gICAgcmVxdWVzdC5jdXN0b21CQ0JFQk9JZCA9IGN1c3RvbWJjYmVib2lkO1xyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkRvd25sb2FkRmlsZShyZXF1ZXN0LmZpbGVUeXBlLCB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVQcm9kdWN0KHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmlkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50LmdldEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbChyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZpbGVWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5TdGFydERvd25sb2FkKG1vZGVsLmZpbGUgKyBcIlwiLCBcIi5keGZcIik7XHJcbiAgICAgIHRoaXMuRG93bmxvYWQzRER4ZkxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWQyREF1dG9DQUREd2coY3VzdG9tYmNiZWJvaWQ6IG51bWJlciB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgdGhpcy5Eb3dubG9hZDJEQXV0b0NBRER3Z0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5GaWxlUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuICAgIHJlcXVlc3QuZmlsZVR5cGUgPSBcImR3Z1wiO1xyXG4gICAgcmVxdWVzdC5tb2RlbDNEID0gZmFsc2U7XHJcbiAgICByZXF1ZXN0LmN1c3RvbUJDQkVCT0lkID0gY3VzdG9tYmNiZWJvaWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuQWN0aXZlKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuRG93bmxvYWRGaWxlKHJlcXVlc3QuZmlsZVR5cGUsIHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZVByb2R1Y3QodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuaWQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuZ2V0RmFicmlrYW50ZW5GaWxlVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLlN0YXJ0RG93bmxvYWQobW9kZWwuZmlsZSArIFwiXCIsIFwiLmR3Z1wiKTtcclxuICAgICAgdGhpcy5Eb3dubG9hZDJEQXV0b0NBRER3Z0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRG93bmxvYWQyRER4ZihjdXN0b21iY2JlYm9pZDogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLkRvd25sb2FkMkREeGZMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBGYWJyaWthbnRlbkZpbGVSZXF1ZXN0TW9kZWwoKTtcclxuXHJcbiAgICByZXF1ZXN0LnNlc3Npb25JZCA9IHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgcmVxdWVzdC5maWxlVHlwZSA9IFwiZHhmXCI7XHJcbiAgICByZXF1ZXN0Lm1vZGVsM0QgPSBmYWxzZTtcclxuICAgIHJlcXVlc3QuY3VzdG9tQkNCRUJPSWQgPSBjdXN0b21iY2JlYm9pZDtcclxuXHJcbiAgICBpZiAodGhpcy5TdGF0aXN0aWNzU2VydmljZS5BY3RpdmUpIHtcclxuICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlbGVjdGVkUHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5TdGF0aXN0aWNzU2VydmljZS5Eb3dubG9hZEZpbGUocmVxdWVzdC5maWxlVHlwZSwgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlUHJvZHVjdCh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5pZCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5nZXRGYWJyaWthbnRlbkZpbGVWaWV3TW9kZWwocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogRmFicmlrYW50ZW5GaWxlVmlld01vZGVsKSA9PiB7XHJcbiAgICAgIHRoaXMuU3RhcnREb3dubG9hZChtb2RlbC5maWxlICsgXCJcIiwgXCIuZHhmXCIpO1xyXG4gICAgICB0aGlzLkRvd25sb2FkMkREeGZMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkUkZBKGN1c3RvbWJjYmVib2lkOiBudW1iZXIgfCB1bmRlZmluZWQsIHdlYnZpZXcyOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLkRvd25sb2FkUkZBTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5GaWxlUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZDtcclxuICAgIHJlcXVlc3QuZmlsZVR5cGUgPSBcInJmYVwiO1xyXG4gICAgcmVxdWVzdC5tb2RlbDNEID0gZmFsc2U7XHJcbiAgICByZXF1ZXN0LndlYlZpZXcyID0gd2VidmlldzI7XHJcbiAgICByZXF1ZXN0LmN1c3RvbUJDQkVCT0lkID0gY3VzdG9tYmNiZWJvaWQ7XHJcblxyXG4gICAgaWYgKHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuQWN0aXZlKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU3RhdGlzdGljc1NlcnZpY2UuRG93bmxvYWRGaWxlKHJlcXVlc3QuZmlsZVR5cGUsIHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZVByb2R1Y3QodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuaWQpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuZ2V0RmFicmlrYW50ZW5GaWxlVmlld01vZGVsKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICBpZiAobW9kZWwuY3VzdG9tUkZBWmlwKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuSXNJbldlYlZpZXdCcm93c2VyKCkpIHtcclxuICAgICAgICAgIHRoaXMuUG9zdFdlYnZpZXcyTWVzc2FnZShtb2RlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5TdGFydERvd25sb2FkKG1vZGVsLmZpbGUgKyBcIlwiLCBcIi56aXBcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChtb2RlbC5ydnRFeHRlbnNpb24pIHtcclxuICAgICAgICAgIHRoaXMuU3RhcnREb3dubG9hZChtb2RlbC5maWxlICsgXCJcIiwgXCIucnZ0XCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmICh0aGlzLklzSW5XZWJWaWV3QnJvd3NlcigpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuUG9zdFdlYnZpZXcyTWVzc2FnZShtb2RlbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5TdGFydERvd25sb2FkKG1vZGVsLmZpbGUgKyBcIlwiLCBcIi5yZmFcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuRG93bmxvYWRSRkFMb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFBvc3RXZWJ2aWV3Mk1lc3NhZ2UobW9kZWw6IEZhYnJpa2FudGVuRmlsZVZpZXdNb2RlbCk6IHZvaWQge1xyXG4gICAgdmFyIGFjdGlvbiA9IFwiZG93bmxvYWRcIjtcclxuICAgIHZhciBmaWxlID0gbW9kZWwuZmlsZSArIFwiXCI7XHJcbiAgICB2YXIgZmlsZW5hbWUgPSB0aGlzLkNvbGxlY3RGaWxlTmFtZSgpO1xyXG4gICAgdmFyIHBhcmFtZXRlcnNuYW1lcyA9IG1vZGVsLnJldml0UGFyYW1ldGVyc05hbWVzO1xyXG4gICAgdmFyIHBhcmFtZXRlcnN2YWx1ZXMgPSBtb2RlbC5yZXZpdFBhcmFtZXRlcnNWYWx1ZXM7XHJcblxyXG4gICAgd2luZG93LmNocm9tZS53ZWJ2aWV3LnBvc3RNZXNzYWdlKHsgYWN0aW9uLCBmaWxlLCBmaWxlbmFtZSwgcGFyYW1ldGVyc25hbWVzLCBwYXJhbWV0ZXJzdmFsdWVzIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIElzSW5XZWJWaWV3QnJvd3NlcigpOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAod2luZG93ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAod2luZG93LmNocm9tZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAod2luZG93LmNocm9tZS53ZWJ2aWV3ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFN0YXJ0RG93bmxvYWQodXJsOiBzdHJpbmcsIGV4dGVuc2lvbjogc3RyaW5nKTogdm9pZCB7XHJcblxyXG4gICAgdmFyIGZpbGVuYW1lID0gdGhpcy5Db2xsZWN0RmlsZU5hbWUoKTtcclxuXHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmRpc2FibGVDdXN0b21GaWxlTmFtZXMpIHtcclxuICAgICAgZmlsZW5hbWUgPSB1cmwuc3Vic3RyaW5nKHVybC5sYXN0SW5kZXhPZignXFxcXCcpICsgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpbGVuYW1lICE9IFwiXCIpIHtcclxuICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZSArIGV4dGVuc2lvbjtcclxuXHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gXCIvRG93bmxvYWQvRG93bmxvYWQ/cFVybD1cIiArIHVybCArIFwiJnBGaWxlTmFtZT1cIiArIGZpbGVuYW1lO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGFsZXJ0KCdlcnJvcjogbm8gcHJvZHVjdCBzZWxlY3RlZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIERvd25sb2FkQmVzdGVrKGRhdGE6IHN0cmluZykge1xyXG5cclxuICAgIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuVHlwZUJlc3RlayA9PSBcIlNUQUJVXCIpIHtcclxuICAgICAgdGhpcy5Eb3dubG9hZEJlc3Rla0lubmVyKGRhdGEsIFwiLlMwMVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5CZXN0ZWtTZXJ2aWNlLlR5cGVCZXN0ZWsgPT0gXCJPU0ZcIikge1xyXG4gICAgICB0aGlzLkRvd25sb2FkQmVzdGVrSW5uZXIoZGF0YSwgXCIudHh0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLkJlc3Rla1NlcnZpY2UuVHlwZUJlc3RlayA9PSBcIlZyaWpcIikge1xyXG4gICAgICB0aGlzLkRvd25sb2FkQmVzdGVrSW5uZXIoZGF0YSwgXCIudHh0XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkFjdGl2ZSkge1xyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlN0YXRpc3RpY3NTZXJ2aWNlLkRvd25sb2FkRmlsZShcImJlc3Rla1wiLCB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVQcm9kdWN0KHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmlkKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgRG93bmxvYWRCZXN0ZWtJbm5lcihkYXRhOiBzdHJpbmcsIGV4dGVuc2lvbjogc3RyaW5nKSB7XHJcbiAgICB2YXIgYyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgYy5kb3dubG9hZCA9IHRoaXMuQ29sbGVjdEZpbGVOYW1lKCkgKyBleHRlbnNpb247XHJcblxyXG4gICAgdmFyIHQgPSBuZXcgQmxvYihbZGF0YV0sIHtcclxuICAgICAgdHlwZTogXCJ0ZXh0L3BsYWluXCJcclxuICAgIH0pO1xyXG4gICAgYy5ocmVmID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwodCk7XHJcbiAgICBjLmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIENvbGxlY3RGaWxlTmFtZSgpOiBzdHJpbmcge1xyXG4gICAgdmFyIGZpbGVuYW1lID0gXCJcIjtcclxuXHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIjNEXCIpIHtcclxuICAgICAgaWYgKHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG4gICAgICAgIGZpbGVuYW1lID0gdGhpcy5XZWJHTFNlcnZpY2UuRmFicmlrYW50ZW4zRFZpZXdNb2RlbC5pbnN0YW50aWVOYWFtICsgXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiMkRcIikge1xyXG4gICAgICBpZiAodGhpcy5TVkdTZXJ2aWNlLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsICE9IG51bGwpIHtcclxuICAgICAgICBmaWxlbmFtZSA9IHRoaXMuU1ZHU2VydmljZS5GYWJyaWthbnRlblNWR1ZpZXdNb2RlbC5pbnN0YW50aWVOYWFtICsgXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiQmVzdGVrXCIpIHtcclxuICAgICAgaWYgKHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbCAhPSBudWxsKSB7XHJcbiAgICAgICAgZmlsZW5hbWUgPSB0aGlzLkJlc3Rla1NlcnZpY2UuRmFicmlrYW50ZW5CZXN0ZWtWaWV3TW9kZWwuaW5zdGFudGllTmFhbSArIFwiXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIlRvZWJlaG9yZW5cIikge1xyXG4gICAgICBpZiAodGhpcy5HZXRTZWxlY3RlZFRvZWJlaG9yZW4oKSAhPSBudWxsKSB7XHJcbiAgICAgICAgZmlsZW5hbWUgPSB0aGlzLkdldFNlbGVjdGVkVG9lYmVob3JlbigpPy5uYW1lICsgXCJcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWxlbmFtZSA9PSBcIlwiICYmIHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlbGVjdGVkUHJvZHVjdD8uaWQgIT0gbnVsbCkge1xyXG4gICAgICB2YXIgaWQgPSB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsPy5zZWxlY3RlZFByb2R1Y3Q/LmlkO1xyXG5cclxuICAgICAgZmlsZW5hbWUgPSB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWVQcm9kdWN0KGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBmaWxlbmFtZSA9IGZpbGVuYW1lLnJlcGxhY2UoL1teYS16MC05XS9naSwgJ18nKTtcclxuXHJcbiAgICByZXR1cm4gZmlsZW5hbWU7XHJcbiAgfVxyXG5cclxuICAvLyBSZWxvYWRzXHJcblxyXG4gIHByaXZhdGUgVHJpZ2dlclJlbG9hZHMoQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuU2hvd1JlcXVpcmVkKCkpIHtcclxuICAgICAgdmFyIGFycmF5ID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3Q/LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHM7XHJcblxyXG4gICAgICBpZiAoYXJyYXkgIT0gbnVsbCAmJiAoYXJyYXkubGVuZ3RoID09IDEgfHwgdGhpcy5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLmFsd2F5c1Nob3dWYXJpYW50KSkge1xyXG4gICAgICAgIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiQmVzdGVrXCIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmNoZWNrc3VtICE9IHRoaXMuQmVzdGVrU2VydmljZS5GYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbD8uY2hlY2tzdW0pIHtcclxuICAgICAgICAgICAgdGhpcy5CZXN0ZWtTZXJ2aWNlLkxvYWRGYWJyaWthbnRlbkJlc3Rla1ZpZXdNb2RlbCh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlc3Npb25JZCBhcyBzdHJpbmcsIENoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5TZWxlY3RlZFRhYiA9PSBcIjNEXCIpIHtcclxuICAgICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLmNoZWNrc3VtICE9IHRoaXMuV2ViR0xTZXJ2aWNlLkZhYnJpa2FudGVuM0RWaWV3TW9kZWw/LmNoZWNrc3VtKSB7XHJcbiAgICAgICAgICAgIHRoaXMuV2ViR0xTZXJ2aWNlLkxvYWRGYWJyaWthbnRlbjNEVmlld01vZGVsKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkIGFzIHN0cmluZywgQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiMkRcIikge1xyXG4gICAgICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuY2hlY2tzdW0gIT0gdGhpcy5TVkdTZXJ2aWNlLkZhYnJpa2FudGVuU1ZHVmlld01vZGVsPy5jaGVja3N1bSkge1xyXG4gICAgICAgICAgICB0aGlzLlNWR1NlcnZpY2UuTG9hZEZhYnJpa2FudGVuU1ZHVmlld01vZGVsKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkIGFzIHN0cmluZywgQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh0aGlzLlNlbGVjdGVkVGFiID09IFwiVGV4dHVyZVwiKSB7XHJcbiAgICAgICAgICB0aGlzLlRleHR1cmVTZXJ2aWNlLkxvYWRGYWJyaWthbnRlblRleHR1cmVWaWV3TW9kZWwodGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQgYXMgc3RyaW5nLCBDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuU2VsZWN0ZWRUYWIgPT0gXCJUb2ViZWhvcmVuXCIpIHtcclxuICAgICAgICAgIC8vdGhpcy5Ub2ViZWhvcmVuU2VydmljZS5Mb2FkRmFicmlrYW50ZW5Ub2ViZWhvcmVuVmlld01vZGVsKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkIGFzIHN0cmluZywgQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gQnJlYWRjcnVtYlxyXG5cclxuICBwdWJsaWMgR2V0U3RlcHMoKTogQXJyYXk8RmFicmlrYW50ZW5DYXRlZ29yeVZpZXdNb2RlbD4ge1xyXG4gICAgdmFyIHJldHVybmFycmF5ID0gbmV3IEFycmF5PEZhYnJpa2FudGVuQ2F0ZWdvcnlWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgdmFyIGFycmF5ID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbD8uY2F0ZWdvcnlMYXllcnM7XHJcblxyXG4gICAgaWYgKGFycmF5ICE9IG51bGwpIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChhcnJheVtpXS5zZWxlY3RlZE9wdGlvbiAhPSAwKSB7XHJcbiAgICAgICAgICB2YXIgb3B0aW9ucyA9IGFycmF5W2ldLmNhdGVnb3JpZXM7XHJcblxyXG4gICAgICAgICAgaWYgKG9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG9wdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBpZiAob3B0aW9uc1tqXS5pZCA9PT0gYXJyYXlbaV0uc2VsZWN0ZWRPcHRpb24pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybmFycmF5LnB1c2gob3B0aW9uc1tqXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJldHVybmFycmF5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFNlbGVjdGVkVG9lYmVob3JlbigpOiBGYWJyaWthbnRlbkJDQlByb2R1Y3RUb2ViZWhvcmVuVmlld01vZGVsIHwgbnVsbCB7XHJcbiAgICB2YXIgdG9lYmVob3JlbjogRmFicmlrYW50ZW5CQ0JQcm9kdWN0VG9lYmVob3JlblZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3Q/LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHMgIT0gbnVsbCAmJlxyXG4gICAgICB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuZmFicmlrYW50ZW5CQ0JQcm9kdWN0Vmlld01vZGVsc1swXS5iY2JQcm9kdWN0VG9lYmVob3JlbiAhPSBudWxsICYmXHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNbMF0uYmNiUHJvZHVjdFRvZWJlaG9yZW4ubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5mYWJyaWthbnRlbkJDQlByb2R1Y3RWaWV3TW9kZWxzWzBdLmJjYlByb2R1Y3RUb2ViZWhvcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmZhYnJpa2FudGVuQkNCUHJvZHVjdFZpZXdNb2RlbHNbMF0uYmNiUHJvZHVjdFRvZWJlaG9yZW5baV0uaWQgPT0gdGhpcy5TZWxlY3RlZFRvZWJlaG9yZW4/LmlkKSB7XHJcbiAgICAgICAgICB0b2ViZWhvcmVuID0gdGhpcy5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QuZmFicmlrYW50ZW5CQ0JQcm9kdWN0Vmlld01vZGVsc1swXS5iY2JQcm9kdWN0VG9lYmVob3JlbltpXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdG9lYmVob3JlbjtcclxuICB9XHJcbn1cclxuIl19