@wizishop/wizi-block 4.2.22-beta → 4.2.25-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) hide show
  1. package/assets/i18n/en.json +1 -1
  2. package/assets/i18n/fr.json +1 -1
  3. package/bundles/wizishop-wizi-block.umd.js +690 -408
  4. package/bundles/wizishop-wizi-block.umd.js.map +1 -1
  5. package/bundles/wizishop-wizi-block.umd.min.js +1 -1
  6. package/bundles/wizishop-wizi-block.umd.min.js.map +1 -1
  7. package/esm2015/lib/components/blocks/blocks.component.js +1 -1
  8. package/esm2015/lib/components/components.module.js +1 -1
  9. package/esm2015/lib/components/configs/configs.component.js +2 -2
  10. package/esm2015/lib/components/container-block/container-block.component.js +1 -1
  11. package/esm2015/lib/components/previews/previews.component.js +1 -1
  12. package/esm2015/lib/dtos/apis/amplify/amplify-category.dto.js +1 -1
  13. package/esm2015/lib/dtos/apis/amplify/amplify-guide.dto.js +1 -1
  14. package/esm2015/lib/dtos/apis/amplify/amplify-media.dto.js +1 -1
  15. package/esm2015/lib/dtos/apis/amplify/amplify-paginated.dto.js +1 -1
  16. package/esm2015/lib/dtos/apis/amplify/amplify-product.dto.js +1 -1
  17. package/esm2015/lib/dtos/apis/catalogs/catalog-badges.dto.js +1 -1
  18. package/esm2015/lib/dtos/apis/catalogs/catalog-brand.dto.js +1 -1
  19. package/esm2015/lib/dtos/apis/catalogs/catalog-category.dto.js +1 -1
  20. package/esm2015/lib/dtos/apis/catalogs/catalog-facet-value.dto.js +1 -1
  21. package/esm2015/lib/dtos/apis/catalogs/catalog-facet.dto.js +1 -1
  22. package/esm2015/lib/dtos/apis/catalogs/catalog-image.dto.js +1 -1
  23. package/esm2015/lib/dtos/apis/catalogs/catalog-list.dto.js +1 -1
  24. package/esm2015/lib/dtos/apis/catalogs/catalog-price.dto.js +1 -1
  25. package/esm2015/lib/dtos/apis/catalogs/catalog-variant-option.dto.js +1 -1
  26. package/esm2015/lib/dtos/apis/catalogs/catalog-variant.dto.js +1 -1
  27. package/esm2015/lib/dtos/apis/catalogs/catalog.dto.js +1 -1
  28. package/esm2015/lib/dtos/apis/comments/comment-list.dto.js +1 -1
  29. package/esm2015/lib/dtos/apis/comments/comment.dto.js +1 -1
  30. package/esm2015/lib/dtos/apis/forms/form-detail.dto.js +1 -1
  31. package/esm2015/lib/dtos/apis/forms/form-list.dto.js +1 -1
  32. package/esm2015/lib/dtos/apis/maps/open-map.dto.js +1 -1
  33. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom-more.dto.js +1 -1
  34. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom-selected.dto.js +1 -1
  35. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom-triple-column.dto.js +1 -1
  36. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom.dto.js +1 -1
  37. package/esm2015/lib/dtos/blocks/amplify-products-list/amplify-products-list-classic.dto.js +1 -1
  38. package/esm2015/lib/dtos/blocks/amplify-products-list/amplify-products-list-selected.dto.js +1 -1
  39. package/esm2015/lib/dtos/blocks/amplify-products-list/amplify-products-list-simple.dto.js +1 -1
  40. package/esm2015/lib/dtos/blocks/code/code-html.dto.js +1 -1
  41. package/esm2015/lib/dtos/blocks/code/code-javascript.dto.js +1 -1
  42. package/esm2015/lib/dtos/blocks/code/code-stylesheet.dto.js +1 -1
  43. package/esm2015/lib/dtos/blocks/faq/faq-accordion.dto.js +1 -1
  44. package/esm2015/lib/dtos/blocks/faq/faq-frame.dto.js +1 -1
  45. package/esm2015/lib/dtos/blocks/faq/faq-list-icon.dto.js +1 -1
  46. package/esm2015/lib/dtos/blocks/faq/faq-simple-background.dto.js +1 -1
  47. package/esm2015/lib/dtos/blocks/faq/faq-simple.dto.js +1 -1
  48. package/esm2015/lib/dtos/blocks/faq/faq.dto.js +1 -1
  49. package/esm2015/lib/dtos/blocks/forms/forms-background.dto.js +1 -1
  50. package/esm2015/lib/dtos/blocks/forms/forms-imageleft.dto.js +1 -1
  51. package/esm2015/lib/dtos/blocks/forms/forms-imageright.dto.js +1 -1
  52. package/esm2015/lib/dtos/blocks/forms/forms-simple.dto.js +1 -1
  53. package/esm2015/lib/dtos/blocks/images/four-images-title.dto.js +1 -1
  54. package/esm2015/lib/dtos/blocks/images/images-banner.dto.js +1 -1
  55. package/esm2015/lib/dtos/blocks/images/images-big-and-double.dto.js +1 -1
  56. package/esm2015/lib/dtos/blocks/images/images-bigs-and-double-middle.dto.js +1 -1
  57. package/esm2015/lib/dtos/blocks/images/images-double.dto.js +1 -1
  58. package/esm2015/lib/dtos/blocks/images/images-quadruple-left-one-right.dto.js +1 -1
  59. package/esm2015/lib/dtos/blocks/images/images-quadruple.dto.js +1 -1
  60. package/esm2015/lib/dtos/blocks/images/images-simple.dto.js +1 -1
  61. package/esm2015/lib/dtos/blocks/images/images-triple.dto.js +1 -1
  62. package/esm2015/lib/dtos/blocks/images/two-images-title-text.dto.js +1 -1
  63. package/esm2015/lib/dtos/blocks/images-texts/images-texts-big-left-text-right.dto.js +1 -1
  64. package/esm2015/lib/dtos/blocks/images-texts/images-texts-big-right-text-left.dto.js +1 -1
  65. package/esm2015/lib/dtos/blocks/images-texts/images-texts-left-text-right.dto.js +1 -1
  66. package/esm2015/lib/dtos/blocks/images-texts/images-texts-one-text-one.dto.js +1 -1
  67. package/esm2015/lib/dtos/blocks/images-texts/images-texts-right-text-left.dto.js +1 -1
  68. package/esm2015/lib/dtos/blocks/images-texts/images-texts-small-left-text-right.dto.js +1 -1
  69. package/esm2015/lib/dtos/blocks/images-texts/images-texts-small-right-text-left.dto.js +1 -1
  70. package/esm2015/lib/dtos/blocks/images-texts/images-texts-text-one-text.dto.js +1 -1
  71. package/esm2015/lib/dtos/blocks/launch-videos/launch-videos-button.dto.js +1 -1
  72. package/esm2015/lib/dtos/blocks/launch-videos/launch-videos-buttontxt.dto.js +1 -1
  73. package/esm2015/lib/dtos/blocks/map/map-background-form-left.dto.js +1 -1
  74. package/esm2015/lib/dtos/blocks/map/map-background-form-right.dto.js +1 -1
  75. package/esm2015/lib/dtos/blocks/map/map-fullpage.dto.js +1 -1
  76. package/esm2015/lib/dtos/blocks/map/map-left-text.dto.js +1 -1
  77. package/esm2015/lib/dtos/blocks/map/map-right-text.dto.js +1 -1
  78. package/esm2015/lib/dtos/blocks/map/map-text-form.dto.js +1 -1
  79. package/esm2015/lib/dtos/blocks/newsletter/newsletter-aligned-center-background.dto.js +1 -1
  80. package/esm2015/lib/dtos/blocks/newsletter/newsletter-aligned-center-image.dto.js +1 -1
  81. package/esm2015/lib/dtos/blocks/newsletter/newsletter-center-image.dto.js +1 -1
  82. package/esm2015/lib/dtos/blocks/onboarding/forms-onboarding.do.js +1 -1
  83. package/esm2015/lib/dtos/blocks/parent-block.dto.js +3 -2
  84. package/esm2015/lib/dtos/blocks/product/product-zoom-complete-background.dto.js +1 -1
  85. package/esm2015/lib/dtos/blocks/product/product-zoom-complete-slider.dto.js +1 -1
  86. package/esm2015/lib/dtos/blocks/product/product-zoom-complete.dto.js +1 -1
  87. package/esm2015/lib/dtos/blocks/product/product-zoom-more.dto.js +1 -1
  88. package/esm2015/lib/dtos/blocks/product/product-zoom-selected.dto.js +1 -1
  89. package/esm2015/lib/dtos/blocks/product/product-zoom-simple.dto.js +1 -1
  90. package/esm2015/lib/dtos/blocks/product/product-zoom-triple-column.dto.js +1 -1
  91. package/esm2015/lib/dtos/blocks/product/product-zoom.dto.js +1 -1
  92. package/esm2015/lib/dtos/blocks/products-list/products-list-classic.dto.js +1 -1
  93. package/esm2015/lib/dtos/blocks/products-list/products-list-selected.dto.js +1 -1
  94. package/esm2015/lib/dtos/blocks/products-list/products-list-simple.dto.js +1 -1
  95. package/esm2015/lib/dtos/blocks/quotes/quotes-author.dto.js +1 -1
  96. package/esm2015/lib/dtos/blocks/quotes/quotes-simple-background.dto.js +1 -1
  97. package/esm2015/lib/dtos/blocks/quotes/quotes-simple.dto.js +1 -1
  98. package/esm2015/lib/dtos/blocks/rassurances/rassurances-quadruple-aligned.dto.js +1 -1
  99. package/esm2015/lib/dtos/blocks/rassurances/rassurances-quadruple-background.dto.js +1 -1
  100. package/esm2015/lib/dtos/blocks/rassurances/rassurances-triple-background.dto.js +1 -1
  101. package/esm2015/lib/dtos/blocks/reviews/reviews-simple.dto.js +1 -1
  102. package/esm2015/lib/dtos/blocks/reviews/reviews-waterfall.dto.js +1 -1
  103. package/esm2015/lib/dtos/blocks/separators/separator-simple.dto.js +1 -1
  104. package/esm2015/lib/dtos/blocks/sliders/sliders-double-imageright.dto.js +1 -1
  105. package/esm2015/lib/dtos/blocks/sliders/sliders-fullpage.dto.js +1 -1
  106. package/esm2015/lib/dtos/blocks/sliders/sliders-imageright.dto.js +1 -1
  107. package/esm2015/lib/dtos/blocks/sliders/sliders-leftnav.dto.js +1 -1
  108. package/esm2015/lib/dtos/blocks/sliders/sliders-with-banner.dto.js +1 -1
  109. package/esm2015/lib/dtos/blocks/socials/socials-like.dto.js +1 -1
  110. package/esm2015/lib/dtos/blocks/socials/socials-network.dto.js +1 -1
  111. package/esm2015/lib/dtos/blocks/socials/socials-page-complex.dto.js +1 -1
  112. package/esm2015/lib/dtos/blocks/socials/socials-page-simple.dto.js +1 -1
  113. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-four-rows-icon-text.dto.js +1 -1
  114. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-link.dto.js +1 -1
  115. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-rows-icon-text.dto.js +1 -1
  116. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-simple.dto.js +1 -1
  117. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-three-rows-icon-text.dto.js +1 -1
  118. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-two-rows-icon-text.dto.js +1 -1
  119. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-with-banner.dto.js +1 -1
  120. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-with-txt.dto.js +1 -1
  121. package/esm2015/lib/dtos/blocks/texts/texts-double-background.dto.js +1 -1
  122. package/esm2015/lib/dtos/blocks/texts/texts-double.dto.js +1 -1
  123. package/esm2015/lib/dtos/blocks/texts/texts-one-background.dto.js +1 -1
  124. package/esm2015/lib/dtos/blocks/texts/texts-one.dto.js +1 -1
  125. package/esm2015/lib/dtos/blocks/texts/texts-quadruple-background.dto.js +1 -1
  126. package/esm2015/lib/dtos/blocks/texts/texts-quadruple-numbers.dto.js +1 -1
  127. package/esm2015/lib/dtos/blocks/texts/texts-quadruple.dto.js +1 -1
  128. package/esm2015/lib/dtos/blocks/texts/texts-triple-background.dto.js +1 -1
  129. package/esm2015/lib/dtos/blocks/texts/texts-triple.dto.js +1 -1
  130. package/esm2015/lib/dtos/blocks/timer/timer-airport.dto.js +1 -1
  131. package/esm2015/lib/dtos/blocks/timer/timer-background.dto.js +1 -1
  132. package/esm2015/lib/dtos/blocks/timer/timer-clock.dto.js +1 -1
  133. package/esm2015/lib/dtos/blocks/timer/timer-multiple-img.dto.js +1 -1
  134. package/esm2015/lib/dtos/blocks/timer/timer-simple.dto.js +1 -1
  135. package/esm2015/lib/dtos/blocks/videos/videos-simple.dto.js +1 -1
  136. package/esm2015/lib/dtos/blocks/videos/videos-txt-content.dto.js +1 -1
  137. package/esm2015/lib/dtos/blocks/videos/videos-txt.dto.js +1 -1
  138. package/esm2015/lib/dtos/blocks/witness/about-block.dto.js +1 -1
  139. package/esm2015/lib/dtos/blocks/witness/witness-background-double.dto.js +1 -1
  140. package/esm2015/lib/dtos/blocks/witness/witness-background-one.dto.js +2 -2
  141. package/esm2015/lib/dtos/blocks/witness/witness-quadruple.dto.js +1 -1
  142. package/esm2015/lib/dtos/blocks/witness/witness-triple.dto.js +1 -1
  143. package/esm2015/lib/dtos/blocks/witness/witness-twice.dto.js +1 -1
  144. package/esm2015/lib/dtos/configs/apis/api.dto.js +1 -1
  145. package/esm2015/lib/dtos/configs/blocks/block-config.dto.js +1 -1
  146. package/esm2015/lib/dtos/configs/blocks/blocks-list.dto.js +1 -1
  147. package/esm2015/lib/dtos/configs/buttons/button.dto.js +1 -1
  148. package/esm2015/lib/dtos/configs/external/external-config.dto.js +1 -1
  149. package/esm2015/lib/dtos/configs/fonts/font-awesome.dto.js +1 -1
  150. package/esm2015/lib/dtos/configs/images/four-images-title-element.dto.js +1 -1
  151. package/esm2015/lib/dtos/configs/medias/image/font-or-media.dto.js +1 -1
  152. package/esm2015/lib/dtos/configs/medias/image/image-media-and-text.dto.js +1 -1
  153. package/esm2015/lib/dtos/configs/medias/image/image-media.dto.js +1 -1
  154. package/esm2015/lib/dtos/configs/medias/image/payment-or-media.dto.js +1 -1
  155. package/esm2015/lib/dtos/configs/medias/media-width-height.dto.js +1 -1
  156. package/esm2015/lib/dtos/configs/medias/media.dto.js +1 -1
  157. package/esm2015/lib/dtos/configs/medias/text/text-media.dto.js +1 -1
  158. package/esm2015/lib/dtos/configs/structures/structure-config.dto.js +1 -1
  159. package/esm2015/lib/dtos/configs/structures/structures-list.dto.js +1 -1
  160. package/esm2015/lib/dtos/configs/translations/translations.dto.js +1 -1
  161. package/esm2015/lib/dtos/configs/types/types.dto.js +1 -1
  162. package/esm2015/lib/dtos/configs/witness/about-element.dto.js +1 -1
  163. package/esm2015/lib/dtos/forms/forms.dto.js +2 -2
  164. package/esm2015/lib/dtos/utils/quill/crypted-link.dto.js +1 -1
  165. package/esm2015/lib/dtos/utils/quill/custom-link.dto.js +1 -1
  166. package/esm2015/lib/dtos/utils/quill/delta.dto.js +1 -1
  167. package/esm2015/lib/dtos/utils/quill/icon.dto.js +1 -1
  168. package/esm2015/lib/dtos/utils/quill/line-break.dto.js +1 -1
  169. package/esm2015/lib/dtos/utils/quill-html-editor/html-formatter.js +1 -1
  170. package/esm2015/lib/dtos/utils/quill-html-editor/logger.js +1 -1
  171. package/esm2015/lib/dtos/utils/quill-html-editor/options.js +1 -1
  172. package/esm2015/lib/dtos/utils/quill-html-editor/quill.htmlEditButton.js +1 -1
  173. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom-more.service.js +1 -1
  174. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom-selected.service.js +1 -1
  175. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom-triple-column.service.js +1 -1
  176. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom.service.js +1 -1
  177. package/esm2015/lib/services/blocks/amplify-products-list/amplify-products-list-classic.service.js +1 -1
  178. package/esm2015/lib/services/blocks/amplify-products-list/amplify-products-list-selected.service.js +1 -1
  179. package/esm2015/lib/services/blocks/amplify-products-list/amplify-products-list-simple.service.js +1 -1
  180. package/esm2015/lib/services/blocks/code/code-html.service.js +1 -1
  181. package/esm2015/lib/services/blocks/code/code-javascript.service.js +1 -1
  182. package/esm2015/lib/services/blocks/code/code-stylesheet.service.js +1 -1
  183. package/esm2015/lib/services/blocks/faq/faq-accordion.service.js +1 -1
  184. package/esm2015/lib/services/blocks/faq/faq-frame.service.js +1 -1
  185. package/esm2015/lib/services/blocks/faq/faq-list-icon.service.js +1 -1
  186. package/esm2015/lib/services/blocks/faq/faq-simple-background.service.js +1 -1
  187. package/esm2015/lib/services/blocks/faq/faq-simple.service.js +1 -1
  188. package/esm2015/lib/services/blocks/forms/forms-background.service.js +1 -1
  189. package/esm2015/lib/services/blocks/forms/forms-imageleft.service.js +1 -1
  190. package/esm2015/lib/services/blocks/forms/forms-imageright.service.js +1 -1
  191. package/esm2015/lib/services/blocks/forms/forms-simple.service.js +1 -1
  192. package/esm2015/lib/services/blocks/images/four-images-title.service.js +1 -1
  193. package/esm2015/lib/services/blocks/images/images-banner.service.js +1 -1
  194. package/esm2015/lib/services/blocks/images/images-big-and-double.service.js +1 -1
  195. package/esm2015/lib/services/blocks/images/images-bigs-and-double-middle.service.js +1 -1
  196. package/esm2015/lib/services/blocks/images/images-double.service.js +1 -1
  197. package/esm2015/lib/services/blocks/images/images-quadruple-left-one-right.service.js +1 -1
  198. package/esm2015/lib/services/blocks/images/images-quadruple.service.js +1 -1
  199. package/esm2015/lib/services/blocks/images/images-simple.service.js +1 -1
  200. package/esm2015/lib/services/blocks/images/images-triple.service.js +1 -1
  201. package/esm2015/lib/services/blocks/images/two-images-title-text.service.js +1 -1
  202. package/esm2015/lib/services/blocks/images-texts/images-texts-big-left-text-right.service.js +1 -1
  203. package/esm2015/lib/services/blocks/images-texts/images-texts-big-right-text-left.service.js +1 -1
  204. package/esm2015/lib/services/blocks/images-texts/images-texts-left-text-right.service.js +1 -1
  205. package/esm2015/lib/services/blocks/images-texts/images-texts-one-text-one.service.js +1 -1
  206. package/esm2015/lib/services/blocks/images-texts/images-texts-right-text-left.service.js +1 -1
  207. package/esm2015/lib/services/blocks/images-texts/images-texts-small-left-text-right.service.js +1 -1
  208. package/esm2015/lib/services/blocks/images-texts/images-texts-small-right-text-left.service.js +1 -1
  209. package/esm2015/lib/services/blocks/images-texts/images-texts-text-one-text.service.js +1 -1
  210. package/esm2015/lib/services/blocks/launch-videos/launch-videos-button.service.js +1 -1
  211. package/esm2015/lib/services/blocks/launch-videos/launch-videos-buttontxt.service.js +1 -1
  212. package/esm2015/lib/services/blocks/map/map-background-form-left.service.js +1 -1
  213. package/esm2015/lib/services/blocks/map/map-background-form-right.service.js +1 -1
  214. package/esm2015/lib/services/blocks/map/map-fullpage.service.js +1 -1
  215. package/esm2015/lib/services/blocks/map/map-left-text.service.js +1 -1
  216. package/esm2015/lib/services/blocks/map/map-right-text.service.js +1 -1
  217. package/esm2015/lib/services/blocks/map/map-text-form.service.js +1 -1
  218. package/esm2015/lib/services/blocks/newsletter/newsletter-aligned-center-background.service.js +1 -1
  219. package/esm2015/lib/services/blocks/newsletter/newsletter-aligned-center-image.service.js +1 -1
  220. package/esm2015/lib/services/blocks/newsletter/newsletter-center-image.service.js +1 -1
  221. package/esm2015/lib/services/blocks/onboarding/forms-onboarding.service.js +1 -1
  222. package/esm2015/lib/services/blocks/product/product-zoom-complete-background.service.js +1 -1
  223. package/esm2015/lib/services/blocks/product/product-zoom-complete-slider.service.js +1 -1
  224. package/esm2015/lib/services/blocks/product/product-zoom-complete.service.js +1 -1
  225. package/esm2015/lib/services/blocks/product/product-zoom-more.service.js +1 -1
  226. package/esm2015/lib/services/blocks/product/product-zoom-selected.service.js +1 -1
  227. package/esm2015/lib/services/blocks/product/product-zoom-simple.service.js +1 -1
  228. package/esm2015/lib/services/blocks/product/product-zoom-triple-column.service.js +1 -1
  229. package/esm2015/lib/services/blocks/product/product-zoom.service.js +1 -1
  230. package/esm2015/lib/services/blocks/products-list/products-list-classic.service.js +1 -1
  231. package/esm2015/lib/services/blocks/products-list/products-list-selected.service.js +1 -1
  232. package/esm2015/lib/services/blocks/products-list/products-list-simple.service.js +1 -1
  233. package/esm2015/lib/services/blocks/quotes/quotes-author.service.js +1 -1
  234. package/esm2015/lib/services/blocks/quotes/quotes-simple-background.service.js +1 -1
  235. package/esm2015/lib/services/blocks/quotes/quotes-simple.service.js +1 -1
  236. package/esm2015/lib/services/blocks/rassurances/rassurances-quadruple-aligned.service.js +1 -1
  237. package/esm2015/lib/services/blocks/rassurances/rassurances-quadruple-background.service.js +1 -1
  238. package/esm2015/lib/services/blocks/rassurances/rassurances-triple-background.service.js +1 -1
  239. package/esm2015/lib/services/blocks/reviews/reviews-simple.service.js +1 -1
  240. package/esm2015/lib/services/blocks/reviews/reviews-waterfall.service.js +1 -1
  241. package/esm2015/lib/services/blocks/separator/separator-simple.service.js +1 -1
  242. package/esm2015/lib/services/blocks/sliders/sliders-double-imageright.service.js +1 -1
  243. package/esm2015/lib/services/blocks/sliders/sliders-fullpage.service.js +1 -1
  244. package/esm2015/lib/services/blocks/sliders/sliders-imageright.service.js +1 -1
  245. package/esm2015/lib/services/blocks/sliders/sliders-leftnav.service.js +1 -1
  246. package/esm2015/lib/services/blocks/sliders/sliders-with-banner.service.js +1 -1
  247. package/esm2015/lib/services/blocks/socials/socials-like.service.js +1 -1
  248. package/esm2015/lib/services/blocks/socials/socials-network.service.js +1 -1
  249. package/esm2015/lib/services/blocks/socials/socials-page-complex.service.js +1 -1
  250. package/esm2015/lib/services/blocks/socials/socials-page-simple.service.js +1 -1
  251. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-four-rows-icon-text.service.js +1 -1
  252. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-link.service.js +1 -1
  253. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-simple.service.js +1 -1
  254. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-three-rows-icon-text.service.js +1 -1
  255. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-two-rows-icon-text.service.js +1 -1
  256. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-with-banner.service.js +1 -1
  257. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-with-txt.service.js +1 -1
  258. package/esm2015/lib/services/blocks/texts/texts-double-background.service.js +1 -1
  259. package/esm2015/lib/services/blocks/texts/texts-double.service.js +1 -1
  260. package/esm2015/lib/services/blocks/texts/texts-one-background.service.js +1 -1
  261. package/esm2015/lib/services/blocks/texts/texts-one.service.js +1 -1
  262. package/esm2015/lib/services/blocks/texts/texts-quadruple-background.service.js +1 -1
  263. package/esm2015/lib/services/blocks/texts/texts-quadruple-numbers.service.js +1 -1
  264. package/esm2015/lib/services/blocks/texts/texts-quadruple.service.js +1 -1
  265. package/esm2015/lib/services/blocks/texts/texts-triple-background.service.js +1 -1
  266. package/esm2015/lib/services/blocks/texts/texts-triple.service.js +1 -1
  267. package/esm2015/lib/services/blocks/timer/timer-airport.service.js +1 -1
  268. package/esm2015/lib/services/blocks/timer/timer-background.service.js +1 -1
  269. package/esm2015/lib/services/blocks/timer/timer-clock.service.js +1 -1
  270. package/esm2015/lib/services/blocks/timer/timer-multiple-img.service.js +1 -1
  271. package/esm2015/lib/services/blocks/timer/timer-simple.service.js +1 -1
  272. package/esm2015/lib/services/blocks/videos/videos-simple.service.js +1 -1
  273. package/esm2015/lib/services/blocks/videos/videos-txt-content.service.js +1 -1
  274. package/esm2015/lib/services/blocks/videos/videos-txt-left.service.js +1 -1
  275. package/esm2015/lib/services/blocks/videos/videos-txt.service.js +1 -1
  276. package/esm2015/lib/services/blocks/witness/about-block.service.js +1 -1
  277. package/esm2015/lib/services/blocks/witness/witness-background-double.service.js +1 -1
  278. package/esm2015/lib/services/blocks/witness/witness-background-one.service.js +1 -1
  279. package/esm2015/lib/services/blocks/witness/witness-quadruple.service.js +1 -1
  280. package/esm2015/lib/services/blocks/witness/witness-triple.service.js +1 -1
  281. package/esm2015/lib/services/blocks/witness/witness-twice.service.js +1 -1
  282. package/esm2015/lib/services/structures/amplify-product/amplify-product.service.js +1 -1
  283. package/esm2015/lib/services/structures/amplify-products-list/amplify-products-list.service.js +1 -1
  284. package/esm2015/lib/services/structures/code/code.service.js +1 -1
  285. package/esm2015/lib/services/structures/faq/faq.service.js +1 -1
  286. package/esm2015/lib/services/structures/forms/forms.service.js +1 -1
  287. package/esm2015/lib/services/structures/images/images.service.js +1 -1
  288. package/esm2015/lib/services/structures/images-texts/images-texts.service.js +1 -1
  289. package/esm2015/lib/services/structures/launch-videos/launch-videos.service.js +1 -1
  290. package/esm2015/lib/services/structures/map/map.service.js +1 -1
  291. package/esm2015/lib/services/structures/newsletter/newsletter.service.js +1 -1
  292. package/esm2015/lib/services/structures/onboarding/onboarding.service.js +1 -1
  293. package/esm2015/lib/services/structures/parent-structures.service.js +1 -1
  294. package/esm2015/lib/services/structures/product/product.service.js +1 -1
  295. package/esm2015/lib/services/structures/products-list/products-list.service.js +1 -1
  296. package/esm2015/lib/services/structures/quotes/quotes.service.js +1 -1
  297. package/esm2015/lib/services/structures/rassurances/rassurances.service.js +1 -1
  298. package/esm2015/lib/services/structures/reviews/reviews.service.js +1 -1
  299. package/esm2015/lib/services/structures/separator/separator.service.js +1 -1
  300. package/esm2015/lib/services/structures/sliders/sliders.service.js +1 -1
  301. package/esm2015/lib/services/structures/socials/socials.service.js +1 -1
  302. package/esm2015/lib/services/structures/text-backgrounds/text-backgrounds.service.js +1 -1
  303. package/esm2015/lib/services/structures/texts/texts.service.js +1 -1
  304. package/esm2015/lib/services/structures/timer/timer.service.js +1 -1
  305. package/esm2015/lib/services/structures/videos/videos.service.js +1 -1
  306. package/esm2015/lib/services/structures/witness/witness.service.js +1 -1
  307. package/esm2015/lib/services/utils/api.service.js +1 -1
  308. package/esm2015/lib/services/utils/config.service.js +1 -1
  309. package/esm2015/lib/services/utils/content.service.js +1 -1
  310. package/esm2015/lib/services/utils/currency.service.js +1 -1
  311. package/esm2015/lib/services/utils/expected-images.service.js +1 -1
  312. package/esm2015/lib/services/utils/external-config.service.js +1 -1
  313. package/esm2015/lib/services/utils/font-awesome.service.js +1 -1
  314. package/esm2015/lib/services/utils/injector.service.js +1 -1
  315. package/esm2015/lib/services/utils/media-connector.service.js +1 -1
  316. package/esm2015/lib/services/utils/quill.service.js +1 -1
  317. package/esm2015/lib/services/utils/structure-config.service.js +1 -1
  318. package/esm2015/lib/services/utils/translate-block.service.js +1 -1
  319. package/esm2015/lib/services/utils/vimeo.service.js +1 -1
  320. package/esm2015/lib/services/utils/youtube.service.js +1 -1
  321. package/esm2015/lib/services/wizi-block.service.js +1 -1
  322. package/esm2015/lib/shared/animations/list/animate-list-from-left.animation.js +1 -1
  323. package/esm2015/lib/shared/animations/list/animate-list-from-right.animation.js +1 -1
  324. package/esm2015/lib/shared/components/editorjs/editorjs.component.js +27 -7
  325. package/esm2015/lib/shared/components/editorjs/tools/inline/bold-tool.component.js +1 -1
  326. package/esm2015/lib/shared/components/editorjs/tools/inline/capitalize-tool.component.js +1 -1
  327. package/esm2015/lib/shared/components/editorjs/tools/inline/italic-tool.component.js +1 -1
  328. package/esm2015/lib/shared/components/editorjs/tools/inline/link-tool.component.js +121 -19
  329. package/esm2015/lib/shared/components/editorjs/tools/inline/strike-tool.component.js +1 -1
  330. package/esm2015/lib/shared/components/editorjs/tools/inline/subscript-tool.component.js +1 -1
  331. package/esm2015/lib/shared/components/editorjs/tools/inline/superscript-tool.component.js +1 -1
  332. package/esm2015/lib/shared/components/editorjs/tools/inline/text-background-color-tool.component.js +6 -7
  333. package/esm2015/lib/shared/components/editorjs/tools/inline/text-color-tool.component.js +4 -2
  334. package/esm2015/lib/shared/components/editorjs/tools/inline/text-size-tool.component.js +4 -3
  335. package/esm2015/lib/shared/components/editorjs/tools/inline/tool-type/color-tool.component.js +1 -1
  336. package/esm2015/lib/shared/components/editorjs/tools/inline/tool-type/inline-style-tool.component.js +54 -20
  337. package/esm2015/lib/shared/components/editorjs/tools/inline/tool-type/text-tool.component.js +1 -1
  338. package/esm2015/lib/shared/components/editorjs/tools/inline/underline-tool.component.js +1 -1
  339. package/esm2015/lib/shared/components/editorjs/tools/paragraph/code-edit-tool.component.js +1 -1
  340. package/esm2015/lib/shared/components/editorjs/tools/paragraph/indent-tool.component.js +1 -1
  341. package/esm2015/lib/shared/components/editorjs/tools/paragraph/ordered-list-tool.component.js +1 -1
  342. package/esm2015/lib/shared/components/editorjs/tools/paragraph/outdent-tool.component.js +1 -1
  343. package/esm2015/lib/shared/components/editorjs/tools/paragraph/quote-tool.component.js +1 -1
  344. package/esm2015/lib/shared/components/editorjs/tools/paragraph/redo-tool.component.js +1 -1
  345. package/esm2015/lib/shared/components/editorjs/tools/paragraph/text-align-tool.component.js +1 -1
  346. package/esm2015/lib/shared/components/editorjs/tools/paragraph/text-type-tool.component.js +3 -2
  347. package/esm2015/lib/shared/components/editorjs/tools/paragraph/tool-type/paragraph-style-tool.component.js +51 -9
  348. package/esm2015/lib/shared/components/editorjs/tools/paragraph/tool-type/text-edition.component.js +17 -19
  349. package/esm2015/lib/shared/components/editorjs/tools/paragraph/tool-type/text-tool.component.js +1 -1
  350. package/esm2015/lib/shared/components/editorjs/tools/paragraph/undo-tool.component.js +1 -1
  351. package/esm2015/lib/shared/components/editorjs/tools/paragraph/unordered-list-tool.component.js +1 -1
  352. package/esm2015/lib/shared/components/editorjs/tools/utils/colors.component.js +1 -1
  353. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-conversion.service.js +13 -1
  354. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-tool.component.js +40 -2
  355. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-translation.service.js +20 -0
  356. package/esm2015/lib/shared/components/editorjs/tools/utils/i18n/en-i18n.component.js +3 -3
  357. package/esm2015/lib/shared/components/editorjs/tools/utils/i18n/fr-i18n.component.js +3 -3
  358. package/esm2015/lib/shared/components/editorjs/tools/utils/texts.component.js +1 -1
  359. package/esm2015/lib/shared/components/faq/faq.component.js +1 -1
  360. package/esm2015/lib/shared/components/loader/loader.component.js +1 -1
  361. package/esm2015/lib/shared/components/quill/quill.component.js +1 -1
  362. package/esm2015/lib/shared/components/shared-components.module.js +1 -1
  363. package/esm2015/lib/shared/components/small-loader/small-loader.component.js +1 -1
  364. package/esm2015/lib/shared/components/star/star.component.js +1 -1
  365. package/esm2015/lib/shared/components/structure-amplify-search-category/structure-amplify-search-category.component.js +1 -1
  366. package/esm2015/lib/shared/components/structure-amplify-search-product/structure-amplify-search-product.component.js +1 -1
  367. package/esm2015/lib/shared/components/structure-config/structure-config.component.js +1 -1
  368. package/esm2015/lib/shared/components/structure-config-checkbox/structure-config-checkbox.component.js +1 -1
  369. package/esm2015/lib/shared/components/structure-config-extend-input/structure-config-extended-input.component.js +1 -1
  370. package/esm2015/lib/shared/components/structure-config-font/structure-config-font.component.js +1 -1
  371. package/esm2015/lib/shared/components/structure-config-input/structure-config-input.component.js +1 -1
  372. package/esm2015/lib/shared/components/structure-config-payment/structure-config-payment.component.js +1 -1
  373. package/esm2015/lib/shared/components/structure-search-product/structure-search-product.component.js +1 -1
  374. package/esm2015/lib/shared/components/structure-select/structure-select.component.js +1 -1
  375. package/esm2015/lib/shared/components/structure-tools/structure-tools.component.js +1 -1
  376. package/esm2015/lib/shared/directives/auto-focus/auto-focus.directive.js +1 -1
  377. package/esm2015/lib/shared/directives/auto-hide/auto-hide.directive.js +1 -1
  378. package/esm2015/lib/shared/directives/get-size-image/get-size-image.directive.js +1 -1
  379. package/esm2015/lib/shared/directives/holdable/holdable.directive.js +1 -1
  380. package/esm2015/lib/shared/directives/pictures-template/pictures-template.directive.js +1 -1
  381. package/esm2015/lib/shared/directives/shared-directives.module.js +1 -1
  382. package/esm2015/lib/shared/directives/show-delete-button/show-delete-button.directive.js +1 -1
  383. package/esm2015/lib/shared/pipes/add-zero-for-timer/add-zero-for-timer.pipe.js +1 -1
  384. package/esm2015/lib/shared/pipes/answer-type/answer-type.pipe.js +1 -1
  385. package/esm2015/lib/shared/pipes/array-number/array-number.pipe.js +1 -1
  386. package/esm2015/lib/shared/pipes/check-payment-value/check-payment-value.pipe.js +1 -1
  387. package/esm2015/lib/shared/pipes/even-odd/even-odd.pipe.js +1 -1
  388. package/esm2015/lib/shared/pipes/img-path/img-path.pipe.js +1 -1
  389. package/esm2015/lib/shared/pipes/safe-style/safe-style.pipe.js +1 -1
  390. package/esm2015/lib/shared/pipes/safe-url/safe-url.pipe.js +1 -1
  391. package/esm2015/lib/shared/pipes/shared-pipes.module.js +1 -1
  392. package/esm2015/lib/shared/pipes/strip-tags/strip-tags.pipe.js +1 -1
  393. package/esm2015/lib/shared/pipes/tiny-color/tiny-color.pipe.js +1 -1
  394. package/esm2015/lib/shared/shared.module.js +1 -1
  395. package/esm2015/lib/structures/amplify-product/zoom/amplify-product-zoom.component.js +1 -1
  396. package/esm2015/lib/structures/amplify-product/zoom-more/amplify-product-zoom-more.component.js +1 -1
  397. package/esm2015/lib/structures/amplify-product/zoom-selected/amplify-product-zoom-selected.component.js +1 -1
  398. package/esm2015/lib/structures/amplify-product/zoom-triple-column/amplify-product-zoom-triple-column.component.js +1 -1
  399. package/esm2015/lib/structures/amplify-products-list/classic/amplify-products-list-classic.component.js +1 -1
  400. package/esm2015/lib/structures/amplify-products-list/selected/amplify-products-list-selected.component.js +1 -1
  401. package/esm2015/lib/structures/amplify-products-list/simple/amplify-products-list-simple.component.js +1 -1
  402. package/esm2015/lib/structures/code/code-html/code-html.component.js +1 -1
  403. package/esm2015/lib/structures/code/code-javascript/code-javascript.component.js +1 -1
  404. package/esm2015/lib/structures/code/code-stylesheet/code-stylesheet.component.js +1 -1
  405. package/esm2015/lib/structures/faq/accordion/faq-accordion.component.js +1 -1
  406. package/esm2015/lib/structures/faq/frame/faq-frame.component.js +1 -1
  407. package/esm2015/lib/structures/faq/list-icon/faq-list-icon.component.js +1 -1
  408. package/esm2015/lib/structures/faq/simple/faq-simple.component.js +1 -1
  409. package/esm2015/lib/structures/faq/simple-background/faq-simple-background.component.js +1 -1
  410. package/esm2015/lib/structures/forms/background/forms-background.component.js +1 -1
  411. package/esm2015/lib/structures/forms/imageleft/forms-imageleft.component.js +1 -1
  412. package/esm2015/lib/structures/forms/imageright/forms-imageright.component.js +1 -1
  413. package/esm2015/lib/structures/forms/simple/forms-simple.component.js +1 -1
  414. package/esm2015/lib/structures/images/banner/images-banner.component.js +1 -1
  415. package/esm2015/lib/structures/images/big-and-double/images-big-and-double.component.js +1 -1
  416. package/esm2015/lib/structures/images/bigs-and-double-middle/images-bigs-and-double-middle.component.js +1 -1
  417. package/esm2015/lib/structures/images/double/images-double.component.js +1 -1
  418. package/esm2015/lib/structures/images/four-images-title/four-images-title.component.js +1 -1
  419. package/esm2015/lib/structures/images/quadruple/images-quadruple.component.js +1 -1
  420. package/esm2015/lib/structures/images/quadruple-left-one-right/images-quadruple-left-one-right.component.js +1 -1
  421. package/esm2015/lib/structures/images/simple/images-simple.component.js +1 -1
  422. package/esm2015/lib/structures/images/triple/images-triple.component.js +1 -1
  423. package/esm2015/lib/structures/images/two-images-title-text/two-images-title-text.component.js +1 -1
  424. package/esm2015/lib/structures/images-texts/big-left-text-right/images-texts-big-left-text-right.component.js +1 -1
  425. package/esm2015/lib/structures/images-texts/big-right-text-left/images-texts-big-right-text-left.component.js +1 -1
  426. package/esm2015/lib/structures/images-texts/left-text-right/images-texts-left-text-right.component.js +1 -1
  427. package/esm2015/lib/structures/images-texts/one-text-one/images-texts-one-text-one.component.js +1 -1
  428. package/esm2015/lib/structures/images-texts/right-text-left/images-texts-right-text-left.component.js +1 -1
  429. package/esm2015/lib/structures/images-texts/small-left-text-right/images-texts-small-left-text-right.component.js +1 -1
  430. package/esm2015/lib/structures/images-texts/small-right-text-left/images-texts-small-right-text-left.component.js +1 -1
  431. package/esm2015/lib/structures/images-texts/text-one-text/images-texts-text-one-text.component.js +1 -1
  432. package/esm2015/lib/structures/launch-videos/button/launch-videos-button.component.js +1 -1
  433. package/esm2015/lib/structures/launch-videos/buttontxt/launch-videos-buttontxt.component.js +1 -1
  434. package/esm2015/lib/structures/loader-component.module.js +1 -1
  435. package/esm2015/lib/structures/map/background-form-left/map-background-form-left.component.js +1 -1
  436. package/esm2015/lib/structures/map/background-form-right/map-background-form-right.component.js +1 -1
  437. package/esm2015/lib/structures/map/fullpage/map-fullpage.component.js +1 -1
  438. package/esm2015/lib/structures/map/left-text/map-left-text.component.js +1 -1
  439. package/esm2015/lib/structures/map/right-text/map-right-text.component.js +1 -1
  440. package/esm2015/lib/structures/map/text-form/map-text-form.component.js +1 -1
  441. package/esm2015/lib/structures/newsletter/aligned-center-background/newsletter-aligned-center-background.component.js +1 -1
  442. package/esm2015/lib/structures/newsletter/aligned-center-image/newsletter-aligned-center-image.component.js +1 -1
  443. package/esm2015/lib/structures/newsletter/center-image/newsletter-center-image.component.js +1 -1
  444. package/esm2015/lib/structures/onboarding/onboarding/forms-onboarding.component.js +1 -1
  445. package/esm2015/lib/structures/product/zoom/product-zoom.component.js +1 -1
  446. package/esm2015/lib/structures/product/zoom-complete/product-zoom-complete.component.js +1 -1
  447. package/esm2015/lib/structures/product/zoom-complete-background/product-zoom-complete-background.component.js +1 -1
  448. package/esm2015/lib/structures/product/zoom-complete-slider/product-zoom-complete-slider.component.js +1 -1
  449. package/esm2015/lib/structures/product/zoom-more/product-zoom-more.component.js +1 -1
  450. package/esm2015/lib/structures/product/zoom-selected/product-zoom-selected.component.js +1 -1
  451. package/esm2015/lib/structures/product/zoom-simple/product-zoom-simple.component.js +1 -1
  452. package/esm2015/lib/structures/product/zoom-triple-column/product-zoom-triple-column.component.js +1 -1
  453. package/esm2015/lib/structures/products-list/classic/products-list-classic.component.js +1 -1
  454. package/esm2015/lib/structures/products-list/selected/products-list-selected.component.js +1 -1
  455. package/esm2015/lib/structures/products-list/simple/products-list-simple.component.js +1 -1
  456. package/esm2015/lib/structures/quotes/author/quotes-author.component.js +1 -1
  457. package/esm2015/lib/structures/quotes/simple/quotes-simple.component.js +1 -1
  458. package/esm2015/lib/structures/quotes/simple-background/quotes-simple-background.component.js +1 -1
  459. package/esm2015/lib/structures/rassurances/quadruple-aligned/rassurances-quadruple-aligned.component.js +1 -1
  460. package/esm2015/lib/structures/rassurances/quadruple-background/rassurances-quadruple-background.component.js +1 -1
  461. package/esm2015/lib/structures/rassurances/triple-background/rassurances-triple-background.component.js +1 -1
  462. package/esm2015/lib/structures/reviews/simple/reviews-simple.component.js +1 -1
  463. package/esm2015/lib/structures/reviews/waterfall/reviews-waterfall.component.js +1 -1
  464. package/esm2015/lib/structures/separator/separator-simple/separator-simple.component.js +1 -1
  465. package/esm2015/lib/structures/sliders/double-imageright/slider-double-imageright.component.js +1 -1
  466. package/esm2015/lib/structures/sliders/fullpage/slider-fullpage.component.js +1 -1
  467. package/esm2015/lib/structures/sliders/imageright/slider-imageright.component.js +1 -1
  468. package/esm2015/lib/structures/sliders/leftnav/slider-leftnav.component.js +1 -1
  469. package/esm2015/lib/structures/sliders/with-banner/slider-with-banner.component.js +1 -1
  470. package/esm2015/lib/structures/socials/like/socials-like.component.js +1 -1
  471. package/esm2015/lib/structures/socials/network/socials-network.component.js +1 -1
  472. package/esm2015/lib/structures/socials/page-complex/socials-page-complex.component.js +1 -1
  473. package/esm2015/lib/structures/socials/page-simple/socials-page-simple.component.js +1 -1
  474. package/esm2015/lib/structures/structures.component.js +1 -1
  475. package/esm2015/lib/structures/structures.module.js +1 -1
  476. package/esm2015/lib/structures/text-backgrounds/four-rows-icon-text/text-backgrounds-four-rows-icon-text.component.js +7 -2
  477. package/esm2015/lib/structures/text-backgrounds/link/text-backgrounds-link.component.js +1 -1
  478. package/esm2015/lib/structures/text-backgrounds/simple/text-backgrounds-simple.component.js +1 -1
  479. package/esm2015/lib/structures/text-backgrounds/three-rows-icon-text/text-backgrounds-three-rows-icon-text.component.js +2 -2
  480. package/esm2015/lib/structures/text-backgrounds/two-rows-icon-text/text-backgrounds-two-rows-icon-text.component.js +2 -2
  481. package/esm2015/lib/structures/text-backgrounds/with-banner/text-backgrounds-with-banner.component.js +1 -1
  482. package/esm2015/lib/structures/text-backgrounds/with-txt/text-backgrounds-with-txt.component.js +1 -1
  483. package/esm2015/lib/structures/texts/double/texts-double.component.js +1 -1
  484. package/esm2015/lib/structures/texts/double-background/texts-double-background.component.js +1 -1
  485. package/esm2015/lib/structures/texts/one/texts-one.component.js +1 -1
  486. package/esm2015/lib/structures/texts/one-background/texts-one-background.component.js +1 -1
  487. package/esm2015/lib/structures/texts/quadruple/texts-quadruple.component.js +1 -1
  488. package/esm2015/lib/structures/texts/quadruple-background/texts-quadruple-background.component.js +1 -1
  489. package/esm2015/lib/structures/texts/quadruple-numbers/texts-quadruple-numbers.component.js +2 -2
  490. package/esm2015/lib/structures/texts/triple/texts-triple.component.js +1 -1
  491. package/esm2015/lib/structures/texts/triple-background/texts-triple-background.component.js +1 -1
  492. package/esm2015/lib/structures/timer/airport/timer-airport.component.js +2 -2
  493. package/esm2015/lib/structures/timer/background/timer-background.component.js +2 -2
  494. package/esm2015/lib/structures/timer/clock/timer-clock.component.js +2 -2
  495. package/esm2015/lib/structures/timer/multiple-img/timer-multiple-img.component.js +2 -2
  496. package/esm2015/lib/structures/timer/simple/timer-simple.component.js +2 -2
  497. package/esm2015/lib/structures/videos/simple/videos-simple.component.js +1 -1
  498. package/esm2015/lib/structures/videos/txt/videos-txt.component.js +1 -1
  499. package/esm2015/lib/structures/videos/txt-content/videos-txt-content.component.js +1 -1
  500. package/esm2015/lib/structures/videos/txt-left/videos-txt-left.component.js +1 -1
  501. package/esm2015/lib/structures/witness/about-block/about-block.component.js +1 -1
  502. package/esm2015/lib/structures/witness/background-double/witness-background-double.component.js +1 -1
  503. package/esm2015/lib/structures/witness/background-one/witness-background-one.component.js +1 -1
  504. package/esm2015/lib/structures/witness/quadruple/witness-quadruple.component.js +1 -1
  505. package/esm2015/lib/structures/witness/triple/witness-triple.component.js +1 -1
  506. package/esm2015/lib/structures/witness/twice/witness-twice.component.js +1 -1
  507. package/esm2015/lib/wizi-block.component.js +4 -4
  508. package/esm2015/lib/wizi-block.module.js +1 -1
  509. package/esm2015/public_api.js +1 -1
  510. package/esm2015/wizishop-wizi-block.js +227 -226
  511. package/fesm2015/wizishop-wizi-block.js +362 -97
  512. package/fesm2015/wizishop-wizi-block.js.map +1 -1
  513. package/lib/shared/components/editorjs/editorjs.component.d.ts +5 -1
  514. package/lib/shared/components/editorjs/tools/inline/link-tool.component.d.ts +2 -0
  515. package/lib/shared/components/editorjs/tools/inline/tool-type/inline-style-tool.component.d.ts +3 -2
  516. package/lib/shared/components/editorjs/tools/paragraph/tool-type/paragraph-style-tool.component.d.ts +5 -0
  517. package/lib/shared/components/editorjs/tools/utils/editorjs-tool.component.d.ts +3 -0
  518. package/lib/shared/components/editorjs/tools/utils/editorjs-translation.service.d.ts +7 -0
  519. package/lib/structures/text-backgrounds/four-rows-icon-text/text-backgrounds-four-rows-icon-text.component.d.ts +1 -0
  520. package/package.json +4 -2
  521. package/wizi-block.scss +2727 -2435
  522. package/wizishop-wizi-block.d.ts +226 -225
  523. package/wizishop-wizi-block.metadata.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { isBlockFocused, setBlockFocus } from '../utils/editorjs-tool.component';
3
+ import { editorJSI18nDictionnary } from '../utils/editorjs-translation.service';
3
4
  import { ColorTool } from './tool-type/color-tool.component';
4
5
  // @dynamic
5
6
  export class TextColorTool extends ColorTool {
@@ -93,6 +94,7 @@ export class TextColorTool extends ColorTool {
93
94
  if (!isBlockFocused) {
94
95
  setBlockFocus(this.parentEditor);
95
96
  }
97
+ this.checkDefaultColors();
96
98
  const isActive = this.hasStyle(selection.anchorNode) ? true : false;
97
99
  this.nodes.button.classList.toggle(this.CSS.buttonActive, isActive);
98
100
  return isActive;
@@ -117,7 +119,7 @@ export class TextColorTool extends ColorTool {
117
119
  let customColor = document.createElement('div');
118
120
  customColor.className = this.colorSelectionCss['container'];
119
121
  let text = document.createElement('p');
120
- text.innerText = this.api.i18n.t('customColor');
122
+ text.innerText = editorJSI18nDictionnary.messages.tools.textBackgroundColor['customColor'];
121
123
  let button = document.createElement('div');
122
124
  button.addEventListener('click', (event) => this.openCustomColorPicker(event));
123
125
  let container = this.createCustomColorPicker();
@@ -143,4 +145,4 @@ export class TextColorTool extends ColorTool {
143
145
  }
144
146
  }
145
147
  TextColorTool.title = 'Text Color';
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1jb2xvci10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9icmlhbi9Eb2N1bWVudHMvd29ya3NwYWNlL3dpemktYmxvY2svcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkL2NvbXBvbmVudHMvZWRpdG9yanMvdG9vbHMvaW5saW5lL3RleHQtY29sb3ItdG9vbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFlLE1BQU0sa0NBQWtDLENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTdELFdBQVc7QUFDWCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQVM7SUEwRHhDLFlBQVksRUFBRSxHQUFHLEVBQUU7UUFDZixLQUFLLEVBQUUsQ0FBQztRQXhESyxnQkFBVyxHQUFXLFdBQVcsQ0FBQztRQUVuRCxRQUFHLEdBQUc7WUFDRixNQUFNLEVBQUUsZ0JBQWdCO1lBQ3hCLFlBQVksRUFBRSx3QkFBd0I7WUFDdEMsY0FBYyxFQUFFLDJCQUEyQjtZQUMzQyxzQkFBc0IsRUFBRSwyQ0FBMkM7WUFDbkUsc0JBQXNCLEVBQUUsOEJBQThCO1lBQ3RELGFBQWEsRUFBRSx1QkFBdUI7U0FDekMsQ0FBQztRQUVGLFVBQUssR0FBa0M7WUFDbkMsTUFBTSxFQUFFLFNBQVM7U0FDcEIsQ0FBQztRQU1GLFFBQUcsR0FBRyxNQUFNLENBQUM7UUFFYixVQUFLLEdBQWdCO1lBQ2pCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLEtBQUssRUFBRSxJQUFJO1lBQ1gsT0FBTyxFQUFFLFNBQVM7WUFDbEIsS0FBSyxFQUFFLFNBQVM7U0FDbkIsQ0FBQztRQUVGLGFBQVEsR0FBRztZQUNQLEdBQUcsRUFBRSxLQUFLO1lBQ1YsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLLEVBQUUsS0FBSztZQUNaLFNBQVMsRUFBRSxLQUFL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QUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzlDLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQzs7QUFyS2EsbUJBQUssR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmxpbmVUb29sLCBTYW5pdGl6ZXJDb25maWcgfSBmcm9tICdAZWRpdG9yanMvZWRpdG9yanMnO1xuaW1wb3J0IHsgaXNCbG9ja0ZvY3VzZWQsIHNldEJsb2NrRm9jdXMsIFN0eWxlT2JqZWN0IH0gZnJvbSAnLi4vdXRpbHMvZWRpdG9yanMtdG9vbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29sb3JUb29sIH0gZnJvbSAnLi90b29sLXR5cGUvY29sb3ItdG9vbC5jb21wb25lbnQnO1xuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIFRleHRDb2xvclRvb2wgZXh0ZW5kcyBDb2xvclRvb2wgaW1wbGVtZW50cyBJbmxpbmVUb29sIHtcbiAgICBwdWJsaWMgc3RhdGljIHRpdGxlID0gJ1RleHQgQ29sb3InO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21tYW5kTmFtZTogc3RyaW5nID0gJ3RleHRjb2xvcic7XG5cbiAgICBDU1MgPSB7XG4gICAgICAgIGJ1dHRvbjogJ2NlLWlubGluZS10b29sJyxcbiAgICAgICAgYnV0dG9uQWN0aXZlOiAnY2UtaW5saW5lLXRvb2wtLWFjdGl2ZScsXG4gICAgICAgIGJ1dHRvbk1vZGlmaWVyOiAnY2UtaW5saW5lLXRvb2wtLXRleHRDb2xvcicsXG4gICAgICAgIGNvbG9ySW5kaWNhdG9yTW9kaWZpZXI6ICdjZS1pbmxpbmUtdG9vbC0tdGV4dENvbG9yX19jb2xvckluZGljYXRvcicsXG4gICAgICAgIGNvbG9yU2VsZWN0aW9uTW9kaWZpZXI6ICdjZS1pbmxpbmUtYWN0aW9ucy0tdGV4dENvbG9yJyxcbiAgICAgICAgY29sb3JQaWNrZXJJZDogJ2NvbG9yUGlja2VyLXRleHRDb2xvcicsXG4gICAgfTtcblxuICAgIG5vZGVzOiB7IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgfSA9IHtcbiAgICAgICAgYnV0dG9uOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIGFwaTogYW55O1xuXG4gICAgcHJpdmF0ZSBfc3RhdGU6IGJvb2xlYW47XG5cbiAgICB0YWcgPSAnU1BBTic7XG5cbiAgICBzdHlsZTogU3R5bGVPYmplY3QgPSB7XG4gICAgICAgIHByb3BlcnR5OiAnY29sb3InLFxuICAgICAgICB2YWx1ZTogJyQxJyxcbiAgICAgICAgZGVmYXVsdDogJ2luaXRpYWwnLFxuICAgICAgICBpbnB1dDogJyNmNWYxY2MnLFxuICAgIH07XG5cbiAgICBtb2RpZmllcyA9IHtcbiAgICAgICAgdGFnOiBmYWxzZSxcbiAgICAgICAgc3R5bGU6IHRydWUsXG4gICAgICAgIGNsYXNzOiBmYWxzZSxcbiAgICAgICAgYXR0cmlidXRlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgaXNJbmxpbmUoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IHNhbml0aXplKCk6IFNhbml0aXplckNvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiOiB7fSxcbiAgICAgICAgfSBhcyBTYW5pdGl6ZXJDb25maWc7XG4gICAgfVxuXG4gICAgZ2V0IHN0YXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gICAgfVxuXG4gICAgc2V0IHN0YXRlKHN0YXRlKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7XG5cbiAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uY2xhc3NMaXN0LnRvZ2dsZSh0aGlzLmFwaS5zdHlsZXMuaW5saW5lVG9vbEJ1dHRvbkFjdGl2ZSwgc3RhdGUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHsgYXBpIH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5hcGkgPSBhcGk7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbi50eXBlID0gJ2J1dHRvbic7XG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC5hZGQodGhpcy5DU1MuYnV0dG9uLCB0aGlzLkNTUy5idXR0b25Nb2RpZmllcik7XG4gICAgICAgIGlmICh0aGlzLmhhc1NlcGFyYXRvckJlZm9yZSkge1xuICAgICAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uY2xhc3NMaXN0LmFkZCh0aGlzLnNlcGFyYXRvckNsYXNzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMub3BlbkNvbG9yUGlja2VyKCkpO1xuICAgICAgICB0aGlzLmNvbG9ySW5kaWNhdG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICB0aGlzLmNvbG9ySW5kaWNhdG9yLmNsYXNzTGlzdC5hZGQodGhpcy5DU1MuY29sb3JJbmRpY2F0b3JNb2RpZmllcik7XG4gICAgICAgIHRoaXMuY29sb3JJbmRpY2F0b3Iuc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgJ3N0eWxlJyxcbiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yOicgKyB0aGlzLmdldEN1cnJlbnRDb2xvckFwcGxpZWQodGhpcy5nZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlLnBhcmVudEVsZW1lbnQpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmFwcGVuZCh0aGlzLmNvbG9ySW5kaWNhdG9yKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5ub2Rlcy5idXR0b247XG4gICAgfVxuXG4gICAgYXN5bmMgc3Vycm91bmQocmFuZ2U6IFJhbmdlLCBhcHBseUNvbG9yOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGFwcGx5Q29sb3IpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZXhlY0NvbW1hbmRTdHlsZSh0aGlzLnRhZyk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrU3RhdGUodGhpcy5nZXRTZWxlY3Rpb24oKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBhcHBseUNvbG9yKGNvbG9yOiBzdHJpbmcsIGlucHV0VG9Gb2N1czogSFRNTElucHV0RWxlbWVudCA9IG51bGwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgbGV0IGNvbG9ySW5kaWNhdG9yID0gdGhpcy5ub2Rlcy5idXR0b24ucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLkNTUy5jb2xvckluZGljYXRvck1vZGlmaWVyKVswXTtcbiAgICAgICAgdGhpcy5zdHlsZS5pbnB1dCA9IGNvbG9yO1xuICAgICAgICB0aGlzLnJlc2V0VXNlclNlbGVjdGlvbigpO1xuICAgICAgICBhd2FpdCB0aGlzLnN1cnJvdW5kKG51bGwsIHRydWUpO1xuICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdENvbG9ycygpO1xuICAgICAgICB0aGlzLmNoZWNrU3RhdGUodGhpcy5jdXJyZW50U2VsZWN0aW9uKTtcbiAgICAgICAgY29sb3JJbmRpY2F0b3Iuc2V0QXR0cmlidXRlKCdzdHlsZScsICdiYWNrZ3JvdW5kLWNvbG9yOicgKyBjb2xvcik7XG4gICAgICAgIHRoaXMuc2F2ZVVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKGlucHV0VG9Gb2N1cykge1xuICAgICAgICAgICAgaW5wdXRUb0ZvY3VzLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy90aGlzLmhpZGVBY3Rpb25zKCk7XG4gICAgfVxuXG4gICAgY2hlY2tTdGF0ZShzZWxlY3Rpb24pIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudEVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzQmxvY2tGb2N1c2VkKSB7XG4gICAgICAgICAgICBzZXRCbG9ja0ZvY3VzKHRoaXMucGFyZW50RWRpdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IHRoaXMuaGFzU3R5bGUoPEhUTUxFbGVtZW50PnNlbGVjdGlvbi5hbmNob3JOb2RlKSA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uY2xhc3NMaXN0LnRvZ2dsZSh0aGlzLkNTUy5idXR0b25BY3RpdmUsIGlzQWN0aXZlKTtcblxuICAgICAgICByZXR1cm4gaXNBY3RpdmU7XG4gICAgfVxuXG4gICAgcmVuZGVyQWN0aW9ucygpIHtcbiAgICAgICAgdGhpcy5jb2xvclNlbGVjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB0aGlzLmNvbG9yU2VsZWN0aW9uLmNsYXNzTmFtZSA9IHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ3dyYXBwZXInXSArICcgaGlkZGVuICcgKyB0aGlzLkNTUy5jb2xvclNlbGVjdGlvbk1vZGlmaWVyO1xuICAgICAgICB0aGlzLmNvbG9ycy5mb3JFYWNoKChjb2xvclJvdykgPT4ge1xuICAgICAgICAgICAgbGV0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgcm93LmNsYXNzTmFtZSA9IHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ3JvdyddO1xuICAgICAgICAgICAgY29sb3JSb3cuZm9yRWFjaCgoY29sb3IpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29sb3IgJiYgY29sb3IgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2xvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3JFbGVtZW50LmNsYXNzTmFtZSA9IHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2l0ZW0nXTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3JFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnYmFja2dyb3VuZC1jb2xvcjonICsgY29sb3IpO1xuICAgICAgICAgICAgICAgICAgICBjb2xvckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLmFwcGx5Q29sb3IoY29sb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgcm93LmFwcGVuZENoaWxkKGNvbG9yRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmNvbG9yU2VsZWN0aW9uLmFwcGVuZENoaWxkKHJvdyk7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgY3VzdG9tQ29sb3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY3VzdG9tQ29sb3IuY2xhc3NOYW1lID0gdGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29udGFpbmVyJ107XG4gICAgICAgIGxldCB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgICAgICB0ZXh0LmlubmVyVGV4dCA9IHRoaXMuYXBpLmkxOG4udCgnY3VzdG9tQ29sb3InKTtcbiAgICAgICAgbGV0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHRoaXMub3BlbkN1c3RvbUNvbG9yUGlja2VyKGV2ZW50KSk7XG4gICAgICAgIGxldCBjb250YWluZXIgPSB0aGlzLmNyZWF0ZUN1c3RvbUNvbG9yUGlja2VyKCk7XG4gICAgICAgIGJ1dHRvbi5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuXG4gICAgICAgIGN1c3RvbUNvbG9yLmFwcGVuZENoaWxkKHRleHQpO1xuICAgICAgICBjdXN0b21Db2xvci5hcHBlbmRDaGlsZChidXR0b24pO1xuICAgICAgICB0aGlzLmNvbG9yU2VsZWN0aW9uLmFwcGVuZENoaWxkKGN1c3RvbUNvbG9yKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jb2xvclNlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBzaG93QWN0aW9ucyhtYXJrKSB7XG4gICAgICAgIHRoaXMuc3R5bGUuaW5wdXQgPSBtYXJrICYmIG1hcmsuc3R5bGUgJiYgbWFyay5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPyBtYXJrLnN0eWxlLmJhY2tncm91bmRDb2xvciA6ICcjZjVmMWNjJztcblxuICAgICAgICB0aGlzLmNvbG9yU2VsZWN0aW9uLm9uY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgbWFyay5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSB0aGlzLnN0eWxlLmlucHV0O1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbG9yU2VsZWN0aW9uLmhpZGRlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIGhpZGVBY3Rpb25zKCkge1xuICAgICAgICBsZXQgY29sb3JTZWxlY3Rpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpWzBdO1xuICAgICAgICB0aGlzLmlzQ29sb3JTZWxlY3Rpb25PcGVuID0gZmFsc2U7XG4gICAgICAgIGlmICghY29sb3JTZWxlY3Rpb24uY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKSkge1xuICAgICAgICAgICAgY29sb3JTZWxlY3Rpb24uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1jb2xvci10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9wYXVsaW5lL0RvY3VtZW50cy93b3Jrc3BhY2Uvd2l6aS1ibG9jay9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY29tcG9uZW50cy9lZGl0b3Jqcy90b29scy9pbmxpbmUvdGV4dC1jb2xvci10b29sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQWUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFN0QsV0FBVztBQUNYLE1BQU0sT0FBTyxhQUFjLFNBQVEsU0FBUztJQTBEeEMsWUFBWSxFQUFFLEdBQUcsRUFBRTtRQUNmLEtBQUssRUFBRSxDQUFDO1FBeERLLGdCQUFXLEdBQVcsV0FBVyxDQUFDO1FBRW5ELFFBQUcsR0FBRztZQUNGLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsWUFBWSxFQUFFLHdCQUF3QjtZQUN0QyxjQUFjLEVBQUUsMkJBQTJCO1lBQzNDLHNCQUFzQixFQUFFLDJDQUEyQztZQUNuRSxzQkFBc0IsRUFBRSw4QkFBOEI7WUFDdEQsYUFBYSxFQUFFLHVCQUF1QjtTQUN6QyxDQUFDO1FBRUYsVUFBSyxHQUFrQztZQUNuQyxNQUFNLEVBQUUsU0FBUztTQUNwQixDQUFDO1FBTUYsUUFBRyxHQUFHLE1BQU0sQ0FBQztRQUViLFVBQUssR0FBZ0I7WUFDakIsUUFBUSxFQUFFLE9BQU87WUFDakIsS0FBSyxFQUFFLElBQUk7WUFDWCxPQUFPLEVBQUUsU0FBUztZQUNsQixLQUFLLEVBQUUsU0FBUztTQUNuQixDQUFDO1FBRUYsYUFBUSxHQUFHO1lBQ1AsR0FBRyxFQUFFLEtBQUs7WUFDVixLQUFLLEVB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Q0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksY0FBYyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzlDLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQzs7QUF0S2EsbUJBQUssR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmxpbmVUb29sLCBTYW5pdGl6ZXJDb25maWcgfSBmcm9tICdAZWRpdG9yanMvZWRpdG9yanMnO1xuaW1wb3J0IHsgaXNCbG9ja0ZvY3VzZWQsIHNldEJsb2NrRm9jdXMsIFN0eWxlT2JqZWN0IH0gZnJvbSAnLi4vdXRpbHMvZWRpdG9yanMtdG9vbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZWRpdG9ySlNJMThuRGljdGlvbm5hcnkgfSBmcm9tICcuLi91dGlscy9lZGl0b3Jqcy10cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbG9yVG9vbCB9IGZyb20gJy4vdG9vbC10eXBlL2NvbG9yLXRvb2wuY29tcG9uZW50JztcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBUZXh0Q29sb3JUb29sIGV4dGVuZHMgQ29sb3JUb29sIGltcGxlbWVudHMgSW5saW5lVG9vbCB7XG4gICAgcHVibGljIHN0YXRpYyB0aXRsZSA9ICdUZXh0IENvbG9yJztcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbWFuZE5hbWU6IHN0cmluZyA9ICd0ZXh0Y29sb3InO1xuXG4gICAgQ1NTID0ge1xuICAgICAgICBidXR0b246ICdjZS1pbmxpbmUtdG9vbCcsXG4gICAgICAgIGJ1dHRvbkFjdGl2ZTogJ2NlLWlubGluZS10b29sLS1hY3RpdmUnLFxuICAgICAgICBidXR0b25Nb2RpZmllcjogJ2NlLWlubGluZS10b29sLS10ZXh0Q29sb3InLFxuICAgICAgICBjb2xvckluZGljYXRvck1vZGlmaWVyOiAnY2UtaW5saW5lLXRvb2wtLXRleHRDb2xvcl9fY29sb3JJbmRpY2F0b3InLFxuICAgICAgICBjb2xvclNlbGVjdGlvbk1vZGlmaWVyOiAnY2UtaW5saW5lLWFjdGlvbnMtLXRleHRDb2xvcicsXG4gICAgICAgIGNvbG9yUGlja2VySWQ6ICdjb2xvclBpY2tlci10ZXh0Q29sb3InLFxuICAgIH07XG5cbiAgICBub2RlczogeyBidXR0b246IEhUTUxCdXR0b25FbGVtZW50IH0gPSB7XG4gICAgICAgIGJ1dHRvbjogdW5kZWZpbmVkLFxuICAgIH07XG5cbiAgICBhcGk6IGFueTtcblxuICAgIHByaXZhdGUgX3N0YXRlOiBib29sZWFuO1xuXG4gICAgdGFnID0gJ1NQQU4nO1xuXG4gICAgc3R5bGU6IFN0eWxlT2JqZWN0ID0ge1xuICAgICAgICBwcm9wZXJ0eTogJ2NvbG9yJyxcbiAgICAgICAgdmFsdWU6ICckMScsXG4gICAgICAgIGRlZmF1bHQ6ICdpbml0aWFsJyxcbiAgICAgICAgaW5wdXQ6ICcjZjVmMWNjJyxcbiAgICB9O1xuXG4gICAgbW9kaWZpZXMgPSB7XG4gICAgICAgIHRhZzogZmFsc2UsXG4gICAgICAgIHN0eWxlOiB0cnVlLFxuICAgICAgICBjbGFzczogZmFsc2UsXG4gICAgICAgIGF0dHJpYnV0ZTogZmFsc2UsXG4gICAgfTtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IGlzSW5saW5lKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCBzYW5pdGl6ZSgpOiBTYW5pdGl6ZXJDb25maWcge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYjoge30sXG4gICAgICAgIH0gYXMgU2FuaXRpemVyQ29uZmlnO1xuICAgIH1cblxuICAgIGdldCBzdGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICAgIH1cblxuICAgIHNldCBzdGF0ZShzdGF0ZSkge1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlO1xuXG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC50b2dnbGUodGhpcy5hcGkuc3R5bGVzLmlubGluZVRvb2xCdXR0b25BY3RpdmUsIHN0YXRlKTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcih7IGFwaSB9KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYXBpID0gYXBpO1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24udHlwZSA9ICdidXR0b24nO1xuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbi5jbGFzc0xpc3QuYWRkKHRoaXMuQ1NTLmJ1dHRvbiwgdGhpcy5DU1MuYnV0dG9uTW9kaWZpZXIpO1xuICAgICAgICBpZiAodGhpcy5oYXNTZXBhcmF0b3JCZWZvcmUpIHtcbiAgICAgICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC5hZGQodGhpcy5zZXBhcmF0b3JDbGFzcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLm9wZW5Db2xvclBpY2tlcigpKTtcbiAgICAgICAgdGhpcy5jb2xvckluZGljYXRvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgdGhpcy5jb2xvckluZGljYXRvci5jbGFzc0xpc3QuYWRkKHRoaXMuQ1NTLmNvbG9ySW5kaWNhdG9yTW9kaWZpZXIpO1xuICAgICAgICB0aGlzLmNvbG9ySW5kaWNhdG9yLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICdzdHlsZScsXG4gICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcjonICsgdGhpcy5nZXRDdXJyZW50Q29sb3JBcHBsaWVkKHRoaXMuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5wYXJlbnRFbGVtZW50KVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbi5hcHBlbmQodGhpcy5jb2xvckluZGljYXRvcik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZXMuYnV0dG9uO1xuICAgIH1cblxuICAgIGFzeW5jIHN1cnJvdW5kKHJhbmdlOiBSYW5nZSwgYXBwbHlDb2xvcjogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChhcHBseUNvbG9yKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmV4ZWNDb21tYW5kU3R5bGUodGhpcy50YWcpO1xuICAgICAgICAgICAgdGhpcy5jaGVja1N0YXRlKHRoaXMuZ2V0U2VsZWN0aW9uKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgYXBwbHlDb2xvcihjb2xvcjogc3RyaW5nLCBpbnB1dFRvRm9jdXM6IEhUTUxJbnB1dEVsZW1lbnQgPSBudWxsKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGxldCBjb2xvckluZGljYXRvciA9IHRoaXMubm9kZXMuYnV0dG9uLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MuY29sb3JJbmRpY2F0b3JNb2RpZmllcilbMF07XG4gICAgICAgIHRoaXMuc3R5bGUuaW5wdXQgPSBjb2xvcjtcbiAgICAgICAgdGhpcy5yZXNldFVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdXJyb3VuZChudWxsLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jaGVja0RlZmF1bHRDb2xvcnMoKTtcbiAgICAgICAgdGhpcy5jaGVja1N0YXRlKHRoaXMuY3VycmVudFNlbGVjdGlvbik7XG4gICAgICAgIGNvbG9ySW5kaWNhdG9yLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnYmFja2dyb3VuZC1jb2xvcjonICsgY29sb3IpO1xuICAgICAgICB0aGlzLnNhdmVVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChpbnB1dFRvRm9jdXMpIHtcbiAgICAgICAgICAgIGlucHV0VG9Gb2N1cy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIC8vdGhpcy5oaWRlQWN0aW9ucygpO1xuICAgIH1cblxuICAgIGNoZWNrU3RhdGUoc2VsZWN0aW9uKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yID0gdGhpcy5maW5kUGFyZW50RWRpdG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0Jsb2NrRm9jdXNlZCkge1xuICAgICAgICAgICAgc2V0QmxvY2tGb2N1cyh0aGlzLnBhcmVudEVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGVja0RlZmF1bHRDb2xvcnMoKTtcbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSB0aGlzLmhhc1N0eWxlKDxIVE1MRWxlbWVudD5zZWxlY3Rpb24uYW5jaG9yTm9kZSkgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC50b2dnbGUodGhpcy5DU1MuYnV0dG9uQWN0aXZlLCBpc0FjdGl2ZSk7XG5cbiAgICAgICAgcmV0dXJuIGlzQWN0aXZlO1xuICAgIH1cblxuICAgIHJlbmRlckFjdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuY29sb3JTZWxlY3Rpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGhpcy5jb2xvclNlbGVjdGlvbi5jbGFzc05hbWUgPSB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWyd3cmFwcGVyJ10gKyAnIGhpZGRlbiAnICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcjtcbiAgICAgICAgdGhpcy5jb2xvcnMuZm9yRWFjaCgoY29sb3JSb3cpID0+IHtcbiAgICAgICAgICAgIGxldCByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgIHJvdy5jbGFzc05hbWUgPSB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydyb3cnXTtcbiAgICAgICAgICAgIGNvbG9yUm93LmZvckVhY2goKGNvbG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yICYmIGNvbG9yICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY29sb3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yRWxlbWVudC5jbGFzc05hbWUgPSB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydpdGVtJ107XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2JhY2tncm91bmQtY29sb3I6JyArIGNvbG9yKTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3JFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5hcHBseUNvbG9yKGNvbG9yKSk7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChjb2xvckVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jb2xvclNlbGVjdGlvbi5hcHBlbmRDaGlsZChyb3cpO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IGN1c3RvbUNvbG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGN1c3RvbUNvbG9yLmNsYXNzTmFtZSA9IHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbnRhaW5lciddO1xuICAgICAgICBsZXQgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICAgICAgdGV4dC5pbm5lclRleHQgPSBlZGl0b3JKU0kxOG5EaWN0aW9ubmFyeS5tZXNzYWdlcy50b29scy50ZXh0QmFja2dyb3VuZENvbG9yWydjdXN0b21Db2xvciddO1xuICAgICAgICBsZXQgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4gdGhpcy5vcGVuQ3VzdG9tQ29sb3JQaWNrZXIoZXZlbnQpKTtcbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IHRoaXMuY3JlYXRlQ3VzdG9tQ29sb3JQaWNrZXIoKTtcbiAgICAgICAgYnV0dG9uLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG5cbiAgICAgICAgY3VzdG9tQ29sb3IuYXBwZW5kQ2hpbGQodGV4dCk7XG4gICAgICAgIGN1c3RvbUNvbG9yLmFwcGVuZENoaWxkKGJ1dHRvbik7XG4gICAgICAgIHRoaXMuY29sb3JTZWxlY3Rpb24uYXBwZW5kQ2hpbGQoY3VzdG9tQ29sb3IpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbG9yU2VsZWN0aW9uO1xuICAgIH1cblxuICAgIHNob3dBY3Rpb25zKG1hcmspIHtcbiAgICAgICAgdGhpcy5zdHlsZS5pbnB1dCA9IG1hcmsgJiYgbWFyay5zdHlsZSAmJiBtYXJrLnN0eWxlLmJhY2tncm91bmRDb2xvciA/IG1hcmsuc3R5bGUuYmFja2dyb3VuZENvbG9yIDogJyNmNWYxY2MnO1xuXG4gICAgICAgIHRoaXMuY29sb3JTZWxlY3Rpb24ub25jaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBtYXJrLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IHRoaXMuc3R5bGUuaW5wdXQ7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY29sb3JTZWxlY3Rpb24uaGlkZGVuID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaGlkZUFjdGlvbnMoKSB7XG4gICAgICAgIGxldCBjb2xvclNlbGVjdGlvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcilbMF07XG4gICAgICAgIHRoaXMuaXNDb2xvclNlbGVjdGlvbk9wZW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKCFjb2xvclNlbGVjdGlvbi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICBjb2xvclNlbGVjdGlvbi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -2,6 +2,7 @@ import { __awaiter } from "tslib";
2
2
  import { InlineTextTool } from './tool-type/text-tool.component';
3
3
  import { TEXT_SIZES } from '../utils/texts.component';
4
4
  import { isBlockFocused, setBlockFocus } from '../utils/editorjs-tool.component';
5
+ import { editorJSI18nDictionnary } from '../utils/editorjs-translation.service';
5
6
  // @dynamic
6
7
  export class textSizeTool extends InlineTextTool {
7
8
  constructor({ api }) {
@@ -55,7 +56,7 @@ export class textSizeTool extends InlineTextTool {
55
56
  this.nodes.button.addEventListener('click', () => this.openDropdown());
56
57
  this.textSizes.forEach((textSize) => {
57
58
  let span = document.createElement('span');
58
- span.innerText = this.api.i18n.t(textSize.name);
59
+ span.innerText = editorJSI18nDictionnary.messages.tools.textSize[textSize.name];
59
60
  this.nodes.button.appendChild(span);
60
61
  });
61
62
  let dropdownArrow = document.createElement('span');
@@ -100,7 +101,7 @@ export class textSizeTool extends InlineTextTool {
100
101
  this.textSizes.forEach((textSize) => {
101
102
  let row = document.createElement('div');
102
103
  row.className = this.dropdownCss['row'];
103
- row.innerText = this.api.i18n.t(textSize.name);
104
+ row.innerText = editorJSI18nDictionnary.messages.tools.textSize[textSize.name];
104
105
  row.addEventListener('click', () => this.applyTextStyle(textSize.class));
105
106
  textSizeDropdown.appendChild(row);
106
107
  });
@@ -130,4 +131,4 @@ export class textSizeTool extends InlineTextTool {
130
131
  }
131
132
  }
132
133
  textSizeTool.title = 'Text Size';
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1zaXplLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL2JyaWFuL0RvY3VtZW50cy93b3Jrc3BhY2Uvd2l6aS1ibG9jay9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY29tcG9uZW50cy9lZGl0b3Jqcy90b29scy9pbmxpbmUvdGV4dC1zaXplLXRvb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFZLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFakYsV0FBVztBQUNYLE1BQU0sT0FBTyxZQUFhLFNBQVEsY0FBYztJQXdENUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtRQUNmLEtBQUssRUFBRSxDQUFDO1FBdERLLGdCQUFXLEdBQVcsVUFBVSxDQUFDO1FBRWxELFFBQUcsR0FBRztZQUNGLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsWUFBWSxFQUFFLHdCQUF3QjtZQUN0QyxjQUFjLEVBQUUsMEJBQTBCO1lBQzFDLG1CQUFtQixFQUFFLGlDQUFpQztZQUN0RCxxQkFBcUIsRUFBRSw2QkFBNkI7U0FDdkQsQ0FBQztRQUVGLFVBQUssR0FBa0M7WUFDbkMsTUFBTSxFQUFFLFNBQVM7U0FDcEIsQ0FBQztRQU1GLFFBQUcsR0FBRyxNQUFNLENBQUM7UUFFYixjQUFTLEdBQW9CLFVBQVUsQ0FBQztRQUV4QyxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUVsQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsYUFBUSxHQUFHO1lBQ1AsR0FBRyxFQUFFLEtBQUs7WUFDVixLQUFLLEVBQUUsS0FBSztZQUNaLEtBQUssRUFBRSxJQUFJO1lBQ1gsU0FBUyxFQUFFLEtBQUs7U0FDbkIsQ0FBQztR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LENBQUM7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7S0FBQTs7QUFwSmEsa0JBQUssR0FBRyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmxpbmVUb29sLCBTYW5pdGl6ZXJDb25maWcgfSBmcm9tICdAZWRpdG9yanMvZWRpdG9yanMnO1xuaW1wb3J0IHsgSW5saW5lVGV4dFRvb2wgfSBmcm9tICcuL3Rvb2wtdHlwZS90ZXh0LXRvb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRTaXplLCBURVhUX1NJWkVTIH0gZnJvbSAnLi4vdXRpbHMvdGV4dHMuY29tcG9uZW50JztcbmltcG9ydCB7IGlzQmxvY2tGb2N1c2VkLCBzZXRCbG9ja0ZvY3VzIH0gZnJvbSAnLi4vdXRpbHMvZWRpdG9yanMtdG9vbC5jb21wb25lbnQnO1xuXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIHRleHRTaXplVG9vbCBleHRlbmRzIElubGluZVRleHRUb29sIGltcGxlbWVudHMgSW5saW5lVG9vbCB7XG4gICAgcHVibGljIHN0YXRpYyB0aXRsZSA9ICdUZXh0IFNpemUnO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb21tYW5kTmFtZTogc3RyaW5nID0gJ3RleHRTaXplJztcblxuICAgIENTUyA9IHtcbiAgICAgICAgYnV0dG9uOiAnY2UtaW5saW5lLXRvb2wnLFxuICAgICAgICBidXR0b25BY3RpdmU6ICdjZS1pbmxpbmUtdG9vbC0tYWN0aXZlJyxcbiAgICAgICAgYnV0dG9uTW9kaWZpZXI6ICdjZS1pbmxpbmUtdG9vbC0tdGV4dFNpemUnLFxuICAgICAgICBhcnJvd0J1dHRvbk1vZGlmaWVyOiAnY2UtaW5saW5lLXRvb2wtLXRleHRTaXplX19hcnJvdycsXG4gICAgICAgIHRleHRTZWxlY3Rpb25Nb2RpZmllcjogJ2NlLWlubGluZS1hY3Rpb25zLS10ZXh0U2l6ZScsXG4gICAgfTtcblxuICAgIG5vZGVzOiB7IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgfSA9IHtcbiAgICAgICAgYnV0dG9uOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIGFwaTogYW55O1xuXG4gICAgcHJpdmF0ZSBfc3RhdGU6IGJvb2xlYW47XG5cbiAgICB0YWcgPSAnU1BBTic7XG5cbiAgICB0ZXh0U2l6ZXM6IEFycmF5PFRleHRTaXplPiA9IFRFWFRfU0laRVM7XG5cbiAgICBjbGFzc1RvQXBwbHkgPSAnJztcblxuICAgIGNsYXNzZXMgPSAnJztcblxuICAgIG1vZGlmaWVzID0ge1xuICAgICAgICB0YWc6IGZhbHNlLFxuICAgICAgICBzdHlsZTogZmFsc2UsXG4gICAgICAgIGNsYXNzOiB0cnVlLFxuICAgICAgICBhdHRyaWJ1dGU6IGZhbHNlLFxuICAgIH07XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCBpc0lubGluZSgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgc2FuaXRpemUoKTogU2FuaXRpemVyQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGI6IHt9LFxuICAgICAgICB9IGFzIFNhbml0aXplckNvbmZpZztcbiAgICB9XG5cbiAgICBnZXQgc3RhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgICB9XG5cbiAgICBzZXQgc3RhdGUoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5fc3RhdGUgPSBzdGF0ZTtcblxuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbi5jbGFzc0xpc3QudG9nZ2xlKHRoaXMuYXBpLnN0eWxlcy5pbmxpbmVUb29sQnV0dG9uQWN0aXZlLCBzdGF0ZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoeyBhcGkgfSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmFwaSA9IGFwaTtcbiAgICAgICAgdGhpcy5fc3RhdGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJykgYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLnR5cGUgPSAnYnV0dG9uJztcbiAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uY2xhc3NMaXN0LmFkZCh0aGlzLkNTUy5idXR0b24sIHRoaXMuQ1NTLmJ1dHRvbk1vZGlmaWVyKTtcbiAgICAgICAgaWYgKHRoaXMuaGFzU2VwYXJhdG9yQmVmb3JlKSB7XG4gICAgICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbi5jbGFzc0xpc3QuYWRkKHRoaXMuc2VwYXJhdG9yQ2xhc3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5vcGVuRHJvcGRvd24oKSk7XG4gICAgICAgIHRoaXMudGV4dFNpemVzLmZvckVhY2goKHRleHRTaXplKSA9PiB7XG4gICAgICAgICAgICBsZXQgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIHNwYW4uaW5uZXJUZXh0ID0gdGhpcy5hcGkuaTE4bi50KHRleHRTaXplLm5hbWUpO1xuICAgICAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBkcm9wZG93bkFycm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICBkcm9wZG93bkFycm93LmNsYXNzTGlzdC5hZGQodGhpcy5DU1MuYXJyb3dCdXR0b25Nb2RpZmllcik7XG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmFwcGVuZENoaWxkKGRyb3Bkb3duQXJyb3cpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzLmJ1dHRvbjtcbiAgICB9XG5cbiAgICBhc3luYyBzdXJyb3VuZChyYW5nZTogUmFuZ2UsIGFwcGx5U3R5bGU6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICB0aGlzLnNhdmVVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChhcHBseVN0eWxlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmV4ZWNDb21tYW5kU3R5bGUodGhpcy50YWcpO1xuICAgICAgICAgICAgdGhpcy5jaGVja1N0YXRlKHRoaXMuZ2V0U2VsZWN0aW9uKCkpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja1N0YXRlKHNlbGVjdGlvbikge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50RWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNCbG9ja0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHNldEJsb2NrRm9jdXModGhpcy5wYXJlbnRFZGl0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmhhc1N0eWxlKDxIVE1MRWxlbWVudD5zZWxlY3Rpb24uYW5jaG9yTm9kZSk7XG4gICAgICAgIGNvbnN0IGlzQWN0aXZlID0gZWxlbWVudCA/IHRydWUgOiBmYWxzZTtcblxuICAgICAgICB0aGlzLnRleHRTaXplcy5mb3JFYWNoKCh0ZXh0U2l6ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRleHRTaXplLmNsYXNzICE9PSAnJykge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnModGV4dFNpemUuY2xhc3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC5hZGQodGV4dFNpemUuY2xhc3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUodGV4dFNpemUuY2xhc3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGlzQWN0aXZlO1xuICAgIH1cblxuICAgIHJlbmRlckFjdGlvbnMoKSB7XG4gICAgICAgIGxldCB0ZXh0U2l6ZURyb3Bkb3duID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRleHRTaXplRHJvcGRvd24uY2xhc3NOYW1lID0gdGhpcy5kcm9wZG93bkNzc1snY29udGFpbmVyJ10gKyAnIGhpZGRlbiAnICsgdGhpcy5DU1MudGV4dFNlbGVjdGlvbk1vZGlmaWVyO1xuICAgICAgICB0aGlzLnRleHRTaXplcy5mb3JFYWNoKCh0ZXh0U2l6ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgcm93LmNsYXNzTmFtZSA9IHRoaXMuZHJvcGRvd25Dc3NbJ3JvdyddO1xuICAgICAgICAgICAgcm93LmlubmVyVGV4dCA9IHRoaXMuYXBpLmkxOG4udCh0ZXh0U2l6ZS5uYW1lKTtcbiAgICAgICAgICAgIHJvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMuYXBwbHlUZXh0U3R5bGUodGV4dFNpemUuY2xhc3MpKTtcbiAgICAgICAgICAgIHRleHRTaXplRHJvcGRvd24uYXBwZW5kQ2hpbGQocm93KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLmNsYXNzZXMgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLnRleHRTaXplcy5mb3JFYWNoKCh0ZXh0U2l6ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzZXMgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NlcyArPSAnLCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NlcyArPSB0ZXh0U2l6ZS5jbGFzcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0U2l6ZURyb3Bkb3duO1xuICAgIH1cblxuICAgIHNob3dBY3Rpb25zKG1hcmspIHtcbiAgICAgICAgLy90aGlzLnN0eWxlLmlucHV0ID0gbWFyayAmJiBtYXJrLnN0eWxlICYmIG1hcmsuc3R5bGUuYmFja2dyb3VuZENvbG9yID8gbWFyay5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgOiAnI2Y1ZjFjYyc7XG4gICAgfVxuXG4gICAgaGlkZUFjdGlvbnMoKSB7fVxuXG4gICAgYXN5bmMgYXBwbHlUZXh0U3R5bGUoY2xhc3NUb0FwcGx5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jbGFzc1RvQXBwbHkgPSBjbGFzc1RvQXBwbHk7XG4gICAgICAgIHRoaXMucmVzZXRVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3Vycm91bmQobnVsbCwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuY2hlY2tTdGF0ZSh0aGlzLmN1cnJlbnRTZWxlY3Rpb24pO1xuICAgICAgICB0aGlzLnNhdmVVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuaGlkZUFjdGlvbnMoKTtcbiAgICB9XG59XG4iXX0=
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1zaXplLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3BhdWxpbmUvRG9jdW1lbnRzL3dvcmtzcGFjZS93aXppLWJsb2NrL3Byb2plY3RzL3dpemktYmxvY2svc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9jb21wb25lbnRzL2VkaXRvcmpzL3Rvb2xzL2lubGluZS90ZXh0LXNpemUtdG9vbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQVksVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUVoRixXQUFXO0FBQ1gsTUFBTSxPQUFPLFlBQWEsU0FBUSxjQUFjO0lBd0Q1QyxZQUFZLEVBQUUsR0FBRyxFQUFFO1FBQ2YsS0FBSyxFQUFFLENBQUM7UUF0REssZ0JBQVcsR0FBVyxVQUFVLENBQUM7UUFFbEQsUUFBRyxHQUFHO1lBQ0YsTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixZQUFZLEVBQUUsd0JBQXdCO1lBQ3RDLGNBQWMsRUFBRSwwQkFBMEI7WUFDMUMsbUJBQW1CLEVBQUUsaUNBQWlDO1lBQ3RELHFCQUFxQixFQUFFLDZCQUE2QjtTQUN2RCxDQUFDO1FBRUYsVUFBSyxHQUFrQztZQUNuQyxNQUFNLEVBQUUsU0FBUztTQUNwQixDQUFDO1FBTUYsUUFBRyxHQUFHLE1BQU0sQ0FBQztRQUViLGNBQVMsR0FBb0IsVUFBVSxDQUFDO1FBRXhDLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBRWxCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFYixhQUFRLEdBQUc7WUFDUCxHQUFHLEVBQUUsS0FBSztZQUNWLEtBQUssRUFBRSxLQUFLO1lBQ1os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QUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7S0FBQTs7QUFwSmEsa0JBQUssR0FBRyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmxpbmVUb29sLCBTYW5pdGl6ZXJDb25maWcgfSBmcm9tICdAZWRpdG9yanMvZWRpdG9yanMnO1xuaW1wb3J0IHsgSW5saW5lVGV4dFRvb2wgfSBmcm9tICcuL3Rvb2wtdHlwZS90ZXh0LXRvb2wuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRTaXplLCBURVhUX1NJWkVTIH0gZnJvbSAnLi4vdXRpbHMvdGV4dHMuY29tcG9uZW50JztcbmltcG9ydCB7IGlzQmxvY2tGb2N1c2VkLCBzZXRCbG9ja0ZvY3VzIH0gZnJvbSAnLi4vdXRpbHMvZWRpdG9yanMtdG9vbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgZWRpdG9ySlNJMThuRGljdGlvbm5hcnkgfSBmcm9tICcuLi91dGlscy9lZGl0b3Jqcy10cmFuc2xhdGlvbi5zZXJ2aWNlJztcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyB0ZXh0U2l6ZVRvb2wgZXh0ZW5kcyBJbmxpbmVUZXh0VG9vbCBpbXBsZW1lbnRzIElubGluZVRvb2wge1xuICAgIHB1YmxpYyBzdGF0aWMgdGl0bGUgPSAnVGV4dCBTaXplJztcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbWFuZE5hbWU6IHN0cmluZyA9ICd0ZXh0U2l6ZSc7XG5cbiAgICBDU1MgPSB7XG4gICAgICAgIGJ1dHRvbjogJ2NlLWlubGluZS10b29sJyxcbiAgICAgICAgYnV0dG9uQWN0aXZlOiAnY2UtaW5saW5lLXRvb2wtLWFjdGl2ZScsXG4gICAgICAgIGJ1dHRvbk1vZGlmaWVyOiAnY2UtaW5saW5lLXRvb2wtLXRleHRTaXplJyxcbiAgICAgICAgYXJyb3dCdXR0b25Nb2RpZmllcjogJ2NlLWlubGluZS10b29sLS10ZXh0U2l6ZV9fYXJyb3cnLFxuICAgICAgICB0ZXh0U2VsZWN0aW9uTW9kaWZpZXI6ICdjZS1pbmxpbmUtYWN0aW9ucy0tdGV4dFNpemUnLFxuICAgIH07XG5cbiAgICBub2RlczogeyBidXR0b246IEhUTUxCdXR0b25FbGVtZW50IH0gPSB7XG4gICAgICAgIGJ1dHRvbjogdW5kZWZpbmVkLFxuICAgIH07XG5cbiAgICBhcGk6IGFueTtcblxuICAgIHByaXZhdGUgX3N0YXRlOiBib29sZWFuO1xuXG4gICAgdGFnID0gJ1NQQU4nO1xuXG4gICAgdGV4dFNpemVzOiBBcnJheTxUZXh0U2l6ZT4gPSBURVhUX1NJWkVTO1xuXG4gICAgY2xhc3NUb0FwcGx5ID0gJyc7XG5cbiAgICBjbGFzc2VzID0gJyc7XG5cbiAgICBtb2RpZmllcyA9IHtcbiAgICAgICAgdGFnOiBmYWxzZSxcbiAgICAgICAgc3R5bGU6IGZhbHNlLFxuICAgICAgICBjbGFzczogdHJ1ZSxcbiAgICAgICAgYXR0cmlidXRlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgaXNJbmxpbmUoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IHNhbml0aXplKCk6IFNhbml0aXplckNvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiOiB7fSxcbiAgICAgICAgfSBhcyBTYW5pdGl6ZXJDb25maWc7XG4gICAgfVxuXG4gICAgZ2V0IHN0YXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdGU7XG4gICAgfVxuXG4gICAgc2V0IHN0YXRlKHN0YXRlKSB7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7XG5cbiAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uY2xhc3NMaXN0LnRvZ2dsZSh0aGlzLmFwaS5zdHlsZXMuaW5saW5lVG9vbEJ1dHRvbkFjdGl2ZSwgc3RhdGUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHsgYXBpIH0pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5hcGkgPSBhcGk7XG4gICAgICAgIHRoaXMuX3N0YXRlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbi50eXBlID0gJ2J1dHRvbic7XG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC5hZGQodGhpcy5DU1MuYnV0dG9uLCB0aGlzLkNTUy5idXR0b25Nb2RpZmllcik7XG4gICAgICAgIGlmICh0aGlzLmhhc1NlcGFyYXRvckJlZm9yZSkge1xuICAgICAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uY2xhc3NMaXN0LmFkZCh0aGlzLnNlcGFyYXRvckNsYXNzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMub3BlbkRyb3Bkb3duKCkpO1xuICAgICAgICB0aGlzLnRleHRTaXplcy5mb3JFYWNoKCh0ZXh0U2l6ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICBzcGFuLmlubmVyVGV4dCA9IGVkaXRvckpTSTE4bkRpY3Rpb25uYXJ5Lm1lc3NhZ2VzLnRvb2xzLnRleHRTaXplW3RleHRTaXplLm5hbWVdO1xuICAgICAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24uYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBkcm9wZG93bkFycm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICBkcm9wZG93bkFycm93LmNsYXNzTGlzdC5hZGQodGhpcy5DU1MuYXJyb3dCdXR0b25Nb2RpZmllcik7XG4gICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmFwcGVuZENoaWxkKGRyb3Bkb3duQXJyb3cpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzLmJ1dHRvbjtcbiAgICB9XG5cbiAgICBhc3luYyBzdXJyb3VuZChyYW5nZTogUmFuZ2UsIGFwcGx5U3R5bGU6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICB0aGlzLnNhdmVVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChhcHBseVN0eWxlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmV4ZWNDb21tYW5kU3R5bGUodGhpcy50YWcpO1xuICAgICAgICAgICAgdGhpcy5jaGVja1N0YXRlKHRoaXMuZ2V0U2VsZWN0aW9uKCkpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja1N0YXRlKHNlbGVjdGlvbikge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50RWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNCbG9ja0ZvY3VzZWQpIHtcbiAgICAgICAgICAgIHNldEJsb2NrRm9jdXModGhpcy5wYXJlbnRFZGl0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmhhc1N0eWxlKDxIVE1MRWxlbWVudD5zZWxlY3Rpb24uYW5jaG9yTm9kZSk7XG4gICAgICAgIGNvbnN0IGlzQWN0aXZlID0gZWxlbWVudCA/IHRydWUgOiBmYWxzZTtcblxuICAgICAgICB0aGlzLnRleHRTaXplcy5mb3JFYWNoKCh0ZXh0U2l6ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRleHRTaXplLmNsYXNzICE9PSAnJykge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnModGV4dFNpemUuY2xhc3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC5hZGQodGV4dFNpemUuY2xhc3MpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUodGV4dFNpemUuY2xhc3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGlzQWN0aXZlO1xuICAgIH1cblxuICAgIHJlbmRlckFjdGlvbnMoKSB7XG4gICAgICAgIGxldCB0ZXh0U2l6ZURyb3Bkb3duID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHRleHRTaXplRHJvcGRvd24uY2xhc3NOYW1lID0gdGhpcy5kcm9wZG93bkNzc1snY29udGFpbmVyJ10gKyAnIGhpZGRlbiAnICsgdGhpcy5DU1MudGV4dFNlbGVjdGlvbk1vZGlmaWVyO1xuICAgICAgICB0aGlzLnRleHRTaXplcy5mb3JFYWNoKCh0ZXh0U2l6ZSkgPT4ge1xuICAgICAgICAgICAgbGV0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgcm93LmNsYXNzTmFtZSA9IHRoaXMuZHJvcGRvd25Dc3NbJ3JvdyddO1xuICAgICAgICAgICAgcm93LmlubmVyVGV4dCA9IGVkaXRvckpTSTE4bkRpY3Rpb25uYXJ5Lm1lc3NhZ2VzLnRvb2xzLnRleHRTaXplW3RleHRTaXplLm5hbWVdO1xuICAgICAgICAgICAgcm93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gdGhpcy5hcHBseVRleHRTdHlsZSh0ZXh0U2l6ZS5jbGFzcykpO1xuICAgICAgICAgICAgdGV4dFNpemVEcm9wZG93bi5hcHBlbmRDaGlsZChyb3cpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuY2xhc3NlcyA9PT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMudGV4dFNpemVzLmZvckVhY2goKHRleHRTaXplKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3NlcyAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGFzc2VzICs9ICcsJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jbGFzc2VzICs9IHRleHRTaXplLmNsYXNzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHRTaXplRHJvcGRvd247XG4gICAgfVxuXG4gICAgc2hvd0FjdGlvbnMobWFyaykge1xuICAgICAgICAvL3RoaXMuc3R5bGUuaW5wdXQgPSBtYXJrICYmIG1hcmsuc3R5bGUgJiYgbWFyay5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPyBtYXJrLnN0eWxlLmJhY2tncm91bmRDb2xvciA6ICcjZjVmMWNjJztcbiAgICB9XG5cbiAgICBoaWRlQWN0aW9ucygpIHt9XG5cbiAgICBhc3luYyBhcHBseVRleHRTdHlsZShjbGFzc1RvQXBwbHk6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNsYXNzVG9BcHBseSA9IGNsYXNzVG9BcHBseTtcbiAgICAgICAgdGhpcy5yZXNldFVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdXJyb3VuZChudWxsLCB0cnVlKTtcbiAgICAgICAgdGhpcy5jaGVja1N0YXRlKHRoaXMuY3VycmVudFNlbGVjdGlvbik7XG4gICAgICAgIHRoaXMuc2F2ZVVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5oaWRlQWN0aW9ucygpO1xuICAgIH1cbn1cbiJdfQ==
@@ -358,4 +358,4 @@ export class ColorTool extends InlineStyleTool {
358
358
  return hexadecimal.length == 1 ? '0' + hexadecimal : hexadecimal;
359
359
  }
360
360
  }
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvYnJpYW4vRG9jdW1lbnRzL3dvcmtzcGFjZS93aXppLWJsb2NrL3Byb2plY3RzL3dpemktYmxvY2svc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9jb21wb25lbnRzL2VkaXRvcmpzL3Rvb2xzL2lubGluZS90b29sLXR5cGUvY29sb3ItdG9vbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUU5QixJQUFLLFNBSUo7QUFKRCxXQUFLLFNBQVM7SUFDVix1Q0FBRyxDQUFBO0lBQ0gsdUNBQUcsQ0FBQTtJQUNILHVDQUFHLENBQUE7QUFDUCxDQUFDLEVBSkksU0FBUyxLQUFULFNBQVMsUUFJYjtBQUVELE1BQU0sT0FBZ0IsU0FBVSxTQUFRLGVBQWU7SUFBdkQ7O1FBR0kseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBSXRDLFdBQU0sR0FBeUIsbUJBQW1CLENBQUM7UUFFbkQsbUJBQWMsR0FBb0IsSUFBSSxDQUFDO1FBTXZDLHNCQUFpQixHQUFXO1lBQ3hCLE9BQU8sRUFBRSwwQkFBMEI7WUFDbkMsU0FBUyxFQUFFLHFDQUFxQztZQUNoRCxvQkFBb0IsRUFBRSxrREFBa0Q7WUFDeEUsR0FBRyxFQUFFLCtCQUErQjtZQUNwQyxJQUFJLEVBQUUscUNBQXFDO1NBQzlDLENBQUM7UUFFRixzQkFBaUIsR0FBMkIsSUFBSSxDQUFDO0lBNFdyRCxDQUFDO0lBeFdHLGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQy9D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QUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUMxQzthQUNKO2lCQUFNO2dCQUNILElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDM0MsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3ZDO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFTyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJO1FBQzdCLE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBSztRQUNwQixJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUNyRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUZBVUxUX0NPTE9SX0FSUkFZLCBHTE9CQUxfS0VZX0NPREVTIH0gZnJvbSAnLi4vLi4vdXRpbHMvY29sb3JzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmxpbmVTdHlsZVRvb2wgfSBmcm9tICcuL2lubGluZS1zdHlsZS10b29sLmNvbXBvbmVudCc7XG5pbXBvcnQgaXJvIGZyb20gJ0BqYWFtZXMvaXJvJztcblxuZW51bSBDb2xvclR5cGUge1xuICAgIEhFWCxcbiAgICBSR0IsXG4gICAgSFNMLFxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29sb3JUb29sIGV4dGVuZHMgSW5saW5lU3R5bGVUb29sIHtcbiAgICBub2RlczogeyBidXR0b246IEhUTUxCdXR0b25FbGVtZW50IH07XG5cbiAgICBpc0NvbG9yU2VsZWN0aW9uT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29sb3JTZWxlY3Rpb246IGFueTtcblxuICAgIGNvbG9yczogQXJyYXk8QXJyYXk8c3RyaW5nPj4gPSBERUZBVUxUX0NPTE9SX0FSUkFZO1xuXG4gICAgY29sb3JJbmRpY2F0b3I6IEhUTUxTcGFuRWxlbWVudCA9IG51bGw7XG5cbiAgICBDU1M6IGFueTtcblxuICAgIGFwaTogYW55O1xuXG4gICAgY29sb3JTZWxlY3Rpb25Dc3M6IE9iamVjdCA9IHtcbiAgICAgICAgd3JhcHBlcjogJ2NlLWlubGluZS1hY3Rpb25zLS1jb2xvcicsXG4gICAgICAgIGNvbnRhaW5lcjogJ2NlLWlubGluZS1hY3Rpb25zLS1jb2xvcl9fY29udGFpbmVyJyxcbiAgICAgICAgY29sb3JQaWNrZXJDb250YWluZXI6ICdjZS1pbmxpbmUtYWN0aW9ucy0tY29sb3JfX2NvbnRhaW5lcl9fY29sb3JQaWNrZXInLFxuICAgICAgICByb3c6ICdjZS1pbmxpbmUtYWN0aW9ucy0tY29sb3JfX3JvdycsXG4gICAgICAgIGl0ZW06ICdjZS1pbmxpbmUtYWN0aW9ucy0tY29sb3JfX3Jvd19faXRlbScsXG4gICAgfTtcblxuICAgIGN1c3RvbUNvbG9yUGlja2VyOiBpcm8uQ29sb3JQaWNrZXIgfCBudWxsID0gbnVsbDtcblxuICAgIGFic3RyYWN0IGFwcGx5Q29sb3IoY29sb3I6IHN0cmluZywgaW5wdXRUb0ZvY3VzOiBIVE1MSW5wdXRFbGVtZW50KTogUHJvbWlzZTx2b2lkPjtcblxuICAgIG9wZW5Db2xvclBpY2tlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudEVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY29sb3JTZWxlY3Rpb24gPSB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpWzBdO1xuICAgICAgICBsZXQgY3VycmVudENvbG9yID0gdGhpcy5nZXRDdXJyZW50Q29sb3JBcHBsaWVkKHRoaXMuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5wYXJlbnRFbGVtZW50KTtcbiAgICAgICAgdGhpcy5zYXZlVXNlclNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoY29sb3JTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmIChjb2xvclNlbGVjdGlvbi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5jb2xvclNlbGVjdGlvbikuc3R5bGUubGVmdCA9XG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldExlZnQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldFdpZHRoIC8gMiAtICg8SFRNTEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb24pLm9mZnNldFdpZHRoIC8gMilcbiAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygpICsgJ3B4JztcbiAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PmNvbG9yU2VsZWN0aW9uKS5zdHlsZS50b3AgPVxuICAgICAgICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PnRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy5jZS1pbmxpbmUtdG9vbGJhcl9fYnV0dG9ucycpKS5vZmZzZXRIZWlnaHQgLVxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldFRvcCArIHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldEhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygpICtcbiAgICAgICAgICAgICAgICAgICAgJ3B4JztcbiAgICAgICAgICAgICAgICBsZXQgdmlld3BvcnRPZmZzZXQgPSBjb2xvclNlbGVjdGlvbi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBsZXQgdG90YWxXaWR0aCA9XG4gICAgICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb24pLm9mZnNldFdpZHRoICtcbiAgICAgICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5jb2xvclNlbGVjdGlvbi5xdWVyeVNlbGVjdG9yKCcuJyArIHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbG9yUGlja2VyQ29udGFpbmVyJ10pKS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICBpZiAodmlld3BvcnRPZmZzZXQubGVmdCArIHRvdGFsV2lkdGggPiBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBsZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbG9yU2VsZWN0aW9uLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdsZWZ0JykpIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICh2aWV3cG9ydE9mZnNldC5sZWZ0ICsgdG90YWxXaWR0aCAtIGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpO1xuICAgICAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PmNvbG9yU2VsZWN0aW9uKS5zdHlsZS5sZWZ0ID0gbGVmdC50b1N0cmluZygpICsgJ3B4JztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0RlZmF1bHRDb2xvcnMoKTtcbiAgICAgICAgICAgICAgICBjb2xvclNlbGVjdGlvbi5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICBsZXQgY29sb3JQaWNrZXJXcmFwcGVyID0gPEhUTUxFbGVtZW50PnRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJyMnICsgdGhpcy5DU1MuY29sb3JQaWNrZXJJZCk7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yUGlja2VyV3JhcHBlci5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlciA9IGlyby5Db2xvclBpY2tlcihjb2xvclBpY2tlcldyYXBwZXIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE3MCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dERpcmVjdGlvbjogJ2hvcml6b250YWwnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5vbihbJ2NvbG9yOmluaXQnXSwgKGNvbG9yOiBpcm8uQ29sb3IpID0+IHRoaXMuY2hhbmdlQ29sb3IoY29sb3IsIHRydWUsIGN1cnJlbnRDb2xvcikpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLm9uKFsnY29sb3I6Y2hhbmdlJ10sIChjb2xvcjogaXJvLkNvbG9yKSA9PiB0aGlzLmNoYW5nZUNvbG9yKGNvbG9yLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCRldmVudCkgPT4gdGhpcy5pc0NvbG9yU2VsZWN0aW9uRm9jdXNlZE91dCgkZXZlbnQpKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbG9yU2VsZWN0aW9uT3BlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSwgNDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0NvbG9yU2VsZWN0aW9uT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbG9yU2VsZWN0aW9uLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudENvbG9yQXBwbGllZChlbGVtZW50OiBFbGVtZW50KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY2xhc3NOYW1lICYmIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSAmJiBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUodGhpcy5zdHlsZS5wcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgaXNDb2xvclNlbGVjdGlvbkZvY3VzZWRPdXQoJGV2ZW50KSB7XG4gICAgICAgIGxldCBjb2xvclNlbGVjdGlvbiA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcilbMF07XG4gICAgICAgIGlmICh0aGlzLmlzQ29sb3JTZWxlY3Rpb25PcGVuKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9ICRldmVudC50YXJnZXQ7XG4gICAgICAgICAgICB3aGlsZSAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyh0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydjb250YWluZXInXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoJGV2ZW50KSA9PiB0aGlzLmlzQ29sb3JTZWxlY3Rpb25Gb2N1c2VkT3V0KCRldmVudCkpO1xuICAgICAgICAgICAgdGhpcy5pc0NvbG9yU2VsZWN0aW9uT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgY29sb3JTZWxlY3Rpb24uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICAgICAgICB0aGlzLmFwaS50b29sYmFyLmNsb3NlKCk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrRGVmYXVsdENvbG9ycygpIHtcbiAgICAgICAgbGV0IGN1cnJlbnRDb2xvciA9IHRoaXMuZ2V0Q3VycmVudENvbG9yQXBwbGllZCh0aGlzLmdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUucGFyZW50RWxlbWVudCk7XG4gICAgICAgIHRoaXMuY29sb3JzLmZvckVhY2goKGNvbG9yUm93LCByb3dJbmRleCkgPT4ge1xuICAgICAgICAgICAgY29sb3JSb3cuZm9yRWFjaCgoY29sb3IsIGNvbHVtbkluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbG9yID09PSBjdXJyZW50Q29sb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydyb3cnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dJbmRleF0ucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydpdGVtJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uSW5kZXhdLmNsYXNzTGlzdC5hZGQodGhpcy5jb2xvclNlbGVjdGlvbkNzc1snaXRlbSddICsgJy0tYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydyb3cnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyb3dJbmRleF0ucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydpdGVtJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uSW5kZXhdLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jb2xvclNlbGVjdGlvbkNzc1snaXRlbSddICsgJy0tYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9wZW5DdXN0b21Db2xvclBpY2tlcihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgbGV0IGN1c3RvbUNvbG9yUGlja2VyID0gKDxIVE1MRGl2RWxlbWVudD5ldmVudC50YXJnZXQpLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29sb3JQaWNrZXJDb250YWluZXInXSlbMF07XG4gICAgICAgIGlmIChjdXN0b21Db2xvclBpY2tlcikge1xuICAgICAgICAgICAgaWYgKGN1c3RvbUNvbG9yUGlja2VyLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydjb2xvclBpY2tlckNvbnRhaW5lciddICsgJy0tYWN0aXZlJykpIHtcbiAgICAgICAgICAgICAgICBjdXN0b21Db2xvclBpY2tlci5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbG9yUGlja2VyQ29udGFpbmVyJ10gKyAnLS1hY3RpdmUnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VzdG9tQ29sb3JQaWNrZXIuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydjb2xvclBpY2tlckNvbnRhaW5lciddICsgJy0tYWN0aXZlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCg8SFRNTEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdkaXYnKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0VXNlclNlbGVjdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hhbmdlQ29sb3IoY29sb3I6IGlyby5Db2xvciwgaXNJbml0OiBib29sZWFuLCBpbml0Q29sb3I6IHN0cmluZyA9ICcnKSB7XG4gICAgICAgIGxldCBjb2xvclNlbGVjdGlvbk1vZGlmaWVyID0gdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvcignLicgKyB0aGlzLkNTUy5jb2xvclNlbGVjdGlvbk1vZGlmaWVyKTtcbiAgICAgICAgbGV0IGhleElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yKCcuaGV4IGlucHV0Jyk7XG4gICAgICAgIGxldCByZ2JJbnB1dDEgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZ2IgaW5wdXQnKVswXTtcbiAgICAgICAgbGV0IHJnYklucHV0MiA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLnJnYiBpbnB1dCcpWzFdO1xuICAgICAgICBsZXQgcmdiSW5wdXQzID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcucmdiIGlucHV0JylbMl07XG4gICAgICAgIC8qXG4gICAgICAgIGxldCBoc2xJbnB1dDEgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5oc2wgaW5wdXQnKVswXTtcbiAgICAgICAgbGV0IGhzbElucHV0MiA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLmhzbCBpbnB1dCcpWzFdO1xuICAgICAgICBsZXQgaHNsSW5wdXQzID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcuaHNsIGlucHV0JylbMl07XG4gICAgICAgICovXG4gICAgICAgIGlmIChpc0luaXQpIHtcbiAgICAgICAgICAgIGlmIChpbml0Q29sb3IuaW5kZXhPZigncmdiYScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICBpbml0Q29sb3IgPSBpbml0Q29sb3IucmVwbGFjZSgncmdiYSgnLCAnJykucmVwbGFjZSgnKScsICcnKS5yZXBsYWNlKCcgJywgJycpO1xuICAgICAgICAgICAgICAgIGxldCByZ2JJbml0Q29sb3IgPSBpbml0Q29sb3Iuc3BsaXQoJywnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnJlZCA9IHBhcnNlSW50KHJnYkluaXRDb2xvclswXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5ncmVlbiA9IHBhcnNlSW50KHJnYkluaXRDb2xvclsxXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5ibHVlID0gcGFyc2VJbnQocmdiSW5pdENvbG9yWzJdKTtcbiAgICAgICAgICAgICAgICBoZXhJbnB1dC52YWx1ZSA9IHRoaXMucmdiVG9IZXgocGFyc2VJbnQocmdiSW5pdENvbG9yWzBdKSwgcGFyc2VJbnQocmdiSW5pdENvbG9yWzFdKSwgcGFyc2VJbnQocmdiSW5pdENvbG9yWzJdKSk7XG4gICAgICAgICAgICAgICAgcmdiSW5wdXQxLnZhbHVlID0gcmdiSW5pdENvbG9yWzBdO1xuICAgICAgICAgICAgICAgIHJnYklucHV0Mi52YWx1ZSA9IHJnYkluaXRDb2xvclsxXTtcbiAgICAgICAgICAgICAgICByZ2JJbnB1dDMudmFsdWUgPSByZ2JJbml0Q29sb3JbMl07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGluaXRDb2xvciA9IGluaXRDb2xvci5yZXBsYWNlKCdyZ2IoJywgJycpLnJlcGxhY2UoJyknLCAnJykucmVwbGFjZSgnICcsICcnKTtcbiAgICAgICAgICAgICAgICBsZXQgcmdiSW5pdENvbG9yID0gaW5pdENvbG9yLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5yZWQgPSBwYXJzZUludChyZ2JJbml0Q29sb3JbMF0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuZ3JlZW4gPSBwYXJzZUludChyZ2JJbml0Q29sb3JbMV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuYmx1ZSA9IHBhcnNlSW50KHJnYkluaXRDb2xvclsyXSk7XG4gICAgICAgICAgICAgICAgaGV4SW5wdXQudmFsdWUgPSB0aGlzLnJnYlRvSGV4KHBhcnNlSW50KHJnYkluaXRDb2xvclswXSksIHBhcnNlSW50KHJnYkluaXRDb2xvclsxXSksIHBhcnNlSW50KHJnYkluaXRDb2xvclsyXSkpO1xuICAgICAgICAgICAgICAgIHJnYklucHV0MS52YWx1ZSA9IHJnYkluaXRDb2xvclswXTtcbiAgICAgICAgICAgICAgICByZ2JJbnB1dDIudmFsdWUgPSByZ2JJbml0Q29sb3JbMV07XG4gICAgICAgICAgICAgICAgcmdiSW5wdXQzLnZhbHVlID0gcmdiSW5pdENvbG9yWzJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGV4SW5wdXQudmFsdWUgPSBjb2xvci5oZXhTdHJpbmc7XG4gICAgICAgICAgICByZ2JJbnB1dDEudmFsdWUgPSBjb2xvci5yZ2Iuci50b1N0cmluZygpO1xuICAgICAgICAgICAgcmdiSW5wdXQyLnZhbHVlID0gY29sb3IucmdiLmcudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHJnYklucHV0My52YWx1ZSA9IGNvbG9yLnJnYi5iLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuUkdCKTtcbiAgICAgICAgfVxuICAgICAgICAvKlxuICAgICAgICBoc2xJbnB1dDEudmFsdWUgPSBjb2xvci5oc2wuaC50b1N0cmluZygpO1xuICAgICAgICBoc2xJbnB1dDIudmFsdWUgPSBjb2xvci5oc2wucyArICclJztcbiAgICAgICAgaHNsSW5wdXQzLnZhbHVlID0gY29sb3IuaHNsLmwgKyAnJSc7XG4gICAgICAgICovXG4gICAgfVxuXG4gICAgY2hhbmdlQ29sb3JJbnB1dChldmVudDogS2V5Ym9hcmRFdmVudCwgY29sb3JUeXBlOiBDb2xvclR5cGUpIHtcbiAgICAgICAgaWYgKGNvbG9yVHlwZSA9PT0gQ29sb3JUeXBlLkhFWCkge1xuICAgICAgICAgICAgbGV0IGhleFJlZ2V4ID0gL1swLTlBLUZhLWYjXS87XG4gICAgICAgICAgICBsZXQgaGV4SW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD4oXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvcignLicgKyB0aGlzLkNTUy5jb2xvclNlbGVjdGlvbk1vZGlmaWVyKS5xdWVyeVNlbGVjdG9yKCcuaGV4IGlucHV0JylcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoR0xPQkFMX0tFWV9DT0RFUy5pbmRleE9mKGV2ZW50LmNvZGUpID4gLTEgfHwgaGV4UmVnZXgudGVzdChldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhleElucHV0LnZhbHVlLmxlbmd0aCA+IDAgJiYgZXZlbnQua2V5ID09PSAnIycpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhleElucHV0LnZhbHVlLmxlbmd0aCA9PT0gNSAmJiBoZXhJbnB1dC52YWx1ZVswXSAhPT0gJyMnICYmIGhleFJlZ2V4LnRlc3QoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBoZXhJbnB1dC52YWx1ZSA9ICcjJyArIGhleElucHV0LnZhbHVlICsgZXZlbnQua2V5O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNvbG9yVHlwZSA9PT0gQ29sb3JUeXBlLlJHQikge1xuICAgICAgICAgICAgbGV0IHJnYlJlZ2V4ID0gL1swLTldLztcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIEdMT0JBTF9LRVlfQ09ERVMuaW5kZXhPZihldmVudC5jb2RlKSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJbnB1dC52YWx1ZS5sZW5ndGggPT09IDMgfHwgZXZlbnQua2V5Lmxlbmd0aCAhPT0gMSB8fCAhcmdiUmVnZXgudGVzdChldmVudC5rZXkpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJzZUludChzZWxlY3RlZElucHV0LnZhbHVlKSA+IDI1NSkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5wdXQudmFsdWUgPSAnMjU1JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBtYXhJbnB1dExlbmd0aCA9IDM7XG4gICAgICAgICAgICBsZXQgaHNsUmVnZXggPSAvWzAtOV0vO1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkSW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5ldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRJbnB1dFBvc2l0aW9uID0gQXJyYXkuZnJvbShzZWxlY3RlZElucHV0LnBhcmVudEVsZW1lbnQuY2hpbGRyZW4pLmluZGV4T2Yoc2VsZWN0ZWRJbnB1dCk7XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbnB1dFBvc2l0aW9uID4gMCkge1xuICAgICAgICAgICAgICAgIGhzbFJlZ2V4ID0gL1swLTklXS87XG4gICAgICAgICAgICAgICAgbWF4SW5wdXRMZW5ndGggPSA0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIEdMT0JBTF9LRVlfQ09ERVMuaW5kZXhPZihldmVudC5jb2RlKSA9PT0gLTEgJiZcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRJbnB1dC52YWx1ZS5sZW5ndGggPT09IG1heElucHV0TGVuZ3RoIHx8IGV2ZW50LmtleS5sZW5ndGggIT09IDEgfHwgIWhzbFJlZ2V4LnRlc3QoZXZlbnQua2V5KSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRJbnB1dFBvc2l0aW9uID09PSAwICYmIHBhcnNlSW50KHNlbGVjdGVkSW5wdXQudmFsdWUpID4gMzYwKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbnB1dC52YWx1ZSA9ICczNjAnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZElucHV0UG9zaXRpb24gPiAwICYmIHBhcnNlSW50KHNlbGVjdGVkSW5wdXQudmFsdWUucmVwbGFjZSgnJScsICcnKSkgPiAxMDApIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZElucHV0LnZhbHVlID0gJzEwMCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja0NvbG9ySW5wdXQoY29sb3JUeXBlOiBDb2xvclR5cGUpIHtcbiAgICAgICAgbGV0IGNvbG9yU2VsZWN0aW9uTW9kaWZpZXIgPSB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpO1xuICAgICAgICBsZXQgZm9jdXNlZElucHV0ID0gbnVsbDtcbiAgICAgICAgaWYgKGNvbG9yVHlwZSA9PT0gQ29sb3JUeXBlLkhFWCkge1xuICAgICAgICAgICAgbGV0IGhleElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yKCcuaGV4IGlucHV0Jyk7XG4gICAgICAgICAgICBmb2N1c2VkSW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3IoJy5oZXggaW5wdXQ6Zm9jdXMnKTtcbiAgICAgICAgICAgIGlmIChoZXhJbnB1dC52YWx1ZS5sZW5ndGggPT09IDcgJiYgaGV4SW5wdXQudmFsdWVbMF0gPT09ICcjJykge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuaGV4U3RyaW5nID0gaGV4SW5wdXQudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY29sb3JUeXBlID09PSBDb2xvclR5cGUuUkdCKSB7XG4gICAgICAgICAgICBsZXQgcmdiSW5wdXQxID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcucmdiIGlucHV0JylbMF07XG4gICAgICAgICAgICBsZXQgcmdiSW5wdXQyID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcucmdiIGlucHV0JylbMV07XG4gICAgICAgICAgICBsZXQgcmdiSW5wdXQzID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcucmdiIGlucHV0JylbMl07XG4gICAgICAgICAgICBmb2N1c2VkSW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3IoJy5yZ2IgaW5wdXQ6Zm9jdXMnKTtcbiAgICAgICAgICAgIGlmIChyZ2JJbnB1dDEudmFsdWUubGVuZ3RoID4gMCAmJiByZ2JJbnB1dDIudmFsdWUubGVuZ3RoID4gMCAmJiByZ2JJbnB1dDMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IucmVkID0gcGFyc2VJbnQocmdiSW5wdXQxLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmdyZWVuID0gcGFyc2VJbnQocmdiSW5wdXQyLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmJsdWUgPSBwYXJzZUludChyZ2JJbnB1dDMudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGhzbElucHV0MSA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLmhzbCBpbnB1dCcpWzBdO1xuICAgICAgICAgICAgbGV0IGhzbElucHV0MiA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLmhzbCBpbnB1dCcpWzFdO1xuICAgICAgICAgICAgbGV0IGhzbElucHV0MyA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLmhzbCBpbnB1dCcpWzJdO1xuICAgICAgICAgICAgZm9jdXNlZElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yKCcuaHNsIGlucHV0OmZvY3VzJyk7XG4gICAgICAgICAgICBpZiAoaHNsSW5wdXQxLnZhbHVlLmxlbmd0aCA+IDAgJiYgaHNsSW5wdXQyLnZhbHVlLnJlcGxhY2UoJyUnLCAnJykubGVuZ3RoID4gMCAmJiBoc2xJbnB1dDMudmFsdWUucmVwbGFjZSgnJScsICcnKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5odWUgPSBwYXJzZUludChoc2xJbnB1dDEudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3Iuc2F0dXJhdGlvbiA9IHBhcnNlSW50KGhzbElucHV0Mi52YWx1ZS5yZXBsYWNlKCclJywgJycpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnZhbHVlID0gcGFyc2VJbnQoaHNsSW5wdXQzLnZhbHVlLnJlcGxhY2UoJyUnLCAnJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZ2JDb2xvciA9XG4gICAgICAgICAgICAncmdiKCcgK1xuICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5yZ2IuciArXG4gICAgICAgICAgICAnLCcgK1xuICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5yZ2IuZyArXG4gICAgICAgICAgICAnLCcgK1xuICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5yZ2IuYiArXG4gICAgICAgICAgICAnKSc7XG4gICAgICAgIHRoaXMucmVzZXRVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuYXBwbHlDb2xvcihyZ2JDb2xvciwgZm9jdXNlZElucHV0KTtcbiAgICB9XG5cbiAgICBjcmVhdGVDdXN0b21Db2xvclBpY2tlcigpIHtcbiAgICAgICAgbGV0IGN1c3RvbUNvbG9yUGlja2VyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGN1c3RvbUNvbG9yUGlja2VyLmNsYXNzTmFtZSA9IHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbG9yUGlja2VyQ29udGFpbmVyJ107XG4gICAgICAgIGxldCB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHdyYXBwZXIuaWQgPSB0aGlzLkNTUy5jb2xvclBpY2tlcklkO1xuICAgICAgICBjdXN0b21Db2xvclBpY2tlci5hcHBlbmRDaGlsZCh3cmFwcGVyKTtcblxuICAgICAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGxldCBzZWxlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzZWxlY3QnKTtcbiAgICAgICAgc2VsZWN0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvclR5cGUoZXZlbnQpKTtcblxuICAgICAgICBsZXQgaGV4T3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG4gICAgICAgIGhleE9wdGlvbi52YWx1ZSA9ICdoZXgnO1xuICAgICAgICBoZXhPcHRpb24uaW5uZXJUZXh0ID0gJ0hFWCc7XG4gICAgICAgIGxldCByZ2JPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcbiAgICAgICAgcmdiT3B0aW9uLnZhbHVlID0gJ3JnYic7XG4gICAgICAgIHJnYk9wdGlvbi5pbm5lclRleHQgPSAnUkdCJztcbiAgICAgICAgbGV0IGhzbE9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuICAgICAgICBoc2xPcHRpb24udmFsdWUgPSAnaHNsJztcbiAgICAgICAgaHNsT3B0aW9uLmlubmVyVGV4dCA9ICdIU0wnO1xuXG4gICAgICAgIGxldCBoZXhDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgaGV4Q29udGFpbmVyLmNsYXNzTmFtZSA9ICdoZXgnO1xuICAgICAgICBsZXQgaGV4SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBoZXhJbnB1dC5wbGFjZWhvbGRlciA9ICcjMjMyNzJiJztcbiAgICAgICAgaGV4Q29udGFpbmVyLmFwcGVuZENoaWxkKGhleElucHV0KTtcbiAgICAgICAgaGV4SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuSEVYKSk7XG4gICAgICAgIGhleElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLkhFWCkpO1xuXG4gICAgICAgIGxldCByZ2JDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgcmdiQ29udGFpbmVyLmNsYXNzTmFtZSA9ICdyZ2IgaGlkZGVuJztcbiAgICAgICAgbGV0IHJnYklucHV0MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIHJnYklucHV0MS5wbGFjZWhvbGRlciA9ICcyNTUnO1xuICAgICAgICBsZXQgcmdiSW5wdXQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgcmdiSW5wdXQyLnBsYWNlaG9sZGVyID0gJzAnO1xuICAgICAgICBsZXQgcmdiSW5wdXQzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgcmdiSW5wdXQzLnBsYWNlaG9sZGVyID0gJzAnO1xuICAgICAgICByZ2JJbnB1dDEuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuUkdCKSk7XG4gICAgICAgIHJnYklucHV0Mi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5SR0IpKTtcbiAgICAgICAgcmdiSW5wdXQzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JJbnB1dChldmVudCwgQ29sb3JUeXBlLlJHQikpO1xuICAgICAgICByZ2JJbnB1dDEuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuUkdCKSk7XG4gICAgICAgIHJnYklucHV0Mi5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5SR0IpKTtcbiAgICAgICAgcmdiSW5wdXQzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLlJHQikpO1xuICAgICAgICByZ2JDb250YWluZXIuYXBwZW5kQ2hpbGQocmdiSW5wdXQxKTtcbiAgICAgICAgcmdiQ29udGFpbmVyLmFwcGVuZENoaWxkKHJnYklucHV0Mik7XG4gICAgICAgIHJnYkNvbnRhaW5lci5hcHBlbmRDaGlsZChyZ2JJbnB1dDMpO1xuXG4gICAgICAgIGxldCBoc2xDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgaHNsQ29udGFpbmVyLmNsYXNzTmFtZSA9ICdoc2wgaGlkZGVuJztcbiAgICAgICAgbGV0IGhzbElucHV0MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGhzbElucHV0MS5wbGFjZWhvbGRlciA9ICcwJztcbiAgICAgICAgbGV0IGhzbElucHV0MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGhzbElucHV0Mi5wbGFjZWhvbGRlciA9ICcxMDAlJztcbiAgICAgICAgbGV0IGhzbElucHV0MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGhzbElucHV0My5wbGFjZWhvbGRlciA9ICc1MCUnO1xuICAgICAgICBoc2xJbnB1dDEuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuSFNMKSk7XG4gICAgICAgIGhzbElucHV0Mi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5IU0wpKTtcbiAgICAgICAgaHNsSW5wdXQzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JJbnB1dChldmVudCwgQ29sb3JUeXBlLkhTTCkpO1xuICAgICAgICBoc2xJbnB1dDEuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuSFNMKSk7XG4gICAgICAgIGhzbElucHV0Mi5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5IU0wpKTtcbiAgICAgICAgaHNsSW5wdXQzLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLkhTTCkpO1xuICAgICAgICBoc2xDb250YWluZXIuYXBwZW5kQ2hpbGQoaHNsSW5wdXQxKTtcbiAgICAgICAgaHNsQ29udGFpbmVyLmFwcGVuZENoaWxkKGhzbElucHV0Mik7XG4gICAgICAgIGhzbENvbnRhaW5lci5hcHBlbmRDaGlsZChoc2xJbnB1dDMpO1xuXG4gICAgICAgIHNlbGVjdC5hcHBlbmRDaGlsZChoZXhPcHRpb24pO1xuICAgICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQocmdiT3B0aW9uKTtcbiAgICAgICAgLy9zZWxlY3QuYXBwZW5kQ2hpbGQoaHNsT3B0aW9uKTtcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHNlbGVjdCk7XG5cbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGhleENvbnRhaW5lcik7XG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChyZ2JDb250YWluZXIpO1xuICAgICAgICAvL2NvbnRhaW5lci5hcHBlbmRDaGlsZChoc2xDb250YWluZXIpO1xuXG4gICAgICAgIGN1c3RvbUNvbG9yUGlja2VyLmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG5cbiAgICAgICAgcmV0dXJuIGN1c3RvbUNvbG9yUGlja2VyO1xuICAgIH1cblxuICAgIGNoYW5nZUNvbG9yVHlwZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgbGV0IHBhcmVudCA9ICg8SFRNTFNlbGVjdEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS5wYXJlbnRFbGVtZW50O1xuICAgICAgICBsZXQgY2hpbGRyZW4gPSBwYXJlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2RpdicpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCg8SFRNTFNlbGVjdEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGRyZW5baV0uY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbltpXS5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJnYlRvSGV4KHJlZCwgZ3JlZW4sIGJsdWUpIHtcbiAgICAgICAgcmV0dXJuICcjJyArIHRoaXMuY29sb3JUb0hleChyZWQpICsgdGhpcy5jb2xvclRvSGV4KGdyZWVuKSArIHRoaXMuY29sb3JUb0hleChibHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbG9yVG9IZXgoY29sb3IpIHtcbiAgICAgICAgdmFyIGhleGFkZWNpbWFsID0gY29sb3IudG9TdHJpbmcoMTYpO1xuICAgICAgICByZXR1cm4gaGV4YWRlY2ltYWwubGVuZ3RoID09IDEgPyAnMCcgKyBoZXhhZGVjaW1hbCA6IGhleGFkZWNpbWFsO1xuICAgIH1cbn1cbiJdfQ==
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcGF1bGluZS9Eb2N1bWVudHMvd29ya3NwYWNlL3dpemktYmxvY2svcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkL2NvbXBvbmVudHMvZWRpdG9yanMvdG9vbHMvaW5saW5lL3Rvb2wtdHlwZS9jb2xvci10b29sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRTlCLElBQUssU0FJSjtBQUpELFdBQUssU0FBUztJQUNWLHVDQUFHLENBQUE7SUFDSCx1Q0FBRyxDQUFBO0lBQ0gsdUNBQUcsQ0FBQTtBQUNQLENBQUMsRUFKSSxTQUFTLEtBQVQsU0FBUyxRQUliO0FBRUQsTUFBTSxPQUFnQixTQUFVLFNBQVEsZUFBZTtJQUF2RDs7UUFHSSx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFJdEMsV0FBTSxHQUF5QixtQkFBbUIsQ0FBQztRQUVuRCxtQkFBYyxHQUFvQixJQUFJLENBQUM7UUFNdkMsc0JBQWlCLEdBQVc7WUFDeEIsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxTQUFTLEVBQUUscUNBQXFDO1lBQ2hELG9CQUFvQixFQUFFLGtEQUFrRDtZQUN4RSxHQUFHLEVBQUUsK0JBQStCO1lBQ3BDLElBQUksRUFBRSxxQ0FBcUM7U0FDOUMsQ0FBQztRQUVGLHNCQUFpQixHQUEyQixJQUFJLENBQUM7SUE0V3JELENBQUM7SUF4V0csZUFBZTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FD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Q0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQzFDO2FBQ0o7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUMzQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDdkM7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVPLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUk7UUFDN0IsT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFLO1FBQ3BCLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMsT0FBTyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ3JFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERFRkFVTFRfQ09MT1JfQVJSQVksIEdMT0JBTF9LRVlfQ09ERVMgfSBmcm9tICcuLi8uLi91dGlscy9jb2xvcnMuY29tcG9uZW50JztcbmltcG9ydCB7IElubGluZVN0eWxlVG9vbCB9IGZyb20gJy4vaW5saW5lLXN0eWxlLXRvb2wuY29tcG9uZW50JztcbmltcG9ydCBpcm8gZnJvbSAnQGphYW1lcy9pcm8nO1xuXG5lbnVtIENvbG9yVHlwZSB7XG4gICAgSEVYLFxuICAgIFJHQixcbiAgICBIU0wsXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb2xvclRvb2wgZXh0ZW5kcyBJbmxpbmVTdHlsZVRvb2wge1xuICAgIG5vZGVzOiB7IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgfTtcblxuICAgIGlzQ29sb3JTZWxlY3Rpb25PcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb2xvclNlbGVjdGlvbjogYW55O1xuXG4gICAgY29sb3JzOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IERFRkFVTFRfQ09MT1JfQVJSQVk7XG5cbiAgICBjb2xvckluZGljYXRvcjogSFRNTFNwYW5FbGVtZW50ID0gbnVsbDtcblxuICAgIENTUzogYW55O1xuXG4gICAgYXBpOiBhbnk7XG5cbiAgICBjb2xvclNlbGVjdGlvbkNzczogT2JqZWN0ID0ge1xuICAgICAgICB3cmFwcGVyOiAnY2UtaW5saW5lLWFjdGlvbnMtLWNvbG9yJyxcbiAgICAgICAgY29udGFpbmVyOiAnY2UtaW5saW5lLWFjdGlvbnMtLWNvbG9yX19jb250YWluZXInLFxuICAgICAgICBjb2xvclBpY2tlckNvbnRhaW5lcjogJ2NlLWlubGluZS1hY3Rpb25zLS1jb2xvcl9fY29udGFpbmVyX19jb2xvclBpY2tlcicsXG4gICAgICAgIHJvdzogJ2NlLWlubGluZS1hY3Rpb25zLS1jb2xvcl9fcm93JyxcbiAgICAgICAgaXRlbTogJ2NlLWlubGluZS1hY3Rpb25zLS1jb2xvcl9fcm93X19pdGVtJyxcbiAgICB9O1xuXG4gICAgY3VzdG9tQ29sb3JQaWNrZXI6IGlyby5Db2xvclBpY2tlciB8IG51bGwgPSBudWxsO1xuXG4gICAgYWJzdHJhY3QgYXBwbHlDb2xvcihjb2xvcjogc3RyaW5nLCBpbnB1dFRvRm9jdXM6IEhUTUxJbnB1dEVsZW1lbnQpOiBQcm9taXNlPHZvaWQ+O1xuXG4gICAgb3BlbkNvbG9yUGlja2VyKCkge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50RWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb2xvclNlbGVjdGlvbiA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcilbMF07XG4gICAgICAgIGxldCBjdXJyZW50Q29sb3IgPSB0aGlzLmdldEN1cnJlbnRDb2xvckFwcGxpZWQodGhpcy5nZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlLnBhcmVudEVsZW1lbnQpO1xuICAgICAgICB0aGlzLnNhdmVVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChjb2xvclNlbGVjdGlvbikge1xuICAgICAgICAgICAgaWYgKGNvbG9yU2VsZWN0aW9uLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJykpIHtcbiAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PmNvbG9yU2VsZWN0aW9uKS5zdHlsZS5sZWZ0ID1cbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2Rlcy5idXR0b24ub2Zmc2V0TGVmdCArXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5ub2Rlcy5idXR0b24ub2Zmc2V0V2lkdGggLyAyIC0gKDxIVE1MRWxlbWVudD5jb2xvclNlbGVjdGlvbikub2Zmc2V0V2lkdGggLyAyKVxuICAgICAgICAgICAgICAgICAgICApLnRvU3RyaW5nKCkgKyAncHgnO1xuICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb24pLnN0eWxlLnRvcCA9XG4gICAgICAgICAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+dGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvcignLmNlLWlubGluZS10b29sYmFyX19idXR0b25zJykpLm9mZnNldEhlaWdodCAtXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5ub2Rlcy5idXR0b24ub2Zmc2V0VG9wICsgdGhpcy5ub2Rlcy5idXR0b24ub2Zmc2V0SGVpZ2h0KVxuICAgICAgICAgICAgICAgICAgICApLnRvU3RyaW5nKCkgK1xuICAgICAgICAgICAgICAgICAgICAncHgnO1xuICAgICAgICAgICAgICAgIGxldCB2aWV3cG9ydE9mZnNldCA9IGNvbG9yU2VsZWN0aW9uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgIGxldCB0b3RhbFdpZHRoID1cbiAgICAgICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5jb2xvclNlbGVjdGlvbikub2Zmc2V0V2lkdGggK1xuICAgICAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PmNvbG9yU2VsZWN0aW9uLnF1ZXJ5U2VsZWN0b3IoJy4nICsgdGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29sb3JQaWNrZXJDb250YWluZXInXSkpLm9mZnNldFdpZHRoO1xuICAgICAgICAgICAgICAgIGlmICh2aWV3cG9ydE9mZnNldC5sZWZ0ICsgdG90YWxXaWR0aCA+IGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoY29sb3JTZWxlY3Rpb24sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2xlZnQnKSkgLVxuICAgICAgICAgICAgICAgICAgICAgICAgKHZpZXdwb3J0T2Zmc2V0LmxlZnQgKyB0b3RhbFdpZHRoIC0gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb24pLnN0eWxlLmxlZnQgPSBsZWZ0LnRvU3RyaW5nKCkgKyAncHgnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRGVmYXVsdENvbG9ycygpO1xuICAgICAgICAgICAgICAgIGNvbG9yU2VsZWN0aW9uLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgIGxldCBjb2xvclBpY2tlcldyYXBwZXIgPSA8SFRNTEVsZW1lbnQ+dGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvcignIycgKyB0aGlzLkNTUy5jb2xvclBpY2tlcklkKTtcbiAgICAgICAgICAgICAgICBpZiAoY29sb3JQaWNrZXJXcmFwcGVyLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyID0gaXJvLkNvbG9yUGlja2VyKGNvbG9yUGlja2VyV3JhcHBlciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE3MCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTcwLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0RGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLm9uKFsnY29sb3I6aW5pdCddLCAoY29sb3I6IGlyby5Db2xvcikgPT4gdGhpcy5jaGFuZ2VDb2xvcihjb2xvciwgdHJ1ZSwgY3VycmVudENvbG9yKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIub24oWydjb2xvcjpjaGFuZ2UnXSwgKGNvbG9yOiBpcm8uQ29sb3IpID0+IHRoaXMuY2hhbmdlQ29sb3IoY29sb3IsIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoJGV2ZW50KSA9PiB0aGlzLmlzQ29sb3JTZWxlY3Rpb25Gb2N1c2VkT3V0KCRldmVudCkpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQ29sb3JTZWxlY3Rpb25PcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9LCA0MDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ29sb3JTZWxlY3Rpb25PcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29sb3JTZWxlY3Rpb24uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRDdXJyZW50Q29sb3JBcHBsaWVkKGVsZW1lbnQ6IEVsZW1lbnQpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jbGFzc05hbWUgJiYgZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2NlLXBhcmFncmFwaCcpICYmIGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSh0aGlzLnN0eWxlLnByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBpc0NvbG9yU2VsZWN0aW9uRm9jdXNlZE91dCgkZXZlbnQpIHtcbiAgICAgICAgbGV0IGNvbG9yU2VsZWN0aW9uID0gdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLkNTUy5jb2xvclNlbGVjdGlvbk1vZGlmaWVyKVswXTtcbiAgICAgICAgaWYgKHRoaXMuaXNDb2xvclNlbGVjdGlvbk9wZW4pIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gJGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIHdoaWxlIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbnRhaW5lciddKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsICgkZXZlbnQpID0+IHRoaXMuaXNDb2xvclNlbGVjdGlvbkZvY3VzZWRPdXQoJGV2ZW50KSk7XG4gICAgICAgICAgICB0aGlzLmlzQ29sb3JTZWxlY3Rpb25PcGVuID0gZmFsc2U7XG4gICAgICAgICAgICBjb2xvclNlbGVjdGlvbi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIHRoaXMuYXBpLnRvb2xiYXIuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tEZWZhdWx0Q29sb3JzKCkge1xuICAgICAgICBsZXQgY3VycmVudENvbG9yID0gdGhpcy5nZXRDdXJyZW50Q29sb3JBcHBsaWVkKHRoaXMuZ2V0U2VsZWN0aW9uKCkuYW5jaG9yTm9kZS5wYXJlbnRFbGVtZW50KTtcbiAgICAgICAgdGhpcy5jb2xvcnMuZm9yRWFjaCgoY29sb3JSb3csIHJvd0luZGV4KSA9PiB7XG4gICAgICAgICAgICBjb2xvclJvdy5mb3JFYWNoKChjb2xvciwgY29sdW1uSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY29sb3IgPT09IGN1cnJlbnRDb2xvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcilbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ3JvdyddKVxuICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd0luZGV4XS5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2l0ZW0nXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5JbmRleF0uY2xhc3NMaXN0LmFkZCh0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydpdGVtJ10gKyAnLS1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcilbMF1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ3JvdyddKVxuICAgICAgICAgICAgICAgICAgICAgICAgW3Jvd0luZGV4XS5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2l0ZW0nXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5JbmRleF0uY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydpdGVtJ10gKyAnLS1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3BlbkN1c3RvbUNvbG9yUGlja2VyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBsZXQgY3VzdG9tQ29sb3JQaWNrZXIgPSAoPEhUTUxEaXZFbGVtZW50PmV2ZW50LnRhcmdldCkucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydjb2xvclBpY2tlckNvbnRhaW5lciddKVswXTtcbiAgICAgICAgaWYgKGN1c3RvbUNvbG9yUGlja2VyKSB7XG4gICAgICAgICAgICBpZiAoY3VzdG9tQ29sb3JQaWNrZXIuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbG9yUGlja2VyQ29udGFpbmVyJ10gKyAnLS1hY3RpdmUnKSkge1xuICAgICAgICAgICAgICAgIGN1c3RvbUNvbG9yUGlja2VyLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29sb3JQaWNrZXJDb250YWluZXInXSArICctLWFjdGl2ZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXN0b21Db2xvclBpY2tlci5jbGFzc0xpc3QuYWRkKHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbG9yUGlja2VyQ29udGFpbmVyJ10gKyAnLS1hY3RpdmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKDxIVE1MRWxlbWVudD5ldmVudC50YXJnZXQpLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2RpdicpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGFuZ2VDb2xvcihjb2xvcjogaXJvLkNvbG9yLCBpc0luaXQ6IGJvb2xlYW4sIGluaXRDb2xvcjogc3RyaW5nID0gJycpIHtcbiAgICAgICAgbGV0IGNvbG9yU2VsZWN0aW9uTW9kaWZpZXIgPSB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpO1xuICAgICAgICBsZXQgaGV4SW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3IoJy5oZXggaW5wdXQnKTtcbiAgICAgICAgbGV0IHJnYklucHV0MSA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLnJnYiBpbnB1dCcpWzBdO1xuICAgICAgICBsZXQgcmdiSW5wdXQyID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcucmdiIGlucHV0JylbMV07XG4gICAgICAgIGxldCByZ2JJbnB1dDMgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZ2IgaW5wdXQnKVsyXTtcbiAgICAgICAgLypcbiAgICAgICAgbGV0IGhzbElucHV0MSA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLmhzbCBpbnB1dCcpWzBdO1xuICAgICAgICBsZXQgaHNsSW5wdXQyID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcuaHNsIGlucHV0JylbMV07XG4gICAgICAgIGxldCBoc2xJbnB1dDMgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5oc2wgaW5wdXQnKVsyXTtcbiAgICAgICAgKi9cbiAgICAgICAgaWYgKGlzSW5pdCkge1xuICAgICAgICAgICAgaWYgKGluaXRDb2xvci5pbmRleE9mKCdyZ2JhJykgPiAtMSkge1xuICAgICAgICAgICAgICAgIGluaXRDb2xvciA9IGluaXRDb2xvci5yZXBsYWNlKCdyZ2JhKCcsICcnKS5yZXBsYWNlKCcpJywgJycpLnJlcGxhY2UoJyAnLCAnJyk7XG4gICAgICAgICAgICAgICAgbGV0IHJnYkluaXRDb2xvciA9IGluaXRDb2xvci5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IucmVkID0gcGFyc2VJbnQocmdiSW5pdENvbG9yWzBdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmdyZWVuID0gcGFyc2VJbnQocmdiSW5pdENvbG9yWzFdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmJsdWUgPSBwYXJzZUludChyZ2JJbml0Q29sb3JbMl0pO1xuICAgICAgICAgICAgICAgIGhleElucHV0LnZhbHVlID0gdGhpcy5yZ2JUb0hleChwYXJzZUludChyZ2JJbml0Q29sb3JbMF0pLCBwYXJzZUludChyZ2JJbml0Q29sb3JbMV0pLCBwYXJzZUludChyZ2JJbml0Q29sb3JbMl0pKTtcbiAgICAgICAgICAgICAgICByZ2JJbnB1dDEudmFsdWUgPSByZ2JJbml0Q29sb3JbMF07XG4gICAgICAgICAgICAgICAgcmdiSW5wdXQyLnZhbHVlID0gcmdiSW5pdENvbG9yWzFdO1xuICAgICAgICAgICAgICAgIHJnYklucHV0My52YWx1ZSA9IHJnYkluaXRDb2xvclsyXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5pdENvbG9yID0gaW5pdENvbG9yLnJlcGxhY2UoJ3JnYignLCAnJykucmVwbGFjZSgnKScsICcnKS5yZXBsYWNlKCcgJywgJycpO1xuICAgICAgICAgICAgICAgIGxldCByZ2JJbml0Q29sb3IgPSBpbml0Q29sb3Iuc3BsaXQoJywnKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnJlZCA9IHBhcnNlSW50KHJnYkluaXRDb2xvclswXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5ncmVlbiA9IHBhcnNlSW50KHJnYkluaXRDb2xvclsxXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5ibHVlID0gcGFyc2VJbnQocmdiSW5pdENvbG9yWzJdKTtcbiAgICAgICAgICAgICAgICBoZXhJbnB1dC52YWx1ZSA9IHRoaXMucmdiVG9IZXgocGFyc2VJbnQocmdiSW5pdENvbG9yWzBdKSwgcGFyc2VJbnQocmdiSW5pdENvbG9yWzFdKSwgcGFyc2VJbnQocmdiSW5pdENvbG9yWzJdKSk7XG4gICAgICAgICAgICAgICAgcmdiSW5wdXQxLnZhbHVlID0gcmdiSW5pdENvbG9yWzBdO1xuICAgICAgICAgICAgICAgIHJnYklucHV0Mi52YWx1ZSA9IHJnYkluaXRDb2xvclsxXTtcbiAgICAgICAgICAgICAgICByZ2JJbnB1dDMudmFsdWUgPSByZ2JJbml0Q29sb3JbMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBoZXhJbnB1dC52YWx1ZSA9IGNvbG9yLmhleFN0cmluZztcbiAgICAgICAgICAgIHJnYklucHV0MS52YWx1ZSA9IGNvbG9yLnJnYi5yLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICByZ2JJbnB1dDIudmFsdWUgPSBjb2xvci5yZ2IuZy50b1N0cmluZygpO1xuICAgICAgICAgICAgcmdiSW5wdXQzLnZhbHVlID0gY29sb3IucmdiLmIudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5SR0IpO1xuICAgICAgICB9XG4gICAgICAgIC8qXG4gICAgICAgIGhzbElucHV0MS52YWx1ZSA9IGNvbG9yLmhzbC5oLnRvU3RyaW5nKCk7XG4gICAgICAgIGhzbElucHV0Mi52YWx1ZSA9IGNvbG9yLmhzbC5zICsgJyUnO1xuICAgICAgICBoc2xJbnB1dDMudmFsdWUgPSBjb2xvci5oc2wubCArICclJztcbiAgICAgICAgKi9cbiAgICB9XG5cbiAgICBjaGFuZ2VDb2xvcklucHV0KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBjb2xvclR5cGU6IENvbG9yVHlwZSkge1xuICAgICAgICBpZiAoY29sb3JUeXBlID09PSBDb2xvclR5cGUuSEVYKSB7XG4gICAgICAgICAgICBsZXQgaGV4UmVnZXggPSAvWzAtOUEtRmEtZiNdLztcbiAgICAgICAgICAgIGxldCBoZXhJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PihcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpLnF1ZXJ5U2VsZWN0b3IoJy5oZXggaW5wdXQnKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChHTE9CQUxfS0VZX0NPREVTLmluZGV4T2YoZXZlbnQuY29kZSkgPiAtMSB8fCBoZXhSZWdleC50ZXN0KGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGV4SW5wdXQudmFsdWUubGVuZ3RoID4gMCAmJiBldmVudC5rZXkgPT09ICcjJykge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaGV4SW5wdXQudmFsdWUubGVuZ3RoID09PSA1ICYmIGhleElucHV0LnZhbHVlWzBdICE9PSAnIycgJiYgaGV4UmVnZXgudGVzdChldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGhleElucHV0LnZhbHVlID0gJyMnICsgaGV4SW5wdXQudmFsdWUgKyBldmVudC5rZXk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoY29sb3JUeXBlID09PSBDb2xvclR5cGUuUkdCKSB7XG4gICAgICAgICAgICBsZXQgcmdiUmVnZXggPSAvWzAtOV0vO1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkSW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5ldmVudC50YXJnZXQ7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgR0xPQkFMX0tFWV9DT0RFUy5pbmRleE9mKGV2ZW50LmNvZGUpID09PSAtMSAmJlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZElucHV0LnZhbHVlLmxlbmd0aCA9PT0gMyB8fCBldmVudC5rZXkubGVuZ3RoICE9PSAxIHx8ICFyZ2JSZWdleC50ZXN0KGV2ZW50LmtleSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcnNlSW50KHNlbGVjdGVkSW5wdXQudmFsdWUpID4gMjU1KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbnB1dC52YWx1ZSA9ICcyNTUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG1heElucHV0TGVuZ3RoID0gMztcbiAgICAgICAgICAgIGxldCBoc2xSZWdleCA9IC9bMC05XS87XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZElucHV0UG9zaXRpb24gPSBBcnJheS5mcm9tKHNlbGVjdGVkSW5wdXQucGFyZW50RWxlbWVudC5jaGlsZHJlbikuaW5kZXhPZihzZWxlY3RlZElucHV0KTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZElucHV0UG9zaXRpb24gPiAwKSB7XG4gICAgICAgICAgICAgICAgaHNsUmVnZXggPSAvWzAtOSVdLztcbiAgICAgICAgICAgICAgICBtYXhJbnB1dExlbmd0aCA9IDQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgR0xPQkFMX0tFWV9DT0RFUy5pbmRleE9mKGV2ZW50LmNvZGUpID09PSAtMSAmJlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZElucHV0LnZhbHVlLmxlbmd0aCA9PT0gbWF4SW5wdXRMZW5ndGggfHwgZXZlbnQua2V5Lmxlbmd0aCAhPT0gMSB8fCAhaHNsUmVnZXgudGVzdChldmVudC5rZXkpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZElucHV0UG9zaXRpb24gPT09IDAgJiYgcGFyc2VJbnQoc2VsZWN0ZWRJbnB1dC52YWx1ZSkgPiAzNjApIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZElucHV0LnZhbHVlID0gJzM2MCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkSW5wdXRQb3NpdGlvbiA+IDAgJiYgcGFyc2VJbnQoc2VsZWN0ZWRJbnB1dC52YWx1ZS5yZXBsYWNlKCclJywgJycpKSA+IDEwMCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5wdXQudmFsdWUgPSAnMTAwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrQ29sb3JJbnB1dChjb2xvclR5cGU6IENvbG9yVHlwZSkge1xuICAgICAgICBsZXQgY29sb3JTZWxlY3Rpb25Nb2RpZmllciA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcik7XG4gICAgICAgIGxldCBmb2N1c2VkSW5wdXQgPSBudWxsO1xuICAgICAgICBpZiAoY29sb3JUeXBlID09PSBDb2xvclR5cGUuSEVYKSB7XG4gICAgICAgICAgICBsZXQgaGV4SW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3IoJy5oZXggaW5wdXQnKTtcbiAgICAgICAgICAgIGZvY3VzZWRJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvcignLmhleCBpbnB1dDpmb2N1cycpO1xuICAgICAgICAgICAgaWYgKGhleElucHV0LnZhbHVlLmxlbmd0aCA9PT0gNyAmJiBoZXhJbnB1dC52YWx1ZVswXSA9PT0gJyMnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5oZXhTdHJpbmcgPSBoZXhJbnB1dC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjb2xvclR5cGUgPT09IENvbG9yVHlwZS5SR0IpIHtcbiAgICAgICAgICAgIGxldCByZ2JJbnB1dDEgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZ2IgaW5wdXQnKVswXTtcbiAgICAgICAgICAgIGxldCByZ2JJbnB1dDIgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZ2IgaW5wdXQnKVsxXTtcbiAgICAgICAgICAgIGxldCByZ2JJbnB1dDMgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZ2IgaW5wdXQnKVsyXTtcbiAgICAgICAgICAgIGZvY3VzZWRJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvcignLnJnYiBpbnB1dDpmb2N1cycpO1xuICAgICAgICAgICAgaWYgKHJnYklucHV0MS52YWx1ZS5sZW5ndGggPiAwICYmIHJnYklucHV0Mi52YWx1ZS5sZW5ndGggPiAwICYmIHJnYklucHV0My52YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5yZWQgPSBwYXJzZUludChyZ2JJbnB1dDEudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuZ3JlZW4gPSBwYXJzZUludChyZ2JJbnB1dDIudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuYmx1ZSA9IHBhcnNlSW50KHJnYklucHV0My52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgaHNsSW5wdXQxID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcuaHNsIGlucHV0JylbMF07XG4gICAgICAgICAgICBsZXQgaHNsSW5wdXQyID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcuaHNsIGlucHV0JylbMV07XG4gICAgICAgICAgICBsZXQgaHNsSW5wdXQzID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcuaHNsIGlucHV0JylbMl07XG4gICAgICAgICAgICBmb2N1c2VkSW5wdXQgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3IoJy5oc2wgaW5wdXQ6Zm9jdXMnKTtcbiAgICAgICAgICAgIGlmIChoc2xJbnB1dDEudmFsdWUubGVuZ3RoID4gMCAmJiBoc2xJbnB1dDIudmFsdWUucmVwbGFjZSgnJScsICcnKS5sZW5ndGggPiAwICYmIGhzbElucHV0My52YWx1ZS5yZXBsYWNlKCclJywgJycpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmh1ZSA9IHBhcnNlSW50KGhzbElucHV0MS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5zYXR1cmF0aW9uID0gcGFyc2VJbnQoaHNsSW5wdXQyLnZhbHVlLnJlcGxhY2UoJyUnLCAnJykpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IudmFsdWUgPSBwYXJzZUludChoc2xJbnB1dDMudmFsdWUucmVwbGFjZSgnJScsICcnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJnYkNvbG9yID1cbiAgICAgICAgICAgICdyZ2IoJyArXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnJnYi5yICtcbiAgICAgICAgICAgICcsJyArXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnJnYi5nICtcbiAgICAgICAgICAgICcsJyArXG4gICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnJnYi5iICtcbiAgICAgICAgICAgICcpJztcbiAgICAgICAgdGhpcy5yZXNldFVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgdGhpcy5hcHBseUNvbG9yKHJnYkNvbG9yLCBmb2N1c2VkSW5wdXQpO1xuICAgIH1cblxuICAgIGNyZWF0ZUN1c3RvbUNvbG9yUGlja2VyKCkge1xuICAgICAgICBsZXQgY3VzdG9tQ29sb3JQaWNrZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY3VzdG9tQ29sb3JQaWNrZXIuY2xhc3NOYW1lID0gdGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29sb3JQaWNrZXJDb250YWluZXInXTtcbiAgICAgICAgbGV0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgd3JhcHBlci5pZCA9IHRoaXMuQ1NTLmNvbG9yUGlja2VySWQ7XG4gICAgICAgIGN1c3RvbUNvbG9yUGlja2VyLmFwcGVuZENoaWxkKHdyYXBwZXIpO1xuXG4gICAgICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgbGV0IHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlbGVjdCcpO1xuICAgICAgICBzZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9yVHlwZShldmVudCkpO1xuXG4gICAgICAgIGxldCBoZXhPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcbiAgICAgICAgaGV4T3B0aW9uLnZhbHVlID0gJ2hleCc7XG4gICAgICAgIGhleE9wdGlvbi5pbm5lclRleHQgPSAnSEVYJztcbiAgICAgICAgbGV0IHJnYk9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuICAgICAgICByZ2JPcHRpb24udmFsdWUgPSAncmdiJztcbiAgICAgICAgcmdiT3B0aW9uLmlubmVyVGV4dCA9ICdSR0InO1xuICAgICAgICBsZXQgaHNsT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG4gICAgICAgIGhzbE9wdGlvbi52YWx1ZSA9ICdoc2wnO1xuICAgICAgICBoc2xPcHRpb24uaW5uZXJUZXh0ID0gJ0hTTCc7XG5cbiAgICAgICAgbGV0IGhleENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBoZXhDb250YWluZXIuY2xhc3NOYW1lID0gJ2hleCc7XG4gICAgICAgIGxldCBoZXhJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIGhleElucHV0LnBsYWNlaG9sZGVyID0gJyMyMzI3MmInO1xuICAgICAgICBoZXhDb250YWluZXIuYXBwZW5kQ2hpbGQoaGV4SW5wdXQpO1xuICAgICAgICBoZXhJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5IRVgpKTtcbiAgICAgICAgaGV4SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuSEVYKSk7XG5cbiAgICAgICAgbGV0IHJnYkNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICByZ2JDb250YWluZXIuY2xhc3NOYW1lID0gJ3JnYiBoaWRkZW4nO1xuICAgICAgICBsZXQgcmdiSW5wdXQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgcmdiSW5wdXQxLnBsYWNlaG9sZGVyID0gJzI1NSc7XG4gICAgICAgIGxldCByZ2JJbnB1dDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICByZ2JJbnB1dDIucGxhY2Vob2xkZXIgPSAnMCc7XG4gICAgICAgIGxldCByZ2JJbnB1dDMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICByZ2JJbnB1dDMucGxhY2Vob2xkZXIgPSAnMCc7XG4gICAgICAgIHJnYklucHV0MS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5SR0IpKTtcbiAgICAgICAgcmdiSW5wdXQyLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JJbnB1dChldmVudCwgQ29sb3JUeXBlLlJHQikpO1xuICAgICAgICByZ2JJbnB1dDMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuUkdCKSk7XG4gICAgICAgIHJnYklucHV0MS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5SR0IpKTtcbiAgICAgICAgcmdiSW5wdXQyLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLlJHQikpO1xuICAgICAgICByZ2JJbnB1dDMuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuUkdCKSk7XG4gICAgICAgIHJnYkNvbnRhaW5lci5hcHBlbmRDaGlsZChyZ2JJbnB1dDEpO1xuICAgICAgICByZ2JDb250YWluZXIuYXBwZW5kQ2hpbGQocmdiSW5wdXQyKTtcbiAgICAgICAgcmdiQ29udGFpbmVyLmFwcGVuZENoaWxkKHJnYklucHV0Myk7XG5cbiAgICAgICAgbGV0IGhzbENvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBoc2xDb250YWluZXIuY2xhc3NOYW1lID0gJ2hzbCBoaWRkZW4nO1xuICAgICAgICBsZXQgaHNsSW5wdXQxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgaHNsSW5wdXQxLnBsYWNlaG9sZGVyID0gJzAnO1xuICAgICAgICBsZXQgaHNsSW5wdXQyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgaHNsSW5wdXQyLnBsYWNlaG9sZGVyID0gJzEwMCUnO1xuICAgICAgICBsZXQgaHNsSW5wdXQzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgaHNsSW5wdXQzLnBsYWNlaG9sZGVyID0gJzUwJSc7XG4gICAgICAgIGhzbElucHV0MS5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5IU0wpKTtcbiAgICAgICAgaHNsSW5wdXQyLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JJbnB1dChldmVudCwgQ29sb3JUeXBlLkhTTCkpO1xuICAgICAgICBoc2xJbnB1dDMuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuSFNMKSk7XG4gICAgICAgIGhzbElucHV0MS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5IU0wpKTtcbiAgICAgICAgaHNsSW5wdXQyLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLkhTTCkpO1xuICAgICAgICBoc2xJbnB1dDMuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuSFNMKSk7XG4gICAgICAgIGhzbENvbnRhaW5lci5hcHBlbmRDaGlsZChoc2xJbnB1dDEpO1xuICAgICAgICBoc2xDb250YWluZXIuYXBwZW5kQ2hpbGQoaHNsSW5wdXQyKTtcbiAgICAgICAgaHNsQ29udGFpbmVyLmFwcGVuZENoaWxkKGhzbElucHV0Myk7XG5cbiAgICAgICAgc2VsZWN0LmFwcGVuZENoaWxkKGhleE9wdGlvbik7XG4gICAgICAgIHNlbGVjdC5hcHBlbmRDaGlsZChyZ2JPcHRpb24pO1xuICAgICAgICAvL3NlbGVjdC5hcHBlbmRDaGlsZChoc2xPcHRpb24pO1xuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoc2VsZWN0KTtcblxuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaGV4Q29udGFpbmVyKTtcbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHJnYkNvbnRhaW5lcik7XG4gICAgICAgIC8vY29udGFpbmVyLmFwcGVuZENoaWxkKGhzbENvbnRhaW5lcik7XG5cbiAgICAgICAgY3VzdG9tQ29sb3JQaWNrZXIuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcblxuICAgICAgICByZXR1cm4gY3VzdG9tQ29sb3JQaWNrZXI7XG4gICAgfVxuXG4gICAgY2hhbmdlQ29sb3JUeXBlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBsZXQgcGFyZW50ID0gKDxIVE1MU2VsZWN0RWxlbWVudD5ldmVudC50YXJnZXQpLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGxldCBjaGlsZHJlbiA9IHBhcmVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5jbGFzc0xpc3QuY29udGFpbnMoKDxIVE1MU2VsZWN0RWxlbWVudD5ldmVudC50YXJnZXQpLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGlsZHJlbltpXS5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuW2ldLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmdiVG9IZXgocmVkLCBncmVlbiwgYmx1ZSkge1xuICAgICAgICByZXR1cm4gJyMnICsgdGhpcy5jb2xvclRvSGV4KHJlZCkgKyB0aGlzLmNvbG9yVG9IZXgoZ3JlZW4pICsgdGhpcy5jb2xvclRvSGV4KGJsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29sb3JUb0hleChjb2xvcikge1xuICAgICAgICB2YXIgaGV4YWRlY2ltYWwgPSBjb2xvci50b1N0cmluZygxNik7XG4gICAgICAgIHJldHVybiBoZXhhZGVjaW1hbC5sZW5ndGggPT0gMSA/ICcwJyArIGhleGFkZWNpbWFsIDogaGV4YWRlY2ltYWw7XG4gICAgfVxufVxuIl19