@wizishop/wizi-block 4.2.0-beta → 4.2.21-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 (517) hide show
  1. package/bundles/wizishop-wizi-block.umd.js +458 -450
  2. package/bundles/wizishop-wizi-block.umd.js.map +1 -1
  3. package/bundles/wizishop-wizi-block.umd.min.js +1 -1
  4. package/bundles/wizishop-wizi-block.umd.min.js.map +1 -1
  5. package/esm2015/lib/components/blocks/blocks.component.js +1 -1
  6. package/esm2015/lib/components/components.module.js +1 -1
  7. package/esm2015/lib/components/configs/configs.component.js +1 -1
  8. package/esm2015/lib/components/container-block/container-block.component.js +1 -1
  9. package/esm2015/lib/components/previews/previews.component.js +1 -1
  10. package/esm2015/lib/dtos/apis/amplify/amplify-category.dto.js +1 -1
  11. package/esm2015/lib/dtos/apis/amplify/amplify-guide.dto.js +1 -1
  12. package/esm2015/lib/dtos/apis/amplify/amplify-media.dto.js +1 -1
  13. package/esm2015/lib/dtos/apis/amplify/amplify-paginated.dto.js +1 -1
  14. package/esm2015/lib/dtos/apis/amplify/amplify-product.dto.js +1 -1
  15. package/esm2015/lib/dtos/apis/catalogs/catalog-badges.dto.js +1 -1
  16. package/esm2015/lib/dtos/apis/catalogs/catalog-brand.dto.js +1 -1
  17. package/esm2015/lib/dtos/apis/catalogs/catalog-category.dto.js +1 -1
  18. package/esm2015/lib/dtos/apis/catalogs/catalog-facet-value.dto.js +1 -1
  19. package/esm2015/lib/dtos/apis/catalogs/catalog-facet.dto.js +1 -1
  20. package/esm2015/lib/dtos/apis/catalogs/catalog-image.dto.js +1 -1
  21. package/esm2015/lib/dtos/apis/catalogs/catalog-list.dto.js +1 -1
  22. package/esm2015/lib/dtos/apis/catalogs/catalog-price.dto.js +1 -1
  23. package/esm2015/lib/dtos/apis/catalogs/catalog-variant-option.dto.js +1 -1
  24. package/esm2015/lib/dtos/apis/catalogs/catalog-variant.dto.js +1 -1
  25. package/esm2015/lib/dtos/apis/catalogs/catalog.dto.js +1 -1
  26. package/esm2015/lib/dtos/apis/comments/comment-list.dto.js +1 -1
  27. package/esm2015/lib/dtos/apis/comments/comment.dto.js +1 -1
  28. package/esm2015/lib/dtos/apis/forms/form-detail.dto.js +1 -1
  29. package/esm2015/lib/dtos/apis/forms/form-list.dto.js +1 -1
  30. package/esm2015/lib/dtos/apis/maps/open-map.dto.js +1 -1
  31. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom-more.dto.js +1 -1
  32. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom-selected.dto.js +1 -1
  33. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom-triple-column.dto.js +1 -1
  34. package/esm2015/lib/dtos/blocks/amplify-product/amplify-product-zoom.dto.js +1 -1
  35. package/esm2015/lib/dtos/blocks/amplify-products-list/amplify-products-list-classic.dto.js +1 -1
  36. package/esm2015/lib/dtos/blocks/amplify-products-list/amplify-products-list-selected.dto.js +1 -1
  37. package/esm2015/lib/dtos/blocks/amplify-products-list/amplify-products-list-simple.dto.js +1 -1
  38. package/esm2015/lib/dtos/blocks/code/code-html.dto.js +1 -1
  39. package/esm2015/lib/dtos/blocks/code/code-javascript.dto.js +1 -1
  40. package/esm2015/lib/dtos/blocks/code/code-stylesheet.dto.js +1 -1
  41. package/esm2015/lib/dtos/blocks/faq/faq-accordion.dto.js +1 -1
  42. package/esm2015/lib/dtos/blocks/faq/faq-frame.dto.js +1 -1
  43. package/esm2015/lib/dtos/blocks/faq/faq-list-icon.dto.js +1 -1
  44. package/esm2015/lib/dtos/blocks/faq/faq-simple-background.dto.js +1 -1
  45. package/esm2015/lib/dtos/blocks/faq/faq-simple.dto.js +1 -1
  46. package/esm2015/lib/dtos/blocks/faq/faq.dto.js +1 -1
  47. package/esm2015/lib/dtos/blocks/forms/forms-background.dto.js +1 -1
  48. package/esm2015/lib/dtos/blocks/forms/forms-imageleft.dto.js +1 -1
  49. package/esm2015/lib/dtos/blocks/forms/forms-imageright.dto.js +1 -1
  50. package/esm2015/lib/dtos/blocks/forms/forms-simple.dto.js +1 -1
  51. package/esm2015/lib/dtos/blocks/images/four-images-title.dto.js +1 -1
  52. package/esm2015/lib/dtos/blocks/images/images-banner.dto.js +1 -1
  53. package/esm2015/lib/dtos/blocks/images/images-big-and-double.dto.js +1 -1
  54. package/esm2015/lib/dtos/blocks/images/images-bigs-and-double-middle.dto.js +1 -1
  55. package/esm2015/lib/dtos/blocks/images/images-double.dto.js +1 -1
  56. package/esm2015/lib/dtos/blocks/images/images-quadruple-left-one-right.dto.js +1 -1
  57. package/esm2015/lib/dtos/blocks/images/images-quadruple.dto.js +1 -1
  58. package/esm2015/lib/dtos/blocks/images/images-simple.dto.js +1 -1
  59. package/esm2015/lib/dtos/blocks/images/images-triple.dto.js +1 -1
  60. package/esm2015/lib/dtos/blocks/images/two-images-title-text.dto.js +1 -1
  61. package/esm2015/lib/dtos/blocks/images-texts/images-texts-big-left-text-right.dto.js +1 -1
  62. package/esm2015/lib/dtos/blocks/images-texts/images-texts-big-right-text-left.dto.js +1 -1
  63. package/esm2015/lib/dtos/blocks/images-texts/images-texts-left-text-right.dto.js +1 -1
  64. package/esm2015/lib/dtos/blocks/images-texts/images-texts-one-text-one.dto.js +1 -1
  65. package/esm2015/lib/dtos/blocks/images-texts/images-texts-right-text-left.dto.js +1 -1
  66. package/esm2015/lib/dtos/blocks/images-texts/images-texts-small-left-text-right.dto.js +1 -1
  67. package/esm2015/lib/dtos/blocks/images-texts/images-texts-small-right-text-left.dto.js +1 -1
  68. package/esm2015/lib/dtos/blocks/images-texts/images-texts-text-one-text.dto.js +1 -1
  69. package/esm2015/lib/dtos/blocks/launch-videos/launch-videos-button.dto.js +1 -1
  70. package/esm2015/lib/dtos/blocks/launch-videos/launch-videos-buttontxt.dto.js +1 -1
  71. package/esm2015/lib/dtos/blocks/map/map-background-form-left.dto.js +1 -1
  72. package/esm2015/lib/dtos/blocks/map/map-background-form-right.dto.js +1 -1
  73. package/esm2015/lib/dtos/blocks/map/map-fullpage.dto.js +1 -1
  74. package/esm2015/lib/dtos/blocks/map/map-left-text.dto.js +1 -1
  75. package/esm2015/lib/dtos/blocks/map/map-right-text.dto.js +1 -1
  76. package/esm2015/lib/dtos/blocks/map/map-text-form.dto.js +1 -1
  77. package/esm2015/lib/dtos/blocks/newsletter/newsletter-aligned-center-background.dto.js +1 -1
  78. package/esm2015/lib/dtos/blocks/newsletter/newsletter-aligned-center-image.dto.js +1 -1
  79. package/esm2015/lib/dtos/blocks/newsletter/newsletter-center-image.dto.js +1 -1
  80. package/esm2015/lib/dtos/blocks/onboarding/forms-onboarding.do.js +1 -1
  81. package/esm2015/lib/dtos/blocks/parent-block.dto.js +1 -1
  82. package/esm2015/lib/dtos/blocks/product/product-zoom-complete-background.dto.js +1 -1
  83. package/esm2015/lib/dtos/blocks/product/product-zoom-complete-slider.dto.js +1 -1
  84. package/esm2015/lib/dtos/blocks/product/product-zoom-complete.dto.js +1 -1
  85. package/esm2015/lib/dtos/blocks/product/product-zoom-more.dto.js +1 -1
  86. package/esm2015/lib/dtos/blocks/product/product-zoom-selected.dto.js +1 -1
  87. package/esm2015/lib/dtos/blocks/product/product-zoom-simple.dto.js +1 -1
  88. package/esm2015/lib/dtos/blocks/product/product-zoom-triple-column.dto.js +1 -1
  89. package/esm2015/lib/dtos/blocks/product/product-zoom.dto.js +1 -1
  90. package/esm2015/lib/dtos/blocks/products-list/products-list-classic.dto.js +1 -1
  91. package/esm2015/lib/dtos/blocks/products-list/products-list-selected.dto.js +1 -1
  92. package/esm2015/lib/dtos/blocks/products-list/products-list-simple.dto.js +1 -1
  93. package/esm2015/lib/dtos/blocks/quotes/quotes-author.dto.js +1 -1
  94. package/esm2015/lib/dtos/blocks/quotes/quotes-simple-background.dto.js +1 -1
  95. package/esm2015/lib/dtos/blocks/quotes/quotes-simple.dto.js +1 -1
  96. package/esm2015/lib/dtos/blocks/rassurances/rassurances-quadruple-aligned.dto.js +1 -1
  97. package/esm2015/lib/dtos/blocks/rassurances/rassurances-quadruple-background.dto.js +1 -1
  98. package/esm2015/lib/dtos/blocks/rassurances/rassurances-triple-background.dto.js +1 -1
  99. package/esm2015/lib/dtos/blocks/reviews/reviews-simple.dto.js +1 -1
  100. package/esm2015/lib/dtos/blocks/reviews/reviews-waterfall.dto.js +1 -1
  101. package/esm2015/lib/dtos/blocks/separators/separator-simple.dto.js +1 -1
  102. package/esm2015/lib/dtos/blocks/sliders/sliders-double-imageright.dto.js +1 -1
  103. package/esm2015/lib/dtos/blocks/sliders/sliders-fullpage.dto.js +1 -1
  104. package/esm2015/lib/dtos/blocks/sliders/sliders-imageright.dto.js +1 -1
  105. package/esm2015/lib/dtos/blocks/sliders/sliders-leftnav.dto.js +1 -1
  106. package/esm2015/lib/dtos/blocks/sliders/sliders-with-banner.dto.js +1 -1
  107. package/esm2015/lib/dtos/blocks/socials/socials-like.dto.js +1 -1
  108. package/esm2015/lib/dtos/blocks/socials/socials-network.dto.js +1 -1
  109. package/esm2015/lib/dtos/blocks/socials/socials-page-complex.dto.js +1 -1
  110. package/esm2015/lib/dtos/blocks/socials/socials-page-simple.dto.js +1 -1
  111. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-four-rows-icon-text.dto.js +1 -1
  112. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-link.dto.js +1 -1
  113. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-rows-icon-text.dto.js +1 -1
  114. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-simple.dto.js +1 -1
  115. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-three-rows-icon-text.dto.js +1 -1
  116. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-two-rows-icon-text.dto.js +1 -1
  117. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-with-banner.dto.js +1 -1
  118. package/esm2015/lib/dtos/blocks/text-backgrounds/text-backgrounds-with-txt.dto.js +1 -1
  119. package/esm2015/lib/dtos/blocks/texts/texts-double-background.dto.js +1 -1
  120. package/esm2015/lib/dtos/blocks/texts/texts-double.dto.js +1 -1
  121. package/esm2015/lib/dtos/blocks/texts/texts-one-background.dto.js +1 -1
  122. package/esm2015/lib/dtos/blocks/texts/texts-one.dto.js +1 -1
  123. package/esm2015/lib/dtos/blocks/texts/texts-quadruple-background.dto.js +1 -1
  124. package/esm2015/lib/dtos/blocks/texts/texts-quadruple-numbers.dto.js +1 -1
  125. package/esm2015/lib/dtos/blocks/texts/texts-quadruple.dto.js +1 -1
  126. package/esm2015/lib/dtos/blocks/texts/texts-triple-background.dto.js +1 -1
  127. package/esm2015/lib/dtos/blocks/texts/texts-triple.dto.js +1 -1
  128. package/esm2015/lib/dtos/blocks/timer/timer-airport.dto.js +1 -1
  129. package/esm2015/lib/dtos/blocks/timer/timer-background.dto.js +1 -1
  130. package/esm2015/lib/dtos/blocks/timer/timer-clock.dto.js +1 -1
  131. package/esm2015/lib/dtos/blocks/timer/timer-multiple-img.dto.js +1 -1
  132. package/esm2015/lib/dtos/blocks/timer/timer-simple.dto.js +1 -1
  133. package/esm2015/lib/dtos/blocks/videos/videos-simple.dto.js +1 -1
  134. package/esm2015/lib/dtos/blocks/videos/videos-txt-content.dto.js +1 -1
  135. package/esm2015/lib/dtos/blocks/videos/videos-txt.dto.js +1 -1
  136. package/esm2015/lib/dtos/blocks/witness/about-block.dto.js +1 -1
  137. package/esm2015/lib/dtos/blocks/witness/witness-background-double.dto.js +1 -1
  138. package/esm2015/lib/dtos/blocks/witness/witness-background-one.dto.js +1 -1
  139. package/esm2015/lib/dtos/blocks/witness/witness-quadruple.dto.js +1 -1
  140. package/esm2015/lib/dtos/blocks/witness/witness-triple.dto.js +1 -1
  141. package/esm2015/lib/dtos/blocks/witness/witness-twice.dto.js +1 -1
  142. package/esm2015/lib/dtos/configs/apis/api.dto.js +1 -1
  143. package/esm2015/lib/dtos/configs/blocks/block-config.dto.js +1 -1
  144. package/esm2015/lib/dtos/configs/blocks/blocks-list.dto.js +1 -1
  145. package/esm2015/lib/dtos/configs/buttons/button.dto.js +1 -1
  146. package/esm2015/lib/dtos/configs/external/external-config.dto.js +1 -1
  147. package/esm2015/lib/dtos/configs/fonts/font-awesome.dto.js +1 -1
  148. package/esm2015/lib/dtos/configs/images/four-images-title-element.dto.js +1 -1
  149. package/esm2015/lib/dtos/configs/medias/image/font-or-media.dto.js +1 -1
  150. package/esm2015/lib/dtos/configs/medias/image/image-media-and-text.dto.js +1 -1
  151. package/esm2015/lib/dtos/configs/medias/image/image-media.dto.js +1 -1
  152. package/esm2015/lib/dtos/configs/medias/image/payment-or-media.dto.js +1 -1
  153. package/esm2015/lib/dtos/configs/medias/media-width-height.dto.js +1 -1
  154. package/esm2015/lib/dtos/configs/medias/media.dto.js +1 -1
  155. package/esm2015/lib/dtos/configs/medias/text/text-media.dto.js +1 -1
  156. package/esm2015/lib/dtos/configs/structures/structure-config.dto.js +1 -1
  157. package/esm2015/lib/dtos/configs/structures/structures-list.dto.js +1 -1
  158. package/esm2015/lib/dtos/configs/translations/translations.dto.js +1 -1
  159. package/esm2015/lib/dtos/configs/types/types.dto.js +1 -1
  160. package/esm2015/lib/dtos/configs/witness/about-element.dto.js +1 -1
  161. package/esm2015/lib/dtos/forms/forms.dto.js +1 -1
  162. package/esm2015/lib/dtos/utils/quill/crypted-link.dto.js +1 -1
  163. package/esm2015/lib/dtos/utils/quill/custom-link.dto.js +1 -1
  164. package/esm2015/lib/dtos/utils/quill/delta.dto.js +1 -1
  165. package/esm2015/lib/dtos/utils/quill/icon.dto.js +1 -1
  166. package/esm2015/lib/dtos/utils/quill/line-break.dto.js +1 -1
  167. package/esm2015/lib/dtos/utils/quill-html-editor/html-formatter.js +1 -1
  168. package/esm2015/lib/dtos/utils/quill-html-editor/logger.js +1 -1
  169. package/esm2015/lib/dtos/utils/quill-html-editor/options.js +1 -1
  170. package/esm2015/lib/dtos/utils/quill-html-editor/quill.htmlEditButton.js +1 -1
  171. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom-more.service.js +1 -1
  172. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom-selected.service.js +1 -1
  173. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom-triple-column.service.js +1 -1
  174. package/esm2015/lib/services/blocks/amplify-product/amplify-product-zoom.service.js +1 -1
  175. package/esm2015/lib/services/blocks/amplify-products-list/amplify-products-list-classic.service.js +1 -1
  176. package/esm2015/lib/services/blocks/amplify-products-list/amplify-products-list-selected.service.js +1 -1
  177. package/esm2015/lib/services/blocks/amplify-products-list/amplify-products-list-simple.service.js +1 -1
  178. package/esm2015/lib/services/blocks/code/code-html.service.js +1 -1
  179. package/esm2015/lib/services/blocks/code/code-javascript.service.js +1 -1
  180. package/esm2015/lib/services/blocks/code/code-stylesheet.service.js +1 -1
  181. package/esm2015/lib/services/blocks/faq/faq-accordion.service.js +1 -1
  182. package/esm2015/lib/services/blocks/faq/faq-frame.service.js +1 -1
  183. package/esm2015/lib/services/blocks/faq/faq-list-icon.service.js +1 -1
  184. package/esm2015/lib/services/blocks/faq/faq-simple-background.service.js +1 -1
  185. package/esm2015/lib/services/blocks/faq/faq-simple.service.js +1 -1
  186. package/esm2015/lib/services/blocks/forms/forms-background.service.js +1 -1
  187. package/esm2015/lib/services/blocks/forms/forms-imageleft.service.js +1 -1
  188. package/esm2015/lib/services/blocks/forms/forms-imageright.service.js +1 -1
  189. package/esm2015/lib/services/blocks/forms/forms-simple.service.js +1 -1
  190. package/esm2015/lib/services/blocks/images/four-images-title.service.js +1 -1
  191. package/esm2015/lib/services/blocks/images/images-banner.service.js +1 -1
  192. package/esm2015/lib/services/blocks/images/images-big-and-double.service.js +1 -1
  193. package/esm2015/lib/services/blocks/images/images-bigs-and-double-middle.service.js +1 -1
  194. package/esm2015/lib/services/blocks/images/images-double.service.js +1 -1
  195. package/esm2015/lib/services/blocks/images/images-quadruple-left-one-right.service.js +1 -1
  196. package/esm2015/lib/services/blocks/images/images-quadruple.service.js +1 -1
  197. package/esm2015/lib/services/blocks/images/images-simple.service.js +1 -1
  198. package/esm2015/lib/services/blocks/images/images-triple.service.js +1 -1
  199. package/esm2015/lib/services/blocks/images/two-images-title-text.service.js +1 -1
  200. package/esm2015/lib/services/blocks/images-texts/images-texts-big-left-text-right.service.js +1 -1
  201. package/esm2015/lib/services/blocks/images-texts/images-texts-big-right-text-left.service.js +1 -1
  202. package/esm2015/lib/services/blocks/images-texts/images-texts-left-text-right.service.js +1 -1
  203. package/esm2015/lib/services/blocks/images-texts/images-texts-one-text-one.service.js +1 -1
  204. package/esm2015/lib/services/blocks/images-texts/images-texts-right-text-left.service.js +1 -1
  205. package/esm2015/lib/services/blocks/images-texts/images-texts-small-left-text-right.service.js +1 -1
  206. package/esm2015/lib/services/blocks/images-texts/images-texts-small-right-text-left.service.js +1 -1
  207. package/esm2015/lib/services/blocks/images-texts/images-texts-text-one-text.service.js +1 -1
  208. package/esm2015/lib/services/blocks/launch-videos/launch-videos-button.service.js +1 -1
  209. package/esm2015/lib/services/blocks/launch-videos/launch-videos-buttontxt.service.js +1 -1
  210. package/esm2015/lib/services/blocks/map/map-background-form-left.service.js +1 -1
  211. package/esm2015/lib/services/blocks/map/map-background-form-right.service.js +1 -1
  212. package/esm2015/lib/services/blocks/map/map-fullpage.service.js +1 -1
  213. package/esm2015/lib/services/blocks/map/map-left-text.service.js +1 -1
  214. package/esm2015/lib/services/blocks/map/map-right-text.service.js +1 -1
  215. package/esm2015/lib/services/blocks/map/map-text-form.service.js +1 -1
  216. package/esm2015/lib/services/blocks/newsletter/newsletter-aligned-center-background.service.js +1 -1
  217. package/esm2015/lib/services/blocks/newsletter/newsletter-aligned-center-image.service.js +1 -1
  218. package/esm2015/lib/services/blocks/newsletter/newsletter-center-image.service.js +1 -1
  219. package/esm2015/lib/services/blocks/onboarding/forms-onboarding.service.js +1 -1
  220. package/esm2015/lib/services/blocks/product/product-zoom-complete-background.service.js +1 -1
  221. package/esm2015/lib/services/blocks/product/product-zoom-complete-slider.service.js +1 -1
  222. package/esm2015/lib/services/blocks/product/product-zoom-complete.service.js +1 -1
  223. package/esm2015/lib/services/blocks/product/product-zoom-more.service.js +1 -1
  224. package/esm2015/lib/services/blocks/product/product-zoom-selected.service.js +1 -1
  225. package/esm2015/lib/services/blocks/product/product-zoom-simple.service.js +1 -1
  226. package/esm2015/lib/services/blocks/product/product-zoom-triple-column.service.js +1 -1
  227. package/esm2015/lib/services/blocks/product/product-zoom.service.js +1 -1
  228. package/esm2015/lib/services/blocks/products-list/products-list-classic.service.js +1 -1
  229. package/esm2015/lib/services/blocks/products-list/products-list-selected.service.js +1 -1
  230. package/esm2015/lib/services/blocks/products-list/products-list-simple.service.js +1 -1
  231. package/esm2015/lib/services/blocks/quotes/quotes-author.service.js +1 -1
  232. package/esm2015/lib/services/blocks/quotes/quotes-simple-background.service.js +1 -1
  233. package/esm2015/lib/services/blocks/quotes/quotes-simple.service.js +1 -1
  234. package/esm2015/lib/services/blocks/rassurances/rassurances-quadruple-aligned.service.js +1 -1
  235. package/esm2015/lib/services/blocks/rassurances/rassurances-quadruple-background.service.js +1 -1
  236. package/esm2015/lib/services/blocks/rassurances/rassurances-triple-background.service.js +1 -1
  237. package/esm2015/lib/services/blocks/reviews/reviews-simple.service.js +1 -1
  238. package/esm2015/lib/services/blocks/reviews/reviews-waterfall.service.js +1 -1
  239. package/esm2015/lib/services/blocks/separator/separator-simple.service.js +1 -1
  240. package/esm2015/lib/services/blocks/sliders/sliders-double-imageright.service.js +1 -1
  241. package/esm2015/lib/services/blocks/sliders/sliders-fullpage.service.js +1 -1
  242. package/esm2015/lib/services/blocks/sliders/sliders-imageright.service.js +1 -1
  243. package/esm2015/lib/services/blocks/sliders/sliders-leftnav.service.js +1 -1
  244. package/esm2015/lib/services/blocks/sliders/sliders-with-banner.service.js +1 -1
  245. package/esm2015/lib/services/blocks/socials/socials-like.service.js +1 -1
  246. package/esm2015/lib/services/blocks/socials/socials-network.service.js +1 -1
  247. package/esm2015/lib/services/blocks/socials/socials-page-complex.service.js +1 -1
  248. package/esm2015/lib/services/blocks/socials/socials-page-simple.service.js +1 -1
  249. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-four-rows-icon-text.service.js +1 -1
  250. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-link.service.js +1 -1
  251. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-simple.service.js +1 -1
  252. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-three-rows-icon-text.service.js +1 -1
  253. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-two-rows-icon-text.service.js +1 -1
  254. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-with-banner.service.js +1 -1
  255. package/esm2015/lib/services/blocks/text-backgrounds/text-backgrounds-with-txt.service.js +1 -1
  256. package/esm2015/lib/services/blocks/texts/texts-double-background.service.js +1 -1
  257. package/esm2015/lib/services/blocks/texts/texts-double.service.js +1 -1
  258. package/esm2015/lib/services/blocks/texts/texts-one-background.service.js +1 -1
  259. package/esm2015/lib/services/blocks/texts/texts-one.service.js +1 -1
  260. package/esm2015/lib/services/blocks/texts/texts-quadruple-background.service.js +1 -1
  261. package/esm2015/lib/services/blocks/texts/texts-quadruple-numbers.service.js +1 -1
  262. package/esm2015/lib/services/blocks/texts/texts-quadruple.service.js +1 -1
  263. package/esm2015/lib/services/blocks/texts/texts-triple-background.service.js +1 -1
  264. package/esm2015/lib/services/blocks/texts/texts-triple.service.js +1 -1
  265. package/esm2015/lib/services/blocks/timer/timer-airport.service.js +1 -1
  266. package/esm2015/lib/services/blocks/timer/timer-background.service.js +1 -1
  267. package/esm2015/lib/services/blocks/timer/timer-clock.service.js +1 -1
  268. package/esm2015/lib/services/blocks/timer/timer-multiple-img.service.js +1 -1
  269. package/esm2015/lib/services/blocks/timer/timer-simple.service.js +1 -1
  270. package/esm2015/lib/services/blocks/videos/videos-simple.service.js +1 -1
  271. package/esm2015/lib/services/blocks/videos/videos-txt-content.service.js +1 -1
  272. package/esm2015/lib/services/blocks/videos/videos-txt-left.service.js +1 -1
  273. package/esm2015/lib/services/blocks/videos/videos-txt.service.js +1 -1
  274. package/esm2015/lib/services/blocks/witness/about-block.service.js +1 -1
  275. package/esm2015/lib/services/blocks/witness/witness-background-double.service.js +1 -1
  276. package/esm2015/lib/services/blocks/witness/witness-background-one.service.js +1 -1
  277. package/esm2015/lib/services/blocks/witness/witness-quadruple.service.js +1 -1
  278. package/esm2015/lib/services/blocks/witness/witness-triple.service.js +1 -1
  279. package/esm2015/lib/services/blocks/witness/witness-twice.service.js +1 -1
  280. package/esm2015/lib/services/structures/amplify-product/amplify-product.service.js +1 -1
  281. package/esm2015/lib/services/structures/amplify-products-list/amplify-products-list.service.js +1 -1
  282. package/esm2015/lib/services/structures/code/code.service.js +1 -1
  283. package/esm2015/lib/services/structures/faq/faq.service.js +1 -1
  284. package/esm2015/lib/services/structures/forms/forms.service.js +1 -1
  285. package/esm2015/lib/services/structures/images/images.service.js +1 -1
  286. package/esm2015/lib/services/structures/images-texts/images-texts.service.js +1 -1
  287. package/esm2015/lib/services/structures/launch-videos/launch-videos.service.js +1 -1
  288. package/esm2015/lib/services/structures/map/map.service.js +1 -1
  289. package/esm2015/lib/services/structures/newsletter/newsletter.service.js +1 -1
  290. package/esm2015/lib/services/structures/onboarding/onboarding.service.js +1 -1
  291. package/esm2015/lib/services/structures/parent-structures.service.js +1 -1
  292. package/esm2015/lib/services/structures/product/product.service.js +1 -1
  293. package/esm2015/lib/services/structures/products-list/products-list.service.js +1 -1
  294. package/esm2015/lib/services/structures/quotes/quotes.service.js +1 -1
  295. package/esm2015/lib/services/structures/rassurances/rassurances.service.js +1 -1
  296. package/esm2015/lib/services/structures/reviews/reviews.service.js +1 -1
  297. package/esm2015/lib/services/structures/separator/separator.service.js +1 -1
  298. package/esm2015/lib/services/structures/sliders/sliders.service.js +1 -1
  299. package/esm2015/lib/services/structures/socials/socials.service.js +1 -1
  300. package/esm2015/lib/services/structures/text-backgrounds/text-backgrounds.service.js +1 -1
  301. package/esm2015/lib/services/structures/texts/texts.service.js +1 -1
  302. package/esm2015/lib/services/structures/timer/timer.service.js +1 -1
  303. package/esm2015/lib/services/structures/videos/videos.service.js +1 -1
  304. package/esm2015/lib/services/structures/witness/witness.service.js +1 -1
  305. package/esm2015/lib/services/utils/api.service.js +1 -1
  306. package/esm2015/lib/services/utils/config.service.js +1 -1
  307. package/esm2015/lib/services/utils/content.service.js +1 -1
  308. package/esm2015/lib/services/utils/currency.service.js +1 -1
  309. package/esm2015/lib/services/utils/expected-images.service.js +1 -1
  310. package/esm2015/lib/services/utils/external-config.service.js +1 -1
  311. package/esm2015/lib/services/utils/font-awesome.service.js +1 -1
  312. package/esm2015/lib/services/utils/injector.service.js +1 -1
  313. package/esm2015/lib/services/utils/media-connector.service.js +1 -1
  314. package/esm2015/lib/services/utils/quill.service.js +1 -1
  315. package/esm2015/lib/services/utils/structure-config.service.js +1 -1
  316. package/esm2015/lib/services/utils/translate-block.service.js +1 -1
  317. package/esm2015/lib/services/utils/vimeo.service.js +1 -1
  318. package/esm2015/lib/services/utils/youtube.service.js +1 -1
  319. package/esm2015/lib/services/wizi-block.service.js +1 -1
  320. package/esm2015/lib/shared/animations/list/animate-list-from-left.animation.js +1 -1
  321. package/esm2015/lib/shared/animations/list/animate-list-from-right.animation.js +1 -1
  322. package/esm2015/lib/shared/components/editorjs/editorjs.component.js +5 -6
  323. package/esm2015/lib/shared/components/editorjs/tools/inline/bold-tool.component.js +1 -1
  324. package/esm2015/lib/shared/components/editorjs/tools/inline/capitalize-tool.component.js +1 -1
  325. package/esm2015/lib/shared/components/editorjs/tools/inline/italic-tool.component.js +1 -1
  326. package/esm2015/lib/shared/components/editorjs/tools/inline/link-tool.component.js +11 -7
  327. package/esm2015/lib/shared/components/editorjs/tools/inline/strike-tool.component.js +1 -1
  328. package/esm2015/lib/shared/components/editorjs/tools/inline/subscript-tool.component.js +1 -1
  329. package/esm2015/lib/shared/components/editorjs/tools/inline/superscript-tool.component.js +1 -1
  330. package/esm2015/lib/shared/components/editorjs/tools/inline/text-background-color-tool.component.js +3 -4
  331. package/esm2015/lib/shared/components/editorjs/tools/inline/text-color-tool.component.js +2 -3
  332. package/esm2015/lib/shared/components/editorjs/tools/inline/text-size-tool.component.js +3 -4
  333. package/esm2015/lib/shared/components/editorjs/tools/inline/tool-type/color-tool.component.js +6 -1
  334. package/esm2015/lib/shared/components/editorjs/tools/inline/tool-type/inline-style-tool.component.js +1 -1
  335. package/esm2015/lib/shared/components/editorjs/tools/inline/tool-type/text-tool.component.js +6 -1
  336. package/esm2015/lib/shared/components/editorjs/tools/inline/underline-tool.component.js +1 -1
  337. package/esm2015/lib/shared/components/editorjs/tools/paragraph/code-edit-tool.component.js +1 -1
  338. package/esm2015/lib/shared/components/editorjs/tools/paragraph/indent-tool.component.js +2 -2
  339. package/esm2015/lib/shared/components/editorjs/tools/paragraph/ordered-list-tool.component.js +1 -1
  340. package/esm2015/lib/shared/components/editorjs/tools/paragraph/outdent-tool.component.js +2 -2
  341. package/esm2015/lib/shared/components/editorjs/tools/paragraph/quote-tool.component.js +1 -1
  342. package/esm2015/lib/shared/components/editorjs/tools/paragraph/redo-tool.component.js +1 -1
  343. package/esm2015/lib/shared/components/editorjs/tools/paragraph/text-align-tool.component.js +1 -1
  344. package/esm2015/lib/shared/components/editorjs/tools/paragraph/text-type-tool.component.js +2 -3
  345. package/esm2015/lib/shared/components/editorjs/tools/paragraph/tool-type/paragraph-style-tool.component.js +1 -1
  346. package/esm2015/lib/shared/components/editorjs/tools/paragraph/tool-type/text-edition.component.js +3 -4
  347. package/esm2015/lib/shared/components/editorjs/tools/paragraph/tool-type/text-tool.component.js +6 -1
  348. package/esm2015/lib/shared/components/editorjs/tools/paragraph/undo-tool.component.js +1 -1
  349. package/esm2015/lib/shared/components/editorjs/tools/paragraph/unordered-list-tool.component.js +1 -1
  350. package/esm2015/lib/shared/components/editorjs/tools/utils/colors.component.js +1 -1
  351. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-conversion.service.js +9 -8
  352. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-tool.component.js +9 -1
  353. package/esm2015/lib/shared/components/editorjs/tools/utils/i18n/en-i18n.component.js +1 -1
  354. package/esm2015/lib/shared/components/editorjs/tools/utils/i18n/fr-i18n.component.js +1 -1
  355. package/esm2015/lib/shared/components/editorjs/tools/utils/texts.component.js +8 -8
  356. package/esm2015/lib/shared/components/faq/faq.component.js +2 -2
  357. package/esm2015/lib/shared/components/loader/loader.component.js +1 -1
  358. package/esm2015/lib/shared/components/quill/quill.component.js +1 -1
  359. package/esm2015/lib/shared/components/shared-components.module.js +1 -1
  360. package/esm2015/lib/shared/components/small-loader/small-loader.component.js +1 -1
  361. package/esm2015/lib/shared/components/star/star.component.js +1 -1
  362. package/esm2015/lib/shared/components/structure-amplify-search-category/structure-amplify-search-category.component.js +1 -1
  363. package/esm2015/lib/shared/components/structure-amplify-search-product/structure-amplify-search-product.component.js +1 -1
  364. package/esm2015/lib/shared/components/structure-config/structure-config.component.js +1 -1
  365. package/esm2015/lib/shared/components/structure-config-checkbox/structure-config-checkbox.component.js +1 -1
  366. package/esm2015/lib/shared/components/structure-config-extend-input/structure-config-extended-input.component.js +1 -1
  367. package/esm2015/lib/shared/components/structure-config-font/structure-config-font.component.js +1 -1
  368. package/esm2015/lib/shared/components/structure-config-input/structure-config-input.component.js +1 -1
  369. package/esm2015/lib/shared/components/structure-config-payment/structure-config-payment.component.js +1 -1
  370. package/esm2015/lib/shared/components/structure-search-product/structure-search-product.component.js +1 -1
  371. package/esm2015/lib/shared/components/structure-select/structure-select.component.js +1 -1
  372. package/esm2015/lib/shared/components/structure-tools/structure-tools.component.js +1 -1
  373. package/esm2015/lib/shared/directives/auto-focus/auto-focus.directive.js +1 -1
  374. package/esm2015/lib/shared/directives/auto-hide/auto-hide.directive.js +1 -1
  375. package/esm2015/lib/shared/directives/get-size-image/get-size-image.directive.js +1 -1
  376. package/esm2015/lib/shared/directives/holdable/holdable.directive.js +1 -1
  377. package/esm2015/lib/shared/directives/pictures-template/pictures-template.directive.js +1 -1
  378. package/esm2015/lib/shared/directives/shared-directives.module.js +1 -1
  379. package/esm2015/lib/shared/directives/show-delete-button/show-delete-button.directive.js +1 -1
  380. package/esm2015/lib/shared/pipes/add-zero-for-timer/add-zero-for-timer.pipe.js +1 -1
  381. package/esm2015/lib/shared/pipes/answer-type/answer-type.pipe.js +1 -1
  382. package/esm2015/lib/shared/pipes/array-number/array-number.pipe.js +1 -1
  383. package/esm2015/lib/shared/pipes/check-payment-value/check-payment-value.pipe.js +1 -1
  384. package/esm2015/lib/shared/pipes/even-odd/even-odd.pipe.js +1 -1
  385. package/esm2015/lib/shared/pipes/img-path/img-path.pipe.js +1 -1
  386. package/esm2015/lib/shared/pipes/safe-style/safe-style.pipe.js +1 -1
  387. package/esm2015/lib/shared/pipes/safe-url/safe-url.pipe.js +1 -1
  388. package/esm2015/lib/shared/pipes/shared-pipes.module.js +1 -1
  389. package/esm2015/lib/shared/pipes/strip-tags/strip-tags.pipe.js +1 -1
  390. package/esm2015/lib/shared/pipes/tiny-color/tiny-color.pipe.js +1 -1
  391. package/esm2015/lib/shared/shared.module.js +1 -1
  392. package/esm2015/lib/structures/amplify-product/zoom/amplify-product-zoom.component.js +1 -1
  393. package/esm2015/lib/structures/amplify-product/zoom-more/amplify-product-zoom-more.component.js +1 -1
  394. package/esm2015/lib/structures/amplify-product/zoom-selected/amplify-product-zoom-selected.component.js +1 -1
  395. package/esm2015/lib/structures/amplify-product/zoom-triple-column/amplify-product-zoom-triple-column.component.js +1 -1
  396. package/esm2015/lib/structures/amplify-products-list/classic/amplify-products-list-classic.component.js +1 -1
  397. package/esm2015/lib/structures/amplify-products-list/selected/amplify-products-list-selected.component.js +1 -1
  398. package/esm2015/lib/structures/amplify-products-list/simple/amplify-products-list-simple.component.js +1 -1
  399. package/esm2015/lib/structures/code/code-html/code-html.component.js +1 -1
  400. package/esm2015/lib/structures/code/code-javascript/code-javascript.component.js +1 -1
  401. package/esm2015/lib/structures/code/code-stylesheet/code-stylesheet.component.js +1 -1
  402. package/esm2015/lib/structures/faq/accordion/faq-accordion.component.js +1 -1
  403. package/esm2015/lib/structures/faq/frame/faq-frame.component.js +1 -1
  404. package/esm2015/lib/structures/faq/list-icon/faq-list-icon.component.js +1 -1
  405. package/esm2015/lib/structures/faq/simple/faq-simple.component.js +1 -1
  406. package/esm2015/lib/structures/faq/simple-background/faq-simple-background.component.js +1 -1
  407. package/esm2015/lib/structures/forms/background/forms-background.component.js +1 -1
  408. package/esm2015/lib/structures/forms/imageleft/forms-imageleft.component.js +1 -1
  409. package/esm2015/lib/structures/forms/imageright/forms-imageright.component.js +1 -1
  410. package/esm2015/lib/structures/forms/simple/forms-simple.component.js +1 -1
  411. package/esm2015/lib/structures/images/banner/images-banner.component.js +1 -1
  412. package/esm2015/lib/structures/images/big-and-double/images-big-and-double.component.js +1 -1
  413. package/esm2015/lib/structures/images/bigs-and-double-middle/images-bigs-and-double-middle.component.js +1 -1
  414. package/esm2015/lib/structures/images/double/images-double.component.js +1 -1
  415. package/esm2015/lib/structures/images/four-images-title/four-images-title.component.js +1 -1
  416. package/esm2015/lib/structures/images/quadruple/images-quadruple.component.js +1 -1
  417. package/esm2015/lib/structures/images/quadruple-left-one-right/images-quadruple-left-one-right.component.js +1 -1
  418. package/esm2015/lib/structures/images/simple/images-simple.component.js +1 -1
  419. package/esm2015/lib/structures/images/triple/images-triple.component.js +1 -1
  420. package/esm2015/lib/structures/images/two-images-title-text/two-images-title-text.component.js +1 -1
  421. package/esm2015/lib/structures/images-texts/big-left-text-right/images-texts-big-left-text-right.component.js +1 -1
  422. package/esm2015/lib/structures/images-texts/big-right-text-left/images-texts-big-right-text-left.component.js +1 -1
  423. package/esm2015/lib/structures/images-texts/left-text-right/images-texts-left-text-right.component.js +1 -1
  424. package/esm2015/lib/structures/images-texts/one-text-one/images-texts-one-text-one.component.js +1 -1
  425. package/esm2015/lib/structures/images-texts/right-text-left/images-texts-right-text-left.component.js +1 -1
  426. package/esm2015/lib/structures/images-texts/small-left-text-right/images-texts-small-left-text-right.component.js +1 -1
  427. package/esm2015/lib/structures/images-texts/small-right-text-left/images-texts-small-right-text-left.component.js +1 -1
  428. package/esm2015/lib/structures/images-texts/text-one-text/images-texts-text-one-text.component.js +1 -1
  429. package/esm2015/lib/structures/launch-videos/button/launch-videos-button.component.js +1 -1
  430. package/esm2015/lib/structures/launch-videos/buttontxt/launch-videos-buttontxt.component.js +1 -1
  431. package/esm2015/lib/structures/loader-component.module.js +1 -1
  432. package/esm2015/lib/structures/map/background-form-left/map-background-form-left.component.js +1 -1
  433. package/esm2015/lib/structures/map/background-form-right/map-background-form-right.component.js +1 -1
  434. package/esm2015/lib/structures/map/fullpage/map-fullpage.component.js +1 -1
  435. package/esm2015/lib/structures/map/left-text/map-left-text.component.js +1 -1
  436. package/esm2015/lib/structures/map/right-text/map-right-text.component.js +1 -1
  437. package/esm2015/lib/structures/map/text-form/map-text-form.component.js +1 -1
  438. package/esm2015/lib/structures/newsletter/aligned-center-background/newsletter-aligned-center-background.component.js +1 -1
  439. package/esm2015/lib/structures/newsletter/aligned-center-image/newsletter-aligned-center-image.component.js +1 -1
  440. package/esm2015/lib/structures/newsletter/center-image/newsletter-center-image.component.js +1 -1
  441. package/esm2015/lib/structures/onboarding/onboarding/forms-onboarding.component.js +1 -1
  442. package/esm2015/lib/structures/product/zoom/product-zoom.component.js +1 -1
  443. package/esm2015/lib/structures/product/zoom-complete/product-zoom-complete.component.js +1 -1
  444. package/esm2015/lib/structures/product/zoom-complete-background/product-zoom-complete-background.component.js +1 -1
  445. package/esm2015/lib/structures/product/zoom-complete-slider/product-zoom-complete-slider.component.js +1 -1
  446. package/esm2015/lib/structures/product/zoom-more/product-zoom-more.component.js +1 -1
  447. package/esm2015/lib/structures/product/zoom-selected/product-zoom-selected.component.js +1 -1
  448. package/esm2015/lib/structures/product/zoom-simple/product-zoom-simple.component.js +1 -1
  449. package/esm2015/lib/structures/product/zoom-triple-column/product-zoom-triple-column.component.js +1 -1
  450. package/esm2015/lib/structures/products-list/classic/products-list-classic.component.js +1 -1
  451. package/esm2015/lib/structures/products-list/selected/products-list-selected.component.js +1 -1
  452. package/esm2015/lib/structures/products-list/simple/products-list-simple.component.js +1 -1
  453. package/esm2015/lib/structures/quotes/author/quotes-author.component.js +1 -1
  454. package/esm2015/lib/structures/quotes/simple/quotes-simple.component.js +1 -1
  455. package/esm2015/lib/structures/quotes/simple-background/quotes-simple-background.component.js +1 -1
  456. package/esm2015/lib/structures/rassurances/quadruple-aligned/rassurances-quadruple-aligned.component.js +1 -1
  457. package/esm2015/lib/structures/rassurances/quadruple-background/rassurances-quadruple-background.component.js +1 -1
  458. package/esm2015/lib/structures/rassurances/triple-background/rassurances-triple-background.component.js +1 -1
  459. package/esm2015/lib/structures/reviews/simple/reviews-simple.component.js +1 -1
  460. package/esm2015/lib/structures/reviews/waterfall/reviews-waterfall.component.js +1 -1
  461. package/esm2015/lib/structures/separator/separator-simple/separator-simple.component.js +1 -1
  462. package/esm2015/lib/structures/sliders/double-imageright/slider-double-imageright.component.js +1 -1
  463. package/esm2015/lib/structures/sliders/fullpage/slider-fullpage.component.js +1 -1
  464. package/esm2015/lib/structures/sliders/imageright/slider-imageright.component.js +1 -1
  465. package/esm2015/lib/structures/sliders/leftnav/slider-leftnav.component.js +1 -1
  466. package/esm2015/lib/structures/sliders/with-banner/slider-with-banner.component.js +1 -1
  467. package/esm2015/lib/structures/socials/like/socials-like.component.js +1 -1
  468. package/esm2015/lib/structures/socials/network/socials-network.component.js +1 -1
  469. package/esm2015/lib/structures/socials/page-complex/socials-page-complex.component.js +1 -1
  470. package/esm2015/lib/structures/socials/page-simple/socials-page-simple.component.js +1 -1
  471. package/esm2015/lib/structures/structures.component.js +1 -1
  472. package/esm2015/lib/structures/structures.module.js +1 -1
  473. package/esm2015/lib/structures/text-backgrounds/four-rows-icon-text/text-backgrounds-four-rows-icon-text.component.js +1 -1
  474. package/esm2015/lib/structures/text-backgrounds/link/text-backgrounds-link.component.js +1 -1
  475. package/esm2015/lib/structures/text-backgrounds/simple/text-backgrounds-simple.component.js +1 -1
  476. package/esm2015/lib/structures/text-backgrounds/three-rows-icon-text/text-backgrounds-three-rows-icon-text.component.js +1 -1
  477. package/esm2015/lib/structures/text-backgrounds/two-rows-icon-text/text-backgrounds-two-rows-icon-text.component.js +1 -1
  478. package/esm2015/lib/structures/text-backgrounds/with-banner/text-backgrounds-with-banner.component.js +1 -1
  479. package/esm2015/lib/structures/text-backgrounds/with-txt/text-backgrounds-with-txt.component.js +1 -1
  480. package/esm2015/lib/structures/texts/double/texts-double.component.js +1 -1
  481. package/esm2015/lib/structures/texts/double-background/texts-double-background.component.js +1 -1
  482. package/esm2015/lib/structures/texts/one/texts-one.component.js +1 -1
  483. package/esm2015/lib/structures/texts/one-background/texts-one-background.component.js +1 -1
  484. package/esm2015/lib/structures/texts/quadruple/texts-quadruple.component.js +1 -1
  485. package/esm2015/lib/structures/texts/quadruple-background/texts-quadruple-background.component.js +1 -1
  486. package/esm2015/lib/structures/texts/quadruple-numbers/texts-quadruple-numbers.component.js +1 -1
  487. package/esm2015/lib/structures/texts/triple/texts-triple.component.js +1 -1
  488. package/esm2015/lib/structures/texts/triple-background/texts-triple-background.component.js +1 -1
  489. package/esm2015/lib/structures/timer/airport/timer-airport.component.js +1 -1
  490. package/esm2015/lib/structures/timer/background/timer-background.component.js +1 -1
  491. package/esm2015/lib/structures/timer/clock/timer-clock.component.js +1 -1
  492. package/esm2015/lib/structures/timer/multiple-img/timer-multiple-img.component.js +1 -1
  493. package/esm2015/lib/structures/timer/simple/timer-simple.component.js +1 -1
  494. package/esm2015/lib/structures/videos/simple/videos-simple.component.js +1 -1
  495. package/esm2015/lib/structures/videos/txt/videos-txt.component.js +1 -1
  496. package/esm2015/lib/structures/videos/txt-content/videos-txt-content.component.js +1 -1
  497. package/esm2015/lib/structures/videos/txt-left/videos-txt-left.component.js +1 -1
  498. package/esm2015/lib/structures/witness/about-block/about-block.component.js +1 -1
  499. package/esm2015/lib/structures/witness/background-double/witness-background-double.component.js +1 -1
  500. package/esm2015/lib/structures/witness/background-one/witness-background-one.component.js +1 -1
  501. package/esm2015/lib/structures/witness/quadruple/witness-quadruple.component.js +1 -1
  502. package/esm2015/lib/structures/witness/triple/witness-triple.component.js +1 -1
  503. package/esm2015/lib/structures/witness/twice/witness-twice.component.js +1 -1
  504. package/esm2015/lib/wizi-block.component.js +1 -1
  505. package/esm2015/lib/wizi-block.module.js +1 -1
  506. package/esm2015/public_api.js +1 -1
  507. package/esm2015/wizishop-wizi-block.js +227 -228
  508. package/fesm2015/wizishop-wizi-block.js +232 -222
  509. package/fesm2015/wizishop-wizi-block.js.map +1 -1
  510. package/lib/shared/components/editorjs/editorjs.component.d.ts +1 -3
  511. package/lib/shared/components/editorjs/tools/utils/editorjs-conversion.service.d.ts +1 -0
  512. package/package.json +1 -1
  513. package/wizi-block.scss +295 -253
  514. package/wizishop-wizi-block.d.ts +226 -227
  515. package/wizishop-wizi-block.metadata.json +1 -1
  516. package/esm2015/lib/shared/components/editorjs/tools/utils/editorjs-tool-translation.service.js +0 -25
  517. package/lib/shared/components/editorjs/tools/utils/editorjs-tool-translation.service.d.ts +0 -8
@@ -34,6 +34,11 @@ export class ColorTool extends InlineStyleTool {
34
34
  colorSelection.style.left =
35
35
  (this.nodes.button.offsetLeft +
36
36
  (this.nodes.button.offsetWidth / 2 - colorSelection.offsetWidth / 2)).toString() + 'px';
37
+ colorSelection.style.top =
38
+ '-' +
39
+ (this.parentEditor.querySelector('.ce-inline-toolbar__buttons').offsetHeight -
40
+ (this.nodes.button.offsetTop + this.nodes.button.offsetHeight)).toString() +
41
+ 'px';
37
42
  let viewportOffset = colorSelection.getBoundingClientRect();
38
43
  let totalWidth = colorSelection.offsetWidth +
39
44
  colorSelection.querySelector('.' + this.colorSelectionCss['colorPickerContainer']).offsetWidth;
@@ -353,4 +358,4 @@ export class ColorTool extends InlineStyleTool {
353
358
  return hexadecimal.length == 1 ? '0' + hexadecimal : hexadecimal;
354
359
  }
355
360
  }
356
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItdG9vbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvcGF1bGluZS9Eb2N1bWVudHMvd29ya3NwYWNlL3dpemktYmxvY2svcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkL2NvbXBvbmVudHMvZWRpdG9yanMvdG9vbHMvaW5saW5lL3Rvb2wtdHlwZS9jb2xvci10b29sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRTlCLElBQUssU0FJSjtBQUpELFdBQUssU0FBUztJQUNWLHVDQUFHLENBQUE7SUFDSCx1Q0FBRyxDQUFBO0lBQ0gsdUNBQUcsQ0FBQTtBQUNQLENBQUMsRUFKSSxTQUFTLEtBQVQsU0FBUyxRQUliO0FBRUQsTUFBTSxPQUFnQixTQUFVLFNBQVEsZUFBZTtJQUF2RDs7UUFHSSx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFJdEMsV0FBTSxHQUF5QixtQkFBbUIsQ0FBQztRQUVuRCxtQkFBYyxHQUFvQixJQUFJLENBQUM7UUFNdkMsc0JBQWlCLEdBQVc7WUFDeEIsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxTQUFTLEVBQUUscUNBQXFDO1lBQ2hELG9CQUFvQixFQUFFLGtEQUFrRDtZQUN4RSxHQUFHLEVBQUUsK0JBQStCO1lBQ3BDLElBQUksRUFBRSxxQ0FBcUM7U0FDOUMsQ0FBQztRQUVGLHNCQUFpQixHQUEyQixJQUFJLENBQUM7SUFxV3JELENBQUM7SUFqV0csZUFBZTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FD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QUcsRUFBRSxLQUFLLEVBQUUsSUFBSTtRQUM3QixPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQUs7UUFDcEIsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxPQUFPLFdBQVcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDckUsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVGQVVMVF9DT0xPUl9BUlJBWSwgR0xPQkFMX0tFWV9DT0RFUyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbG9ycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5saW5lU3R5bGVUb29sIH0gZnJvbSAnLi9pbmxpbmUtc3R5bGUtdG9vbC5jb21wb25lbnQnO1xuaW1wb3J0IGlybyBmcm9tICdAamFhbWVzL2lybyc7XG5cbmVudW0gQ29sb3JUeXBlIHtcbiAgICBIRVgsXG4gICAgUkdCLFxuICAgIEhTTCxcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbG9yVG9vbCBleHRlbmRzIElubGluZVN0eWxlVG9vbCB7XG4gICAgbm9kZXM6IHsgYnV0dG9uOiBIVE1MQnV0dG9uRWxlbWVudCB9O1xuXG4gICAgaXNDb2xvclNlbGVjdGlvbk9wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbG9yU2VsZWN0aW9uOiBhbnk7XG5cbiAgICBjb2xvcnM6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gREVGQVVMVF9DT0xPUl9BUlJBWTtcblxuICAgIGNvbG9ySW5kaWNhdG9yOiBIVE1MU3BhbkVsZW1lbnQgPSBudWxsO1xuXG4gICAgQ1NTOiBhbnk7XG5cbiAgICBhcGk6IGFueTtcblxuICAgIGNvbG9yU2VsZWN0aW9uQ3NzOiBPYmplY3QgPSB7XG4gICAgICAgIHdyYXBwZXI6ICdjZS1pbmxpbmUtYWN0aW9ucy0tY29sb3InLFxuICAgICAgICBjb250YWluZXI6ICdjZS1pbmxpbmUtYWN0aW9ucy0tY29sb3JfX2NvbnRhaW5lcicsXG4gICAgICAgIGNvbG9yUGlja2VyQ29udGFpbmVyOiAnY2UtaW5saW5lLWFjdGlvbnMtLWNvbG9yX19jb250YWluZXJfX2NvbG9yUGlja2VyJyxcbiAgICAgICAgcm93OiAnY2UtaW5saW5lLWFjdGlvbnMtLWNvbG9yX19yb3cnLFxuICAgICAgICBpdGVtOiAnY2UtaW5saW5lLWFjdGlvbnMtLWNvbG9yX19yb3dfX2l0ZW0nLFxuICAgIH07XG5cbiAgICBjdXN0b21Db2xvclBpY2tlcjogaXJvLkNvbG9yUGlja2VyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBhYnN0cmFjdCBhcHBseUNvbG9yKGNvbG9yOiBzdHJpbmcsIGlucHV0VG9Gb2N1czogSFRNTElucHV0RWxlbWVudCk6IFByb21pc2U8dm9pZD47XG5cbiAgICBvcGVuQ29sb3JQaWNrZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yID0gdGhpcy5maW5kUGFyZW50RWRpdG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvbG9yU2VsZWN0aW9uID0gdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLkNTUy5jb2xvclNlbGVjdGlvbk1vZGlmaWVyKVswXTtcbiAgICAgICAgbGV0IGN1cnJlbnRDb2xvciA9IHRoaXMuZ2V0Q3VycmVudENvbG9yQXBwbGllZCh0aGlzLmdldFNlbGVjdGlvbigpLmFuY2hvck5vZGUucGFyZW50RWxlbWVudCk7XG4gICAgICAgIHRoaXMuc2F2ZVVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgaWYgKGNvbG9yU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoY29sb3JTZWxlY3Rpb24uY2xhc3NMaXN0LmNvbnRhaW5zKCdoaWRkZW4nKSkge1xuICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb24pLnN0eWxlLmxlZnQgPVxuICAgICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGVzLmJ1dHRvbi5vZmZzZXRMZWZ0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm5vZGVzLmJ1dHRvbi5vZmZzZXRXaWR0aCAvIDIgLSAoPEhUTUxFbGVtZW50PmNvbG9yU2VsZWN0aW9uKS5vZmZzZXRXaWR0aCAvIDIpXG4gICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoKSArICdweCc7XG4gICAgICAgICAgICAgICAgbGV0IHZpZXdwb3J0T2Zmc2V0ID0gY29sb3JTZWxlY3Rpb24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICAgICAgbGV0IHRvdGFsV2lkdGggPVxuICAgICAgICAgICAgICAgICAgICAoPEhUTUxFbGVtZW50PmNvbG9yU2VsZWN0aW9uKS5vZmZzZXRXaWR0aCArXG4gICAgICAgICAgICAgICAgICAgICg8SFRNTEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb24ucXVlcnlTZWxlY3RvcignLicgKyB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydjb2xvclBpY2tlckNvbnRhaW5lciddKSkub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICAgICAgaWYgKHZpZXdwb3J0T2Zmc2V0LmxlZnQgKyB0b3RhbFdpZHRoID4gZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjb2xvclNlbGVjdGlvbiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnbGVmdCcpKSAtXG4gICAgICAgICAgICAgICAgICAgICAgICAodmlld3BvcnRPZmZzZXQubGVmdCArIHRvdGFsV2lkdGggLSBkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5jb2xvclNlbGVjdGlvbikuc3R5bGUubGVmdCA9IGxlZnQudG9TdHJpbmcoKSArICdweCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tEZWZhdWx0Q29sb3JzKCk7XG4gICAgICAgICAgICAgICAgY29sb3JTZWxlY3Rpb24uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgbGV0IGNvbG9yUGlja2VyV3JhcHBlciA9IDxIVE1MRWxlbWVudD50aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcjJyArIHRoaXMuQ1NTLmNvbG9yUGlja2VySWQpO1xuICAgICAgICAgICAgICAgIGlmIChjb2xvclBpY2tlcldyYXBwZXIuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIgPSBpcm8uQ29sb3JQaWNrZXIoY29sb3JQaWNrZXJXcmFwcGVyLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTcwLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXREaXJlY3Rpb246ICdob3Jpem9udGFsJyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIub24oWydjb2xvcjppbml0J10sIChjb2xvcjogaXJvLkNvbG9yKSA9PiB0aGlzLmNoYW5nZUNvbG9yKGNvbG9yLCB0cnVlLCBjdXJyZW50Q29sb3IpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5vbihbJ2NvbG9yOmNoYW5nZSddLCAoY29sb3I6IGlyby5Db2xvcikgPT4gdGhpcy5jaGFuZ2VDb2xvcihjb2xvciwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgkZXZlbnQpID0+IHRoaXMuaXNDb2xvclNlbGVjdGlvbkZvY3VzZWRPdXQoJGV2ZW50KSk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNDb2xvclNlbGVjdGlvbk9wZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0sIDQwMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDb2xvclNlbGVjdGlvbk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb2xvclNlbGVjdGlvbi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEN1cnJlbnRDb2xvckFwcGxpZWQoZWxlbWVudDogRWxlbWVudCk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNsYXNzTmFtZSAmJiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnY2UtcGFyYWdyYXBoJykgJiYgZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHRoaXMuc3R5bGUucHJvcGVydHkpO1xuICAgIH1cblxuICAgIGlzQ29sb3JTZWxlY3Rpb25Gb2N1c2VkT3V0KCRldmVudCkge1xuICAgICAgICBsZXQgY29sb3JTZWxlY3Rpb24gPSB0aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuQ1NTLmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIpWzBdO1xuICAgICAgICBpZiAodGhpcy5pc0NvbG9yU2VsZWN0aW9uT3Blbikge1xuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSAkZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnModGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29udGFpbmVyJ10pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCRldmVudCkgPT4gdGhpcy5pc0NvbG9yU2VsZWN0aW9uRm9jdXNlZE91dCgkZXZlbnQpKTtcbiAgICAgICAgICAgIHRoaXMuaXNDb2xvclNlbGVjdGlvbk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbG9yU2VsZWN0aW9uLmNsYXNzTGlzdC5hZGQoJ2hpZGRlbicpO1xuICAgICAgICAgICAgdGhpcy5hcGkudG9vbGJhci5jbG9zZSgpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjaGVja0RlZmF1bHRDb2xvcnMoKSB7XG4gICAgICAgIGxldCBjdXJyZW50Q29sb3IgPSB0aGlzLmdldEN1cnJlbnRDb2xvckFwcGxpZWQodGhpcy5nZXRTZWxlY3Rpb24oKS5hbmNob3JOb2RlLnBhcmVudEVsZW1lbnQpO1xuICAgICAgICB0aGlzLmNvbG9ycy5mb3JFYWNoKChjb2xvclJvdywgcm93SW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbG9yUm93LmZvckVhY2goKGNvbG9yLCBjb2x1bW5JbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb2xvciA9PT0gY3VycmVudENvbG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLkNTUy5jb2xvclNlbGVjdGlvbk1vZGlmaWVyKVswXVxuICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5jb2xvclNlbGVjdGlvbkNzc1sncm93J10pXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93SW5kZXhdLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5jb2xvclNlbGVjdGlvbkNzc1snaXRlbSddKVxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbkluZGV4XS5jbGFzc0xpc3QuYWRkKHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2l0ZW0nXSArICctLWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLkNTUy5jb2xvclNlbGVjdGlvbk1vZGlmaWVyKVswXVxuICAgICAgICAgICAgICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5jb2xvclNlbGVjdGlvbkNzc1sncm93J10pXG4gICAgICAgICAgICAgICAgICAgICAgICBbcm93SW5kZXhdLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5jb2xvclNlbGVjdGlvbkNzc1snaXRlbSddKVxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbkluZGV4XS5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2l0ZW0nXSArICctLWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuQ3VzdG9tQ29sb3JQaWNrZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGxldCBjdXN0b21Db2xvclBpY2tlciA9ICg8SFRNTERpdkVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIHRoaXMuY29sb3JTZWxlY3Rpb25Dc3NbJ2NvbG9yUGlja2VyQ29udGFpbmVyJ10pWzBdO1xuICAgICAgICBpZiAoY3VzdG9tQ29sb3JQaWNrZXIpIHtcbiAgICAgICAgICAgIGlmIChjdXN0b21Db2xvclBpY2tlci5jbGFzc0xpc3QuY29udGFpbnModGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29sb3JQaWNrZXJDb250YWluZXInXSArICctLWFjdGl2ZScpKSB7XG4gICAgICAgICAgICAgICAgY3VzdG9tQ29sb3JQaWNrZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydjb2xvclBpY2tlckNvbnRhaW5lciddICsgJy0tYWN0aXZlJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1c3RvbUNvbG9yUGlja2VyLmNsYXNzTGlzdC5hZGQodGhpcy5jb2xvclNlbGVjdGlvbkNzc1snY29sb3JQaWNrZXJDb250YWluZXInXSArICctLWFjdGl2ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgoPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldCkudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnZGl2Jykge1xuICAgICAgICAgICAgdGhpcy5yZXNldFVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZUNvbG9yKGNvbG9yOiBpcm8uQ29sb3IsIGlzSW5pdDogYm9vbGVhbiwgaW5pdENvbG9yOiBzdHJpbmcgPSAnJykge1xuICAgICAgICBsZXQgY29sb3JTZWxlY3Rpb25Nb2RpZmllciA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcik7XG4gICAgICAgIGxldCBoZXhJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvcignLmhleCBpbnB1dCcpO1xuICAgICAgICBsZXQgcmdiSW5wdXQxID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcucmdiIGlucHV0JylbMF07XG4gICAgICAgIGxldCByZ2JJbnB1dDIgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZ2IgaW5wdXQnKVsxXTtcbiAgICAgICAgbGV0IHJnYklucHV0MyA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLnJnYiBpbnB1dCcpWzJdO1xuICAgICAgICAvKlxuICAgICAgICBsZXQgaHNsSW5wdXQxID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yQWxsKCcuaHNsIGlucHV0JylbMF07XG4gICAgICAgIGxldCBoc2xJbnB1dDIgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5oc2wgaW5wdXQnKVsxXTtcbiAgICAgICAgbGV0IGhzbElucHV0MyA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLmhzbCBpbnB1dCcpWzJdO1xuICAgICAgICAqL1xuICAgICAgICBpZiAoaXNJbml0KSB7XG4gICAgICAgICAgICBpZiAoaW5pdENvbG9yLmluZGV4T2YoJ3JnYmEnKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgaW5pdENvbG9yID0gaW5pdENvbG9yLnJlcGxhY2UoJ3JnYmEoJywgJycpLnJlcGxhY2UoJyknLCAnJykucmVwbGFjZSgnICcsICcnKTtcbiAgICAgICAgICAgICAgICBsZXQgcmdiSW5pdENvbG9yID0gaW5pdENvbG9yLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5yZWQgPSBwYXJzZUludChyZ2JJbml0Q29sb3JbMF0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuZ3JlZW4gPSBwYXJzZUludChyZ2JJbml0Q29sb3JbMV0pO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuYmx1ZSA9IHBhcnNlSW50KHJnYkluaXRDb2xvclsyXSk7XG4gICAgICAgICAgICAgICAgaGV4SW5wdXQudmFsdWUgPSB0aGlzLnJnYlRvSGV4KHBhcnNlSW50KHJnYkluaXRDb2xvclswXSksIHBhcnNlSW50KHJnYkluaXRDb2xvclsxXSksIHBhcnNlSW50KHJnYkluaXRDb2xvclsyXSkpO1xuICAgICAgICAgICAgICAgIHJnYklucHV0MS52YWx1ZSA9IHJnYkluaXRDb2xvclswXTtcbiAgICAgICAgICAgICAgICByZ2JJbnB1dDIudmFsdWUgPSByZ2JJbml0Q29sb3JbMV07XG4gICAgICAgICAgICAgICAgcmdiSW5wdXQzLnZhbHVlID0gcmdiSW5pdENvbG9yWzJdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpbml0Q29sb3IgPSBpbml0Q29sb3IucmVwbGFjZSgncmdiKCcsICcnKS5yZXBsYWNlKCcpJywgJycpLnJlcGxhY2UoJyAnLCAnJyk7XG4gICAgICAgICAgICAgICAgbGV0IHJnYkluaXRDb2xvciA9IGluaXRDb2xvci5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IucmVkID0gcGFyc2VJbnQocmdiSW5pdENvbG9yWzBdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmdyZWVuID0gcGFyc2VJbnQocmdiSW5pdENvbG9yWzFdKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmJsdWUgPSBwYXJzZUludChyZ2JJbml0Q29sb3JbMl0pO1xuICAgICAgICAgICAgICAgIGhleElucHV0LnZhbHVlID0gdGhpcy5yZ2JUb0hleChwYXJzZUludChyZ2JJbml0Q29sb3JbMF0pLCBwYXJzZUludChyZ2JJbml0Q29sb3JbMV0pLCBwYXJzZUludChyZ2JJbml0Q29sb3JbMl0pKTtcbiAgICAgICAgICAgICAgICByZ2JJbnB1dDEudmFsdWUgPSByZ2JJbml0Q29sb3JbMF07XG4gICAgICAgICAgICAgICAgcmdiSW5wdXQyLnZhbHVlID0gcmdiSW5pdENvbG9yWzFdO1xuICAgICAgICAgICAgICAgIHJnYklucHV0My52YWx1ZSA9IHJnYkluaXRDb2xvclsyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhleElucHV0LnZhbHVlID0gY29sb3IuaGV4U3RyaW5nO1xuICAgICAgICAgICAgcmdiSW5wdXQxLnZhbHVlID0gY29sb3IucmdiLnIudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHJnYklucHV0Mi52YWx1ZSA9IGNvbG9yLnJnYi5nLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICByZ2JJbnB1dDMudmFsdWUgPSBjb2xvci5yZ2IuYi50b1N0cmluZygpO1xuICAgICAgICAgICAgdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLlJHQik7XG4gICAgICAgIH1cbiAgICAgICAgLypcbiAgICAgICAgaHNsSW5wdXQxLnZhbHVlID0gY29sb3IuaHNsLmgudG9TdHJpbmcoKTtcbiAgICAgICAgaHNsSW5wdXQyLnZhbHVlID0gY29sb3IuaHNsLnMgKyAnJSc7XG4gICAgICAgIGhzbElucHV0My52YWx1ZSA9IGNvbG9yLmhzbC5sICsgJyUnO1xuICAgICAgICAqL1xuICAgIH1cblxuICAgIGNoYW5nZUNvbG9ySW5wdXQoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGNvbG9yVHlwZTogQ29sb3JUeXBlKSB7XG4gICAgICAgIGlmIChjb2xvclR5cGUgPT09IENvbG9yVHlwZS5IRVgpIHtcbiAgICAgICAgICAgIGxldCBoZXhSZWdleCA9IC9bMC05QS1GYS1mI10vO1xuICAgICAgICAgICAgbGV0IGhleElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+KFxuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy4nICsgdGhpcy5DU1MuY29sb3JTZWxlY3Rpb25Nb2RpZmllcikucXVlcnlTZWxlY3RvcignLmhleCBpbnB1dCcpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKEdMT0JBTF9LRVlfQ09ERVMuaW5kZXhPZihldmVudC5jb2RlKSA+IC0xIHx8IGhleFJlZ2V4LnRlc3QoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgIGlmIChoZXhJbnB1dC52YWx1ZS5sZW5ndGggPiAwICYmIGV2ZW50LmtleSA9PT0gJyMnKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChoZXhJbnB1dC52YWx1ZS5sZW5ndGggPT09IDUgJiYgaGV4SW5wdXQudmFsdWVbMF0gIT09ICcjJyAmJiBoZXhSZWdleC50ZXN0KGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaGV4SW5wdXQudmFsdWUgPSAnIycgKyBoZXhJbnB1dC52YWx1ZSArIGV2ZW50LmtleTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjb2xvclR5cGUgPT09IENvbG9yVHlwZS5SR0IpIHtcbiAgICAgICAgICAgIGxldCByZ2JSZWdleCA9IC9bMC05XS87XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBHTE9CQUxfS0VZX0NPREVTLmluZGV4T2YoZXZlbnQuY29kZSkgPT09IC0xICYmXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkSW5wdXQudmFsdWUubGVuZ3RoID09PSAzIHx8IGV2ZW50LmtleS5sZW5ndGggIT09IDEgfHwgIXJnYlJlZ2V4LnRlc3QoZXZlbnQua2V5KSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFyc2VJbnQoc2VsZWN0ZWRJbnB1dC52YWx1ZSkgPiAyNTUpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZElucHV0LnZhbHVlID0gJzI1NSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbWF4SW5wdXRMZW5ndGggPSAzO1xuICAgICAgICAgICAgbGV0IGhzbFJlZ2V4ID0gL1swLTldLztcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+ZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgbGV0IHNlbGVjdGVkSW5wdXRQb3NpdGlvbiA9IEFycmF5LmZyb20oc2VsZWN0ZWRJbnB1dC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuKS5pbmRleE9mKHNlbGVjdGVkSW5wdXQpO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5wdXRQb3NpdGlvbiA+IDApIHtcbiAgICAgICAgICAgICAgICBoc2xSZWdleCA9IC9bMC05JV0vO1xuICAgICAgICAgICAgICAgIG1heElucHV0TGVuZ3RoID0gNDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBHTE9CQUxfS0VZX0NPREVTLmluZGV4T2YoZXZlbnQuY29kZSkgPT09IC0xICYmXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkSW5wdXQudmFsdWUubGVuZ3RoID09PSBtYXhJbnB1dExlbmd0aCB8fCBldmVudC5rZXkubGVuZ3RoICE9PSAxIHx8ICFoc2xSZWdleC50ZXN0KGV2ZW50LmtleSkpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkSW5wdXRQb3NpdGlvbiA9PT0gMCAmJiBwYXJzZUludChzZWxlY3RlZElucHV0LnZhbHVlKSA+IDM2MCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5wdXQudmFsdWUgPSAnMzYwJztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWRJbnB1dFBvc2l0aW9uID4gMCAmJiBwYXJzZUludChzZWxlY3RlZElucHV0LnZhbHVlLnJlcGxhY2UoJyUnLCAnJykpID4gMTAwKSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbnB1dC52YWx1ZSA9ICcxMDAnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tDb2xvcklucHV0KGNvbG9yVHlwZTogQ29sb3JUeXBlKSB7XG4gICAgICAgIGxldCBjb2xvclNlbGVjdGlvbk1vZGlmaWVyID0gdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvcignLicgKyB0aGlzLkNTUy5jb2xvclNlbGVjdGlvbk1vZGlmaWVyKTtcbiAgICAgICAgbGV0IGZvY3VzZWRJbnB1dCA9IG51bGw7XG4gICAgICAgIGlmIChjb2xvclR5cGUgPT09IENvbG9yVHlwZS5IRVgpIHtcbiAgICAgICAgICAgIGxldCBoZXhJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvcignLmhleCBpbnB1dCcpO1xuICAgICAgICAgICAgZm9jdXNlZElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yKCcuaGV4IGlucHV0OmZvY3VzJyk7XG4gICAgICAgICAgICBpZiAoaGV4SW5wdXQudmFsdWUubGVuZ3RoID09PSA3ICYmIGhleElucHV0LnZhbHVlWzBdID09PSAnIycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLmhleFN0cmluZyA9IGhleElucHV0LnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNvbG9yVHlwZSA9PT0gQ29sb3JUeXBlLlJHQikge1xuICAgICAgICAgICAgbGV0IHJnYklucHV0MSA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLnJnYiBpbnB1dCcpWzBdO1xuICAgICAgICAgICAgbGV0IHJnYklucHV0MiA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLnJnYiBpbnB1dCcpWzFdO1xuICAgICAgICAgICAgbGV0IHJnYklucHV0MyA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvckFsbCgnLnJnYiBpbnB1dCcpWzJdO1xuICAgICAgICAgICAgZm9jdXNlZElucHV0ID0gPEhUTUxJbnB1dEVsZW1lbnQ+Y29sb3JTZWxlY3Rpb25Nb2RpZmllci5xdWVyeVNlbGVjdG9yKCcucmdiIGlucHV0OmZvY3VzJyk7XG4gICAgICAgICAgICBpZiAocmdiSW5wdXQxLnZhbHVlLmxlbmd0aCA+IDAgJiYgcmdiSW5wdXQyLnZhbHVlLmxlbmd0aCA+IDAgJiYgcmdiSW5wdXQzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnJlZCA9IHBhcnNlSW50KHJnYklucHV0MS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5ncmVlbiA9IHBhcnNlSW50KHJnYklucHV0Mi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci5ibHVlID0gcGFyc2VJbnQocmdiSW5wdXQzLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBoc2xJbnB1dDEgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5oc2wgaW5wdXQnKVswXTtcbiAgICAgICAgICAgIGxldCBoc2xJbnB1dDIgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5oc2wgaW5wdXQnKVsxXTtcbiAgICAgICAgICAgIGxldCBoc2xJbnB1dDMgPSA8SFRNTElucHV0RWxlbWVudD5jb2xvclNlbGVjdGlvbk1vZGlmaWVyLnF1ZXJ5U2VsZWN0b3JBbGwoJy5oc2wgaW5wdXQnKVsyXTtcbiAgICAgICAgICAgIGZvY3VzZWRJbnB1dCA9IDxIVE1MSW5wdXRFbGVtZW50PmNvbG9yU2VsZWN0aW9uTW9kaWZpZXIucXVlcnlTZWxlY3RvcignLmhzbCBpbnB1dDpmb2N1cycpO1xuICAgICAgICAgICAgaWYgKGhzbElucHV0MS52YWx1ZS5sZW5ndGggPiAwICYmIGhzbElucHV0Mi52YWx1ZS5yZXBsYWNlKCclJywgJycpLmxlbmd0aCA+IDAgJiYgaHNsSW5wdXQzLnZhbHVlLnJlcGxhY2UoJyUnLCAnJykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IuaHVlID0gcGFyc2VJbnQoaHNsSW5wdXQxLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1c3RvbUNvbG9yUGlja2VyLmNvbG9yLnNhdHVyYXRpb24gPSBwYXJzZUludChoc2xJbnB1dDIudmFsdWUucmVwbGFjZSgnJScsICcnKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXN0b21Db2xvclBpY2tlci5jb2xvci52YWx1ZSA9IHBhcnNlSW50KGhzbElucHV0My52YWx1ZS5yZXBsYWNlKCclJywgJycpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgcmdiQ29sb3IgPVxuICAgICAgICAgICAgJ3JnYignICtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IucmdiLnIgK1xuICAgICAgICAgICAgJywnICtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IucmdiLmcgK1xuICAgICAgICAgICAgJywnICtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tQ29sb3JQaWNrZXIuY29sb3IucmdiLmIgK1xuICAgICAgICAgICAgJyknO1xuICAgICAgICB0aGlzLnJlc2V0VXNlclNlbGVjdGlvbigpO1xuICAgICAgICB0aGlzLmFwcGx5Q29sb3IocmdiQ29sb3IsIGZvY3VzZWRJbnB1dCk7XG4gICAgfVxuXG4gICAgY3JlYXRlQ3VzdG9tQ29sb3JQaWNrZXIoKSB7XG4gICAgICAgIGxldCBjdXN0b21Db2xvclBpY2tlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBjdXN0b21Db2xvclBpY2tlci5jbGFzc05hbWUgPSB0aGlzLmNvbG9yU2VsZWN0aW9uQ3NzWydjb2xvclBpY2tlckNvbnRhaW5lciddO1xuICAgICAgICBsZXQgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB3cmFwcGVyLmlkID0gdGhpcy5DU1MuY29sb3JQaWNrZXJJZDtcbiAgICAgICAgY3VzdG9tQ29sb3JQaWNrZXIuYXBwZW5kQ2hpbGQod3JhcHBlcik7XG5cbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBsZXQgc2VsZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7XG4gICAgICAgIHNlbGVjdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JUeXBlKGV2ZW50KSk7XG5cbiAgICAgICAgbGV0IGhleE9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpO1xuICAgICAgICBoZXhPcHRpb24udmFsdWUgPSAnaGV4JztcbiAgICAgICAgaGV4T3B0aW9uLmlubmVyVGV4dCA9ICdIRVgnO1xuICAgICAgICBsZXQgcmdiT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG4gICAgICAgIHJnYk9wdGlvbi52YWx1ZSA9ICdyZ2InO1xuICAgICAgICByZ2JPcHRpb24uaW5uZXJUZXh0ID0gJ1JHQic7XG4gICAgICAgIGxldCBoc2xPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcbiAgICAgICAgaHNsT3B0aW9uLnZhbHVlID0gJ2hzbCc7XG4gICAgICAgIGhzbE9wdGlvbi5pbm5lclRleHQgPSAnSFNMJztcblxuICAgICAgICBsZXQgaGV4Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGhleENvbnRhaW5lci5jbGFzc05hbWUgPSAnaGV4JztcbiAgICAgICAgbGV0IGhleElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICAgICAgaGV4SW5wdXQucGxhY2Vob2xkZXIgPSAnIzIzMjcyYic7XG4gICAgICAgIGhleENvbnRhaW5lci5hcHBlbmRDaGlsZChoZXhJbnB1dCk7XG4gICAgICAgIGhleElucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JJbnB1dChldmVudCwgQ29sb3JUeXBlLkhFWCkpO1xuICAgICAgICBoZXhJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5IRVgpKTtcblxuICAgICAgICBsZXQgcmdiQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIHJnYkNvbnRhaW5lci5jbGFzc05hbWUgPSAncmdiIGhpZGRlbic7XG4gICAgICAgIGxldCByZ2JJbnB1dDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICByZ2JJbnB1dDEucGxhY2Vob2xkZXIgPSAnMjU1JztcbiAgICAgICAgbGV0IHJnYklucHV0MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIHJnYklucHV0Mi5wbGFjZWhvbGRlciA9ICcwJztcbiAgICAgICAgbGV0IHJnYklucHV0MyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgIHJnYklucHV0My5wbGFjZWhvbGRlciA9ICcwJztcbiAgICAgICAgcmdiSW5wdXQxLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JJbnB1dChldmVudCwgQ29sb3JUeXBlLlJHQikpO1xuICAgICAgICByZ2JJbnB1dDIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuUkdCKSk7XG4gICAgICAgIHJnYklucHV0My5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5SR0IpKTtcbiAgICAgICAgcmdiSW5wdXQxLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLlJHQikpO1xuICAgICAgICByZ2JJbnB1dDIuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuUkdCKSk7XG4gICAgICAgIHJnYklucHV0My5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5SR0IpKTtcbiAgICAgICAgcmdiQ29udGFpbmVyLmFwcGVuZENoaWxkKHJnYklucHV0MSk7XG4gICAgICAgIHJnYkNvbnRhaW5lci5hcHBlbmRDaGlsZChyZ2JJbnB1dDIpO1xuICAgICAgICByZ2JDb250YWluZXIuYXBwZW5kQ2hpbGQocmdiSW5wdXQzKTtcblxuICAgICAgICBsZXQgaHNsQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGhzbENvbnRhaW5lci5jbGFzc05hbWUgPSAnaHNsIGhpZGRlbic7XG4gICAgICAgIGxldCBoc2xJbnB1dDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBoc2xJbnB1dDEucGxhY2Vob2xkZXIgPSAnMCc7XG4gICAgICAgIGxldCBoc2xJbnB1dDIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBoc2xJbnB1dDIucGxhY2Vob2xkZXIgPSAnMTAwJSc7XG4gICAgICAgIGxldCBoc2xJbnB1dDMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBoc2xJbnB1dDMucGxhY2Vob2xkZXIgPSAnNTAlJztcbiAgICAgICAgaHNsSW5wdXQxLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHRoaXMuY2hhbmdlQ29sb3JJbnB1dChldmVudCwgQ29sb3JUeXBlLkhTTCkpO1xuICAgICAgICBoc2xJbnB1dDIuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIChldmVudCkgPT4gdGhpcy5jaGFuZ2VDb2xvcklucHV0KGV2ZW50LCBDb2xvclR5cGUuSFNMKSk7XG4gICAgICAgIGhzbElucHV0My5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2ZW50KSA9PiB0aGlzLmNoYW5nZUNvbG9ySW5wdXQoZXZlbnQsIENvbG9yVHlwZS5IU0wpKTtcbiAgICAgICAgaHNsSW5wdXQxLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgKCkgPT4gdGhpcy5jaGVja0NvbG9ySW5wdXQoQ29sb3JUeXBlLkhTTCkpO1xuICAgICAgICBoc2xJbnB1dDIuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoKSA9PiB0aGlzLmNoZWNrQ29sb3JJbnB1dChDb2xvclR5cGUuSFNMKSk7XG4gICAgICAgIGhzbElucHV0My5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsICgpID0+IHRoaXMuY2hlY2tDb2xvcklucHV0KENvbG9yVHlwZS5IU0wpKTtcbiAgICAgICAgaHNsQ29udGFpbmVyLmFwcGVuZENoaWxkKGhzbElucHV0MSk7XG4gICAgICAgIGhzbENvbnRhaW5lci5hcHBlbmRDaGlsZChoc2xJbnB1dDIpO1xuICAgICAgICBoc2xDb250YWluZXIuYXBwZW5kQ2hpbGQoaHNsSW5wdXQzKTtcblxuICAgICAgICBzZWxlY3QuYXBwZW5kQ2hpbGQoaGV4T3B0aW9uKTtcbiAgICAgICAgc2VsZWN0LmFwcGVuZENoaWxkKHJnYk9wdGlvbik7XG4gICAgICAgIC8vc2VsZWN0LmFwcGVuZENoaWxkKGhzbE9wdGlvbik7XG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChzZWxlY3QpO1xuXG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChoZXhDb250YWluZXIpO1xuICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQocmdiQ29udGFpbmVyKTtcbiAgICAgICAgLy9jb250YWluZXIuYXBwZW5kQ2hpbGQoaHNsQ29udGFpbmVyKTtcblxuICAgICAgICBjdXN0b21Db2xvclBpY2tlci5hcHBlbmRDaGlsZChjb250YWluZXIpO1xuXG4gICAgICAgIHJldHVybiBjdXN0b21Db2xvclBpY2tlcjtcbiAgICB9XG5cbiAgICBjaGFuZ2VDb2xvclR5cGUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGxldCBwYXJlbnQgPSAoPEhUTUxTZWxlY3RFbGVtZW50PmV2ZW50LnRhcmdldCkucGFyZW50RWxlbWVudDtcbiAgICAgICAgbGV0IGNoaWxkcmVuID0gcGFyZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmNsYXNzTGlzdC5jb250YWlucygoPEhUTUxTZWxlY3RFbGVtZW50PmV2ZW50LnRhcmdldCkudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5baV0uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNoaWxkcmVuW2ldLmNsYXNzTGlzdC5jb250YWlucygnaGlkZGVuJykpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW5baV0uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZ2JUb0hleChyZWQsIGdyZWVuLCBibHVlKSB7XG4gICAgICAgIHJldHVybiAnIycgKyB0aGlzLmNvbG9yVG9IZXgocmVkKSArIHRoaXMuY29sb3JUb0hleChncmVlbikgKyB0aGlzLmNvbG9yVG9IZXgoYmx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb2xvclRvSGV4KGNvbG9yKSB7XG4gICAgICAgIHZhciBoZXhhZGVjaW1hbCA9IGNvbG9yLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgcmV0dXJuIGhleGFkZWNpbWFsLmxlbmd0aCA9PSAxID8gJzAnICsgaGV4YWRlY2ltYWwgOiBoZXhhZGVjaW1hbDtcbiAgICB9XG59XG4iXX0=
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==
@@ -462,4 +462,4 @@ export class InlineStyleTool extends EditorJSTool {
462
462
  });
463
463
  }
464
464
  }
465
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXN0eWxlLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3BhdWxpbmUvRG9jdW1lbnRzL3dvcmtzcGFjZS93aXppLWJsb2NrL3Byb2plY3RzL3dpemktYmxvY2svc3JjLyIsInNvdXJjZXMiOlsibGliL3NoYXJlZC9jb21wb25lbnRzL2VkaXRvcmpzL3Rvb2xzL2lubGluZS90b29sLXR5cGUvaW5saW5lLXN0eWxlLXRvb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQW1CLFlBQVksRUFBZSxNQUFNLHFDQUFxQyxDQUFDO0FBRWpHLE1BQU0sT0FBZ0IsZUFBZ0IsU0FBUSxZQUFZO0lBQTFEOztRQUdJLGVBQVUsR0FBRyx3QkFBd0IsQ0FBQztRQUV0QyxjQUFTLEdBQUcsV0FBVyxDQUFDO1FBSXhCLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUU5QixxQkFBZ0IsR0FBVyxDQUFDLENBQUM7UUFFN0Isb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFFakMsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFFaEMsY0FBUyxHQUFXLENBQUMsQ0FBQztRQU10QixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQU1qQyxhQUFRLEdBQUc7WUFDUCxHQUFHLEVBQUUsS0FBSztZQUNWLEtBQUssRUFBRSxLQUFLO1lBQ1osS0FBSyxFQUFFLEtBQUs7WUFDWixTQUFTLEVBQUUsS0FBSztTQUNuQixDQUFDO0lBaWVOLENBQUM7SUEvZFMsZ0JBQWdCLENBQUMsTUFBYzs7WUFDakMsTUFBTSxTQUFTLEdBQXFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEcsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDWixPQUFPO2FBQ1Y7WUFDRCxNQUFNLFVBQVUsR0FBUyxTQUFTLENBQUMsVUFBVSxDQUFDO1lBQzlD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QixHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTt3QkFDbEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7d0JBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO3dCQUN6QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO3FCQUNyQztvQkFDRCxJQUFJLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO29CQUM5QyxJQUFJLENBQUMsaUJBQWlCLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7b0JBQ3RELElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztpQkFDeEQ7Z0JBQ0QsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFO29CQUNyQixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBYyxRQUFRLENBQUMsQ0FBQztpQkFDMUQ7Z0JBQ0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7YUFDbkM7WUFDRCxJQUFJLGFBQWEsRUFBRTtnQkFDZixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzthQUM3QjtRQUNMLENBQUM7S0FBQTtDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXR0cmlidXRlT2JqZWN0LCBFZGl0b3JKU1Rvb2wsIFN0eWxlT2JqZWN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvZWRpdG9yanMtdG9vbC5jb21wb25lbnQnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW5saW5lU3R5bGVUb29sIGV4dGVuZHMgRWRpdG9ySlNUb29sIHtcbiAgICB0YWc6IHN0cmluZztcblxuICAgIGNvbnRhaW5lcnMgPSAnaDEsaDIsaDMsaDQsaDUsaDYscCxsaSc7XG5cbiAgICBtb2RpZmllcnMgPSAnc3Ryb25nLGVtJztcblxuICAgIHN0eWxlPzogU3R5bGVPYmplY3Q7XG5cbiAgICBmb3VuZEFuY2hvck9mZnNldDogbnVtYmVyID0gMDtcblxuICAgIGZvdW5kRm9jdXNPZmZzZXQ6IG51bWJlciA9IDA7XG5cbiAgICBmb3VuZEFuY2hvck5vZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGZvdW5kRm9jdXNOb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICB0bXBPZmZzZXQ6IG51bWJlciA9IDA7XG5cbiAgICBjbGFzc1RvQXBwbHk/OiBzdHJpbmc7XG5cbiAgICBjbGFzc2VzPzogc3RyaW5nO1xuXG4gICAgbW9kaWZpZWRDb250ZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBhdHRyaWJ1dGVOYW1lPzogc3RyaW5nO1xuXG4gICAgYXR0cmlidXRlc1RvQXBwbHk/OiBBcnJheTxBdHRyaWJ1dGVPYmplY3Q+O1xuXG4gICAgbW9kaWZpZXMgPSB7XG4gICAgICAgIHRhZzogZmFsc2UsXG4gICAgICAgIHN0eWxlOiBmYWxzZSxcbiAgICAgICAgY2xhc3M6IGZhbHNlLFxuICAgICAgICBhdHRyaWJ1dGU6IGZhbHNlLFxuICAgIH07XG5cbiAgICBhc3luYyBleGVjQ29tbWFuZFN0eWxlKGFjdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbCA9IHRoaXMuY3VycmVudFNlbGVjdGlvbiA/IHRoaXMuY3VycmVudFNlbGVjdGlvbiA6IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIGlmICghc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW5jaG9yTm9kZTogTm9kZSA9IHNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50RWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFhbmNob3JOb2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvbnRhaW5lcjogSFRNTEVsZW1lbnQgPVxuICAgICAgICAgICAgYW5jaG9yTm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUgJiYgYW5jaG9yTm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5DT01NRU5UX05PREVcbiAgICAgICAgICAgICAgICA/IChhbmNob3JOb2RlIGFzIEhUTUxFbGVtZW50KVxuICAgICAgICAgICAgICAgIDogYW5jaG9yTm9kZS5wYXJlbnRFbGVtZW50O1xuICAgICAgICBjb25zdCBzYW1lU2VsZWN0aW9uOiBib29sZWFuID0gY29udGFpbmVyICYmIGNvbnRhaW5lci5pbm5lclRleHQgPT09IHNlbGVjdGlvbi50b1N0cmluZygpO1xuICAgICAgICBhd2FpdCB0aGlzLnNhdmVJbmxpbmVTZWxlY3Rpb24oY29udGFpbmVyLCB0cnVlKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgc2FtZVNlbGVjdGlvbiAmJlxuICAgICAgICAgICAgIXRoaXMuaXNDb250YWluZXIodGhpcy5jb250YWluZXJzLCBjb250YWluZXIpICYmXG4gICAgICAgICAgICB0aGlzLmhhc1N0eWxlKGNvbnRhaW5lcikgJiZcbiAgICAgICAgICAgIHNlbGVjdGlvbi50b1N0cmluZygpID09PSB0aGlzLmhhc1N0eWxlKGNvbnRhaW5lcikuaW5uZXJUZXh0XG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3VwZGF0ZScpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVTZWxlY3Rpb24oc2VsZWN0aW9uLCB0aGlzLmhhc1N0eWxlKGNvbnRhaW5lciksIGFjdGlvbiwgdGhpcy5jb250YWluZXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZXBsYWNlJyk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlcGxhY2VTZWxlY3Rpb24oY29udGFpbmVyLCBhY3Rpb24sIHNlbGVjdGlvbiwgdGhpcy5jb250YWluZXJzKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmNsZWFudXBDb250YWluZXIoc2VsZWN0aW9uLCBjb250YWluZXIsIHRydWUpO1xuICAgICAgICBpZiAodGhpcy5tb2RpZmllZENvbnRlbnQpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucmVzZXRJbmxpbmVTZWxlY3Rpb24oY29udGFpbmVyLCB0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgdXBkYXRlU2VsZWN0aW9uKHNlbGVjdGlvbjogU2VsZWN0aW9uLCBjb250YWluZXI6IEhUTUxFbGVtZW50LCBhY3Rpb246IHN0cmluZywgY29udGFpbmVyczogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGlmaWVzLnN0eWxlKSB7XG4gICAgICAgICAgICBjb25zdCBjc3MgPSB0aGlzLnN0eWxlLnByb3BlcnR5O1xuICAgICAgICAgICAgY29udGFpbmVyLnN0eWxlW2Nzc10gPSBhd2FpdCB0aGlzLmdldFN0eWxlVmFsdWUoY29udGFpbmVyLCBhY3Rpb24sIGNvbnRhaW5lcnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2U6IFJhbmdlID0gdGhpcy5nZXRSYW5nZU9iamVjdChzZWxlY3Rpb24pO1xuICAgICAgICAgICAgbGV0IG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuaGFzU3R5bGUoY29udGFpbmVyKSA/ICdzcGFuJyA6IHRoaXMudGFnKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGlmaWVzLmNsYXNzKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmVDaGlsZHJlbkNsYXNzZXMobmV3RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3NUb0FwcGx5ICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc1RvQXBwbHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGlmaWVzLmF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlc1RvQXBwbHkuZm9yRWFjaCgoYXR0cmlidXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lLCBhdHRyaWJ1dGUudmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3RWxlbWVudCA9IHRoaXMuc2V0SW5saW5lU3R5bGUoY29udGFpbmVyLCBuZXdFbGVtZW50KTtcblxuICAgICAgICAgICAgd2hpbGUgKGNvbnRhaW5lci5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRDbG9uZSA9IGNvbnRhaW5lci5maXJzdENoaWxkLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgICAgICAgICAgICBuZXdFbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnRDbG9uZSk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmZpcnN0Q2hpbGQucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5wYXJlbnRFbGVtZW50LnJlcGxhY2VDaGlsZChuZXdFbGVtZW50LCBjb250YWluZXIpO1xuXG4gICAgICAgICAgICByYW5nZS5pbnNlcnROb2RlKG5ld0VsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXBsYWNlU2VsZWN0aW9uKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGFjdGlvbjogc3RyaW5nLCBzZWxlY3Rpb246IFNlbGVjdGlvbiwgY29udGFpbmVyczogc3RyaW5nKSB7XG4gICAgICAgIGxldCBwYXJlbnRDb250YWluZXIgPSB0aGlzLmhhc1N0eWxlKGNvbnRhaW5lcik7XG5cbiAgICAgICAgY29uc3QgZm9jdXNOb2RlOiBOb2RlID0gc2VsZWN0aW9uLmZvY3VzTm9kZTtcbiAgICAgICAgbGV0IG9mZnNldENvbnRhaW5lcjogSFRNTEVsZW1lbnQgPVxuICAgICAgICAgICAgZm9jdXNOb2RlLm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSAmJiBmb2N1c05vZGUubm9kZVR5cGUgIT09IE5vZGUuQ09NTUVOVF9OT0RFXG4gICAgICAgICAgICAgICAgPyAoZm9jdXNOb2RlIGFzIEhUTUxFbGVtZW50KVxuICAgICAgICAgICAgICAgIDogZm9jdXNOb2RlLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIGxldCBvZmZzZXRQYXJlbnRDb250YWluZXIgPSB0aGlzLmhhc1N0eWxlKG9mZnNldENvbnRhaW5lcik7XG4gICAgICAgIGlmIChwYXJlbnRDb250YWluZXIgJiYgcGFyZW50Q29udGFpbmVyID09PSBvZmZzZXRQYXJlbnRDb250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlOiBSYW5nZSA9IHRoaXMuZ2V0UmFuZ2VPYmplY3Qoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRGcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCA9IHJhbmdlLmV4dHJhY3RDb250ZW50cygpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGN1cnJlbnRGcmFnbWVudCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5zdHlsZSAmJiB0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPiAtMSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnN0eWxlW3RoaXMuc3R5bGUucHJvcGVydHldID0gdGhpcy5zdHlsZS52YWx1ZS5yZXBsYWNlKCckMScsIHRoaXMuc3R5bGUuaW5wdXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuY2xhc3MpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZUNoaWxkcmVuQ2xhc3NlcyhjdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3NUb0FwcGx5ICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NUb0FwcGx5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZXNUb0FwcGx5LmZvckVhY2goKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUsIGF0dHJpYnV0ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgY3VycmVudEVsZW1lbnRUb0FwcGVuZCA9IGN1cnJlbnRFbGVtZW50O1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRQYXJlbnRFbGVtZW50ID0gY29udGFpbmVyO1xuICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRQYXJlbnRFbGVtZW50ICE9PSBwYXJlbnRDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBsZXQgdG1wRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoY3VycmVudFBhcmVudEVsZW1lbnQudGFnTmFtZSk7XG4gICAgICAgICAgICAgICAgdG1wRWxlbWVudCA9IHRoaXMuc2V0SW5saW5lU3R5bGUoY3VycmVudFBhcmVudEVsZW1lbnQsIHRtcEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgdG1wRWxlbWVudC5hcHBlbmRDaGlsZChjdXJyZW50RWxlbWVudFRvQXBwZW5kKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudFRvQXBwZW5kID0gdG1wRWxlbWVudDtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGFyZW50RWxlbWVudCA9IGN1cnJlbnRQYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGlzTFRSID0gdGhpcy5pc0FuY2hvckJlZm9yZUZvY3VzKFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5hbmNob3JOb2RlLFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uLmZvY3VzTm9kZSxcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24uZm9jdXNPZmZzZXRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGxldCBzZWxlY3Rpb25Gb2N1c09mZnNldCA9IGlzTFRSID8gc2VsZWN0aW9uLmFuY2hvck9mZnNldCA6IHNlbGVjdGlvbi5mb2N1c09mZnNldDtcbiAgICAgICAgICAgIGxldCBzZWxlY3Rpb25Gb2N1c05vZGUgPSBpc0xUUiA/IHNlbGVjdGlvbi5hbmNob3JOb2RlIDogc2VsZWN0aW9uLmZvY3VzTm9kZTtcblxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChwYXJlbnRDb250YWluZXIsIDAsIHNlbGVjdGlvbkZvY3VzTm9kZSwgc2VsZWN0aW9uRm9jdXNPZmZzZXQpO1xuICAgICAgICAgICAgY29uc3QgbmV3U2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIGxldCBwcmVSYW5nZTogUmFuZ2UgPSB0aGlzLmdldFJhbmdlT2JqZWN0KG5ld1NlbGVjdGlvbik7XG5cbiAgICAgICAgICAgIGNvbnN0IHByZUZyYWdtZW50OiBEb2N1bWVudEZyYWdtZW50ID0gcHJlUmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7XG5cbiAgICAgICAgICAgIGxldCBuZXdFbGVtZW50OiBIVE1MRWxlbWVudCA9IDxIVE1MRWxlbWVudD5wYXJlbnRDb250YWluZXIuY2xvbmVOb2RlKCk7XG4gICAgICAgICAgICBuZXdFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgbmV3RWxlbWVudC5hcHBlbmRDaGlsZChwcmVGcmFnbWVudCk7XG5cbiAgICAgICAgICAgIHBhcmVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShjdXJyZW50RWxlbWVudFRvQXBwZW5kLCBwYXJlbnRDb250YWluZXIpO1xuICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyLnBhcmVudEVsZW1lbnQuaW5zZXJ0QmVmb3JlKG5ld0VsZW1lbnQsIGN1cnJlbnRFbGVtZW50VG9BcHBlbmQpO1xuICAgICAgICAgICAgc2VsZWN0aW9uLnNlbGVjdEFsbENoaWxkcmVuKGN1cnJlbnRFbGVtZW50VG9BcHBlbmQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2U6IFJhbmdlID0gdGhpcy5nZXRSYW5nZU9iamVjdChzZWxlY3Rpb24pO1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQgPSByYW5nZS5leHRyYWN0Q29udGVudHMoKTtcblxuICAgICAgICAgICAgbGV0IG5ld0VsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGF3YWl0IHRoaXMuY3JlYXRlRWxlbWVudChjb250YWluZXIsIGFjdGlvbiwgY29udGFpbmVycyk7XG4gICAgICAgICAgICBuZXdFbGVtZW50LmFwcGVuZChmcmFnbWVudCk7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5jbGFzcykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlQ2hpbGRyZW5DbGFzc2VzKG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzVG9BcHBseSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NUb0FwcGx5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZXNUb0FwcGx5LmZvckVhY2goKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSwgYXR0cmlidXRlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShuZXdFbGVtZW50KTtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3RBbGxDaGlsZHJlbihuZXdFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNBbmNob3JCZWZvcmVGb2N1cyhhbmNob3JOb2RlOiBOb2RlLCBhbmNob3JPZmZzZXQ6IG51bWJlciwgZm9jdXNOb2RlOiBOb2RlLCBmb2N1c09mZnNldDogbnVtYmVyKSB7XG4gICAgICAgIGxldCBhbmNob3JSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIGxldCBmb2N1c1JhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgYW5jaG9yUmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9kZSwgYW5jaG9yT2Zmc2V0KTtcbiAgICAgICAgYW5jaG9yUmFuZ2Uuc2V0RW5kKGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gICAgICAgIGZvY3VzUmFuZ2Uuc2V0U3RhcnQoZm9jdXNOb2RlLCBmb2N1c09mZnNldCk7XG4gICAgICAgIGZvY3VzUmFuZ2Uuc2V0RW5kKGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpO1xuICAgICAgICBpZiAoYW5jaG9yUmFuZ2UuY29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlLlNUQVJUX1RPX1NUQVJULCBmb2N1c1JhbmdlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBoYXNTdHlsZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgICAgIC8vIGZvdW5kRWxlbWVudCB3YXMgYWRkZWQgYmVjYXVzZSBvZiBhIHJldHVybiBpc3N1ZSB3aGVuIGEgY2xhc3MgaXMgYXBwbGllZFxuICAgICAgICBsZXQgZm91bmRFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50LmNsYXNzTGlzdD8uY29udGFpbnMoJ2NlLXBhcmFncmFwaCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5zdHlsZSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUgJiZcbiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlW3RoaXMuc3R5bGUucHJvcGVydHldICYmXG4gICAgICAgICAgICAgICAgKHRoaXMuc3R5bGUudmFsdWUuaW5kZXhPZignJDEnKSA+IC0xID8gdHJ1ZSA6IGVsZW1lbnQuc3R5bGVbdGhpcy5zdHlsZS5wcm9wZXJ0eV0gPT09IHRoaXMuc3R5bGUudmFsdWUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBmb3VuZEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubW9kaWZpZXMuY2xhc3MpIHtcbiAgICAgICAgICAgIHRoaXMuY2xhc3Nlcy5zcGxpdCgnLCcpLmZvckVhY2goKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmNsYXNzTGlzdD8uY29udGFpbnMoY2xhc3NOYW1lKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGlmaWVzLnRhZykge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQudGFnTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gdGhpcy50YWcudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubW9kaWZpZXMuYXR0cmlidXRlKSB7XG4gICAgICAgICAgICBsZXQgYXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlTmFtZS5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbGVtZW50LmdldEF0dHJpYnV0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiBlbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGVzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvdW5kRWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIGZvdW5kRWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWZvdW5kRWxlbWVudCAmJiBlbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhc1N0eWxlKGVsZW1lbnQucGFyZW50RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRTdHlsZVZhbHVlKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGFjdGlvbjogc3RyaW5nLCBjb250YWluZXJzOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPiAtMSA/IHRoaXMuc3R5bGUudmFsdWUucmVwbGFjZSgnJDEnLCB0aGlzLnN0eWxlLmlucHV0KSA6IHRoaXMuc3R5bGUudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oYXNTdHlsZShjb250YWluZXIpICYmIHRoaXMuc3R5bGUudmFsdWUuaW5kZXhPZignJDEnKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0eWxlLmRlZmF1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdHlsZTogTm9kZSB8IG51bGwgPSBhd2FpdCB0aGlzLmZpbmRTdHlsZU5vZGUoY29udGFpbmVyLCBhY3Rpb24sIGNvbnRhaW5lcnMpO1xuXG4gICAgICAgIGlmICh0aGlzLmhhc1N0eWxlKHN0eWxlIGFzIEhUTUxFbGVtZW50KSAmJiB0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdHlsZS5kZWZhdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3R5bGUudmFsdWUuaW5kZXhPZignJDEnKSA+IC0xID8gdGhpcy5zdHlsZS52YWx1ZS5yZXBsYWNlKCckMScsIHRoaXMuc3R5bGUuaW5wdXQpIDogdGhpcy5zdHlsZS52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGZpbmRTdHlsZU5vZGUobm9kZTogTm9kZSwgc3R5bGU6IHN0cmluZywgY29udGFpbmVyczogc3RyaW5nKTogUHJvbWlzZTxOb2RlIHwgbnVsbD4ge1xuICAgICAgICBpZiAobm9kZS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnSFRNTCcgfHwgbm9kZS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnQk9EWScpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNDb250YWluZXIoY29udGFpbmVycywgbm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFzU3R5bGU6IGJvb2xlYW4gPVxuICAgICAgICAgICAgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlW3N0eWxlXSAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlW3N0eWxlXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAobm9kZSBhcyBIVE1MRWxlbWVudCkuc3R5bGVbc3R5bGVdICE9PSAnJztcblxuICAgICAgICBpZiAoaGFzU3R5bGUpIHtcbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZFN0eWxlTm9kZShub2RlLnBhcmVudE5vZGUsIHN0eWxlLCBjb250YWluZXJzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNyZWF0ZUVsZW1lbnQoY29udGFpbmVyOiBIVE1MRWxlbWVudCwgYWN0aW9uOiBzdHJpbmcsIGNvbnRhaW5lcnM6IHN0cmluZyk6IFByb21pc2U8SFRNTEVsZW1lbnQ+IHtcbiAgICAgICAgbGV0IG5ld0VsZW1lbnQ6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLnRhZyk7XG4gICAgICAgIGlmICh0aGlzLm1vZGlmaWVzLnN0eWxlKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IHRoaXMuc3R5bGUucHJvcGVydHk7XG4gICAgICAgICAgICBuZXdFbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IGF3YWl0IHRoaXMuZ2V0U3R5bGVWYWx1ZShjb250YWluZXIsIGFjdGlvbiwgY29udGFpbmVycyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3RWxlbWVudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJlbW92ZUNoaWxkcmVuQ2xhc3NlcyhlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuOiBIVE1MQ29sbGVjdGlvbiA9IGVsZW1lbnQuY2hpbGRyZW47XG4gICAgICAgIGZvciAodmFyIGN1cnJlbnRFbGVtZW50ID0gY2hpbGRyZW5bMF07IGN1cnJlbnRFbGVtZW50OyBjdXJyZW50RWxlbWVudCA9IGN1cnJlbnRFbGVtZW50Lm5leHRFbGVtZW50U2libGluZykge1xuICAgICAgICAgICAgdGhpcy5jbGFzc2VzLnNwbGl0KCcsJykuZm9yRWFjaCgoY2xhc3NOYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdD8uY29udGFpbnMoY2xhc3NOYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdjbGFzcycpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlQ2hpbGRyZW5DbGFzc2VzKDxIVE1MRWxlbWVudD5jdXJyZW50RWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNsZWFudXBDb250YWluZXIoc2VsZWN0aW9uOiBTZWxlY3Rpb24sIGNvbnRhaW5lciwgZmlyc3RUaW1lQ2FsbDogQm9vbGVhbikge1xuICAgICAgICBsZXQgcGFyZW50Q29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgICAgICAgbGV0IHBhcmVudEZvdW5kOiBCb29sZWFuID0gZmFsc2U7XG4gICAgICAgIGlmIChmaXJzdFRpbWVDYWxsKSB7XG4gICAgICAgICAgICBwYXJlbnRDb250YWluZXIgPSA8SFRNTEVsZW1lbnQ+c2VsZWN0aW9uLmFuY2hvck5vZGU7XG4gICAgICAgICAgICB3aGlsZSAocGFyZW50Q29udGFpbmVyICYmICFwYXJlbnRGb3VuZCkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJlbnRDb250YWluZXIubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIHBhcmVudENvbnRhaW5lci5jbGFzc0xpc3Q/LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRGb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyID0gcGFyZW50Q29udGFpbmVyLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyID0gY29udGFpbmVyO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcGFyZW50Q29udGFpbmVyIHx8ICFwYXJlbnRDb250YWluZXIuaGFzQ2hpbGROb2RlcygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwYXJlbnRDb250YWluZXIubm9ybWFsaXplKCk7XG5cbiAgICAgICAgY29uc3QgY2hpbGRyZW46IE5vZGVbXSA9IEFycmF5LmZyb20ocGFyZW50Q29udGFpbmVyLmNoaWxkTm9kZXMpO1xuICAgICAgICBpZiAoY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAodmFyIGN1cnJlbnROb2RlID0gY2hpbGRyZW5bMF07IGN1cnJlbnROb2RlOyBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnROb2RlLmNoaWxkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNsZWFudXBDb250YWluZXIoc2VsZWN0aW9uLCBjdXJyZW50Tm9kZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgaWRlbnRpY2FsRWxlbWVudHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsRWxlbWVudHMgJiZcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGUubmV4dFNpYmxpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLm5leHRTaWJsaW5nLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudEVsZW1lbnQgPSA8RWxlbWVudD5jdXJyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5leHRFbGVtZW50ID0gPEVsZW1lbnQ+Y3VycmVudE5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaWRlbnRpY2FsSW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQsIG5leHRFbGVtZW50KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuZXh0RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaWRlbnRpY2FsQ2xhc3NMaXN0KGN1cnJlbnRFbGVtZW50LCBuZXh0RWxlbWVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEoPEVsZW1lbnQ+Y3VycmVudEVsZW1lbnQpLmhhc0F0dHJpYnV0ZXMoKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgISg8RWxlbWVudD5uZXh0RWxlbWVudCkuaGFzQXR0cmlidXRlcygpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuaW5uZXJIVE1MICs9IG5leHRFbGVtZW50LmlubmVySFRNTDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRFbGVtZW50LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RpZmllZENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpY2FsRWxlbWVudHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJlxuICAgICAgICAgICAgICAgICAgICAoPEVsZW1lbnQ+Y3VycmVudE5vZGUpLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ3NwYW4nICYmXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZ2V0SW5saW5lU3R5bGUoPEVsZW1lbnQ+Y3VycmVudE5vZGUpKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgKCEoPEVsZW1lbnQ+Y3VycmVudE5vZGUpLmNsYXNzTGlzdCB8fCAoPEVsZW1lbnQ+Y3VycmVudE5vZGUpLmNsYXNzTGlzdC5sZW5ndGggPT09IDApICYmXG4gICAgICAgICAgICAgICAgICAgICEoPEVsZW1lbnQ+Y3VycmVudE5vZGUpLmhhc0F0dHJpYnV0ZXMoKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudE5vZGVGaXJzdENoaWxkID0gY3VycmVudE5vZGU7XG5cbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnROb2RlLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICg8RWxlbWVudD5jdXJyZW50Tm9kZUZpcnN0Q2hpbGQucGFyZW50RWxlbWVudCkuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLmZpcnN0Q2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGVGaXJzdENoaWxkLm5leHRTaWJsaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE5vZGVGaXJzdENoaWxkID0gY3VycmVudE5vZGVGaXJzdENoaWxkLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICg8RWxlbWVudD5jdXJyZW50Tm9kZSkucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW9kaWZpZWRDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudE5vZGUubm9ybWFsaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlkZW50aWNhbENsYXNzTGlzdChjdXJyZW50RWxlbWVudCwgbmV4dEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIFsuLi5jdXJyZW50RWxlbWVudC5jbGFzc0xpc3RdLmV2ZXJ5KChjbGFzc0xpc3QpID0+IG5leHRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc0xpc3QpKSAmJlxuICAgICAgICAgICAgWy4uLm5leHRFbGVtZW50LmNsYXNzTGlzdF0uZXZlcnkoKGNsYXNzTGlzdCkgPT4gY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTGlzdCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpZGVudGljYWxJbmxpbmVTdHlsZShjdXJyZW50RWxlbWVudCwgbmV4dEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZSA9IHRoaXMuZ2V0SW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQpO1xuICAgICAgICBjb25zdCBuZXh0RWxlbWVudElubGluZVN0eWxlID0gdGhpcy5nZXRJbmxpbmVTdHlsZShuZXh0RWxlbWVudCk7XG4gICAgICAgIGxldCBjdXJyZW50RWxlbWVudElubGluZVN0eWxlU29ydGVkID0gdGhpcy5zb3J0SW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZSk7XG4gICAgICAgIGxldCBuZXh0RWxlbWVudElubGluZVN0eWxlU29ydGVkID0gdGhpcy5zb3J0SW5saW5lU3R5bGUobmV4dEVsZW1lbnRJbmxpbmVTdHlsZSk7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShjdXJyZW50RWxlbWVudElubGluZVN0eWxlU29ydGVkKSA9PT0gSlNPTi5zdHJpbmdpZnkobmV4dEVsZW1lbnRJbmxpbmVTdHlsZVNvcnRlZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0SW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQpOiBPYmplY3Qge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY3VycmVudEVsZW1lbnQpXG4gICAgICAgICAgICAuc29ydCgoWywgYV06IGFueSwgWywgYl06IGFueSkgPT4gYSAtIGIpXG4gICAgICAgICAgICAucmVkdWNlKChyLCBbaywgdl0pID0+ICh7IC4uLnIsIFtrXTogdiB9KSwge30pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0SW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQpOiBPYmplY3Qge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShjdXJyZW50RWxlbWVudC5zdHlsZSkucmVkdWNlKChzdHlsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHN0eWxlW25hbWVdID0gY3VycmVudEVsZW1lbnQuc3R5bGVbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgIH0sIHt9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50LCBuZXh0RWxlbWVudCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZTogT2JqZWN0ID0gQXJyYXkuZnJvbShjdXJyZW50RWxlbWVudC5zdHlsZSkucmVkdWNlKChzdHlsZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHN0eWxlW25hbWVdID0gY3VycmVudEVsZW1lbnQuc3R5bGVbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICAgIH0sIHt9KTtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBjdXJyZW50RWxlbWVudElubGluZVN0eWxlKSB7XG4gICAgICAgICAgICBuZXh0RWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBjdXJyZW50RWxlbWVudElubGluZVN0eWxlW3Byb3BlcnR5XTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0NvbnRhaW5lcihjb250YWluZXJzOiBzdHJpbmcsIG5vZGU6IE5vZGUpOiBCb29sZWFuIHtcbiAgICAgICAgaWYgKGNvbnRhaW5lcnMuc3BsaXQoJywnKS5pbmRleE9mKG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBzYXZlSW5saW5lU2VsZWN0aW9uKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGZpcnN0VGltZUNhbGw6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBpZiAoZmlyc3RUaW1lQ2FsbCkge1xuICAgICAgICAgICAgY29udGFpbmVyID0gPEhUTUxFbGVtZW50PnRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy5jZS1wYXJhZ3JhcGgnKS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JOb2RlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZvdW5kRm9jdXNOb2RlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZvdW5kQW5jaG9yT2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIHRoaXMuZm91bmRGb2N1c09mZnNldCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5leHROb2RlID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICAgIHdoaWxlIChuZXh0Tm9kZSAmJiAoIXRoaXMuZm91bmRBbmNob3JOb2RlIHx8ICF0aGlzLmZvdW5kRm9jdXNOb2RlKSkge1xuICAgICAgICAgICAgaWYgKG5leHROb2RlID09PSB0aGlzLnNlbGVjdGVkQW5jaG9yTm9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JOb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvdW5kQW5jaG9yT2Zmc2V0ICs9IHRoaXMuYW5jaG9yT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3Rpb24gPSB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIGxldCByYW5nZSA9IHRoaXMuZ2V0UmFuZ2VPYmplY3Qoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50RnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQgPSByYW5nZS5jbG9uZUNvbnRlbnRzKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5hcHBlbmRDaGlsZChjdXJyZW50RnJhZ21lbnQpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzT2Zmc2V0ID0gdGhpcy5mb3VuZEFuY2hvck9mZnNldCArIGN1cnJlbnRFbGVtZW50LmlubmVyVGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzTm9kZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5leHROb2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3VuZEFuY2hvck5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3VuZEFuY2hvck9mZnNldCArPSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3VuZEZvY3VzTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvdW5kRm9jdXNPZmZzZXQgKz0gbmV4dE5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0Tm9kZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zYXZlSW5saW5lU2VsZWN0aW9uKDxIVE1MRWxlbWVudD5uZXh0Tm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXh0Tm9kZSA9IG5leHROb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXNldElubGluZVNlbGVjdGlvbihjb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGwsIGZpcnN0VGltZUNhbGw6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgICBpZiAoZmlyc3RUaW1lQ2FsbCkge1xuICAgICAgICAgICAgY29udGFpbmVyID0gPEhUTUxFbGVtZW50PnRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy5jZS1wYXJhZ3JhcGgnKS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JOb2RlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZvdW5kRm9jdXNOb2RlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnRtcE9mZnNldCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5leHROb2RlID0gY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICAgIHdoaWxlIChuZXh0Tm9kZSAmJiAoIXRoaXMuZm91bmRBbmNob3JOb2RlIHx8ICF0aGlzLmZvdW5kRm9jdXNOb2RlKSkge1xuICAgICAgICAgICAgaWYgKG5leHROb2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3VuZEFuY2hvck5vZGUgJiYgdGhpcy5mb3VuZEFuY2hvck9mZnNldCAtIG5leHROb2RlLnRleHRDb250ZW50Lmxlbmd0aCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3VuZEFuY2hvck5vZGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuY2hvck9mZnNldCA9IHRoaXMuZm91bmRBbmNob3JPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlID0gbmV4dE5vZGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5mb3VuZEZvY3VzTm9kZSAmJiB0aGlzLmZvdW5kRm9jdXNPZmZzZXQgLSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvdW5kRm9jdXNOb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c09mZnNldCA9IHRoaXMuZm91bmRGb2N1c09mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZvY3VzTm9kZSA9IG5leHROb2RlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnRtcE9mZnNldCArPSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3VuZEFuY2hvck9mZnNldCAtPSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzT2Zmc2V0IC09IG5leHROb2RlLnRleHRDb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0Tm9kZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXNldElubGluZVNlbGVjdGlvbig8SFRNTEVsZW1lbnQ+bmV4dE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlyc3RUaW1lQ2FsbCkge1xuICAgICAgICAgICAgdGhpcy5yZXNldFVzZXJTZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
465
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXN0eWxlLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9ob21lL2JyaWFuL0RvY3VtZW50cy93b3Jrc3BhY2Uvd2l6aS1ibG9jay9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY29tcG9uZW50cy9lZGl0b3Jqcy90b29scy9pbmxpbmUvdG9vbC10eXBlL2lubGluZS1zdHlsZS10b29sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFtQixZQUFZLEVBQWUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVqRyxNQUFNLE9BQWdCLGVBQWdCLFNBQVEsWUFBWTtJQUExRDs7UUFHSSxlQUFVLEdBQUcsd0JBQXdCLENBQUM7UUFFdEMsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUl4QixzQkFBaUIsR0FBVyxDQUFDLENBQUM7UUFFOUIscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBRTdCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRWpDLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBRWhDLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFNdEIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFNakMsYUFBUSxHQUFHO1lBQ1AsR0FBRyxFQUFFLEtBQUs7WUFDVixLQUFLLEVBQUUsS0FBSztZQUNaLEtBQUssRUFBRSxLQUFLO1lBQ1osU0FBUyxFQUFFLEtBQUs7U0FDbkIsQ0FBQztJQWllTixDQUFDO0lBL2RTLGdCQUFnQixDQUFDLE1BQWM7O1lBQ2pDLE1BQU0sU0FBUyxHQUFxQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hHLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ1osT0FBTzthQUNWO1lBQ0QsTUFBTSxVQUFVLEdBQVMsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUMvQztZQUVELElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2IsT0FBTzthQUNWO1lBQ0QsSUFBSSxTQUFTLEdBQ1QsVUFBVSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVk7Z0JBQy9FLENBQUMsQ0FBRSxVQUEwQjtnQkFDN0IsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDbkMsTUFBTSxhQUFhLEdBQVksU0FBUyxJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pGLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoRCxJQUNJLGFBQWE7Z0JBQ2IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDeEIsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUM3RDtnQkFDRSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM1RjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN2QixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDOUU7WUFDRCxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDdEIsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ3BEO1FBQ0wsQ0FBQztLQUFBO0lBRWEsZUFBZSxDQUFDLFNBQW9CLEVBQUUsU0FBc0IsRUFBRSxNQUFjLEVBQUUsVUFBa0I7O1lBQzFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3JCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUNoQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ2xGO2lCQUFNO2dCQUNILE1BQU0sS0FBSyxHQUFVLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3BELElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RGLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7b0JBQ3JCLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUM3QyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRSxFQUFFO3dCQUMxQixVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7cUJBQy9DO2lCQUNKO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTt3QkFDekMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDN0QsQ0FBQyxDQUFDLENBQUM7aUJBQ047Z0JBQ0QsVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUV4RCxPQUFPLFNBQVMsQ0FBQyxVQUFVLEVBQUU7b0JBQ3pCLElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN4RCxVQUFVLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO29CQUNyQyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO2lCQUNqQztnQkFFRCxTQUFTLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBRTVELEtBQUssQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDaEM7UUFDTCxDQUFDO0tBQUE7SUFFYSxnQkFBZ0IsQ0FBQyxTQUFzQixFQUFFLE1BQWMsRUFBRSxTQUFvQixFQUFFLFVBQWtCOztZQUMzRyxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRS9DLE1BQU0sU0FBUyxHQUFTLFNBQVMsQ0FBQyxTQUFTLENBQUM7WUFDNUMsSUFBSSxlQUFlLEdBQ2YsU0FBUyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVk7Z0JBQzdFLENBQUMsQ0FBRSxTQUF5QjtnQkFDNUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7WUFDbEMsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzNELElBQUksZUFBZSxJQUFJLGVBQWUsS0FBSyxxQkFBcUIsRUFBRTtnQkFDOUQsTUFBTSxLQUFLLEdBQVUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxlQUFlLEdBQXFCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDbEUsTUFBTSxjQUFjLEdBQW9CLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3ZFLGNBQWMsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQzVDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUM1RCxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNoRztnQkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFO29CQUNyQixNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDakQsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUUsRUFBRTt3QkFDMUIsY0FBYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNuRDtpQkFDSjtnQkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO29CQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7d0JBQ3pDLGNBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2pFLENBQUMsQ0FBQyxDQUFDO2lCQUNOO2dCQUNELElBQUksc0JBQXNCLEdBQUcsY0FBYyxDQUFDO2dCQUM1QyxJQUFJLG9CQUFvQixHQUFHLFNBQVMsQ0FBQztnQkFDckMsT0FBTyxvQkFBb0IsS0FBSyxlQUFlLEVBQUU7b0JBQzdDLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3RFLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUVuRSxVQUFVLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQy9DLHNCQUFzQixHQUFHLFVBQVUsQ0FBQztvQkFDcEMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUMsYUFBYSxDQUFDO2lCQUM3RDtnQkFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQ2xDLFNBQVMsQ0FBQyxVQUFVLEVBQ3BCLFNBQVMsQ0FBQyxZQUFZLEVBQ3RCLFNBQVMsQ0FBQyxTQUFTLEVBQ25CLFNBQVMsQ0FBQyxXQUFXLENBQ3hCLENBQUM7Z0JBRUYsSUFBSSxvQkFBb0IsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7Z0JBQ2xGLElBQUksa0JBQWtCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO2dCQUU1RSxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN2RyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3pDLElBQUksUUFBUSxHQUFVLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBRXhELE1BQU0sV0FBVyxHQUFxQixRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBRWpFLElBQUksVUFBVSxHQUE2QixlQUFlLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3ZFLFVBQVUsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixVQUFVLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUVwQyxlQUFlLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFDcEYsZUFBZSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLHNCQUFzQixDQUFDLENBQUM7Z0JBQy9FLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2FBQ3ZEO2lCQUFNO2dCQUNILE1BQU0sS0FBSyxHQUFVLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3BELE1BQU0sUUFBUSxHQUFxQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBRTNELElBQUksVUFBVSxHQUF1QixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztnQkFDN0YsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtvQkFDckIsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzdDLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLEVBQUU7d0JBQzFCLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDL0M7aUJBQ0o7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtvQkFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO3dCQUN6QyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM3RCxDQUFDLENBQUMsQ0FBQztpQkFDTjtnQkFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM3QixTQUFTLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDM0M7UUFDTCxDQUFDO0tBQUE7SUFFTyxtQkFBbUIsQ0FBQyxVQUFnQixFQUFFLFlBQW9CLEVBQUUsU0FBZSxFQUFFLFdBQW1CO1FBQ3BHLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QyxJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDL0MsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDN0MsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUMsSUFBSSxXQUFXLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUM1RSxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVEsQ0FBQyxPQUFvQjs7UUFDekIsMkVBQTJFO1FBQzNFLElBQUksWUFBWSxHQUF1QixJQUFJLENBQUM7UUFFNUMsSUFBSSxDQUFDLE9BQU8sV0FBSSxPQUFPLENBQUMsU0FBUywwQ0FBRSxRQUFRLENBQUMsY0FBYyxFQUFDLEVBQUU7WUFDekQsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDckIsSUFDSSxPQUFPLENBQUMsS0FBSztnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUNsQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFDeEc7Z0JBQ0UsWUFBWSxHQUFHLE9BQU8sQ0FBQztnQkFDdkIsT0FBTyxPQUFPLENBQUM7YUFDbEI7U0FDSjthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7O2dCQUMxQyxJQUFJLE9BQUEsT0FBTyxDQUFDLFNBQVMsMENBQUUsUUFBUSxDQUFDLFNBQVMsT0FBTSxJQUFJLEVBQUU7b0JBQ2pELFlBQVksR0FBRyxPQUFPLENBQUM7b0JBQ3ZCLE9BQU8sT0FBTyxDQUFDO2lCQUNsQjtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzFCLElBQUksT0FBQSxPQUFPLENBQUMsT0FBTywwQ0FBRSxXQUFXLFFBQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDM0QsT0FBTyxPQUFPLENBQUM7YUFDbEI7U0FDSjthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUU7WUFDaEMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQ3hDLElBQUksT0FBTyxPQUFPLENBQUMsWUFBWSxLQUFLLFVBQVUsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNuRixZQUFZLEdBQUcsT0FBTyxDQUFDO29CQUN2QixPQUFPLE9BQU8sQ0FBQztpQkFDbEI7YUFDSjtTQUNKO1FBQ0QsSUFBSSxZQUFZLEVBQUU7WUFDZCxPQUFPLFlBQVksQ0FBQztTQUN2QjtRQUNELElBQUksQ0FBQyxZQUFZLElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVhLGFBQWEsQ0FBQyxTQUFzQixFQUFFLE1BQWMsRUFBRSxVQUFrQjs7WUFDbEYsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDWixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUNwSDtZQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQ25FLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7YUFDN0I7WUFFRCxNQUFNLEtBQUssR0FBZ0IsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFbkYsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQW9CLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7Z0JBQzlFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7YUFDN0I7WUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNySCxDQUFDO0tBQUE7SUFFYSxhQUFhLENBQUMsSUFBVSxFQUFFLEtBQWEsRUFBRSxVQUFrQjs7WUFDckUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sRUFBRTtnQkFDbEYsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNsQixPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDcEMsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUVELE1BQU0sUUFBUSxHQUNULElBQW9CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUk7Z0JBQzFDLElBQW9CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVM7Z0JBQy9DLElBQW9CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUU5QyxJQUFJLFFBQVEsRUFBRTtnQkFDVixPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEUsQ0FBQztLQUFBO0lBRWEsYUFBYSxDQUFDLFNBQXNCLEVBQUUsTUFBYyxFQUFFLFVBQWtCOztZQUNsRixJQUFJLFVBQVUsR0FBZ0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0QsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRTtnQkFDckIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7Z0JBQ3JDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7YUFDeEY7WUFFRCxPQUFPLFVBQVUsQ0FBQztRQUN0QixDQUFDO0tBQUE7SUFFYSxxQkFBcUIsQ0FBQyxPQUFvQjs7WUFDcEQsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDVixPQUFPO2FBQ1Y7WUFFRCxNQUFNLFFBQVEsR0FBbUIsT0FBTyxDQUFDLFFBQVEsQ0FBQztZQUNsRCxLQUFLLElBQUksY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsY0FBYyxHQUFHLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRTtnQkFDdkcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7O29CQUMxQyxVQUFJLGNBQWMsQ0FBQyxTQUFTLDBDQUFFLFFBQVEsQ0FBQyxTQUFTLEdBQUc7d0JBQy9DLElBQUksY0FBYyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFOzRCQUN2QyxjQUFjLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3lCQUMzQzs2QkFBTTs0QkFDSCxjQUFjLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQzt5QkFDOUM7cUJBQ0o7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3BDLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFjLGNBQWMsQ0FBQyxDQUFDO2lCQUNqRTthQUNKO1FBQ0wsQ0FBQztLQUFBO0lBRWEsZ0JBQWdCLENBQUMsU0FBb0IsRUFBRSxTQUFTLEVBQUUsYUFBc0I7OztZQUNsRixJQUFJLGVBQTRCLENBQUM7WUFDakMsSUFBSSxXQUFXLEdBQVksS0FBSyxDQUFDO1lBQ2pDLElBQUksYUFBYSxFQUFFO2dCQUNmLGVBQWUsR0FBZ0IsU0FBUyxDQUFDLFVBQVUsQ0FBQztnQkFDcEQsT0FBTyxlQUFlLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ3BDLElBQUksZUFBZSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsWUFBWSxXQUFJLGVBQWUsQ0FBQyxTQUFTLDBDQUFFLFFBQVEsQ0FBQyxjQUFjLEVBQUMsRUFBRTt3QkFDdkcsV0FBVyxHQUFHLElBQUksQ0FBQztxQkFDdEI7eUJBQU07d0JBQ0gsZUFBZSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUM7cUJBQ25EO2lCQUNKO2FBQ0o7aUJBQU07Z0JBQ0gsZUFBZSxHQUFHLFNBQVMsQ0FBQzthQUMvQjtZQUNELElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQ3RELE9BQU87YUFDVjtZQUVELGVBQWUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUU1QixNQUFNLFFBQVEsR0FBVyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLE1BQU0sSUFBRyxDQUFDLEVBQUU7Z0JBQ3RCLEtBQUssSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxXQUFXLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRTtvQkFDcEYsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQ25DLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7cUJBQzlEO29CQUNELElBQUksaUJBQWlCLEdBQUcsSUFBSSxDQUFDO29CQUM3QixPQUNJLGlCQUFpQjt3QkFDakIsV0FBVyxDQUFDLFdBQVc7d0JBQ3ZCLFdBQVcsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVk7d0JBQzFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQ3hEO3dCQUNFLElBQUksY0FBYyxHQUFZLFdBQVcsQ0FBQzt3QkFDMUMsSUFBSSxXQUFXLEdBQVksV0FBVyxDQUFDLFdBQVcsQ0FBQzt3QkFDbkQsSUFDSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQzs0QkFDdEQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTs0QkFDMUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUM7NEJBQ3BELENBQVcsY0FBZSxDQUFDLGFBQWEsRUFBRTs0QkFDMUMsQ0FBVyxXQUFZLENBQUMsYUFBYSxFQUFFLEVBQ3pDOzRCQUNFLGNBQWMsQ0FBQyxTQUFTLElBQUksV0FBVyxDQUFDLFNBQVMsQ0FBQzs0QkFDbEQsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDOzRCQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQzt5QkFDL0I7NkJBQU07NEJBQ0gsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO3lCQUM3QjtxQkFDSjtvQkFDRCxJQUNJLFdBQVcsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFlBQVk7d0JBQ2hDLFdBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTTt3QkFDdkQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFVLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7d0JBQ25FLENBQUMsQ0FBVyxXQUFZLENBQUMsU0FBUyxJQUFjLFdBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQzt3QkFDcEYsQ0FBVyxXQUFZLENBQUMsYUFBYSxFQUFFLEVBQ3pDO3dCQUNFLElBQUkscUJBQXFCLEdBQUcsV0FBVyxDQUFDO3dCQUV4QyxPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUU7NEJBQ2pCLHFCQUFxQixDQUFDLGFBQWMsQ0FBQyxZQUFZLENBQ3ZELFdBQVcsQ0FBQyxVQUFVLEVBQ3RCLHFCQUFxQixDQUFDLFdBQVcsQ0FDcEMsQ0FBQzs0QkFDRixxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQyxXQUFXLENBQUM7eUJBQzdEO3dCQUNTLFdBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7cUJBQy9CO29CQUNELFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztpQkFDM0I7YUFDSjs7S0FDSjtJQUVPLGtCQUFrQixDQUFDLGNBQWMsRUFBRSxXQUFXO1FBQ2xELE9BQU8sQ0FDSCxDQUFDLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0YsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQ2hHLENBQUM7SUFDTixDQUFDO0lBRU8sb0JBQW9CLENBQUMsY0FBYyxFQUFFLFdBQVc7UUFDcEQsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRSxJQUFJLCtCQUErQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUN0RixJQUFJLDRCQUE0QixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNoRixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsK0JBQStCLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVPLGVBQWUsQ0FBQyxjQUFjO1FBQ2xDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7YUFDaEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN2QyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGlDQUFNLENBQUMsS0FBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxjQUFjLENBQUMsY0FBYztRQUNqQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQWEsRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUMzRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sY0FBYyxDQUFDLGNBQWMsRUFBRSxXQUFXO1FBQzlDLE1BQU0seUJBQXlCLEdBQVcsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBYSxFQUFFLElBQVksRUFBRSxFQUFFO1lBQzlHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNQLEtBQUssTUFBTSxRQUFRLElBQUkseUJBQXlCLEVBQUU7WUFDOUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNyRTtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxXQUFXLENBQUMsVUFBa0IsRUFBRSxJQUFVO1FBQzlDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ25FLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVhLG1CQUFtQixDQUFDLFNBQXNCLEVBQUUsZ0JBQXlCLEtBQUs7O1lBQ3BGLElBQUksYUFBYSxFQUFFO2dCQUNmLFNBQVMsR0FBZ0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUMsaUJBQWlCLENBQUM7Z0JBQzVGLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQzthQUM3QjtZQUNELElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDcEMsT0FBTyxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ2hFLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtvQkFDdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7b0JBQzVCLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDO29CQUM1QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3BDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQzNDLE1BQU0sZUFBZSxHQUFxQixLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ2hFLE1BQU0sY0FBYyxHQUFvQixRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN2RSxjQUFjLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUU1QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO29CQUNqRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztvQkFDM0IsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUN4QixPQUFPO2lCQUNWO2dCQUNELElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTt3QkFDdkIsSUFBSSxDQUFDLGlCQUFpQixJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO3FCQUN6RDtvQkFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTt3QkFDdEIsSUFBSSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO3FCQUN4RDtpQkFDSjtnQkFDRCxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUU7b0JBQ3JCLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFjLFFBQVEsQ0FBQyxDQUFDO2lCQUN6RDtnQkFDRCxRQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQzthQUNuQztRQUNMLENBQUM7S0FBQTtJQUVhLG9CQUFvQixDQUFDLFlBQWdDLElBQUksRUFBRSxnQkFBeUIsS0FBSzs7WUFDbkcsSUFBSSxhQUFhLEVBQUU7Z0JBQ2YsU0FBUyxHQUFnQixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDNUYsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2dCQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQzthQUN0QjtZQUNELElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDcEMsT0FBTyxRQUFRLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ2hFLElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxFQUFFO29CQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUNuRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7d0JBQzNDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUM7cUJBQ3RDO29CQUNELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7d0JBQ2xGLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO3dCQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDekMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztxQkFDckM7b0JBQ0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztvQkFDOUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO29CQUN0RCxJQUFJLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7aUJBQ3hEO2dCQUNELElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRTtvQkFDckIsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQWMsUUFBUSxDQUFDLENBQUM7aUJBQzFEO2dCQUNELFFBQVEsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO2FBQ25DO1lBQ0QsSUFBSSxhQUFhLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDN0I7UUFDTCxDQUFDO0tBQUE7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZU9iamVjdCwgRWRpdG9ySlNUb29sLCBTdHlsZU9iamVjdCB9IGZyb20gJy4uLy4uL3V0aWxzL2VkaXRvcmpzLXRvb2wuY29tcG9uZW50JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElubGluZVN0eWxlVG9vbCBleHRlbmRzIEVkaXRvckpTVG9vbCB7XG4gICAgdGFnOiBzdHJpbmc7XG5cbiAgICBjb250YWluZXJzID0gJ2gxLGgyLGgzLGg0LGg1LGg2LHAsbGknO1xuXG4gICAgbW9kaWZpZXJzID0gJ3N0cm9uZyxlbSc7XG5cbiAgICBzdHlsZT86IFN0eWxlT2JqZWN0O1xuXG4gICAgZm91bmRBbmNob3JPZmZzZXQ6IG51bWJlciA9IDA7XG5cbiAgICBmb3VuZEZvY3VzT2Zmc2V0OiBudW1iZXIgPSAwO1xuXG4gICAgZm91bmRBbmNob3JOb2RlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBmb3VuZEZvY3VzTm9kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgdG1wT2Zmc2V0OiBudW1iZXIgPSAwO1xuXG4gICAgY2xhc3NUb0FwcGx5Pzogc3RyaW5nO1xuXG4gICAgY2xhc3Nlcz86IHN0cmluZztcblxuICAgIG1vZGlmaWVkQ29udGVudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgYXR0cmlidXRlTmFtZT86IHN0cmluZztcblxuICAgIGF0dHJpYnV0ZXNUb0FwcGx5PzogQXJyYXk8QXR0cmlidXRlT2JqZWN0PjtcblxuICAgIG1vZGlmaWVzID0ge1xuICAgICAgICB0YWc6IGZhbHNlLFxuICAgICAgICBzdHlsZTogZmFsc2UsXG4gICAgICAgIGNsYXNzOiBmYWxzZSxcbiAgICAgICAgYXR0cmlidXRlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgYXN5bmMgZXhlY0NvbW1hbmRTdHlsZShhY3Rpb246IHN0cmluZykge1xuICAgICAgICBjb25zdCBzZWxlY3Rpb246IFNlbGVjdGlvbiB8IG51bGwgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gPyB0aGlzLmN1cnJlbnRTZWxlY3Rpb24gOiB0aGlzLmdldFNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoIXNlbGVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFuY2hvck5vZGU6IE5vZGUgPSBzZWxlY3Rpb24uYW5jaG9yTm9kZTtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudEVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnRFZGl0b3IgPSB0aGlzLmZpbmRQYXJlbnRFZGl0b3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYW5jaG9yTm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb250YWluZXI6IEhUTUxFbGVtZW50ID1cbiAgICAgICAgICAgIGFuY2hvck5vZGUubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFICYmIGFuY2hvck5vZGUubm9kZVR5cGUgIT09IE5vZGUuQ09NTUVOVF9OT0RFXG4gICAgICAgICAgICAgICAgPyAoYW5jaG9yTm9kZSBhcyBIVE1MRWxlbWVudClcbiAgICAgICAgICAgICAgICA6IGFuY2hvck5vZGUucGFyZW50RWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2FtZVNlbGVjdGlvbjogYm9vbGVhbiA9IGNvbnRhaW5lciAmJiBjb250YWluZXIuaW5uZXJUZXh0ID09PSBzZWxlY3Rpb24udG9TdHJpbmcoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlSW5saW5lU2VsZWN0aW9uKGNvbnRhaW5lciwgdHJ1ZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHNhbWVTZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICF0aGlzLmlzQ29udGFpbmVyKHRoaXMuY29udGFpbmVycywgY29udGFpbmVyKSAmJlxuICAgICAgICAgICAgdGhpcy5oYXNTdHlsZShjb250YWluZXIpICYmXG4gICAgICAgICAgICBzZWxlY3Rpb24udG9TdHJpbmcoKSA9PT0gdGhpcy5oYXNTdHlsZShjb250YWluZXIpLmlubmVyVGV4dFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd1cGRhdGUnKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlU2VsZWN0aW9uKHNlbGVjdGlvbiwgdGhpcy5oYXNTdHlsZShjb250YWluZXIpLCBhY3Rpb24sIHRoaXMuY29udGFpbmVycyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygncmVwbGFjZScpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXBsYWNlU2VsZWN0aW9uKGNvbnRhaW5lciwgYWN0aW9uLCBzZWxlY3Rpb24sIHRoaXMuY29udGFpbmVycyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5jbGVhbnVwQ29udGFpbmVyKHNlbGVjdGlvbiwgY29udGFpbmVyLCB0cnVlKTtcbiAgICAgICAgaWYgKHRoaXMubW9kaWZpZWRDb250ZW50KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlc2V0SW5saW5lU2VsZWN0aW9uKGNvbnRhaW5lciwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHVwZGF0ZVNlbGVjdGlvbihzZWxlY3Rpb246IFNlbGVjdGlvbiwgY29udGFpbmVyOiBIVE1MRWxlbWVudCwgYWN0aW9uOiBzdHJpbmcsIGNvbnRhaW5lcnM6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5zdHlsZSkge1xuICAgICAgICAgICAgY29uc3QgY3NzID0gdGhpcy5zdHlsZS5wcm9wZXJ0eTtcbiAgICAgICAgICAgIGNvbnRhaW5lci5zdHlsZVtjc3NdID0gYXdhaXQgdGhpcy5nZXRTdHlsZVZhbHVlKGNvbnRhaW5lciwgYWN0aW9uLCBjb250YWluZXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlOiBSYW5nZSA9IHRoaXMuZ2V0UmFuZ2VPYmplY3Qoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGxldCBuZXdFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLmhhc1N0eWxlKGNvbnRhaW5lcikgPyAnc3BhbicgOiB0aGlzLnRhZyk7XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5jbGFzcykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlQ2hpbGRyZW5DbGFzc2VzKG5ld0VsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzVG9BcHBseSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NUb0FwcGx5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmF0dHJpYnV0ZXNUb0FwcGx5LmZvckVhY2goKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBuZXdFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUubmFtZSwgYXR0cmlidXRlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld0VsZW1lbnQgPSB0aGlzLnNldElubGluZVN0eWxlKGNvbnRhaW5lciwgbmV3RWxlbWVudCk7XG5cbiAgICAgICAgICAgIHdoaWxlIChjb250YWluZXIuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50Q2xvbmUgPSBjb250YWluZXIuZmlyc3RDaGlsZC5jbG9uZU5vZGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgbmV3RWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50Q2xvbmUpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5maXJzdENoaWxkLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb250YWluZXIucGFyZW50RWxlbWVudC5yZXBsYWNlQ2hpbGQobmV3RWxlbWVudCwgY29udGFpbmVyKTtcblxuICAgICAgICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShuZXdFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVwbGFjZVNlbGVjdGlvbihjb250YWluZXI6IEhUTUxFbGVtZW50LCBhY3Rpb246IHN0cmluZywgc2VsZWN0aW9uOiBTZWxlY3Rpb24sIGNvbnRhaW5lcnM6IHN0cmluZykge1xuICAgICAgICBsZXQgcGFyZW50Q29udGFpbmVyID0gdGhpcy5oYXNTdHlsZShjb250YWluZXIpO1xuXG4gICAgICAgIGNvbnN0IGZvY3VzTm9kZTogTm9kZSA9IHNlbGVjdGlvbi5mb2N1c05vZGU7XG4gICAgICAgIGxldCBvZmZzZXRDb250YWluZXI6IEhUTUxFbGVtZW50ID1cbiAgICAgICAgICAgIGZvY3VzTm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUgJiYgZm9jdXNOb2RlLm5vZGVUeXBlICE9PSBOb2RlLkNPTU1FTlRfTk9ERVxuICAgICAgICAgICAgICAgID8gKGZvY3VzTm9kZSBhcyBIVE1MRWxlbWVudClcbiAgICAgICAgICAgICAgICA6IGZvY3VzTm9kZS5wYXJlbnRFbGVtZW50O1xuICAgICAgICBsZXQgb2Zmc2V0UGFyZW50Q29udGFpbmVyID0gdGhpcy5oYXNTdHlsZShvZmZzZXRDb250YWluZXIpO1xuICAgICAgICBpZiAocGFyZW50Q29udGFpbmVyICYmIHBhcmVudENvbnRhaW5lciA9PT0gb2Zmc2V0UGFyZW50Q29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZTogUmFuZ2UgPSB0aGlzLmdldFJhbmdlT2JqZWN0KHNlbGVjdGlvbik7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RnJhZ21lbnQ6IERvY3VtZW50RnJhZ21lbnQgPSByYW5nZS5leHRyYWN0Q29udGVudHMoKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICBjdXJyZW50RWxlbWVudC5hcHBlbmRDaGlsZChjdXJyZW50RnJhZ21lbnQpO1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuc3R5bGUgJiYgdGhpcy5zdHlsZS52YWx1ZS5pbmRleE9mKCckMScpID4gLTEpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50RWxlbWVudC5zdHlsZVt0aGlzLnN0eWxlLnByb3BlcnR5XSA9IHRoaXMuc3R5bGUudmFsdWUucmVwbGFjZSgnJDEnLCB0aGlzLnN0eWxlLmlucHV0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGlmaWVzLmNsYXNzKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZW1vdmVDaGlsZHJlbkNsYXNzZXMoY3VycmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzVG9BcHBseSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzVG9BcHBseSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuYXR0cmlidXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVzVG9BcHBseS5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZS5uYW1lLCBhdHRyaWJ1dGUudmFsdWUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGN1cnJlbnRFbGVtZW50VG9BcHBlbmQgPSBjdXJyZW50RWxlbWVudDtcbiAgICAgICAgICAgIGxldCBjdXJyZW50UGFyZW50RWxlbWVudCA9IGNvbnRhaW5lcjtcbiAgICAgICAgICAgIHdoaWxlIChjdXJyZW50UGFyZW50RWxlbWVudCAhPT0gcGFyZW50Q29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRtcEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGN1cnJlbnRQYXJlbnRFbGVtZW50LnRhZ05hbWUpO1xuICAgICAgICAgICAgICAgIHRtcEVsZW1lbnQgPSB0aGlzLnNldElubGluZVN0eWxlKGN1cnJlbnRQYXJlbnRFbGVtZW50LCB0bXBFbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIHRtcEVsZW1lbnQuYXBwZW5kQ2hpbGQoY3VycmVudEVsZW1lbnRUb0FwcGVuZCk7XG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnRUb0FwcGVuZCA9IHRtcEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY3VycmVudFBhcmVudEVsZW1lbnQgPSBjdXJyZW50UGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc0xUUiA9IHRoaXMuaXNBbmNob3JCZWZvcmVGb2N1cyhcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24uYW5jaG9yTm9kZSxcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LFxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5mb2N1c05vZGUsXG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uLmZvY3VzT2Zmc2V0XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uRm9jdXNPZmZzZXQgPSBpc0xUUiA/IHNlbGVjdGlvbi5hbmNob3JPZmZzZXQgOiBzZWxlY3Rpb24uZm9jdXNPZmZzZXQ7XG4gICAgICAgICAgICBsZXQgc2VsZWN0aW9uRm9jdXNOb2RlID0gaXNMVFIgPyBzZWxlY3Rpb24uYW5jaG9yTm9kZSA6IHNlbGVjdGlvbi5mb2N1c05vZGU7XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQocGFyZW50Q29udGFpbmVyLCAwLCBzZWxlY3Rpb25Gb2N1c05vZGUsIHNlbGVjdGlvbkZvY3VzT2Zmc2V0KTtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICBsZXQgcHJlUmFuZ2U6IFJhbmdlID0gdGhpcy5nZXRSYW5nZU9iamVjdChuZXdTZWxlY3Rpb24pO1xuXG4gICAgICAgICAgICBjb25zdCBwcmVGcmFnbWVudDogRG9jdW1lbnRGcmFnbWVudCA9IHByZVJhbmdlLmV4dHJhY3RDb250ZW50cygpO1xuXG4gICAgICAgICAgICBsZXQgbmV3RWxlbWVudDogSFRNTEVsZW1lbnQgPSA8SFRNTEVsZW1lbnQ+cGFyZW50Q29udGFpbmVyLmNsb25lTm9kZSgpO1xuICAgICAgICAgICAgbmV3RWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgICAgIG5ld0VsZW1lbnQuYXBwZW5kQ2hpbGQocHJlRnJhZ21lbnQpO1xuXG4gICAgICAgICAgICBwYXJlbnRDb250YWluZXIucGFyZW50RWxlbWVudC5pbnNlcnRCZWZvcmUoY3VycmVudEVsZW1lbnRUb0FwcGVuZCwgcGFyZW50Q29udGFpbmVyKTtcbiAgICAgICAgICAgIHBhcmVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50Lmluc2VydEJlZm9yZShuZXdFbGVtZW50LCBjdXJyZW50RWxlbWVudFRvQXBwZW5kKTtcbiAgICAgICAgICAgIHNlbGVjdGlvbi5zZWxlY3RBbGxDaGlsZHJlbihjdXJyZW50RWxlbWVudFRvQXBwZW5kKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJhbmdlOiBSYW5nZSA9IHRoaXMuZ2V0UmFuZ2VPYmplY3Qoc2VsZWN0aW9uKTtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50OiBEb2N1bWVudEZyYWdtZW50ID0gcmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7XG5cbiAgICAgICAgICAgIGxldCBuZXdFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBhd2FpdCB0aGlzLmNyZWF0ZUVsZW1lbnQoY29udGFpbmVyLCBhY3Rpb24sIGNvbnRhaW5lcnMpO1xuICAgICAgICAgICAgbmV3RWxlbWVudC5hcHBlbmQoZnJhZ21lbnQpO1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuY2xhc3MpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZUNoaWxkcmVuQ2xhc3NlcyhuZXdFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jbGFzc1RvQXBwbHkgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzVG9BcHBseSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuYXR0cmlidXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hdHRyaWJ1dGVzVG9BcHBseS5mb3JFYWNoKChhdHRyaWJ1dGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLm5hbWUsIGF0dHJpYnV0ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJhbmdlLmluc2VydE5vZGUobmV3RWxlbWVudCk7XG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0QWxsQ2hpbGRyZW4obmV3RWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQW5jaG9yQmVmb3JlRm9jdXMoYW5jaG9yTm9kZTogTm9kZSwgYW5jaG9yT2Zmc2V0OiBudW1iZXIsIGZvY3VzTm9kZTogTm9kZSwgZm9jdXNPZmZzZXQ6IG51bWJlcikge1xuICAgICAgICBsZXQgYW5jaG9yUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgICBsZXQgZm9jdXNSYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICAgIGFuY2hvclJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCk7XG4gICAgICAgIGFuY2hvclJhbmdlLnNldEVuZChhbmNob3JOb2RlLCBhbmNob3JPZmZzZXQpO1xuICAgICAgICBmb2N1c1JhbmdlLnNldFN0YXJ0KGZvY3VzTm9kZSwgZm9jdXNPZmZzZXQpO1xuICAgICAgICBmb2N1c1JhbmdlLnNldEVuZChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcbiAgICAgICAgaWYgKGFuY2hvclJhbmdlLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5TVEFSVF9UT19TVEFSVCwgZm9jdXNSYW5nZSkgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaGFzU3R5bGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgICAgICAvLyBmb3VuZEVsZW1lbnQgd2FzIGFkZGVkIGJlY2F1c2Ugb2YgYSByZXR1cm4gaXNzdWUgd2hlbiBhIGNsYXNzIGlzIGFwcGxpZWRcbiAgICAgICAgbGV0IGZvdW5kRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgICAgICBpZiAoIWVsZW1lbnQgfHwgZWxlbWVudC5jbGFzc0xpc3Q/LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubW9kaWZpZXMuc3R5bGUpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlICYmXG4gICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZVt0aGlzLnN0eWxlLnByb3BlcnR5XSAmJlxuICAgICAgICAgICAgICAgICh0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPiAtMSA/IHRydWUgOiBlbGVtZW50LnN0eWxlW3RoaXMuc3R5bGUucHJvcGVydHldID09PSB0aGlzLnN0eWxlLnZhbHVlKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZm91bmRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGlmaWVzLmNsYXNzKSB7XG4gICAgICAgICAgICB0aGlzLmNsYXNzZXMuc3BsaXQoJywnKS5mb3JFYWNoKChjbGFzc05hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5jbGFzc0xpc3Q/LmNvbnRhaW5zKGNsYXNzTmFtZSkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZm91bmRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RpZmllcy50YWcpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCkgPT09IHRoaXMudGFnLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGlmaWVzLmF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPSB0aGlzLmF0dHJpYnV0ZU5hbWUuc3BsaXQoJywnKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZWxlbWVudC5nZXRBdHRyaWJ1dGUgPT09ICdmdW5jdGlvbicgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlc1tpXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZm91bmRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmb3VuZEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3VuZEVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmb3VuZEVsZW1lbnQgJiYgZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNTdHlsZShlbGVtZW50LnBhcmVudEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0U3R5bGVWYWx1ZShjb250YWluZXI6IEhUTUxFbGVtZW50LCBhY3Rpb246IHN0cmluZywgY29udGFpbmVyczogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdHlsZS52YWx1ZS5pbmRleE9mKCckMScpID4gLTEgPyB0aGlzLnN0eWxlLnZhbHVlLnJlcGxhY2UoJyQxJywgdGhpcy5zdHlsZS5pbnB1dCkgOiB0aGlzLnN0eWxlLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaGFzU3R5bGUoY29udGFpbmVyKSAmJiB0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdHlsZS5kZWZhdWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3R5bGU6IE5vZGUgfCBudWxsID0gYXdhaXQgdGhpcy5maW5kU3R5bGVOb2RlKGNvbnRhaW5lciwgYWN0aW9uLCBjb250YWluZXJzKTtcblxuICAgICAgICBpZiAodGhpcy5oYXNTdHlsZShzdHlsZSBhcyBIVE1MRWxlbWVudCkgJiYgdGhpcy5zdHlsZS52YWx1ZS5pbmRleE9mKCckMScpID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3R5bGUuZGVmYXVsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnN0eWxlLnZhbHVlLmluZGV4T2YoJyQxJykgPiAtMSA/IHRoaXMuc3R5bGUudmFsdWUucmVwbGFjZSgnJDEnLCB0aGlzLnN0eWxlLmlucHV0KSA6IHRoaXMuc3R5bGUudmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBmaW5kU3R5bGVOb2RlKG5vZGU6IE5vZGUsIHN0eWxlOiBzdHJpbmcsIGNvbnRhaW5lcnM6IHN0cmluZyk6IFByb21pc2U8Tm9kZSB8IG51bGw+IHtcbiAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gJ0hUTUwnIHx8IG5vZGUubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gJ0JPRFknKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ29udGFpbmVyKGNvbnRhaW5lcnMsIG5vZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhhc1N0eWxlOiBib29sZWFuID1cbiAgICAgICAgICAgIChub2RlIGFzIEhUTUxFbGVtZW50KS5zdHlsZVtzdHlsZV0gIT09IG51bGwgJiZcbiAgICAgICAgICAgIChub2RlIGFzIEhUTUxFbGVtZW50KS5zdHlsZVtzdHlsZV0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlW3N0eWxlXSAhPT0gJyc7XG5cbiAgICAgICAgaWYgKGhhc1N0eWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbmRTdHlsZU5vZGUobm9kZS5wYXJlbnROb2RlLCBzdHlsZSwgY29udGFpbmVycyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjcmVhdGVFbGVtZW50KGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIGFjdGlvbjogc3RyaW5nLCBjb250YWluZXJzOiBzdHJpbmcpOiBQcm9taXNlPEhUTUxFbGVtZW50PiB7XG4gICAgICAgIGxldCBuZXdFbGVtZW50OiBIVE1MRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy50YWcpO1xuICAgICAgICBpZiAodGhpcy5tb2RpZmllcy5zdHlsZSkge1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydHkgPSB0aGlzLnN0eWxlLnByb3BlcnR5O1xuICAgICAgICAgICAgbmV3RWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBhd2FpdCB0aGlzLmdldFN0eWxlVmFsdWUoY29udGFpbmVyLCBhY3Rpb24sIGNvbnRhaW5lcnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ld0VsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZW1vdmVDaGlsZHJlbkNsYXNzZXMoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaGlsZHJlbjogSFRNTENvbGxlY3Rpb24gPSBlbGVtZW50LmNoaWxkcmVuO1xuICAgICAgICBmb3IgKHZhciBjdXJyZW50RWxlbWVudCA9IGNoaWxkcmVuWzBdOyBjdXJyZW50RWxlbWVudDsgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5uZXh0RWxlbWVudFNpYmxpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuY2xhc3Nlcy5zcGxpdCgnLCcpLmZvckVhY2goKGNsYXNzTmFtZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RWxlbWVudC5jbGFzc0xpc3Q/LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnY2xhc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlbW92ZUNoaWxkcmVuQ2xhc3Nlcyg8SFRNTEVsZW1lbnQ+Y3VycmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjbGVhbnVwQ29udGFpbmVyKHNlbGVjdGlvbjogU2VsZWN0aW9uLCBjb250YWluZXIsIGZpcnN0VGltZUNhbGw6IEJvb2xlYW4pIHtcbiAgICAgICAgbGV0IHBhcmVudENvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG4gICAgICAgIGxldCBwYXJlbnRGb3VuZDogQm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAoZmlyc3RUaW1lQ2FsbCkge1xuICAgICAgICAgICAgcGFyZW50Q29udGFpbmVyID0gPEhUTUxFbGVtZW50PnNlbGVjdGlvbi5hbmNob3JOb2RlO1xuICAgICAgICAgICAgd2hpbGUgKHBhcmVudENvbnRhaW5lciAmJiAhcGFyZW50Rm91bmQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGFyZW50Q29udGFpbmVyLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBwYXJlbnRDb250YWluZXIuY2xhc3NMaXN0Py5jb250YWlucygnY2UtcGFyYWdyYXBoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Rm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmVudENvbnRhaW5lciA9IHBhcmVudENvbnRhaW5lci5wYXJlbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmVudENvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBhcmVudENvbnRhaW5lciB8fCAhcGFyZW50Q29udGFpbmVyLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyZW50Q29udGFpbmVyLm5vcm1hbGl6ZSgpO1xuXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuOiBOb2RlW10gPSBBcnJheS5mcm9tKHBhcmVudENvbnRhaW5lci5jaGlsZE5vZGVzKTtcbiAgICAgICAgaWYgKGNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBjdXJyZW50Tm9kZSA9IGNoaWxkcmVuWzBdOyBjdXJyZW50Tm9kZTsgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5uZXh0U2libGluZykge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jbGVhbnVwQ29udGFpbmVyKHNlbGVjdGlvbiwgY3VycmVudE5vZGUsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGlkZW50aWNhbEVsZW1lbnRzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgICAgICAgICAgIGlkZW50aWNhbEVsZW1lbnRzICYmXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLm5leHRTaWJsaW5nICYmXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZS5uZXh0U2libGluZy5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gPEVsZW1lbnQ+Y3VycmVudE5vZGU7XG4gICAgICAgICAgICAgICAgICAgIGxldCBuZXh0RWxlbWVudCA9IDxFbGVtZW50PmN1cnJlbnROb2RlLm5leHRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlkZW50aWNhbElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50LCBuZXh0RWxlbWVudCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmV4dEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlkZW50aWNhbENsYXNzTGlzdChjdXJyZW50RWxlbWVudCwgbmV4dEVsZW1lbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhKDxFbGVtZW50PmN1cnJlbnRFbGVtZW50KS5oYXNBdHRyaWJ1dGVzKCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICEoPEVsZW1lbnQ+bmV4dEVsZW1lbnQpLmhhc0F0dHJpYnV0ZXMoKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LmlubmVySFRNTCArPSBuZXh0RWxlbWVudC5pbm5lckhUTUw7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0RWxlbWVudC5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW9kaWZpZWRDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWNhbEVsZW1lbnRzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUgJiZcbiAgICAgICAgICAgICAgICAgICAgKDxFbGVtZW50PmN1cnJlbnROb2RlKS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzcGFuJyAmJlxuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmdldElubGluZVN0eWxlKDxFbGVtZW50PmN1cnJlbnROb2RlKSkubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgICghKDxFbGVtZW50PmN1cnJlbnROb2RlKS5jbGFzc0xpc3QgfHwgKDxFbGVtZW50PmN1cnJlbnROb2RlKS5jbGFzc0xpc3QubGVuZ3RoID09PSAwKSAmJlxuICAgICAgICAgICAgICAgICAgICAhKDxFbGVtZW50PmN1cnJlbnROb2RlKS5oYXNBdHRyaWJ1dGVzKClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnROb2RlRmlyc3RDaGlsZCA9IGN1cnJlbnROb2RlO1xuXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChjdXJyZW50Tm9kZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAoPEVsZW1lbnQ+Y3VycmVudE5vZGVGaXJzdENoaWxkLnBhcmVudEVsZW1lbnQpLmluc2VydEJlZm9yZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZS5maXJzdENoaWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlRmlyc3RDaGlsZC5uZXh0U2libGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlRmlyc3RDaGlsZCA9IGN1cnJlbnROb2RlRmlyc3RDaGlsZC5uZXh0U2libGluZztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAoPEVsZW1lbnQ+Y3VycmVudE5vZGUpLnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGlmaWVkQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLm5vcm1hbGl6ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpZGVudGljYWxDbGFzc0xpc3QoY3VycmVudEVsZW1lbnQsIG5leHRFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBbLi4uY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0XS5ldmVyeSgoY2xhc3NMaXN0KSA9PiBuZXh0RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NMaXN0KSkgJiZcbiAgICAgICAgICAgIFsuLi5uZXh0RWxlbWVudC5jbGFzc0xpc3RdLmV2ZXJ5KChjbGFzc0xpc3QpID0+IGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc0xpc3QpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaWRlbnRpY2FsSW5saW5lU3R5bGUoY3VycmVudEVsZW1lbnQsIG5leHRFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50SW5saW5lU3R5bGUgPSB0aGlzLmdldElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50KTtcbiAgICAgICAgY29uc3QgbmV4dEVsZW1lbnRJbmxpbmVTdHlsZSA9IHRoaXMuZ2V0SW5saW5lU3R5bGUobmV4dEVsZW1lbnQpO1xuICAgICAgICBsZXQgY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZVNvcnRlZCA9IHRoaXMuc29ydElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50SW5saW5lU3R5bGUpO1xuICAgICAgICBsZXQgbmV4dEVsZW1lbnRJbmxpbmVTdHlsZVNvcnRlZCA9IHRoaXMuc29ydElubGluZVN0eWxlKG5leHRFbGVtZW50SW5saW5lU3R5bGUpO1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZVNvcnRlZCkgPT09IEpTT04uc3RyaW5naWZ5KG5leHRFbGVtZW50SW5saW5lU3R5bGVTb3J0ZWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50KTogT2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGN1cnJlbnRFbGVtZW50KVxuICAgICAgICAgICAgLnNvcnQoKFssIGFdOiBhbnksIFssIGJdOiBhbnkpID0+IGEgLSBiKVxuICAgICAgICAgICAgLnJlZHVjZSgociwgW2ssIHZdKSA9PiAoeyAuLi5yLCBba106IHYgfSksIHt9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldElubGluZVN0eWxlKGN1cnJlbnRFbGVtZW50KTogT2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oY3VycmVudEVsZW1lbnQuc3R5bGUpLnJlZHVjZSgoc3R5bGU6IHN0cmluZywgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBzdHlsZVtuYW1lXSA9IGN1cnJlbnRFbGVtZW50LnN0eWxlW25hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgICB9LCB7fSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbmxpbmVTdHlsZShjdXJyZW50RWxlbWVudCwgbmV4dEVsZW1lbnQpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50SW5saW5lU3R5bGU6IE9iamVjdCA9IEFycmF5LmZyb20oY3VycmVudEVsZW1lbnQuc3R5bGUpLnJlZHVjZSgoc3R5bGU6IHN0cmluZywgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBzdHlsZVtuYW1lXSA9IGN1cnJlbnRFbGVtZW50LnN0eWxlW25hbWVdO1xuICAgICAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgICB9LCB7fSk7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZSkge1xuICAgICAgICAgICAgbmV4dEVsZW1lbnQuc3R5bGVbcHJvcGVydHldID0gY3VycmVudEVsZW1lbnRJbmxpbmVTdHlsZVtwcm9wZXJ0eV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHRFbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNDb250YWluZXIoY29udGFpbmVyczogc3RyaW5nLCBub2RlOiBOb2RlKTogQm9vbGVhbiB7XG4gICAgICAgIGlmIChjb250YWluZXJzLnNwbGl0KCcsJykuaW5kZXhPZihub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2F2ZUlubGluZVNlbGVjdGlvbihjb250YWluZXI6IEhUTUxFbGVtZW50LCBmaXJzdFRpbWVDYWxsOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGZpcnN0VGltZUNhbGwpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lciA9IDxIVE1MRWxlbWVudD50aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuY2UtcGFyYWdyYXBoJykuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICB0aGlzLmZvdW5kQW5jaG9yTm9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzTm9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5mb3VuZEFuY2hvck9mZnNldCA9IDA7XG4gICAgICAgICAgICB0aGlzLmZvdW5kRm9jdXNPZmZzZXQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGxldCBuZXh0Tm9kZSA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgICB3aGlsZSAobmV4dE5vZGUgJiYgKCF0aGlzLmZvdW5kQW5jaG9yTm9kZSB8fCAhdGhpcy5mb3VuZEZvY3VzTm9kZSkpIHtcbiAgICAgICAgICAgIGlmIChuZXh0Tm9kZSA9PT0gdGhpcy5zZWxlY3RlZEFuY2hvck5vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvdW5kQW5jaG9yTm9kZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3VuZEFuY2hvck9mZnNldCArPSB0aGlzLmFuY2hvck9mZnNldDtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICBsZXQgcmFuZ2UgPSB0aGlzLmdldFJhbmdlT2JqZWN0KHNlbGVjdGlvbik7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEZyYWdtZW50OiBEb2N1bWVudEZyYWdtZW50ID0gcmFuZ2UuY2xvbmVDb250ZW50cygpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50OiBIVE1MU3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY3VycmVudEZyYWdtZW50KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZm91bmRGb2N1c09mZnNldCA9IHRoaXMuZm91bmRBbmNob3JPZmZzZXQgKyBjdXJyZW50RWxlbWVudC5pbm5lclRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMuZm91bmRGb2N1c05vZGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm91bmRBbmNob3JOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JPZmZzZXQgKz0gbmV4dE5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm91bmRGb2N1c05vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzT2Zmc2V0ICs9IG5leHROb2RlLnRleHRDb250ZW50Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV4dE5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2F2ZUlubGluZVNlbGVjdGlvbig8SFRNTEVsZW1lbnQ+bmV4dE5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVzZXRJbmxpbmVTZWxlY3Rpb24oY29udGFpbmVyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsLCBmaXJzdFRpbWVDYWxsOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGZpcnN0VGltZUNhbGwpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lciA9IDxIVE1MRWxlbWVudD50aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuY2UtcGFyYWdyYXBoJykuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICB0aGlzLmZvdW5kQW5jaG9yTm9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzTm9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy50bXBPZmZzZXQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGxldCBuZXh0Tm9kZSA9IGNvbnRhaW5lci5maXJzdENoaWxkO1xuICAgICAgICB3aGlsZSAobmV4dE5vZGUgJiYgKCF0aGlzLmZvdW5kQW5jaG9yTm9kZSB8fCAhdGhpcy5mb3VuZEZvY3VzTm9kZSkpIHtcbiAgICAgICAgICAgIGlmIChuZXh0Tm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm91bmRBbmNob3JOb2RlICYmIHRoaXMuZm91bmRBbmNob3JPZmZzZXQgLSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGggPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JOb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmNob3JPZmZzZXQgPSB0aGlzLmZvdW5kQW5jaG9yT2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQW5jaG9yTm9kZSA9IG5leHROb2RlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm91bmRGb2N1c05vZGUgJiYgdGhpcy5mb3VuZEZvY3VzT2Zmc2V0IC0gbmV4dE5vZGUudGV4dENvbnRlbnQubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3VuZEZvY3VzTm9kZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNPZmZzZXQgPSB0aGlzLmZvdW5kRm9jdXNPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGb2N1c05vZGUgPSBuZXh0Tm9kZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50bXBPZmZzZXQgKz0gbmV4dE5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMuZm91bmRBbmNob3JPZmZzZXQgLT0gbmV4dE5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMuZm91bmRGb2N1c09mZnNldCAtPSBuZXh0Tm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV4dE5vZGUuZmlyc3RDaGlsZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVzZXRJbmxpbmVTZWxlY3Rpb24oPEhUTUxFbGVtZW50Pm5leHROb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHROb2RlID0gbmV4dE5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpcnN0VGltZUNhbGwpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -21,6 +21,11 @@ export class InlineTextTool extends InlineStyleTool {
21
21
  if (dropdown) {
22
22
  if (dropdown.classList.contains('hidden')) {
23
23
  dropdown.style.left = this.nodes.button.offsetLeft.toString() + 'px';
24
+ dropdown.style.top =
25
+ '-' +
26
+ (this.parentEditor.querySelector('.ce-inline-toolbar__buttons').offsetHeight -
27
+ (this.nodes.button.offsetTop + this.nodes.button.offsetHeight)).toString() +
28
+ 'px';
24
29
  dropdown.classList.remove('hidden');
25
30
  this.currentSelection = this.getSelection();
26
31
  document.addEventListener('click', ($event) => this.isDropdownFocusedOut($event));
@@ -95,4 +100,4 @@ export class InlineTextTool extends InlineStyleTool {
95
100
  return currentElement;
96
101
  }
97
102
  }
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9wYXVsaW5lL0RvY3VtZW50cy93b3Jrc3BhY2Uvd2l6aS1ibG9jay9wcm9qZWN0cy93aXppLWJsb2NrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvY29tcG9uZW50cy9lZGl0b3Jqcy90b29scy9pbmxpbmUvdG9vbC10eXBlL3RleHQtdG9vbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRWhFLE1BQU0sT0FBZ0IsY0FBZSxTQUFRLGVBQWU7SUFBNUQ7O1FBR0ksbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFJaEMsdUJBQWtCLEdBQVMsSUFBSSxDQUFDO1FBRWhDLHNCQUFpQixHQUFTLElBQUksQ0FBQztRQUUvQixpQkFBWSxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBRTFCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDLENBQUM7UUFNekIsZ0JBQVcsR0FBVztZQUNsQixTQUFTLEVBQUUseUJBQXlCO1lBQ3BDLEdBQUcsRUFBRSw4QkFBOEI7U0FDdEMsQ0FBQztJQXdGTixDQUFDO0lBdEZHLFlBQVk7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQy9DO1FBQ0QsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksUUFBUSxFQUFFO1lBQ1YsSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDekIsUUFBUyxDQUFD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QWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1NBQ2pEO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5saW5lU3R5bGVUb29sIH0gZnJvbSAnLi9pbmxpbmUtc3R5bGUtdG9vbC5jb21wb25lbnQnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW5saW5lVGV4dFRvb2wgZXh0ZW5kcyBJbmxpbmVTdHlsZVRvb2wge1xuICAgIG5vZGVzOiB7IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgfTtcblxuICAgIGlzRHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjdXJyZW50U2VsZWN0aW9uPzogU2VsZWN0aW9uO1xuXG4gICAgc2VsZWN0ZWRBbmNob3JOb2RlOiBOb2RlID0gbnVsbDtcblxuICAgIHNlbGVjdGVkRm9jdXNOb2RlOiBOb2RlID0gbnVsbDtcblxuICAgIGFuY2hvck9mZnNldDogbnVtYmVyID0gLTE7XG5cbiAgICBmb2N1c09mZnNldDogbnVtYmVyID0gLTE7XG5cbiAgICBDU1M6IGFueTtcblxuICAgIGFwaTogYW55O1xuXG4gICAgZHJvcGRvd25Dc3M6IE9iamVjdCA9IHtcbiAgICAgICAgY29udGFpbmVyOiAnY2UtaW5saW5lLWFjdGlvbnMtLXRleHQnLFxuICAgICAgICByb3c6ICdjZS1pbmxpbmUtYWN0aW9ucy0tdGV4dF9fcm93JyxcbiAgICB9O1xuXG4gICAgb3BlbkRyb3Bkb3duKCkge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50RWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkcm9wZG93biA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MudGV4dFNlbGVjdGlvbk1vZGlmaWVyKVswXTtcbiAgICAgICAgdGhpcy5zYXZlVXNlclNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoZHJvcGRvd24pIHtcbiAgICAgICAgICAgIGlmIChkcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5kcm9wZG93bikuc3R5bGUubGVmdCA9IHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldExlZnQudG9TdHJpbmcoKSArICdweCc7XG4gICAgICAgICAgICAgICAgZHJvcGRvd24uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgkZXZlbnQpID0+IHRoaXMuaXNEcm9wZG93bkZvY3VzZWRPdXQoJGV2ZW50KSk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0sIDQwMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBkcm9wZG93bi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlRHJvcGRvd24oKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yID0gdGhpcy5maW5kUGFyZW50RWRpdG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRyb3Bkb3duID0gdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLkNTUy50ZXh0U2VsZWN0aW9uTW9kaWZpZXIpWzBdO1xuICAgICAgICB0aGlzLnNhdmVVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChkcm9wZG93bikge1xuICAgICAgICAgICAgaWYgKCFkcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgZHJvcGRvd24uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA0MDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2F2ZVVzZXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlID0gdGhpcy5jdXJyZW50U2VsZWN0aW9uLmFuY2hvck5vZGU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGb2N1c05vZGUgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZm9jdXNOb2RlO1xuICAgICAgICB0aGlzLmFuY2hvck9mZnNldCA9IHRoaXMuY3VycmVudFNlbGVjdGlvbi5hbmNob3JPZmZzZXQ7XG4gICAgICAgIHRoaXMuZm9jdXNPZmZzZXQgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZm9jdXNPZmZzZXQ7XG4gICAgfVxuXG4gICAgcmVzZXRVc2VyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlLCB0aGlzLmFuY2hvck9mZnNldCwgdGhpcy5zZWxlY3RlZEZvY3VzTm9kZSwgdGhpcy5mb2N1c09mZnNldCk7XG4gICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgaXNEcm9wZG93bkZvY3VzZWRPdXQoJGV2ZW50KSB7XG4gICAgICAgIGxldCBkcm9wZG93blNlbGVjdGlvbiA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MudGV4dFNlbGVjdGlvbk1vZGlmaWVyKVswXTtcbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bk9wZW4pIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gJGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIHdoaWxlIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuZHJvcGRvd25Dc3NbJ2NvbnRhaW5lciddKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsICgkZXZlbnQpID0+IHRoaXMuaXNEcm9wZG93bkZvY3VzZWRPdXQoJGV2ZW50KSk7XG4gICAgICAgICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgICAgICAgICBkcm9wZG93blNlbGVjdGlvbi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIHRoaXMuYXBpLnRvb2xiYXIuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFBhcmVudE1vZGlmaWVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gJ2gxLGgyLGgzLGg0LGg1LGg2LHAsdWwsb2wsYmxvY2txdW90ZSc7XG4gICAgICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIGlmIChjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdkaXYnKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiA8SFRNTEVsZW1lbnQ+Y3VycmVudEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gPEhUTUxFbGVtZW50PmN1cnJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jZS1wYXJhZ3JhcGgnKS5jaGlsZHJlblswXTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAobW9kaWZpZXJzLnNwbGl0KCcsJykuaW5kZXhPZihjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2RpdicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudEVsZW1lbnQ7XG4gICAgfVxufVxuIl19
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC10b29sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvaG9tZS9icmlhbi9Eb2N1bWVudHMvd29ya3NwYWNlL3dpemktYmxvY2svcHJvamVjdHMvd2l6aS1ibG9jay9zcmMvIiwic291cmNlcyI6WyJsaWIvc2hhcmVkL2NvbXBvbmVudHMvZWRpdG9yanMvdG9vbHMvaW5saW5lL3Rvb2wtdHlwZS90ZXh0LXRvb2wuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVoRSxNQUFNLE9BQWdCLGNBQWUsU0FBUSxlQUFlO0lBQTVEOztRQUdJLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBSWhDLHVCQUFrQixHQUFTLElBQUksQ0FBQztRQUVoQyxzQkFBaUIsR0FBUyxJQUFJLENBQUM7UUFFL0IsaUJBQVksR0FBVyxDQUFDLENBQUMsQ0FBQztRQUUxQixnQkFBVyxHQUFXLENBQUMsQ0FBQyxDQUFDO1FBTXpCLGdCQUFXLEdBQVc7WUFDbEIsU0FBUyxFQUFFLHlCQUF5QjtZQUNwQyxHQUFHLEVBQUUsOEJBQThCO1NBQ3RDLENBQUM7SUErRk4sQ0FBQztJQTdGRyxZQUFZO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMvQztRQUNELElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLFFBQVEsRUFBRTtZQUNWLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3pCLFFBQVMsQ0FBQyxL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QUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDOUUsSUFBSSxjQUFjLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssRUFBRTtnQkFDaEQsT0FBTyxJQUFJLENBQUM7YUFDZjtZQUNELGNBQWMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDO1NBQ2pEO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5saW5lU3R5bGVUb29sIH0gZnJvbSAnLi9pbmxpbmUtc3R5bGUtdG9vbC5jb21wb25lbnQnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW5saW5lVGV4dFRvb2wgZXh0ZW5kcyBJbmxpbmVTdHlsZVRvb2wge1xuICAgIG5vZGVzOiB7IGJ1dHRvbjogSFRNTEJ1dHRvbkVsZW1lbnQgfTtcblxuICAgIGlzRHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjdXJyZW50U2VsZWN0aW9uPzogU2VsZWN0aW9uO1xuXG4gICAgc2VsZWN0ZWRBbmNob3JOb2RlOiBOb2RlID0gbnVsbDtcblxuICAgIHNlbGVjdGVkRm9jdXNOb2RlOiBOb2RlID0gbnVsbDtcblxuICAgIGFuY2hvck9mZnNldDogbnVtYmVyID0gLTE7XG5cbiAgICBmb2N1c09mZnNldDogbnVtYmVyID0gLTE7XG5cbiAgICBDU1M6IGFueTtcblxuICAgIGFwaTogYW55O1xuXG4gICAgZHJvcGRvd25Dc3M6IE9iamVjdCA9IHtcbiAgICAgICAgY29udGFpbmVyOiAnY2UtaW5saW5lLWFjdGlvbnMtLXRleHQnLFxuICAgICAgICByb3c6ICdjZS1pbmxpbmUtYWN0aW9ucy0tdGV4dF9fcm93JyxcbiAgICB9O1xuXG4gICAgb3BlbkRyb3Bkb3duKCkge1xuICAgICAgICBpZiAoIXRoaXMucGFyZW50RWRpdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudEVkaXRvciA9IHRoaXMuZmluZFBhcmVudEVkaXRvcigpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkcm9wZG93biA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MudGV4dFNlbGVjdGlvbk1vZGlmaWVyKVswXTtcbiAgICAgICAgdGhpcy5zYXZlVXNlclNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoZHJvcGRvd24pIHtcbiAgICAgICAgICAgIGlmIChkcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5kcm9wZG93bikuc3R5bGUubGVmdCA9IHRoaXMubm9kZXMuYnV0dG9uLm9mZnNldExlZnQudG9TdHJpbmcoKSArICdweCc7XG4gICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD5kcm9wZG93bikuc3R5bGUudG9wID1cbiAgICAgICAgICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgKDxIVE1MRWxlbWVudD50aGlzLnBhcmVudEVkaXRvci5xdWVyeVNlbGVjdG9yKCcuY2UtaW5saW5lLXRvb2xiYXJfX2J1dHRvbnMnKSkub2Zmc2V0SGVpZ2h0IC1cbiAgICAgICAgICAgICAgICAgICAgICAgICh0aGlzLm5vZGVzLmJ1dHRvbi5vZmZzZXRUb3AgKyB0aGlzLm5vZGVzLmJ1dHRvbi5vZmZzZXRIZWlnaHQpXG4gICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoKSArXG4gICAgICAgICAgICAgICAgICAgICdweCc7XG4gICAgICAgICAgICAgICAgZHJvcGRvd24uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uID0gdGhpcy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgkZXZlbnQpID0+IHRoaXMuaXNEcm9wZG93bkZvY3VzZWRPdXQoJGV2ZW50KSk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0sIDQwMCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBkcm9wZG93bi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlRHJvcGRvd24oKSB7XG4gICAgICAgIGlmICghdGhpcy5wYXJlbnRFZGl0b3IpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50RWRpdG9yID0gdGhpcy5maW5kUGFyZW50RWRpdG9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRyb3Bkb3duID0gdGhpcy5wYXJlbnRFZGl0b3IucXVlcnlTZWxlY3RvckFsbCgnLicgKyB0aGlzLkNTUy50ZXh0U2VsZWN0aW9uTW9kaWZpZXIpWzBdO1xuICAgICAgICB0aGlzLnNhdmVVc2VyU2VsZWN0aW9uKCk7XG4gICAgICAgIGlmIChkcm9wZG93bikge1xuICAgICAgICAgICAgaWYgKCFkcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoJ2hpZGRlbicpKSB7XG4gICAgICAgICAgICAgICAgZHJvcGRvd24uY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCA0MDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2F2ZVVzZXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlID0gdGhpcy5jdXJyZW50U2VsZWN0aW9uLmFuY2hvck5vZGU7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGb2N1c05vZGUgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZm9jdXNOb2RlO1xuICAgICAgICB0aGlzLmFuY2hvck9mZnNldCA9IHRoaXMuY3VycmVudFNlbGVjdGlvbi5hbmNob3JPZmZzZXQ7XG4gICAgICAgIHRoaXMuZm9jdXNPZmZzZXQgPSB0aGlzLmN1cnJlbnRTZWxlY3Rpb24uZm9jdXNPZmZzZXQ7XG4gICAgfVxuXG4gICAgcmVzZXRVc2VyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRoaXMuc2VsZWN0ZWRBbmNob3JOb2RlLCB0aGlzLmFuY2hvck9mZnNldCwgdGhpcy5zZWxlY3RlZEZvY3VzTm9kZSwgdGhpcy5mb2N1c09mZnNldCk7XG4gICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuZ2V0U2VsZWN0aW9uKCk7XG4gICAgfVxuXG4gICAgaXNEcm9wZG93bkZvY3VzZWRPdXQoJGV2ZW50KSB7XG4gICAgICAgIGxldCBkcm9wZG93blNlbGVjdGlvbiA9IHRoaXMucGFyZW50RWRpdG9yLnF1ZXJ5U2VsZWN0b3JBbGwoJy4nICsgdGhpcy5DU1MudGV4dFNlbGVjdGlvbk1vZGlmaWVyKVswXTtcbiAgICAgICAgaWYgKHRoaXMuaXNEcm9wZG93bk9wZW4pIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gJGV2ZW50LnRhcmdldDtcbiAgICAgICAgICAgIHdoaWxlIChlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuZHJvcGRvd25Dc3NbJ2NvbnRhaW5lciddKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsICgkZXZlbnQpID0+IHRoaXMuaXNEcm9wZG93bkZvY3VzZWRPdXQoJGV2ZW50KSk7XG4gICAgICAgICAgICB0aGlzLmlzRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgICAgICAgICBkcm9wZG93blNlbGVjdGlvbi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIHRoaXMuYXBpLnRvb2xiYXIuY2xvc2UoKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFBhcmVudE1vZGlmaWVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgY29uc3QgbW9kaWZpZXJzID0gJ2gxLGgyLGgzLGg0LGg1LGg2LHAsdWwsb2wsYmxvY2txdW90ZSc7XG4gICAgICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIGlmIChjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdkaXYnKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjZS1wYXJhZ3JhcGgnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiA8SFRNTEVsZW1lbnQ+Y3VycmVudEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gPEhUTUxFbGVtZW50PmN1cnJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jZS1wYXJhZ3JhcGgnKS5jaGlsZHJlblswXTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAobW9kaWZpZXJzLnNwbGl0KCcsJykuaW5kZXhPZihjdXJyZW50RWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2RpdicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudEVsZW1lbnQ7XG4gICAgfVxufVxuIl19