@igo2/geo 1.9.4 → 1.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/bundles/igo2-geo.umd.js +3306 -1072
  2. package/bundles/igo2-geo.umd.js.map +1 -1
  3. package/esm2015/lib/catalog/catalog-browser/catalog-browser.component.js +2 -2
  4. package/esm2015/lib/catalog/catalog-library/catalog-library.component.js +6 -6
  5. package/esm2015/lib/catalog/shared/catalog.service.js +5 -2
  6. package/esm2015/lib/datasource/shared/capabilities.service.js +26 -12
  7. package/esm2015/lib/datasource/shared/datasources/arcgisrest-datasource.js +84 -14
  8. package/esm2015/lib/datasource/shared/datasources/datasource.interface.js +1 -1
  9. package/esm2015/lib/datasource/shared/datasources/imagearcgisrest-datasource.js +7 -10
  10. package/esm2015/lib/datasource/shared/datasources/mvt-datasource.js +2 -2
  11. package/esm2015/lib/datasource/shared/datasources/tilearcgisrest-datasource.js +7 -9
  12. package/esm2015/lib/datasource/shared/datasources/wfs-datasource.js +3 -1
  13. package/esm2015/lib/datasource/shared/datasources/wms-datasource.js +7 -1
  14. package/esm2015/lib/datasource/shared/datasources/wms-wfs.utils.js +5 -2
  15. package/esm2015/lib/directions/directions-buttons/directions-buttons.component.js +10 -4
  16. package/esm2015/lib/directions/directions.component.js +6 -4
  17. package/esm2015/lib/directions/shared/directions.utils.js +4 -1
  18. package/esm2015/lib/draw/draw/draw.component.js +2 -1
  19. package/esm2015/lib/feature/shared/feature.utils.js +2 -1
  20. package/esm2015/lib/feature/shared/strategies/in-map-extent.js +17 -4
  21. package/esm2015/lib/filter/filter.module.js +7 -4
  22. package/esm2015/lib/filter/ogc-filter-button/ogc-filter-button.component.js +15 -1
  23. package/esm2015/lib/filter/ogc-filter-selection/ogc-filter-selection.component.js +31 -13
  24. package/esm2015/lib/filter/ogc-filter-time/ogc-filter-time.component.js +296 -161
  25. package/esm2015/lib/filter/shared/ogc-filter.interface.js +1 -1
  26. package/esm2015/lib/filter/shared/ogc-filter.js +8 -1
  27. package/esm2015/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.js +185 -95
  28. package/esm2015/lib/geometry/shared/controls/draw.js +7 -2
  29. package/esm2015/lib/geometry/shared/controls/modify.js +1 -1
  30. package/esm2015/lib/geometry/shared/controls/slice.js +1 -1
  31. package/esm2015/lib/import-export/import-export/import-export.component.js +226 -66
  32. package/esm2015/lib/import-export/shared/export.interface.js +1 -1
  33. package/esm2015/lib/layer/layer-legend/layer-legend.component.js +32 -31
  34. package/esm2015/lib/layer/layer-list/layer-list.component.js +1 -1
  35. package/esm2015/lib/layer/layer.module.js +8 -5
  36. package/esm2015/lib/layer/shared/layer.service.js +19 -16
  37. package/esm2015/lib/layer/shared/layers/layer.interface.js +1 -1
  38. package/esm2015/lib/layer/shared/layers/layer.js +23 -5
  39. package/esm2015/lib/layer/shared/layers/vector-layer.interface.js +1 -1
  40. package/esm2015/lib/layer/shared/layers/vector-layer.js +13 -5
  41. package/esm2015/lib/layer/shared/layers/vectortile-layer.interface.js +1 -1
  42. package/esm2015/lib/layer/shared/style.service.js +21 -16
  43. package/esm2015/lib/layer/shared/vector-style.interface.js +1 -1
  44. package/esm2015/lib/layer/utils/index.js +2 -1
  45. package/esm2015/lib/layer/utils/layer.utils.js +11 -0
  46. package/esm2015/lib/layer/utils/layerSync-watcher.js +3 -3
  47. package/esm2015/lib/map/home-extent-button/home-extent-button.component.js +69 -0
  48. package/esm2015/lib/map/home-extent-button/index.js +2 -0
  49. package/esm2015/lib/map/index.js +3 -1
  50. package/esm2015/lib/map/info-section/index.js +2 -0
  51. package/esm2015/lib/map/info-section/info-section.component.js +36 -0
  52. package/esm2015/lib/map/map-browser/map-browser.component.js +1 -1
  53. package/esm2015/lib/map/map-center/map-center.component.js +1 -1
  54. package/esm2015/lib/map/map.module.js +11 -1
  55. package/esm2015/lib/map/shared/hover-feature.directive.js +229 -78
  56. package/esm2015/lib/map/shared/mapOffline.directive.js +17 -6
  57. package/esm2015/lib/measure/measurer/measurer.component.js +7 -1
  58. package/esm2015/lib/query/shared/query.directive.js +4 -1
  59. package/esm2015/lib/query/shared/query.interfaces.js +1 -1
  60. package/esm2015/lib/query/shared/query.service.js +35 -13
  61. package/esm2015/lib/query/shared/query.utils.js +2 -2
  62. package/esm2015/lib/search/search-bar/search-bar.component.js +4 -2
  63. package/esm2015/lib/search/search-results/search-results-add-button.component.js +7 -7
  64. package/esm2015/lib/search/shared/search-pointer-summary.directive.js +16 -5
  65. package/esm2015/lib/search/shared/search.interfaces.js +1 -1
  66. package/esm2015/lib/search/shared/sources/icherche.js +3 -2
  67. package/esm2015/lib/search/shared/sources/source.js +2 -2
  68. package/esm2015/lib/search/shared/sources/storedqueries.js +2 -2
  69. package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.component.js +56 -0
  70. package/esm2015/lib/workspace/confirmation-popup/confirmation-popup.module.js +38 -0
  71. package/esm2015/lib/workspace/confirmation-popup/index.js +3 -0
  72. package/esm2015/lib/workspace/index.js +2 -1
  73. package/esm2015/lib/workspace/shared/edition-workspace.js +271 -0
  74. package/esm2015/lib/workspace/shared/edition-workspace.service.js +619 -0
  75. package/esm2015/lib/workspace/shared/feature-workspace.js +18 -1
  76. package/esm2015/lib/workspace/shared/feature-workspace.service.js +27 -6
  77. package/esm2015/lib/workspace/shared/index.js +3 -1
  78. package/esm2015/lib/workspace/shared/wfs-workspace.js +18 -1
  79. package/esm2015/lib/workspace/shared/wfs-workspace.service.js +27 -5
  80. package/esm2015/lib/workspace/shared/wms-workspace.service.js +59 -15
  81. package/esm2015/lib/workspace/shared/workspace.utils.js +1 -1
  82. package/esm2015/lib/workspace/workspace-selector/workspace-selector.directive.js +40 -10
  83. package/esm2015/lib/workspace/workspace-updator/workspace-updator.directive.js +22 -8
  84. package/esm2015/lib/workspace/workspace.module.js +19 -7
  85. package/fesm2015/igo2-geo.js +2690 -677
  86. package/fesm2015/igo2-geo.js.map +1 -1
  87. package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +2 -0
  88. package/lib/datasource/shared/datasources/datasource.interface.d.ts +45 -0
  89. package/lib/datasource/shared/datasources/wfs-datasource.d.ts +1 -0
  90. package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +1 -1
  91. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +2 -1
  92. package/lib/directions/directions.component.d.ts +2 -1
  93. package/lib/filter/filter.module.d.ts +1 -1
  94. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +6 -0
  95. package/lib/filter/shared/ogc-filter.interface.d.ts +1 -0
  96. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +7 -2
  97. package/lib/geometry/shared/controls/draw.d.ts +8 -4
  98. package/lib/geometry/shared/controls/modify.d.ts +3 -4
  99. package/lib/geometry/shared/controls/slice.d.ts +3 -4
  100. package/lib/import-export/import-export/import-export.component.d.ts +2 -0
  101. package/lib/import-export/shared/export.interface.d.ts +2 -1
  102. package/lib/layer/layer-legend/layer-legend.component.d.ts +0 -4
  103. package/lib/layer/layer.module.d.ts +1 -1
  104. package/lib/layer/shared/layer.service.d.ts +1 -1
  105. package/lib/layer/shared/layers/layer.d.ts +7 -0
  106. package/lib/layer/shared/layers/layer.interface.d.ts +8 -0
  107. package/lib/layer/shared/layers/vector-layer.d.ts +2 -1
  108. package/lib/layer/shared/layers/vector-layer.interface.d.ts +1 -0
  109. package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +1 -0
  110. package/lib/layer/shared/style.service.d.ts +4 -1
  111. package/lib/layer/shared/vector-style.interface.d.ts +9 -5
  112. package/lib/layer/utils/index.d.ts +1 -0
  113. package/lib/layer/utils/layer.utils.d.ts +2 -0
  114. package/lib/map/home-extent-button/home-extent-button.component.d.ts +20 -0
  115. package/lib/map/home-extent-button/index.d.ts +1 -0
  116. package/lib/map/index.d.ts +2 -0
  117. package/lib/map/info-section/index.d.ts +1 -0
  118. package/lib/map/info-section/info-section.component.d.ts +7 -0
  119. package/lib/map/map.module.d.ts +19 -17
  120. package/lib/map/shared/hover-feature.directive.d.ts +14 -5
  121. package/lib/map/shared/mapOffline.directive.d.ts +1 -0
  122. package/lib/query/shared/query.interfaces.d.ts +2 -1
  123. package/lib/search/shared/search-pointer-summary.directive.d.ts +6 -0
  124. package/lib/search/shared/search.interfaces.d.ts +1 -0
  125. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +23 -0
  126. package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +14 -0
  127. package/lib/workspace/confirmation-popup/index.d.ts +2 -0
  128. package/lib/workspace/index.d.ts +1 -0
  129. package/lib/workspace/shared/edition-workspace.d.ts +81 -0
  130. package/lib/workspace/shared/edition-workspace.service.d.ts +45 -0
  131. package/lib/workspace/shared/feature-workspace.d.ts +3 -0
  132. package/lib/workspace/shared/feature-workspace.service.d.ts +2 -0
  133. package/lib/workspace/shared/index.d.ts +2 -0
  134. package/lib/workspace/shared/wfs-workspace.d.ts +3 -0
  135. package/lib/workspace/shared/wfs-workspace.service.d.ts +2 -0
  136. package/lib/workspace/shared/wms-workspace.service.d.ts +2 -0
  137. package/lib/workspace/shared/workspace.utils.d.ts +3 -2
  138. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +10 -3
  139. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +3 -1
  140. package/lib/workspace/workspace.module.d.ts +8 -5
  141. package/package.json +4 -4
  142. package/style/geo.theming.scss +1 -0
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgb2xHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcbmltcG9ydCBvbEZvcm1hdEZpbHRlciBmcm9tICdvbC9mb3JtYXQvZmlsdGVyL0ZpbHRlcic7XG5pbXBvcnQgb2xTb3VyY2UgZnJvbSAnb2wvc291cmNlL1NvdXJjZSc7XG5pbXBvcnQgb2xTb3VyY2VWZWN0b3IgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuXG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2RhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9nY0ZpbHRlck9wZXJhdG9yVHlwZSB9IGZyb20gJy4vb2djLWZpbHRlci5lbnVtJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlciBleHRlbmRzIG9sRm9ybWF0RmlsdGVyIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgV0ZTV3JpdGVHZXRGZWF0dXJlT3B0aW9ucyB7XG4gIGZlYXR1cmVOUz86IHN0cmluZztcbiAgZmVhdHVyZVByZWZpeD86IHN0cmluZztcbiAgZmVhdHVyZVR5cGVzOiBzdHJpbmdbXTtcbiAgc3JzTmFtZT86IHN0cmluZztcbiAgaGFuZGxlPzogc3RyaW5nO1xuICBvdXRwdXRGb3JtYXQ/OiBzdHJpbmc7XG4gIG1heEZlYXR1cmVzPzogbnVtYmVyO1xuICBnZW9tZXRyeU5hbWU/OiBzdHJpbmc7XG4gIHByb3BlcnR5TmFtZXM/OiBzdHJpbmdbXTtcbiAgc3RhcnRJbmRleD86IG51bWJlcjtcbiAgY291bnQ/OiBudW1iZXI7XG4gIGJib3g/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgZmlsdGVyPzogb2xGb3JtYXRGaWx0ZXI7XG4gIHJlc3VsdFR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zID1cbiAgfCBPZ2NGaWx0ZXJDb25kaW9uc0FycmF5T3B0aW9uc1xuICB8IE9nY0ZpbHRlclNwYXRpYWxPcHRpb25zXG4gIHwgT2djRmlsdGVyRHVyaW5nT3B0aW9uc1xuICB8IE9nY0ZpbHRlcklzQmV0d2Vlbk9wdGlvbnNcbiAgfCBPZ2NGaWx0ZXJFcXVhbFRvT3B0aW9uc1xuICB8IE9nY0ZpbHRlckdyZWF0ZXJMZXNzT3B0aW9uc1xuICB8IE9nY0ZpbHRlcklzTGlrZU9wdGlvbnNcbiAgfCBPZ2NGaWx0ZXJJc051bGxPcHRpb25zO1xuXG5leHBvcnQgdHlwZSBJZ29PZ2NGaWx0ZXJPYmplY3QgPVxuICB8IElnb0xvZ2ljYWxBcnJheU9wdGlvbnNcbiAgfCBBbnlCYXNlT2djRmlsdGVyT3B0aW9ucztcblxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJzT3B0aW9ucyB7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG4gIGZpbHRlcnM/OiBJZ29Mb2dpY2FsQXJyYXlPcHRpb25zIHwgQW55QmFzZU9nY0ZpbHRlck9wdGlvbnM7XG4gIHB1c2hCdXR0b25zPzogSWdvT2djU2VsZWN0b3I7XG4gIGNoZWNrYm94ZXM/OiBJZ29PZ2NTZWxlY3RvcjtcbiAgcmFkaW9CdXR0b25zPzogSWdvT2djU2VsZWN0b3I7XG4gIHNlbGVjdD86IElnb09nY1NlbGVjdG9yO1xuICBpbnRlcmZhY2VPZ2NGaWx0ZXJzPzogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdO1xuICBmaWx0ZXJlZD86IGJvb2xlYW47XG4gIGFkdmFuY2VkT2djRmlsdGVycz86IGJvb2xlYW47XG4gIGdlb21ldHJ5TmFtZT86IHN0cmluZztcbiAgYWxsb3dlZE9wZXJhdG9yc1R5cGU/OiBPZ2NGaWx0ZXJPcGVyYXRvclR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWdvT2djU2VsZWN0b3Ige1xuICBncm91cHM6IFNlbGVjdG9yR3JvdXBbXTtcbiAgYnVuZGxlczogT2djU2VsZWN0b3JCdW5kbGVbXTtcbiAgc2VsZWN0b3JUeXBlOiAncHVzaEJ1dHRvbicgfCAnY2hlY2tib3gnIHwgJ3JhZGlvQnV0dG9uJyB8ICdzZWxlY3QnO1xuICBvcmRlcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rvckdyb3VwIHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIHRpdGxlPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkcz87XG4gIGNvbXB1dGVkU2VsZWN0b3JzPzogT2djU2VsZWN0b3JCdW5kbGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NTZWxlY3RvckJ1bmRsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBsb2dpY2FsPzogc3RyaW5nO1xuICB2ZXJ0aWNhbD86IGJvb2xlYW47XG4gIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgdW5maWx0ZXJlZD86IGJvb2xlYW47XG4gIHNlbGVjdG9yczogT2djUHVzaEJ1dHRvbltdIHwgT2djQ2hlY2tib3hbXSB8IE9nY1JhZGlvQnV0dG9uW10gfCBPZ2NTZWxlY3RbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NQdXNoQnV0dG9uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdG9vbHRpcD86IHN0cmluZztcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIGZpbHRlcnM6IElnb09nY0ZpbHRlck9iamVjdDtcbiAgY29sb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2djQ2hlY2tib3gge1xuICB0aXRsZTogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgZmlsdGVyczogSWdvT2djRmlsdGVyT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9nY1JhZGlvQnV0dG9uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdG9vbHRpcD86IHN0cmluZztcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIGZpbHRlcnM6IElnb09nY0ZpbHRlck9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NTZWxlY3Qge1xuICB0aXRsZTogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgZmlsdGVyczogSWdvT2djRmlsdGVyT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyBleHRlbmRzIERhdGFTb3VyY2VPcHRpb25zIHtcbiAgb2djRmlsdGVycz86IE9nY0ZpbHRlcnNPcHRpb25zO1xuICBvbD86IG9sU291cmNlVmVjdG9yPE9sR2VvbWV0cnk+IHwgb2xTb3VyY2U7XG59XG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlIGV4dGVuZHMgRGF0YVNvdXJjZSB7XG4gIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucztcbiAgb2djRmlsdGVycyQ/OiBCZWhhdmlvclN1YmplY3Q8T2djRmlsdGVyc09wdGlvbnM+O1xuICBzZXRPZ2NGaWx0ZXJzKG9nY0ZpbHRlcnM6IE9nY0ZpbHRlcnNPcHRpb25zLCB0cmlnZ2VyRXZlbnQ/OiBib29sZWFuICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWdvTG9naWNhbEFycmF5T3B0aW9ucyB7XG4gIGxvZ2ljYWw6IHN0cmluZztcbiAgZmlsdGVyczogSWdvTG9naWNhbEFycmF5T3B0aW9ucyB8IEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2djRmlsdGVyQ29uZGlvbnNBcnJheU9wdGlvbnMge1xuICBjb25kaXRpb25zOiBPZ2NGaWx0ZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJTcGF0aWFsT3B0aW9ucyB7XG4gIGdlb21ldHJ5TmFtZTogc3RyaW5nO1xuICBnZW9tZXRyeT86IG9sR2VvbWV0cnk7XG4gIHdrdF9nZW9tZXRyeT86IHN0cmluZztcbiAgZXh0ZW50PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHNyc05hbWU/OiBzdHJpbmc7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgaWQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT2djRmlsdGVyQXR0cmlidXRlT3B0aW9ucyB7XG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xuICBvcGVyYXRvcjogc3RyaW5nO1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBpZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJEdXJpbmdPcHRpb25zIGV4dGVuZHMgT2djRmlsdGVyQXR0cmlidXRlT3B0aW9ucyB7XG4gIGJlZ2luOiBzdHJpbmc7XG4gIGVuZD86IHN0cmluZztcbiAgc3RlcDogc3RyaW5nO1xuICByZXN0cmljdFRvU3RlcD86IGJvb2xlYW47XG4gIHNsaWRlck9wdGlvbnM/OiBTbGlkZXJPcHRpb25zSW50ZXJmYWNlO1xuICBkaXNwbGF5Rm9ybWF0Pzogc3RyaW5nO1xuICBjYWxlbmRhck1vZGVZZWFyPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT2djRmlsdGVySXNCZXR3ZWVuT3B0aW9ucyBleHRlbmRzIE9nY0ZpbHRlckF0dHJpYnV0ZU9wdGlvbnMge1xuICBsb3dlckJvdW5kYXJ5OiBudW1iZXI7XG4gIHVwcGVyQm91bmRhcnk6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT2djRmlsdGVyRXF1YWxUb09wdGlvbnMgZXh0ZW5kcyBPZ2NGaWx0ZXJBdHRyaWJ1dGVPcHRpb25zIHtcbiAgZXhwcmVzc2lvbjogc3RyaW5nIHwgbnVtYmVyO1xuICBtYXRjaENhc2U/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJHcmVhdGVyTGVzc09wdGlvbnMgZXh0ZW5kcyBPZ2NGaWx0ZXJBdHRyaWJ1dGVPcHRpb25zIHtcbiAgZXhwcmVzc2lvbjogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJJc0xpa2VPcHRpb25zIGV4dGVuZHMgT2djRmlsdGVyQXR0cmlidXRlT3B0aW9ucyB7XG4gIHBhdHRlcm46IHN0cmluZztcbiAgd2lsZENhcmQ/OiBzdHJpbmc7XG4gIHNpbmdsZUNoYXI/OiBzdHJpbmc7XG4gIGVzY2FwZUNoYXI/OiBzdHJpbmc7XG4gIG1hdGNoQ2FzZTogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT2djRmlsdGVySXNOdWxsT3B0aW9ucyBleHRlbmRzIE9nY0ZpbHRlckF0dHJpYnV0ZU9wdGlvbnMge31cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zIHtcbiAgYWN0aXZlPzogYm9vbGVhbjtcbiAgYmVnaW4/OiBzdHJpbmc7XG4gIGVuZD86IHN0cmluZztcbiAgc3RlcD86IHN0cmluZztcbiAgcmVzdHJpY3RUb1N0ZXA/OiBib29sZWFuO1xuICBzbGlkZXJPcHRpb25zOiBTbGlkZXJPcHRpb25zSW50ZXJmYWNlO1xuICBkaXNwbGF5Rm9ybWF0Pzogc3RyaW5nO1xuICBlc2NhcGVDaGFyPzogc3RyaW5nO1xuICBleHByZXNzaW9uPzogc3RyaW5nIHwgbnVtYmVyO1xuICBleHRlbnQ/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgZmlsdGVyaWQ/OiBhbnk7XG4gIGdlb21ldHJ5Pzogb2xHZW9tZXRyeTtcbiAgZ2VvbWV0cnlOYW1lPzogc3RyaW5nO1xuICBpZ29TcGF0aWFsU2VsZWN0b3I/OiBzdHJpbmc7XG4gIGlnb1NOUkM/OiBzdHJpbmc7XG4gIGxldmVsPzogbnVtYmVyO1xuICBsb3dlckJvdW5kYXJ5PzogbnVtYmVyO1xuICBtYXRjaENhc2U/OiBib29sZWFuO1xuICBvcGVyYXRvcj86IHN0cmluZztcbiAgcGFyZW50TG9naWNhbD86IHN0cmluZztcbiAgcGF0dGVybj86IHN0cmluZztcbiAgcHJvcGVydHlOYW1lPzogc3RyaW5nO1xuICBzaW5nbGVDaGFyPzogc3RyaW5nO1xuICBzcnNOYW1lPzogc3RyaW5nO1xuICB1cHBlckJvdW5kYXJ5PzogbnVtYmVyO1xuICB3aWxkQ2FyZD86IHN0cmluZztcbiAgd2t0X2dlb21ldHJ5Pzogc3RyaW5nO1xuICAvLyBpZD86IHN0cmluZztcbiAgLy8gYWJicmV2Pzogc3RyaW5nO1xuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2xpZGVyT3B0aW9uc0ludGVyZmFjZSBleHRlbmRzIE9nY0ZpbHRlckR1cmluZ09wdGlvbnMge1xuICBpbnRlcnZhbD86IG51bWJlcjtcbiAgZGlzcGxheUZvcm1hdD86IHN0cmluZztcbiAgZW5hYmxlZD86IGJvb2xlYW47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgb2xHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcbmltcG9ydCBvbEZvcm1hdEZpbHRlciBmcm9tICdvbC9mb3JtYXQvZmlsdGVyL0ZpbHRlcic7XG5pbXBvcnQgb2xTb3VyY2UgZnJvbSAnb2wvc291cmNlL1NvdXJjZSc7XG5pbXBvcnQgb2xTb3VyY2VWZWN0b3IgZnJvbSAnb2wvc291cmNlL1ZlY3Rvcic7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgT2xHZW9tZXRyeSB9IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuXG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZGF0YXNvdXJjZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2RhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9nY0ZpbHRlck9wZXJhdG9yVHlwZSB9IGZyb20gJy4vb2djLWZpbHRlci5lbnVtJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlciBleHRlbmRzIG9sRm9ybWF0RmlsdGVyIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgV0ZTV3JpdGVHZXRGZWF0dXJlT3B0aW9ucyB7XG4gIGZlYXR1cmVOUz86IHN0cmluZztcbiAgZmVhdHVyZVByZWZpeD86IHN0cmluZztcbiAgZmVhdHVyZVR5cGVzOiBzdHJpbmdbXTtcbiAgc3JzTmFtZT86IHN0cmluZztcbiAgaGFuZGxlPzogc3RyaW5nO1xuICBvdXRwdXRGb3JtYXQ/OiBzdHJpbmc7XG4gIG1heEZlYXR1cmVzPzogbnVtYmVyO1xuICBnZW9tZXRyeU5hbWU/OiBzdHJpbmc7XG4gIHByb3BlcnR5TmFtZXM/OiBzdHJpbmdbXTtcbiAgc3RhcnRJbmRleD86IG51bWJlcjtcbiAgY291bnQ/OiBudW1iZXI7XG4gIGJib3g/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgZmlsdGVyPzogb2xGb3JtYXRGaWx0ZXI7XG4gIHJlc3VsdFR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zID1cbiAgfCBPZ2NGaWx0ZXJDb25kaW9uc0FycmF5T3B0aW9uc1xuICB8IE9nY0ZpbHRlclNwYXRpYWxPcHRpb25zXG4gIHwgT2djRmlsdGVyRHVyaW5nT3B0aW9uc1xuICB8IE9nY0ZpbHRlcklzQmV0d2Vlbk9wdGlvbnNcbiAgfCBPZ2NGaWx0ZXJFcXVhbFRvT3B0aW9uc1xuICB8IE9nY0ZpbHRlckdyZWF0ZXJMZXNzT3B0aW9uc1xuICB8IE9nY0ZpbHRlcklzTGlrZU9wdGlvbnNcbiAgfCBPZ2NGaWx0ZXJJc051bGxPcHRpb25zO1xuXG5leHBvcnQgdHlwZSBJZ29PZ2NGaWx0ZXJPYmplY3QgPVxuICB8IElnb0xvZ2ljYWxBcnJheU9wdGlvbnNcbiAgfCBBbnlCYXNlT2djRmlsdGVyT3B0aW9ucztcblxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJzT3B0aW9ucyB7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xuICBlZGl0YWJsZT86IGJvb2xlYW47XG4gIGZpbHRlcnM/OiBJZ29Mb2dpY2FsQXJyYXlPcHRpb25zIHwgQW55QmFzZU9nY0ZpbHRlck9wdGlvbnM7XG4gIHB1c2hCdXR0b25zPzogSWdvT2djU2VsZWN0b3I7XG4gIGNoZWNrYm94ZXM/OiBJZ29PZ2NTZWxlY3RvcjtcbiAgcmFkaW9CdXR0b25zPzogSWdvT2djU2VsZWN0b3I7XG4gIHNlbGVjdD86IElnb09nY1NlbGVjdG9yO1xuICBpbnRlcmZhY2VPZ2NGaWx0ZXJzPzogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdO1xuICBmaWx0ZXJlZD86IGJvb2xlYW47XG4gIGFkdmFuY2VkT2djRmlsdGVycz86IGJvb2xlYW47XG4gIGdlb21ldHJ5TmFtZT86IHN0cmluZztcbiAgYWxsb3dlZE9wZXJhdG9yc1R5cGU/OiBPZ2NGaWx0ZXJPcGVyYXRvclR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWdvT2djU2VsZWN0b3Ige1xuICBncm91cHM6IFNlbGVjdG9yR3JvdXBbXTtcbiAgYnVuZGxlczogT2djU2VsZWN0b3JCdW5kbGVbXTtcbiAgc2VsZWN0b3JUeXBlOiAncHVzaEJ1dHRvbicgfCAnY2hlY2tib3gnIHwgJ3JhZGlvQnV0dG9uJyB8ICdzZWxlY3QnO1xuICBvcmRlcj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rvckdyb3VwIHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIHRpdGxlPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkcz87XG4gIGNvbXB1dGVkU2VsZWN0b3JzPzogT2djU2VsZWN0b3JCdW5kbGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NTZWxlY3RvckJ1bmRsZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBsb2dpY2FsPzogc3RyaW5nO1xuICB2ZXJ0aWNhbD86IGJvb2xlYW47XG4gIG11bHRpcGxlPzogYm9vbGVhbjtcbiAgdW5maWx0ZXJlZD86IGJvb2xlYW47XG4gIHNlbGVjdG9yczogT2djUHVzaEJ1dHRvbltdIHwgT2djQ2hlY2tib3hbXSB8IE9nY1JhZGlvQnV0dG9uW10gfCBPZ2NTZWxlY3RbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NQdXNoQnV0dG9uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdG9vbHRpcD86IHN0cmluZztcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIGZpbHRlcnM6IElnb09nY0ZpbHRlck9iamVjdDtcbiAgY29sb3I/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2djQ2hlY2tib3gge1xuICB0aXRsZTogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgZmlsdGVyczogSWdvT2djRmlsdGVyT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9nY1JhZGlvQnV0dG9uIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgdG9vbHRpcD86IHN0cmluZztcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIGZpbHRlcnM6IElnb09nY0ZpbHRlck9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NTZWxlY3Qge1xuICB0aXRsZTogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBlbmFibGVkPzogYm9vbGVhbjtcbiAgZmlsdGVyczogSWdvT2djRmlsdGVyT2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyBleHRlbmRzIERhdGFTb3VyY2VPcHRpb25zIHtcbiAgb2djRmlsdGVycz86IE9nY0ZpbHRlcnNPcHRpb25zO1xuICBvbD86IG9sU291cmNlVmVjdG9yPE9sR2VvbWV0cnk+IHwgb2xTb3VyY2U7XG59XG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlIGV4dGVuZHMgRGF0YVNvdXJjZSB7XG4gIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucztcbiAgb2djRmlsdGVycyQ/OiBCZWhhdmlvclN1YmplY3Q8T2djRmlsdGVyc09wdGlvbnM+O1xuICBzZXRPZ2NGaWx0ZXJzKG9nY0ZpbHRlcnM6IE9nY0ZpbHRlcnNPcHRpb25zLCB0cmlnZ2VyRXZlbnQ/OiBib29sZWFuICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWdvTG9naWNhbEFycmF5T3B0aW9ucyB7XG4gIGxvZ2ljYWw6IHN0cmluZztcbiAgZmlsdGVyczogSWdvTG9naWNhbEFycmF5T3B0aW9ucyB8IEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2djRmlsdGVyQ29uZGlvbnNBcnJheU9wdGlvbnMge1xuICBjb25kaXRpb25zOiBPZ2NGaWx0ZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJTcGF0aWFsT3B0aW9ucyB7XG4gIGdlb21ldHJ5TmFtZTogc3RyaW5nO1xuICBnZW9tZXRyeT86IG9sR2VvbWV0cnk7XG4gIHdrdF9nZW9tZXRyeT86IHN0cmluZztcbiAgZXh0ZW50PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIHNyc05hbWU/OiBzdHJpbmc7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgaWQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT2djRmlsdGVyQXR0cmlidXRlT3B0aW9ucyB7XG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xuICBvcGVyYXRvcjogc3RyaW5nO1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBpZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZ2NGaWx0ZXJEdXJpbmdPcHRpb25zIGV4dGVuZHMgT2djRmlsdGVyQXR0cmlidXRlT3B0aW9ucyB7XG4gIGJlZ2luOiBzdHJpbmc7XG4gIGVuZD86IHN0cmluZztcbiAgc3RlcDogc3RyaW5nO1xuICByZXN0cmljdFRvU3RlcD86IGJvb2xlYW47XG4gIHNsaWRlck9wdGlvbnM/OiBTbGlkZXJPcHRpb25zSW50ZXJmYWNlO1xuICBkaXNwbGF5Rm9ybWF0Pzogc3RyaW5nO1xuICBjYWxlbmRhck1vZGVZZWFyPzogYm9vbGVhbjtcbiAgdGl0bGU/OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlcklzQmV0d2Vlbk9wdGlvbnMgZXh0ZW5kcyBPZ2NGaWx0ZXJBdHRyaWJ1dGVPcHRpb25zIHtcbiAgbG93ZXJCb3VuZGFyeTogbnVtYmVyO1xuICB1cHBlckJvdW5kYXJ5OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlckVxdWFsVG9PcHRpb25zIGV4dGVuZHMgT2djRmlsdGVyQXR0cmlidXRlT3B0aW9ucyB7XG4gIGV4cHJlc3Npb246IHN0cmluZyB8IG51bWJlcjtcbiAgbWF0Y2hDYXNlPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT2djRmlsdGVyR3JlYXRlckxlc3NPcHRpb25zIGV4dGVuZHMgT2djRmlsdGVyQXR0cmlidXRlT3B0aW9ucyB7XG4gIGV4cHJlc3Npb246IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT2djRmlsdGVySXNMaWtlT3B0aW9ucyBleHRlbmRzIE9nY0ZpbHRlckF0dHJpYnV0ZU9wdGlvbnMge1xuICBwYXR0ZXJuOiBzdHJpbmc7XG4gIHdpbGRDYXJkPzogc3RyaW5nO1xuICBzaW5nbGVDaGFyPzogc3RyaW5nO1xuICBlc2NhcGVDaGFyPzogc3RyaW5nO1xuICBtYXRjaENhc2U6IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIE9nY0ZpbHRlcklzTnVsbE9wdGlvbnMgZXh0ZW5kcyBPZ2NGaWx0ZXJBdHRyaWJ1dGVPcHRpb25zIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9ucyB7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG4gIGJlZ2luPzogc3RyaW5nO1xuICBlbmQ/OiBzdHJpbmc7XG4gIHN0ZXA/OiBzdHJpbmc7XG4gIHJlc3RyaWN0VG9TdGVwPzogYm9vbGVhbjtcbiAgc2xpZGVyT3B0aW9uczogU2xpZGVyT3B0aW9uc0ludGVyZmFjZTtcbiAgZGlzcGxheUZvcm1hdD86IHN0cmluZztcbiAgZXNjYXBlQ2hhcj86IHN0cmluZztcbiAgZXhwcmVzc2lvbj86IHN0cmluZyB8IG51bWJlcjtcbiAgZXh0ZW50PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gIGZpbHRlcmlkPzogYW55O1xuICBnZW9tZXRyeT86IG9sR2VvbWV0cnk7XG4gIGdlb21ldHJ5TmFtZT86IHN0cmluZztcbiAgaWdvU3BhdGlhbFNlbGVjdG9yPzogc3RyaW5nO1xuICBpZ29TTlJDPzogc3RyaW5nO1xuICBsZXZlbD86IG51bWJlcjtcbiAgbG93ZXJCb3VuZGFyeT86IG51bWJlcjtcbiAgbWF0Y2hDYXNlPzogYm9vbGVhbjtcbiAgb3BlcmF0b3I/OiBzdHJpbmc7XG4gIHBhcmVudExvZ2ljYWw/OiBzdHJpbmc7XG4gIHBhdHRlcm4/OiBzdHJpbmc7XG4gIHByb3BlcnR5TmFtZT86IHN0cmluZztcbiAgc2luZ2xlQ2hhcj86IHN0cmluZztcbiAgc3JzTmFtZT86IHN0cmluZztcbiAgdXBwZXJCb3VuZGFyeT86IG51bWJlcjtcbiAgd2lsZENhcmQ/OiBzdHJpbmc7XG4gIHdrdF9nZW9tZXRyeT86IHN0cmluZztcbiAgLy8gaWQ/OiBzdHJpbmc7XG4gIC8vIGFiYnJldj86IHN0cmluZztcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNsaWRlck9wdGlvbnNJbnRlcmZhY2UgZXh0ZW5kcyBPZ2NGaWx0ZXJEdXJpbmdPcHRpb25zIHtcbiAgaW50ZXJ2YWw/OiBudW1iZXI7XG4gIGRpc3BsYXlGb3JtYXQ/OiBzdHJpbmc7XG4gIGVuYWJsZWQ/OiBib29sZWFuO1xufVxuIl19
@@ -645,6 +645,10 @@ export class OgcFilterWriter {
645
645
  return conditions;
646
646
  }
647
647
  formatProcessedOgcFilter(processedFilter, layersOrTypenames) {
648
+ if (!processedFilter) {
649
+ return undefined;
650
+ }
651
+ ;
648
652
  let appliedFilter = '';
649
653
  if (processedFilter.length === 0 && layersOrTypenames.indexOf(',') === -1) {
650
654
  appliedFilter = processedFilter;
@@ -664,6 +668,9 @@ export class OgcFilterWriter {
664
668
  if (!value) {
665
669
  return defaultValue;
666
670
  }
671
+ else if (value === 'today') {
672
+ return undefined;
673
+ }
667
674
  else if (moment(value).isValid()) {
668
675
  return value;
669
676
  }
@@ -672,4 +679,4 @@ export class OgcFilterWriter {
672
679
  }
673
680
  }
674
681
  }
675
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLFdBQXVDLE1BQU0sZUFBZSxDQUFDO0FBS3BFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBYWhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdFLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztBQUV2QixNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNVLG1CQUFjLEdBQWdDLEVBQUUsQ0FBQztRQUNsRCxjQUFTLEdBQUc7WUFDakIsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBMkIsQ0FBQyxFQUFFO2dCQUMvQyxPQUFPLEVBQUUsS0FBSztnQkFDZCxhQUFhLEVBQUUsRUFBRTthQUNsQjtZQUNELENBQUMsaUJBQWlCLENBQUMsb0JBQThCLENBQUMsRUFBRTtnQkFDbEQsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsYUFBYSxFQUFFLEVBQUU7YUFDbEI7WUFDRCxDQUFDLGlCQUFpQixDQUFDLGNBQXdCLENBQUMsRUFBRTtnQkFDNUMsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2FBQzFCO1lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBK0IsQ0FBQyxFQUFFO2dCQUNuRCxPQUFPLEVBQUUsS0FBSztnQkFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDMUI7WUFDRCxDQUFDLGlCQUFpQixDQUFDLDhCQUF3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QU8sQ0FDekQsU0FBUyxFQUNULEVBQUUsQ0FDSCxHQUFHLENBQUM7WUFDUCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sV0FBVyxHQUNmLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUN0QixDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDaEIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVNLHFCQUFxQixDQUFDLEtBQWEsRUFBRSxZQUFxQjtRQUMvRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxZQUFZLENBQUM7U0FDckI7YUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUNsQyxPQUFPLEtBQUssQ0FBQztTQUNkO2FBQU07WUFDTCxPQUFPLFNBQVMsQ0FBQztTQUNsQjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIG9sZmlsdGVyIGZyb20gJ29sL2Zvcm1hdC9maWx0ZXInO1xuaW1wb3J0IG9sRm9ybWF0V0tUIGZyb20gJ29sL2Zvcm1hdC9XS1QnO1xuaW1wb3J0IG9sRm9ybWF0V0ZTLCB7IFdyaXRlR2V0RmVhdHVyZU9wdGlvbnMgfSBmcm9tICdvbC9mb3JtYXQvV0ZTJztcbmltcG9ydCBvbEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuXG5pbXBvcnQgb2xQcm9qZWN0aW9uIGZyb20gJ29sL3Byb2ovUHJvamVjdGlvbic7XG5cbmltcG9ydCB7IHV1aWQsIE9iamVjdFV0aWxzIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQge1xuICBPZ2NGaWx0ZXIsXG4gIElnb09nY0ZpbHRlck9iamVjdCxcbiAgQW55QmFzZU9nY0ZpbHRlck9wdGlvbnMsXG4gIE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXG4gIE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcbiAgT2djRmlsdGVyc09wdGlvbnMsXG4gIElnb09nY1NlbGVjdG9yLFxuICBTZWxlY3Rvckdyb3VwLFxuICBPZ2NTZWxlY3RvckJ1bmRsZVxufSBmcm9tICcuL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9nY0ZpbHRlck9wZXJhdG9yVHlwZSwgT2djRmlsdGVyT3BlcmF0b3IgfSBmcm9tICcuL29nYy1maWx0ZXIuZW51bSc7XG5pbXBvcnQgeyBTb3VyY2VGaWVsZHNPcHRpb25zUGFyYW1zIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xuY29uc3QgbW9tZW50ID0gbW9tZW50XztcblxuZXhwb3J0IGNsYXNzIE9nY0ZpbHRlcldyaXRlciB7XG4gIHByaXZhdGUgZmlsdGVyU2VxdWVuY2U6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnNbXSA9IFtdO1xuICBwdWJsaWMgb3BlcmF0b3JzID0ge1xuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUbyBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMaWtlIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogWydzdHJpbmcnXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbiBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbk9yRXF1YWxUbyBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzQmV0d2VlbiBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmcgYXMgc3RyaW5nXTogeyBzcGF0aWFsOiBmYWxzZSwgZmllbGRSZXN0cmljdDogW10gfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc051bGwgYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHMgYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogdHJ1ZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluIGFzIHN0cmluZ106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuQ29udGFpbnMgYXMgc3RyaW5nXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gIH07XG5cbiAgZGVmaW5lT2djRmlsdGVyc0RlZmF1bHRPcHRpb25zKFxuICAgIG9nY0ZpbHRlcnNPcHRpb25zOiBPZ2NGaWx0ZXJzT3B0aW9ucyxcbiAgICBmaWVsZE5hbWVHZW9tZXRyeTogc3RyaW5nLFxuICAgIHNyY1R5cGU/OiBzdHJpbmdcbiAgKTogT2djRmlsdGVyc09wdGlvbnMge1xuICAgIGxldCBvZ2NGaWx0ZXJzRGVmYXVsdFZhbHVlID0gdHJ1ZTsgLy8gZGVmYXVsdCB2YWx1ZXMgZm9yIHdmcy5cbiAgICBpZiAoc3JjVHlwZSAmJiBzcmNUeXBlID09PSAnd21zJykge1xuICAgICAgb2djRmlsdGVyc0RlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIG9nY0ZpbHRlcnNPcHRpb25zID0gb2djRmlsdGVyc09wdGlvbnMgfHwge307XG4gICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCA9XG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5lbmFibGVkID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBvZ2NGaWx0ZXJzRGVmYXVsdFZhbHVlXG4gICAgICAgIDogb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZDtcbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZSA9XG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gb2djRmlsdGVyc0RlZmF1bHRWYWx1ZVxuICAgICAgICA6IG9nY0ZpbHRlcnNPcHRpb25zLmVkaXRhYmxlO1xuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmdlb21ldHJ5TmFtZSA9IGZpZWxkTmFtZUdlb21ldHJ5O1xuXG4gICAgb2djRmlsdGVyc09wdGlvbnMuYWR2YW5jZWRPZ2NGaWx0ZXJzID0gdHJ1ZTtcbiAgICBpZiAob2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCAmJiAob2djRmlsdGVyc09wdGlvbnMucHVzaEJ1dHRvbnMgfHwgb2djRmlsdGVyc09wdGlvbnMuY2hlY2tib3hlc1xuICAgICAgfHwgb2djRmlsdGVyc09wdGlvbnMucmFkaW9CdXR0b25zIHx8IG9nY0ZpbHRlcnNPcHRpb25zLnNlbGVjdCkpIHtcbiAgICAgIG9nY0ZpbHRlcnNPcHRpb25zLmFkdmFuY2VkT2djRmlsdGVycyA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gb2djRmlsdGVyc09wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgYnVpbGRGaWx0ZXIoXG4gICAgZmlsdGVycz86IElnb09nY0ZpbHRlck9iamVjdCxcbiAgICBleHRlbnQ/OiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSxcbiAgICBwcm9qPzogb2xQcm9qZWN0aW9uLFxuICAgIGZpZWxkTmFtZUdlb21ldHJ5Pzogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgb3VyQmJveEZpbHRlcjtcbiAgICBsZXQgZW5hYmxlQmJveDogYm9vbGVhbjtcbiAgICBpZiAoL2ludGVyc2VjdHN8Y29udGFpbnN8d2l0aGluL2dpLnRlc3QoSlNPTi5zdHJpbmdpZnkoZmlsdGVycykpKSB7XG4gICAgICBlbmFibGVCYm94ID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuYWJsZUJib3ggPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoZmlsdGVycykge1xuICAgICAgZmllbGROYW1lR2VvbWV0cnkgPVxuICAgICAgICAoZmlsdGVycyBhcyBhbnkpLmdlb21ldHJ5TmFtZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyAoZmlsdGVycyBhcyBhbnkpLmdlb21ldHJ5TmFtZVxuICAgICAgICAgIDogZmllbGROYW1lR2VvbWV0cnk7XG4gICAgfVxuICAgIGlmIChleHRlbnQgJiYgZmlsdGVycykge1xuICAgICAgb3VyQmJveEZpbHRlciA9IG9sZmlsdGVyLmJib3goZmllbGROYW1lR2VvbWV0cnksIGV4dGVudCwgcHJvai5nZXRDb2RlKCkpO1xuICAgIH1cbiAgICBsZXQgZmlsdGVyQXNzZW1ibHk6IE9nY0ZpbHRlcjtcbiAgICBpZiAoZmlsdGVycykge1xuICAgICAgZmlsdGVycyA9IHRoaXMuY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgIHByb2pcbiAgICAgICk7XG4gICAgICBpZiAoZXh0ZW50ICYmIGVuYWJsZUJib3gpIHtcbiAgICAgICAgZmlsdGVyQXNzZW1ibHkgPSBvbGZpbHRlci5hbmQoXG4gICAgICAgICAgb3VyQmJveEZpbHRlcixcbiAgICAgICAgICB0aGlzLmJ1bmRsZUZpbHRlcihmaWx0ZXJzLCBvcHRpb25zKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsdGVyQXNzZW1ibHkgPSB0aGlzLmJ1bmRsZUZpbHRlcihmaWx0ZXJzLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdiYm94PScgKyBleHRlbnQuam9pbignLCcpICsgJywnICsgcHJvai5nZXRDb2RlKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgd2ZzT3B0aW9uczogV3JpdGVHZXRGZWF0dXJlT3B0aW9ucyA9IHtcbiAgICAgIHNyc05hbWU6ICcnLFxuICAgICAgZmVhdHVyZU5TOiAnJyxcbiAgICAgIGZlYXR1cmVQcmVmaXg6ICcnLFxuICAgICAgZmVhdHVyZVR5cGVzOiBbJ2ZlYXR1cmVUeXBlcyddLFxuICAgICAgZmlsdGVyOiBmaWx0ZXJBc3NlbWJseSxcbiAgICAgIG91dHB1dEZvcm1hdDogJycsXG4gICAgICBnZW9tZXRyeU5hbWU6IGZpZWxkTmFtZUdlb21ldHJ5XG4gICAgfTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gbmV3IG9sRm9ybWF0V0ZTKCkud3JpdGVHZXRGZWF0dXJlKHdmc09wdGlvbnMpO1xuICAgIGNvbnN0IHN0ciA9IG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcocXVlcnkpO1xuICAgIGNvbnN0IHJlZ2V4cDEgPSAvdHlwZW5hbWVzICo9fHR5cGVuYW1lICo9XFxcImZlYXR1cmVUeXBlc1xcXCIgKj4vZ2k7XG4gICAgY29uc3QgcmVnZXhwMiA9IC88XFwvUXVlcnk+PFxcL0dldEZlYXR1cmU+L2dpO1xuXG4gICAgcmV0dXJuICdmaWx0ZXI9JyArIHN0ci5zcGxpdChyZWdleHAxKVsxXS5zcGxpdChyZWdleHAyKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgYnVuZGxlRmlsdGVyKFxuICAgIGZpbHRlck9iamVjdDogYW55LFxuICAgIG9wdGlvbnM/OiBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnNcbiAgKSB7XG4gICAgaWYgKGZpbHRlck9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjb25zdCBsb2dpY2FsQXJyYXkgPSBbXTtcbiAgICAgIGZpbHRlck9iamVjdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGxvZ2ljYWxBcnJheS5wdXNoKHRoaXMuYnVuZGxlRmlsdGVyKGVsZW1lbnQsIG9wdGlvbnMpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGxvZ2ljYWxBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbHRlcihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvcGVyYXRvcjogZmlsdGVyT2JqZWN0LmxvZ2ljYWwsXG4gICAgICAgICAgICBsb2dpY2FsQXJyYXk6IHRoaXMuYnVuZGxlRmlsdGVyKGZpbHRlck9iamVjdC5maWx0ZXJzLCBvcHRpb25zKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgb3B0aW9uc1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ29wZXJhdG9yJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsdGVyKFxuICAgICAgICAgIGZpbHRlck9iamVjdCBhcyBBbnlCYXNlT2djRmlsdGVyT3B0aW9ucyxcbiAgICAgICAgICBvcHRpb25zXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGaWx0ZXIoXG4gICAgZmlsdGVyT3B0aW9ucyxcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG4gICk6IE9nY0ZpbHRlciB7XG4gICAgY29uc3Qgb3BlcmF0b3IgPSBmaWx0ZXJPcHRpb25zLm9wZXJhdG9yO1xuICAgIGNvbnN0IGxvZ2ljYWxBcnJheSA9IGZpbHRlck9wdGlvbnMubG9naWNhbEFycmF5O1xuXG4gICAgY29uc3Qgd2ZzUHJvcGVydHlOYW1lID0gZmlsdGVyT3B0aW9ucy5wcm9wZXJ0eU5hbWU7XG4gICAgY29uc3Qgd2ZzUGF0dGVybiA9IGZpbHRlck9wdGlvbnMucGF0dGVybjtcbiAgICBjb25zdCB3ZnNNYXRjaENhc2UgPSBmaWx0ZXJPcHRpb25zLm1hdGNoQ2FzZVxuICAgICAgPyBmaWx0ZXJPcHRpb25zLm1hdGNoQ2FzZVxuICAgICAgOiB0cnVlO1xuICAgIGNvbnN0IHdmc1dpbGRDYXJkID0gZmlsdGVyT3B0aW9ucy53aWxkQ2FyZCA/IGZpbHRlck9wdGlvbnMud2lsZENhcmQgOiAnKic7XG4gICAgY29uc3Qgd2ZzU2luZ2xlQ2hhciA9IGZpbHRlck9wdGlvbnMuc2luZ2xlQ2hhclxuICAgICAgPyBmaWx0ZXJPcHRpb25zLnNpbmdsZUNoYXJcbiAgICAgIDogJy4nO1xuICAgIGNvbnN0IHdmc0VzY2FwZUNoYXIgPSBmaWx0ZXJPcHRpb25zLmVzY2FwZUNoYXJcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5lc2NhcGVDaGFyXG4gICAgICA6ICchJztcblxuICAgIGNvbnN0IHdmc0xvd2VyQm91bmRhcnkgPSBmaWx0ZXJPcHRpb25zLmxvd2VyQm91bmRhcnk7XG4gICAgY29uc3Qgd2ZzVXBwZXJCb3VuZGFyeSA9IGZpbHRlck9wdGlvbnMudXBwZXJCb3VuZGFyeTtcblxuICAgIGNvbnN0IHdmc0dlb21ldHJ5TmFtZSA9IGZpbHRlck9wdGlvbnMuZ2VvbWV0cnlOYW1lO1xuICAgIGNvbnN0IHdmc0V4dGVudCA9IGZpbHRlck9wdGlvbnMuZXh0ZW50O1xuICAgIGNvbnN0IHdmc1drdEdlb21ldHJ5ID0gZmlsdGVyT3B0aW9ucy53a3RfZ2VvbWV0cnk7XG4gICAgY29uc3Qgd2ZzU3JzTmFtZSA9IGZpbHRlck9wdGlvbnMuc3JzTmFtZVxuICAgICAgPyBmaWx0ZXJPcHRpb25zLnNyc05hbWVcbiAgICAgIDogJ0VQU0c6Mzg1Nyc7XG5cbiAgICBjb25zdCB3ZnNCZWdpbiA9IHRoaXMucGFyc2VGaWx0ZXJPcHRpb25EYXRlKFxuICAgICAgZmlsdGVyT3B0aW9ucy5iZWdpbixcbiAgICAgIG9wdGlvbnMgPyBvcHRpb25zLm1pbkRhdGUgOiB1bmRlZmluZWRcbiAgICApO1xuICAgIGNvbnN0IHdmc0VuZCA9IHRoaXMucGFyc2VGaWx0ZXJPcHRpb25EYXRlKFxuICAgICAgZmlsdGVyT3B0aW9ucy5lbmQsXG4gICAgICBvcHRpb25zID8gb3B0aW9ucy5tYXhEYXRlIDogdW5kZWZpbmVkXG4gICAgKTtcblxuICAgIGNvbnN0IHdmc0V4cHJlc3Npb24gPSBmaWx0ZXJPcHRpb25zLmV4cHJlc3Npb247XG5cbiAgICBsZXQgZ2VvbWV0cnk6IG9sR2VvbWV0cnk7XG4gICAgaWYgKHdmc1drdEdlb21ldHJ5KSB7XG4gICAgICBjb25zdCB3a3QgPSBuZXcgb2xGb3JtYXRXS1QoKTtcbiAgICAgIGdlb21ldHJ5ID0gd2t0LnJlYWRHZW9tZXRyeSh3ZnNXa3RHZW9tZXRyeSwge1xuICAgICAgICBkYXRhUHJvamVjdGlvbjogd2ZzU3JzTmFtZSxcbiAgICAgICAgZmVhdHVyZVByb2plY3Rpb246IHdmc1Nyc05hbWUgfHwgJ0VQU0c6Mzg1NydcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHN3aXRjaCAob3BlcmF0b3IudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5CQk9YLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5iYm94KHdmc0dlb21ldHJ5TmFtZSwgd2ZzRXh0ZW50LCB3ZnNTcnNOYW1lKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0JldHdlZW4udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmJldHdlZW4oXG4gICAgICAgICAgd2ZzUHJvcGVydHlOYW1lLFxuICAgICAgICAgIHdmc0xvd2VyQm91bmRhcnksXG4gICAgICAgICAgd2ZzVXBwZXJCb3VuZGFyeVxuICAgICAgICApO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Db250YWlucy50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuY29udGFpbnMod2ZzR2VvbWV0cnlOYW1lLCBnZW9tZXRyeSwgd2ZzU3JzTmFtZSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkR1cmluZy50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZHVyaW5nKHdmc1Byb3BlcnR5TmFtZSwgd2ZzQmVnaW4sIHdmc0VuZCk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5lcXVhbFRvKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbiwgd2ZzTWF0Y2hDYXNlKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5ncmVhdGVyVGhhbih3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW5PckVxdWFsVG8udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmdyZWF0ZXJUaGFuT3JFcXVhbFRvKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHMudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmludGVyc2VjdHMod2ZzR2VvbWV0cnlOYW1lLCBnZW9tZXRyeSwgd2ZzU3JzTmFtZSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOdWxsLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5pc051bGwod2ZzUHJvcGVydHlOYW1lKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5sZXNzVGhhbih3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG8udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmxlc3NUaGFuT3JFcXVhbFRvKHdmc1Byb3BlcnR5TmFtZSwgd2ZzRXhwcmVzc2lvbik7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMaWtlLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5saWtlKFxuICAgICAgICAgIHdmc1Byb3BlcnR5TmFtZSxcbiAgICAgICAgICB3ZnNQYXR0ZXJuLnJlcGxhY2UoL1soKV9dL2dpLCB3ZnNTaW5nbGVDaGFyKSxcbiAgICAgICAgICB3ZnNXaWxkQ2FyZCxcbiAgICAgICAgICB3ZnNTaW5nbGVDaGFyLFxuICAgICAgICAgIHdmc0VzY2FwZUNoYXIsXG4gICAgICAgICAgd2ZzTWF0Y2hDYXNlXG4gICAgICAgICk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5ub3RFcXVhbFRvKFxuICAgICAgICAgIHdmc1Byb3BlcnR5TmFtZSxcbiAgICAgICAgICB3ZnNFeHByZXNzaW9uLFxuICAgICAgICAgIHdmc01hdGNoQ2FzZVxuICAgICAgICApO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW4udG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLndpdGhpbih3ZnNHZW9tZXRyeU5hbWUsIGdlb21ldHJ5LCB3ZnNTcnNOYW1lKTtcbiAgICAgIC8vIExPR0lDQUxcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuQW5kLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5hbmQuYXBwbHkobnVsbCwgbG9naWNhbEFycmF5KTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuT3IudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm9yLmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLk5vdC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubm90LmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlZmluZUludGVyZmFjZUZpbHRlclNlcXVlbmNlKFxuICAgIGZpbHRlck9iamVjdDogYW55LFxuICAgIGdlb21ldHJ5TmFtZSxcbiAgICBsb2dpY2FsID0gJycsXG4gICAgbGV2ZWwgPSAtMVxuICApOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW10ge1xuICAgIGlmIChmaWx0ZXJPYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgZmlsdGVyT2JqZWN0LmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5jb25jYXQoXG4gICAgICAgICAgdGhpcy5kZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBnZW9tZXRyeU5hbWUsXG4gICAgICAgICAgICBsb2dpY2FsLFxuICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XG4gICAgICAgIGxldmVsID0gbGV2ZWwgKyAxO1xuICAgICAgICB0aGlzLmZpbHRlclNlcXVlbmNlLmNvbmNhdChcbiAgICAgICAgICB0aGlzLmRlZmluZUludGVyZmFjZUZpbHRlclNlcXVlbmNlKFxuICAgICAgICAgICAgZmlsdGVyT2JqZWN0LmZpbHRlcnMsXG4gICAgICAgICAgICBnZW9tZXRyeU5hbWUsXG4gICAgICAgICAgICBmaWx0ZXJPYmplY3QubG9naWNhbCxcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ29wZXJhdG9yJykpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5wdXNoKFxuICAgICAgICAgIHRoaXMuYWRkSW50ZXJmYWNlRmlsdGVyKGZpbHRlck9iamVjdCwgZ2VvbWV0cnlOYW1lLCBsZXZlbCwgbG9naWNhbClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyU2VxdWVuY2U7XG4gIH1cblxuICBwdWJsaWMgY29tcHV0ZUFsbG93ZWRPcGVyYXRvcnMoXG4gICAgZmllbGRzPzogU291cmNlRmllbGRzT3B0aW9uc1BhcmFtc1tdLFxuICAgIHByb3BlcnR5TmFtZT86IHN0cmluZyxcbiAgICBkZWZhdWx0T3BlcmF0b3JzVHlwZT86IE9nY0ZpbHRlck9wZXJhdG9yVHlwZVxuICApIHtcbiAgICBsZXQgZWZmZWN0aXZlT3BlcmF0b3JzOiB7fSA9IHt9O1xuICAgIGxldCBhbGxvd2VkT3BlcmF0b3JzO1xuICAgIGxldCBmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3I6IGJvb2xlYW47XG4gICAgbGV0IGluY2x1ZGVDb250YWluczogYm9vbGVhbjtcblxuICAgIGlmIChmaWVsZHMgJiYgcHJvcGVydHlOYW1lKSB7XG4gICAgICBjb25zdCBzcmNGaWVsZCA9IGZpZWxkcy5maW5kKChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gcHJvcGVydHlOYW1lKTtcbiAgICAgIGFsbG93ZWRPcGVyYXRvcnMgPVxuICAgICAgICBzcmNGaWVsZCAmJiBzcmNGaWVsZC5hbGxvd2VkT3BlcmF0b3JzVHlwZVxuICAgICAgICAgID8gc3JjRmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGVcbiAgICAgICAgICA6IGRlZmF1bHRPcGVyYXRvcnNUeXBlO1xuICAgIH1cblxuICAgIGlmIChmaWVsZHMpIHtcbiAgICAgIGZpZWxkcy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGlmICghZmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxsb3dlZE9wZXJhdG9yc1R5cGUgPSBmaWVsZC5hbGxvd2VkT3BlcmF0b3JzVHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYWxsb3dlZE9wZXJhdG9yc1R5cGUgPT09IE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5BbGwudG9Mb3dlckNhc2UoKSB8fFxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PVxuICAgICAgICAgICAgT2djRmlsdGVyT3BlcmF0b3JUeXBlLlNwYXRpYWwudG9Mb3dlckNhc2UoKSB8fFxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PVxuICAgICAgICAgICAgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICkge1xuICAgICAgICAgIGZpZWxkc0hhc1NwYXRpYWxPcGVyYXRvciA9IHRydWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgYWxsb3dlZE9wZXJhdG9yc1R5cGUgPT09IE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5BbGwudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaW5jbHVkZUNvbnRhaW5zID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGFsbG93ZWRPcGVyYXRvcnMgPSBhbGxvd2VkT3BlcmF0b3JzXG4gICAgICA/IGFsbG93ZWRPcGVyYXRvcnNcbiAgICAgIDogT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbDtcblxuICAgIHN3aXRjaCAoYWxsb3dlZE9wZXJhdG9ycy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5BbGw6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHRoaXMub3BlcmF0b3JzO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLlNwYXRpYWw6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0c106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWNBbmRTcGF0aWFsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHNdOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbl06IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5UaW1lOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkR1cmluZ106IHsgc3BhdGlhbDogZmFsc2UsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY051bWVyaWNPcGVyYXRvcjpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW5dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW5PckVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW5dOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGRzSGFzU3BhdGlhbE9wZXJhdG9yKSB7XG4gICAgICAoZWZmZWN0aXZlT3BlcmF0b3JzIGFzIGFueSkuSW50ZXJzZWN0cyA9IHtcbiAgICAgICAgc3BhdGlhbDogdHJ1ZSxcbiAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgIH07XG4gICAgICAoZWZmZWN0aXZlT3BlcmF0b3JzIGFzIGFueSkuV2l0aGluID0geyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9O1xuICAgICAgaWYgKGluY2x1ZGVDb250YWlucykge1xuICAgICAgICAoZWZmZWN0aXZlT3BlcmF0b3JzIGFzIGFueSkuQ29udGFpbnMgPSB7XG4gICAgICAgICAgc3BhdGlhbDogdHJ1ZSxcbiAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlZmZlY3RpdmVPcGVyYXRvcnM7XG4gIH1cblxuICBwdWJsaWMgYWRkSW50ZXJmYWNlRmlsdGVyKFxuICAgIGlnb09nY0ZpbHRlck9iamVjdD8sXG4gICAgZ2VvbWV0cnlOYW1lPyxcbiAgICBsZXZlbCA9IDAsXG4gICAgcGFyZW50TG9naWNhbCA9ICdPcidcbiAgKTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9ucyB7XG4gICAgaWYgKCFpZ29PZ2NGaWx0ZXJPYmplY3QpIHtcbiAgICAgIGlnb09nY0ZpbHRlck9iamVjdCA9IHsgb3BlcmF0b3I6ICdQcm9wZXJ0eUlzRXF1YWxUbycgfTtcbiAgICB9XG4gICAgY29uc3QgZiA9IHtcbiAgICAgIHByb3BlcnR5TmFtZTogJycsXG4gICAgICBvcGVyYXRvcjogJycsXG4gICAgICBhY3RpdmU6ICcnLFxuICAgICAgZmlsdGVyaWQ6IHV1aWQoKSxcbiAgICAgIHN0ZXA6ICcnLFxuICAgICAgYmVnaW46ICcnLFxuICAgICAgZW5kOiAnJyxcbiAgICAgIHNsaWRlck9wdGlvbnM6IHt9LFxuICAgICAgbG93ZXJCb3VuZGFyeTogJycsXG4gICAgICB1cHBlckJvdW5kYXJ5OiAnJyxcbiAgICAgIGV4cHJlc3Npb246ICcnLFxuICAgICAgcGF0dGVybjogJycsXG4gICAgICB3aWxkQ2FyZDogJyonLFxuICAgICAgc2luZ2xlQ2hhcjogJy4nLFxuICAgICAgZXNjYXBlQ2hhcjogJyEnLFxuICAgICAgbWF0Y2hDYXNlOiB0cnVlLFxuICAgICAgaWdvU3BhdGlhbFNlbGVjdG9yOiAnJyxcbiAgICAgIGlnb1NOUkM6ICcnLFxuICAgICAgZ2VvbWV0cnlOYW1lOiAnJyxcbiAgICAgIGdlb21ldHJ5OiAnJyxcbiAgICAgIHdrdF9nZW9tZXRyeTogJycsXG4gICAgICBleHRlbnQ6ICcnLFxuICAgICAgc3JzTmFtZTogJycsXG4gICAgICBwYXJlbnRMb2dpY2FsOiAnJyxcbiAgICAgIGxldmVsOiAwXG4gICAgfTtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgZixcbiAgICAgIHtcbiAgICAgICAgcGFyZW50TG9naWNhbCxcbiAgICAgICAgbGV2ZWwsXG4gICAgICAgIGdlb21ldHJ5TmFtZVxuICAgICAgfSxcbiAgICAgIGlnb09nY0ZpbHRlck9iamVjdFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcbiAgICBmaWx0ZXJPYmplY3Q6IGFueSxcbiAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICBwcm9qOiBvbFByb2plY3Rpb24sXG4gICAgYWN0aXZlID0gZmFsc2VcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyQXJyYXkgPSBbXTtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGZpbHRlck9iamVjdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIGZpbHRlckFycmF5LnB1c2goXG4gICAgICAgICAgdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgICAgICAgICAgcHJvaixcbiAgICAgICAgICAgIGFjdGl2ZVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZpbHRlckFycmF5O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdsb2dpY2FsJykpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAge30sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbG9naWNhbDogZmlsdGVyT2JqZWN0LmxvZ2ljYWwsXG4gICAgICAgICAgICBmaWx0ZXJzOiB0aGlzLmNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXG4gICAgICAgICAgICAgIGZpbHRlck9iamVjdC5maWx0ZXJzLFxuICAgICAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgICAgICAgcHJvaixcbiAgICAgICAgICAgICAgYWN0aXZlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ29wZXJhdG9yJykpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmlsdGVyUHJvcGVydGllcyhcbiAgICAgICAgICBmaWx0ZXJPYmplY3QgYXMgT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9ucyxcbiAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgICBwcm9qLFxuICAgICAgICAgIGFjdGl2ZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRmlsdGVyUHJvcGVydGllcyhcbiAgICBpZ29PZ2NGaWx0ZXJPYmplY3Q6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXG4gICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgcHJvajogb2xQcm9qZWN0aW9uLFxuICAgIGFjdGl2ZSA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IGZpbHRlcmlkID0gaWdvT2djRmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdmaWx0ZXJpZCcpXG4gICAgICA/IGlnb09nY0ZpbHRlck9iamVjdC5maWx0ZXJpZFxuICAgICAgOiB1dWlkKCk7XG4gICAgY29uc3Qgc3RhdHVzID0gaWdvT2djRmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdhY3RpdmUnKVxuICAgICAgPyBpZ29PZ2NGaWx0ZXJPYmplY3QuYWN0aXZlXG4gICAgICA6IGFjdGl2ZTtcblxuICAgIGNvbnN0IHNyc05hbWUgPSBpZ29PZ2NGaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ3Nyc05hbWUnKVxuICAgICAgPyBpZ29PZ2NGaWx0ZXJPYmplY3Quc3JzTmFtZVxuICAgICAgOiBwcm9qXG4gICAgICA/IHByb2ouZ2V0Q29kZSgpXG4gICAgICA6ICdFUFNHOjM4NTcnO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIHtcbiAgICAgICAgZmlsdGVyaWQsXG4gICAgICAgIGFjdGl2ZTogc3RhdHVzLFxuICAgICAgICBpZ29TcGF0aWFsU2VsZWN0b3I6ICdmaXhlZEV4dGVudCcsXG4gICAgICAgIHNyc05hbWVcbiAgICAgIH0sXG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3QsXG4gICAgICB7IGdlb21ldHJ5TmFtZTogZmllbGROYW1lR2VvbWV0cnkgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgcmVidWlsdElnb09nY0ZpbHRlck9iamVjdEZyb21TZXF1ZW5jZShcbiAgICBzZXF1ZW5jZTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdXG4gICk6IElnb09nY0ZpbHRlck9iamVjdCB7XG4gICAgaWYgKHNlcXVlbmNlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGlmIChzZXF1ZW5jZS5sZW5ndGggPj0gMSkge1xuICAgICAgICBsZXQgbGFzdFBhcmVudExvZ2ljYWwgPSBzZXF1ZW5jZVswXS5wYXJlbnRMb2dpY2FsO1xuICAgICAgICBsZXQgbmV4dEVsZW1lbnQ6IGFueTtcbiAgICAgICAgbGV0IGxvZ2ljYWxBcnJheSA9IFtdO1xuICAgICAgICBsZXQgbGFzdFByb2Nlc3NlZEZpbHRlcjtcbiAgICAgICAgc2VxdWVuY2UuZm9yRWFjaCgodWlGaWx0ZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gT2JqZWN0LmFzc2lnbih7fSwgdWlGaWx0ZXIpO1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gc2VxdWVuY2UuaW5kZXhPZih1aUZpbHRlcik7XG4gICAgICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCBzZXF1ZW5jZS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBuZXh0RWxlbWVudCA9IHNlcXVlbmNlW2luZGV4ICsgMV07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5leHRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVsZXRlIGVsZW1lbnQuYWN0aXZlO1xuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50LmZpbHRlcmlkO1xuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50LnBhcmVudExvZ2ljYWw7XG4gICAgICAgICAgbG9naWNhbEFycmF5LnB1c2goZWxlbWVudCk7XG5cbiAgICAgICAgICBpZiAoc2VxdWVuY2UubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBsYXN0UHJvY2Vzc2VkRmlsdGVyID0gZWxlbWVudDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGxhc3RQYXJlbnRMb2dpY2FsICE9PSBuZXh0RWxlbWVudC5wYXJlbnRMb2dpY2FsKSB7XG4gICAgICAgICAgICBpZiAobG9naWNhbEFycmF5Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAnWW91IG11c3Qgc2V0IGF0ICcgK1xuICAgICAgICAgICAgICAgICAgJ2xlYXN0IHR3byBvcGVyYXRvciBpbiBhIGxvZ2ljYWwgKCcgK1xuICAgICAgICAgICAgICAgICAgbGFzdFBhcmVudExvZ2ljYWwgK1xuICAgICAgICAgICAgICAgICAgJyknXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsYXN0UHJvY2Vzc2VkRmlsdGVyID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICB7IGxvZ2ljYWw6IGxhc3RQYXJlbnRMb2dpY2FsLCBmaWx0ZXJzOiBsb2dpY2FsQXJyYXkgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBsb2dpY2FsQXJyYXkgPSBbbGFzdFByb2Nlc3NlZEZpbHRlcl07XG4gICAgICAgICAgICAgIGxhc3RQYXJlbnRMb2dpY2FsID0gbmV4dEVsZW1lbnQucGFyZW50TG9naWNhbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbGFzdFByb2Nlc3NlZEZpbHRlcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb21wdXRlSWdvU2VsZWN0b3Ioc2VsZWN0b3JzOiBJZ29PZ2NTZWxlY3Rvcik6IElnb09nY1NlbGVjdG9yIHtcbiAgICBpZiAoXG4gICAgICBzZWxlY3RvcnMuZ3JvdXBzLmV2ZXJ5KChncm91cCkgPT4gZ3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMgIT09IHVuZGVmaW5lZClcbiAgICApIHtcbiAgICAgIHJldHVybiBzZWxlY3RvcnM7XG4gICAgfVxuICAgIGxldCBzZWxlY3RvcjogSWdvT2djU2VsZWN0b3I7XG4gICAgaWYgKHNlbGVjdG9ycy5ncm91cHMgJiYgc2VsZWN0b3JzLmJ1bmRsZXMpIHtcbiAgICAgIGlmICghc2VsZWN0b3JzLmJ1bmRsZXMuZXZlcnkoKGJ1bmRsZSkgPT4gYnVuZGxlLmlkICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnWW91IG11c3Qgc2V0IGFuIGlkIGZvciBlYWNoIG9mIHlvdXIgYnVuZGxlcydcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHNlbGVjdG9yID0gT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3JzKTtcbiAgICAgIHNlbGVjdG9yLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBncm91cC50aXRsZSA9IGdyb3VwLnRpdGxlID8gZ3JvdXAudGl0bGUgOiBncm91cC5uYW1lO1xuICAgICAgICBncm91cC5lbmFibGVkID0gZ3JvdXAuZW5hYmxlZCA/IGdyb3VwLmVuYWJsZWQgOiBmYWxzZTtcbiAgICAgICAgZ3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMgPSBPYmplY3RVdGlscy5jb3B5RGVlcChcbiAgICAgICAgICBzZWxlY3Rvci5idW5kbGVzLmZpbHRlcigoYikgPT4gZ3JvdXAuaWRzLmluY2x1ZGVzKGIuaWQpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICghc2VsZWN0b3JzLmdyb3VwcyAmJiBzZWxlY3RvcnMuYnVuZGxlcykge1xuICAgICAgc2VsZWN0b3IgPSBPYmplY3RVdGlscy5jb3B5RGVlcChzZWxlY3RvcnMpO1xuICAgICAgc2VsZWN0b3IuZ3JvdXBzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6ICdncm91cDEnLFxuICAgICAgICAgIG5hbWU6ICdncm91cDEnLFxuICAgICAgICAgIGNvbXB1dGVkU2VsZWN0b3JzOiBPYmplY3RVdGlscy5jb3B5RGVlcChzZWxlY3Rvci5idW5kbGVzKVxuICAgICAgICB9IGFzIFNlbGVjdG9yR3JvdXBcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdG9yID0ge1xuICAgICAgICBidW5kbGVzOiBzZWxlY3RvcnMgYXMgYW55LFxuICAgICAgICBncm91cHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0aXRsZTogJ2dyb3VwMScsXG4gICAgICAgICAgICBuYW1lOiAnZ3JvdXAxJyxcbiAgICAgICAgICAgIGNvbXB1dGVkU2VsZWN0b3JzOiBPYmplY3RVdGlscy5jb3B5RGVlcChcbiAgICAgICAgICAgICAgc2VsZWN0b3JzXG4gICAgICAgICAgICApIGFzIE9nY1NlbGVjdG9yQnVuZGxlW11cbiAgICAgICAgICB9IGFzIFNlbGVjdG9yR3JvdXBcbiAgICAgICAgXSxcbiAgICAgICAgc2VsZWN0b3JUeXBlOiBzZWxlY3Rvci5zZWxlY3RvclR5cGVcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICghc2VsZWN0b3IuZ3JvdXBzLmZpbmQoKHNlbGVjdG9yR3JvdXApID0+IHNlbGVjdG9yR3JvdXAuZW5hYmxlZCkpIHtcbiAgICAgIHNlbGVjdG9yLmdyb3Vwc1swXS5lbmFibGVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdG9yO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZU9nY0ZpbHRlcnNBcHBsaWVkVmFsdWUoXG4gICAgb3B0aW9uczogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zLFxuICAgIGZpZWxkTmFtZUdlb21ldHJ5OiBzdHJpbmcsXG4gICAgZXh0ZW50PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gICAgcHJvaj86IG9sUHJvamVjdGlvblxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IG9nY0ZpbHRlcnMgPSBvcHRpb25zLm9nY0ZpbHRlcnM7XG4gICAgaWYgKCFvZ2NGaWx0ZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBbXTtcbiAgICBsZXQgZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvciA9ICcnO1xuICAgIGxldCBmaWx0ZXJRdWVyeVN0cmluZ0FkdmFuY2VkRmlsdGVycyA9ICcnO1xuICAgIGlmIChvZ2NGaWx0ZXJzLmVuYWJsZWQgJiYgKG9nY0ZpbHRlcnMucHVzaEJ1dHRvbnMgfHwgb2djRmlsdGVycy5jaGVja2JveGVzIHx8IG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zIHx8IG9nY0ZpbHRlcnMuc2VsZWN0KSkge1xuICAgICAgbGV0IHNlbGVjdG9ycztcbiAgICAgIGlmIChvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zKSB7XG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMucHVzaEJ1dHRvbnM7XG4gICAgICAgIGNvbnN0IHB1c2hDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihvZ2NGaWx0ZXJzLCBzZWxlY3RvcnMpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBwdXNoQ29uZGl0aW9ucykge1xuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2djRmlsdGVycy5jaGVja2JveGVzKSB7XG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMuY2hlY2tib3hlcztcbiAgICAgICAgY29uc3QgY2hlY2tib3hDb25kaXRpb25zID0gdGhpcy5mb3JtYXRHcm91cEFuZEZpbHRlcihvZ2NGaWx0ZXJzLCBzZWxlY3RvcnMpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBjaGVja2JveENvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zKSB7XG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zO1xuICAgICAgICBjb25zdCBzZWxlY3RvcnNDb3JyID0gdGhpcy52ZXJpZnlNdWx0aXBsZUVuYWJsZWRzKHNlbGVjdG9ycyk7XG4gICAgICAgIGNvbnN0IHJhZGlvQ29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVycywgc2VsZWN0b3JzQ29ycik7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHJhZGlvQ29uZGl0aW9ucykge1xuICAgICAgICAgIGNvbmRpdGlvbnMucHVzaChjb25kaXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAob2djRmlsdGVycy5zZWxlY3QpIHtcbiAgICAgICAgc2VsZWN0b3JzID0gb2djRmlsdGVycy5zZWxlY3Q7XG4gICAgICAgIGNvbnN0IHNlbGVjdG9yc0NvcnIgPSB0aGlzLnZlcmlmeU11bHRpcGxlRW5hYmxlZHMoc2VsZWN0b3JzKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0Q29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVycywgc2VsZWN0b3JzQ29ycik7XG4gICAgICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIHNlbGVjdENvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY29uZGl0aW9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgICBmaWx0ZXJRdWVyeVN0cmluZ1NlbGVjdG9yID0gdGhpcy5idWlsZEZpbHRlcihcbiAgICAgICAgICBjb25kaXRpb25zLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgPyBjb25kaXRpb25zWzBdXG4gICAgICAgICAgICA6IHsgbG9naWNhbDogJ0FuZCcsIGZpbHRlcnM6IGNvbmRpdGlvbnMgfSxcbiAgICAgICAgICBleHRlbnQsXG4gICAgICAgICAgcHJvaixcbiAgICAgICAgICBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob2djRmlsdGVycy5lbmFibGVkICYmIG9nY0ZpbHRlcnMuZmlsdGVycykge1xuICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWUgPSBvZ2NGaWx0ZXJzLmdlb21ldHJ5TmFtZSB8fCBmaWVsZE5hbWVHZW9tZXRyeTtcbiAgICAgIGNvbnN0IGlnb0ZpbHRlcnMgPSBvZ2NGaWx0ZXJzLmZpbHRlcnM7XG4gICAgICBmaWx0ZXJRdWVyeVN0cmluZ0FkdmFuY2VkRmlsdGVycyA9IHRoaXMuYnVpbGRGaWx0ZXIoXG4gICAgICAgIGlnb0ZpbHRlcnMsXG4gICAgICAgIGV4dGVudCxcbiAgICAgICAgcHJvaixcbiAgICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWUsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nID0gb2djRmlsdGVycy5hZHZhbmNlZE9nY0ZpbHRlcnNcbiAgICAgID8gZmlsdGVyUXVlcnlTdHJpbmdBZHZhbmNlZEZpbHRlcnNcbiAgICAgIDogZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvcjtcbiAgICBpZiAob3B0aW9ucy50eXBlID09PSAnd21zJykge1xuICAgICAgZmlsdGVyUXVlcnlTdHJpbmcgPSB0aGlzLmZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihcbiAgICAgICAgZmlsdGVyUXVlcnlTdHJpbmcsXG4gICAgICAgIChvcHRpb25zIGFzIGFueSkucGFyYW1zLkxBWUVSU1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3dmcycpIHtcbiAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nID0gdGhpcy5mb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXG4gICAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nLFxuICAgICAgICAob3B0aW9ucyBhcyBhbnkpLnBhcmFtcy5mZWF0dXJlVHlwZXNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbHRlclF1ZXJ5U3RyaW5nO1xuICB9XG5cbiAgcHVibGljIHZlcmlmeU11bHRpcGxlRW5hYmxlZHMoc2VsZWN0b3JzKSB7XG4gICAgc2VsZWN0b3JzLmJ1bmRsZXMuZm9yRWFjaChidW5kbGUgPT4ge1xuICAgICAgaWYgKCFidW5kbGUubXVsdGlwbGUpIHtcbiAgICAgICAgY29uc3QgZW5hYmxlZHMgPSBidW5kbGUuc2VsZWN0b3JzLnJlZHVjZSgobGlzdCwgZmlsdGVyLCBpbmRleCkgPT4gKGZpbHRlci5lbmFibGVkKSA9PT0gdHJ1ZSA/IGxpc3QuY29uY2F0KGluZGV4KSA6IGxpc3QsIFtdKTtcbiAgICAgICAgaWYgKGVuYWJsZWRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBlbmFibGVkcy5zcGxpY2UoMCwgMSk7XG4gICAgICAgICAgZW5hYmxlZHMuZm9yRWFjaChpbmRleCA9PiB7XG4gICAgICAgICAgICBidW5kbGUuc2VsZWN0b3JzW2luZGV4XS5lbmFibGVkID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZWN0b3JzO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnM6IE9nY0ZpbHRlcnNPcHRpb25zLCBzZWxlY3RvcnMpIHtcbiAgICBzZWxlY3RvcnMgPSB0aGlzLmNvbXB1dGVJZ29TZWxlY3RvcihcbiAgICAgIHNlbGVjdG9yc1xuICAgICk7XG4gICAgY29uc3Qgc2VsZWN0b3JCdW5kbGUgPSBzZWxlY3RvcnMuZ3JvdXBzLmZpbmQoXG4gICAgICAoZykgPT4gZy5lbmFibGVkXG4gICAgKS5jb21wdXRlZFNlbGVjdG9ycztcbiAgICBjb25zdCBjb25kaXRpb25zID0gW107XG4gICAgc2VsZWN0b3JCdW5kbGUubWFwKChidW5kbGUpID0+IHtcbiAgICAgIGNvbnN0IGJ1bmRsZUNvbmRpdGlvbiA9IFtdO1xuICAgICAgY29uc3Qgc2VsZWN0b3JzVHlwZSA9IGJ1bmRsZS5zZWxlY3RvcnMgYXMgYW55O1xuICAgICAgaWYgKCFzZWxlY3RvcnNUeXBlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNlbGVjdG9yc1R5cGVcbiAgICAgICAgLmZpbHRlcigob2djc2VsZWN0b3IpID0+IG9nY3NlbGVjdG9yLmVuYWJsZWQgPT09IHRydWUpXG4gICAgICAgIC5mb3JFYWNoKChlbmFibGVkU2VsZWN0b3IpID0+IGJ1bmRsZUNvbmRpdGlvbi5wdXNoKGVuYWJsZWRTZWxlY3Rvci5maWx0ZXJzKSk7XG4gICAgICBpZiAoYnVuZGxlQ29uZGl0aW9uLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb25kaXRpb25zLnB1c2goYnVuZGxlQ29uZGl0aW9uWzBdKTtcbiAgICAgIH0gZWxzZSBpZiAoYnVuZGxlQ29uZGl0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKHtcbiAgICAgICAgICBsb2dpY2FsOiBidW5kbGUubG9naWNhbCxcbiAgICAgICAgICBmaWx0ZXJzOiBidW5kbGVDb25kaXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3B1c2hCdXR0b24nKSB7XG4gICAgICBvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgb2djRmlsdGVycy5jaGVja2JveGVzID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3JhZGlvQnV0dG9uJykge1xuICAgICAgb2djRmlsdGVycy5yYWRpb0J1dHRvbnMgPSBzZWxlY3RvcnM7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RvcnMuc2VsZWN0b3JUeXBlID09PSAnc2VsZWN0Jykge1xuICAgICAgb2djRmlsdGVycy5zZWxlY3QgPSBzZWxlY3RvcnM7XG4gICAgfVxuICAgIHJldHVybiBjb25kaXRpb25zO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdFByb2Nlc3NlZE9nY0ZpbHRlcihcbiAgICBwcm9jZXNzZWRGaWx0ZXI6IHN0cmluZyxcbiAgICBsYXllcnNPclR5cGVuYW1lczogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IGFwcGxpZWRGaWx0ZXIgPSAnJztcbiAgICBpZiAocHJvY2Vzc2VkRmlsdGVyLmxlbmd0aCA9PT0gMCAmJiBsYXllcnNPclR5cGVuYW1lcy5pbmRleE9mKCcsJykgPT09IC0xKSB7XG4gICAgICBhcHBsaWVkRmlsdGVyID0gcHJvY2Vzc2VkRmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXllcnNPclR5cGVuYW1lcy5zcGxpdCgnLCcpLmZvckVhY2goKGxheWVyT3JUeXBlbmFtZXMpID0+IHtcbiAgICAgICAgYXBwbGllZEZpbHRlciA9IGAke2FwcGxpZWRGaWx0ZXJ9KCR7cHJvY2Vzc2VkRmlsdGVyLnJlcGxhY2UoXG4gICAgICAgICAgJ2ZpbHRlcj0nLFxuICAgICAgICAgICcnXG4gICAgICAgICl9KWA7XG4gICAgICB9KTtcbiAgICB9XG4gICAgYXBwbGllZEZpbHRlciA9IGFwcGxpZWRGaWx0ZXIucmVwbGFjZSgvXFwoXFwpL2csICcnKTtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9XG4gICAgICBhcHBsaWVkRmlsdGVyLmxlbmd0aCA+IDBcbiAgICAgICAgPyBhcHBsaWVkRmlsdGVyLnJlcGxhY2UoJ2ZpbHRlcj0nLCAnJylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGZpbHRlclZhbHVlO1xuICB9XG5cbiAgcHVibGljIHBhcnNlRmlsdGVyT3B0aW9uRGF0ZSh2YWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfSBlbHNlIGlmIChtb21lbnQodmFsdWUpLmlzVmFsaWQoKSkge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19
682
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sV0FBVyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLFdBQXVDLE1BQU0sZUFBZSxDQUFDO0FBS3BFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBYWhELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdFLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztBQUV2QixNQUFNLE9BQU8sZUFBZTtJQUE1QjtRQUNVLG1CQUFjLEdBQWdDLEVBQUUsQ0FBQztRQUNsRCxjQUFTLEdBQUc7WUFDakIsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBMkIsQ0FBQyxFQUFFO2dCQUMvQyxPQUFPLEVBQUUsS0FBSztnQkFDZCxhQUFhLEVBQUUsRUFBRTthQUNsQjtZQUNELENBQUMsaUJBQWlCLENBQUMsb0JBQThCLENBQUMsRUFBRTtnQkFDbEQsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsYUFBYSxFQUFFLEVBQUU7YUFDbEI7WUFDRCxDQUFDLGlCQUFpQixDQUFDLGNBQXdCLENBQUMsRUFBRTtnQkFDNUMsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsYUFBYSxFQUFFLENBQUMsUUFBUSxDQUFDO2FBQzFCO1lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBK0IsQ0FBQyxFQUFFO2dCQUNuRCxPQUFPLEVBQUUsS0FBSztnQkFDZCxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7YUFDMUI7WUFDRCxDQUFDLGlCQUFpQixDQUFDLDhCQUF3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Z0JBQWdCLEVBQUUsRUFBRTtnQkFDeEQsYUFBYSxHQUFHLEdBQUcsYUFBYSxJQUFJLGVBQWUsQ0FBQyxPQUFPLENBQ3pELFNBQVMsRUFDVCxFQUFFLENBQ0gsR0FBRyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELGFBQWEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FDZixhQUFhLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDdEIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUN0QyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxLQUFhLEVBQUUsWUFBcUI7UUFDL0QsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU8sWUFBWSxDQUFDO1NBQ3JCO2FBQU0sSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFO1lBQzVCLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO2FBQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEMsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNO1lBQ0wsT0FBTyxTQUFTLENBQUM7U0FDbEI7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBvbGZpbHRlciBmcm9tICdvbC9mb3JtYXQvZmlsdGVyJztcbmltcG9ydCBvbEZvcm1hdFdLVCBmcm9tICdvbC9mb3JtYXQvV0tUJztcbmltcG9ydCBvbEZvcm1hdFdGUywgeyBXcml0ZUdldEZlYXR1cmVPcHRpb25zIH0gZnJvbSAnb2wvZm9ybWF0L1dGUyc7XG5pbXBvcnQgb2xHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcblxuaW1wb3J0IG9sUHJvamVjdGlvbiBmcm9tICdvbC9wcm9qL1Byb2plY3Rpb24nO1xuXG5pbXBvcnQgeyB1dWlkLCBPYmplY3RVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgT2djRmlsdGVyLFxuICBJZ29PZ2NGaWx0ZXJPYmplY3QsXG4gIEFueUJhc2VPZ2NGaWx0ZXJPcHRpb25zLFxuICBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zLFxuICBPZ2NGaWx0ZXJhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXG4gIE9nY0ZpbHRlcnNPcHRpb25zLFxuICBJZ29PZ2NTZWxlY3RvcixcbiAgU2VsZWN0b3JHcm91cCxcbiAgT2djU2VsZWN0b3JCdW5kbGVcbn0gZnJvbSAnLi9vZ2MtZmlsdGVyLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUsIE9nY0ZpbHRlck9wZXJhdG9yIH0gZnJvbSAnLi9vZ2MtZmlsdGVyLmVudW0nO1xuaW1wb3J0IHsgU291cmNlRmllbGRzT3B0aW9uc1BhcmFtcyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2RhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5cbmV4cG9ydCBjbGFzcyBPZ2NGaWx0ZXJXcml0ZXIge1xuICBwcml2YXRlIGZpbHRlclNlcXVlbmNlOiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zW10gPSBbXTtcbiAgcHVibGljIG9wZXJhdG9ycyA9IHtcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOb3RFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGlrZSBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnc3RyaW5nJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzR3JlYXRlclRoYW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogWydudW1iZXInXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbiBhcyBzdHJpbmddOiB7XG4gICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgIGZpZWxkUmVzdHJpY3Q6IFsnbnVtYmVyJ11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW5PckVxdWFsVG8gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0JldHdlZW4gYXMgc3RyaW5nXToge1xuICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgfSxcbiAgICBbT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nIGFzIHN0cmluZ106IHsgc3BhdGlhbDogZmFsc2UsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNOdWxsIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICB9LFxuICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzIGFzIHN0cmluZ106IHtcbiAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICBmaWVsZFJlc3RyaWN0OiBbXVxuICAgIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbiBhcyBzdHJpbmddOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgW09nY0ZpbHRlck9wZXJhdG9yLkNvbnRhaW5zIGFzIHN0cmluZ106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICB9O1xuXG4gIGRlZmluZU9nY0ZpbHRlcnNEZWZhdWx0T3B0aW9ucyhcbiAgICBvZ2NGaWx0ZXJzT3B0aW9uczogT2djRmlsdGVyc09wdGlvbnMsXG4gICAgZmllbGROYW1lR2VvbWV0cnk6IHN0cmluZyxcbiAgICBzcmNUeXBlPzogc3RyaW5nXG4gICk6IE9nY0ZpbHRlcnNPcHRpb25zIHtcbiAgICBsZXQgb2djRmlsdGVyc0RlZmF1bHRWYWx1ZSA9IHRydWU7IC8vIGRlZmF1bHQgdmFsdWVzIGZvciB3ZnMuXG4gICAgaWYgKHNyY1R5cGUgJiYgc3JjVHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucyA9IG9nY0ZpbHRlcnNPcHRpb25zIHx8IHt9O1xuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZW5hYmxlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gb2djRmlsdGVyc0RlZmF1bHRWYWx1ZVxuICAgICAgICA6IG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQ7XG4gICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPVxuICAgICAgb2djRmlsdGVyc09wdGlvbnMuZWRpdGFibGUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IG9nY0ZpbHRlcnNEZWZhdWx0VmFsdWVcbiAgICAgICAgOiBvZ2NGaWx0ZXJzT3B0aW9ucy5lZGl0YWJsZTtcbiAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5nZW9tZXRyeU5hbWUgPSBmaWVsZE5hbWVHZW9tZXRyeTtcblxuICAgIG9nY0ZpbHRlcnNPcHRpb25zLmFkdmFuY2VkT2djRmlsdGVycyA9IHRydWU7XG4gICAgaWYgKG9nY0ZpbHRlcnNPcHRpb25zLmVuYWJsZWQgJiYgKG9nY0ZpbHRlcnNPcHRpb25zLnB1c2hCdXR0b25zIHx8IG9nY0ZpbHRlcnNPcHRpb25zLmNoZWNrYm94ZXNcbiAgICAgIHx8IG9nY0ZpbHRlcnNPcHRpb25zLnJhZGlvQnV0dG9ucyB8fCBvZ2NGaWx0ZXJzT3B0aW9ucy5zZWxlY3QpKSB7XG4gICAgICBvZ2NGaWx0ZXJzT3B0aW9ucy5hZHZhbmNlZE9nY0ZpbHRlcnMgPSBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG9nY0ZpbHRlcnNPcHRpb25zO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkRmlsdGVyKFxuICAgIGZpbHRlcnM/OiBJZ29PZ2NGaWx0ZXJPYmplY3QsXG4gICAgZXh0ZW50PzogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0sXG4gICAgcHJvaj86IG9sUHJvamVjdGlvbixcbiAgICBmaWVsZE5hbWVHZW9tZXRyeT86IHN0cmluZyxcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IG91ckJib3hGaWx0ZXI7XG4gICAgbGV0IGVuYWJsZUJib3g6IGJvb2xlYW47XG4gICAgaWYgKC9pbnRlcnNlY3RzfGNvbnRhaW5zfHdpdGhpbi9naS50ZXN0KEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpKSkge1xuICAgICAgZW5hYmxlQmJveCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmFibGVCYm94ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGZpbHRlcnMpIHtcbiAgICAgIGZpZWxkTmFtZUdlb21ldHJ5ID1cbiAgICAgICAgKGZpbHRlcnMgYXMgYW55KS5nZW9tZXRyeU5hbWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gKGZpbHRlcnMgYXMgYW55KS5nZW9tZXRyeU5hbWVcbiAgICAgICAgICA6IGZpZWxkTmFtZUdlb21ldHJ5O1xuICAgIH1cbiAgICBpZiAoZXh0ZW50ICYmIGZpbHRlcnMpIHtcbiAgICAgIG91ckJib3hGaWx0ZXIgPSBvbGZpbHRlci5iYm94KGZpZWxkTmFtZUdlb21ldHJ5LCBleHRlbnQsIHByb2ouZ2V0Q29kZSgpKTtcbiAgICB9XG4gICAgbGV0IGZpbHRlckFzc2VtYmx5OiBPZ2NGaWx0ZXI7XG4gICAgaWYgKGZpbHRlcnMpIHtcbiAgICAgIGZpbHRlcnMgPSB0aGlzLmNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXG4gICAgICAgIGZpbHRlcnMsXG4gICAgICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgICAgICBwcm9qXG4gICAgICApO1xuICAgICAgaWYgKGV4dGVudCAmJiBlbmFibGVCYm94KSB7XG4gICAgICAgIGZpbHRlckFzc2VtYmx5ID0gb2xmaWx0ZXIuYW5kKFxuICAgICAgICAgIG91ckJib3hGaWx0ZXIsXG4gICAgICAgICAgdGhpcy5idW5kbGVGaWx0ZXIoZmlsdGVycywgb3B0aW9ucylcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpbHRlckFzc2VtYmx5ID0gdGhpcy5idW5kbGVGaWx0ZXIoZmlsdGVycywgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnYmJveD0nICsgZXh0ZW50LmpvaW4oJywnKSArICcsJyArIHByb2ouZ2V0Q29kZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IHdmc09wdGlvbnM6IFdyaXRlR2V0RmVhdHVyZU9wdGlvbnMgPSB7XG4gICAgICBzcnNOYW1lOiAnJyxcbiAgICAgIGZlYXR1cmVOUzogJycsXG4gICAgICBmZWF0dXJlUHJlZml4OiAnJyxcbiAgICAgIGZlYXR1cmVUeXBlczogWydmZWF0dXJlVHlwZXMnXSxcbiAgICAgIGZpbHRlcjogZmlsdGVyQXNzZW1ibHksXG4gICAgICBvdXRwdXRGb3JtYXQ6ICcnLFxuICAgICAgZ2VvbWV0cnlOYW1lOiBmaWVsZE5hbWVHZW9tZXRyeVxuICAgIH07XG5cbiAgICBjb25zdCBxdWVyeSA9IG5ldyBvbEZvcm1hdFdGUygpLndyaXRlR2V0RmVhdHVyZSh3ZnNPcHRpb25zKTtcbiAgICBjb25zdCBzdHIgPSBuZXcgWE1MU2VyaWFsaXplcigpLnNlcmlhbGl6ZVRvU3RyaW5nKHF1ZXJ5KTtcbiAgICBjb25zdCByZWdleHAxID0gL3R5cGVuYW1lcyAqPXx0eXBlbmFtZSAqPVxcXCJmZWF0dXJlVHlwZXNcXFwiICo+L2dpO1xuICAgIGNvbnN0IHJlZ2V4cDIgPSAvPFxcL1F1ZXJ5PjxcXC9HZXRGZWF0dXJlPi9naTtcblxuICAgIHJldHVybiAnZmlsdGVyPScgKyBzdHIuc3BsaXQocmVnZXhwMSlbMV0uc3BsaXQocmVnZXhwMilbMF07XG4gIH1cblxuICBwcml2YXRlIGJ1bmRsZUZpbHRlcihcbiAgICBmaWx0ZXJPYmplY3Q6IGFueSxcbiAgICBvcHRpb25zPzogT2djRmlsdGVyYWJsZURhdGFTb3VyY2VPcHRpb25zXG4gICkge1xuICAgIGlmIChmaWx0ZXJPYmplY3QgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgY29uc3QgbG9naWNhbEFycmF5ID0gW107XG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBsb2dpY2FsQXJyYXkucHVzaCh0aGlzLmJ1bmRsZUZpbHRlcihlbGVtZW50LCBvcHRpb25zKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBsb2dpY2FsQXJyYXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWx0ZXIoXG4gICAgICAgICAge1xuICAgICAgICAgICAgb3BlcmF0b3I6IGZpbHRlck9iamVjdC5sb2dpY2FsLFxuICAgICAgICAgICAgbG9naWNhbEFycmF5OiB0aGlzLmJ1bmRsZUZpbHRlcihmaWx0ZXJPYmplY3QuZmlsdGVycywgb3B0aW9ucylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9wdGlvbnNcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbHRlcihcbiAgICAgICAgICBmaWx0ZXJPYmplY3QgYXMgQW55QmFzZU9nY0ZpbHRlck9wdGlvbnMsXG4gICAgICAgICAgb3B0aW9uc1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRmlsdGVyKFxuICAgIGZpbHRlck9wdGlvbnMsXG4gICAgb3B0aW9ucz86IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9uc1xuICApOiBPZ2NGaWx0ZXIge1xuICAgIGNvbnN0IG9wZXJhdG9yID0gZmlsdGVyT3B0aW9ucy5vcGVyYXRvcjtcbiAgICBjb25zdCBsb2dpY2FsQXJyYXkgPSBmaWx0ZXJPcHRpb25zLmxvZ2ljYWxBcnJheTtcblxuICAgIGNvbnN0IHdmc1Byb3BlcnR5TmFtZSA9IGZpbHRlck9wdGlvbnMucHJvcGVydHlOYW1lO1xuICAgIGNvbnN0IHdmc1BhdHRlcm4gPSBmaWx0ZXJPcHRpb25zLnBhdHRlcm47XG4gICAgY29uc3Qgd2ZzTWF0Y2hDYXNlID0gZmlsdGVyT3B0aW9ucy5tYXRjaENhc2VcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5tYXRjaENhc2VcbiAgICAgIDogdHJ1ZTtcbiAgICBjb25zdCB3ZnNXaWxkQ2FyZCA9IGZpbHRlck9wdGlvbnMud2lsZENhcmQgPyBmaWx0ZXJPcHRpb25zLndpbGRDYXJkIDogJyonO1xuICAgIGNvbnN0IHdmc1NpbmdsZUNoYXIgPSBmaWx0ZXJPcHRpb25zLnNpbmdsZUNoYXJcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5zaW5nbGVDaGFyXG4gICAgICA6ICcuJztcbiAgICBjb25zdCB3ZnNFc2NhcGVDaGFyID0gZmlsdGVyT3B0aW9ucy5lc2NhcGVDaGFyXG4gICAgICA/IGZpbHRlck9wdGlvbnMuZXNjYXBlQ2hhclxuICAgICAgOiAnISc7XG5cbiAgICBjb25zdCB3ZnNMb3dlckJvdW5kYXJ5ID0gZmlsdGVyT3B0aW9ucy5sb3dlckJvdW5kYXJ5O1xuICAgIGNvbnN0IHdmc1VwcGVyQm91bmRhcnkgPSBmaWx0ZXJPcHRpb25zLnVwcGVyQm91bmRhcnk7XG5cbiAgICBjb25zdCB3ZnNHZW9tZXRyeU5hbWUgPSBmaWx0ZXJPcHRpb25zLmdlb21ldHJ5TmFtZTtcbiAgICBjb25zdCB3ZnNFeHRlbnQgPSBmaWx0ZXJPcHRpb25zLmV4dGVudDtcbiAgICBjb25zdCB3ZnNXa3RHZW9tZXRyeSA9IGZpbHRlck9wdGlvbnMud2t0X2dlb21ldHJ5O1xuICAgIGNvbnN0IHdmc1Nyc05hbWUgPSBmaWx0ZXJPcHRpb25zLnNyc05hbWVcbiAgICAgID8gZmlsdGVyT3B0aW9ucy5zcnNOYW1lXG4gICAgICA6ICdFUFNHOjM4NTcnO1xuXG4gICAgY29uc3Qgd2ZzQmVnaW4gPSB0aGlzLnBhcnNlRmlsdGVyT3B0aW9uRGF0ZShcbiAgICAgIGZpbHRlck9wdGlvbnMuYmVnaW4sXG4gICAgICBvcHRpb25zID8gb3B0aW9ucy5taW5EYXRlIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICBjb25zdCB3ZnNFbmQgPSB0aGlzLnBhcnNlRmlsdGVyT3B0aW9uRGF0ZShcbiAgICAgIGZpbHRlck9wdGlvbnMuZW5kLFxuICAgICAgb3B0aW9ucyA/IG9wdGlvbnMubWF4RGF0ZSA6IHVuZGVmaW5lZFxuICAgICk7XG5cbiAgICBjb25zdCB3ZnNFeHByZXNzaW9uID0gZmlsdGVyT3B0aW9ucy5leHByZXNzaW9uO1xuXG4gICAgbGV0IGdlb21ldHJ5OiBvbEdlb21ldHJ5O1xuICAgIGlmICh3ZnNXa3RHZW9tZXRyeSkge1xuICAgICAgY29uc3Qgd2t0ID0gbmV3IG9sRm9ybWF0V0tUKCk7XG4gICAgICBnZW9tZXRyeSA9IHdrdC5yZWFkR2VvbWV0cnkod2ZzV2t0R2VvbWV0cnksIHtcbiAgICAgICAgZGF0YVByb2plY3Rpb246IHdmc1Nyc05hbWUsXG4gICAgICAgIGZlYXR1cmVQcm9qZWN0aW9uOiB3ZnNTcnNOYW1lIHx8ICdFUFNHOjM4NTcnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKG9wZXJhdG9yLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuQkJPWC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYmJveCh3ZnNHZW9tZXRyeU5hbWUsIHdmc0V4dGVudCwgd2ZzU3JzTmFtZSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNCZXR3ZWVuLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5iZXR3ZWVuKFxuICAgICAgICAgIHdmc1Byb3BlcnR5TmFtZSxcbiAgICAgICAgICB3ZnNMb3dlckJvdW5kYXJ5LFxuICAgICAgICAgIHdmc1VwcGVyQm91bmRhcnlcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuQ29udGFpbnMudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmNvbnRhaW5zKHdmc0dlb21ldHJ5TmFtZSwgZ2VvbWV0cnksIHdmc1Nyc05hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmcudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLmR1cmluZyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0JlZ2luLCB3ZnNFbmQpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24sIHdmc01hdGNoQ2FzZSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbi50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuZ3JlYXRlclRoYW4od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5ncmVhdGVyVGhhbk9yRXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5pbnRlcnNlY3RzKHdmc0dlb21ldHJ5TmFtZSwgZ2VvbWV0cnksIHdmc1Nyc05hbWUpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTnVsbC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuaXNOdWxsKHdmc1Byb3BlcnR5TmFtZSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbi50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGVzc1RoYW4od2ZzUHJvcGVydHlOYW1lLCB3ZnNFeHByZXNzaW9uKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuT3JFcXVhbFRvLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5sZXNzVGhhbk9yRXF1YWxUbyh3ZnNQcm9wZXJ0eU5hbWUsIHdmc0V4cHJlc3Npb24pO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGlrZS50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubGlrZShcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzUGF0dGVybi5yZXBsYWNlKC9bKClfXS9naSwgd2ZzU2luZ2xlQ2hhciksXG4gICAgICAgICAgd2ZzV2lsZENhcmQsXG4gICAgICAgICAgd2ZzU2luZ2xlQ2hhcixcbiAgICAgICAgICB3ZnNFc2NhcGVDaGFyLFxuICAgICAgICAgIHdmc01hdGNoQ2FzZVxuICAgICAgICApO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUby50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIubm90RXF1YWxUbyhcbiAgICAgICAgICB3ZnNQcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgd2ZzRXhwcmVzc2lvbixcbiAgICAgICAgICB3ZnNNYXRjaENhc2VcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci53aXRoaW4od2ZzR2VvbWV0cnlOYW1lLCBnZW9tZXRyeSwgd2ZzU3JzTmFtZSk7XG4gICAgICAvLyBMT0dJQ0FMXG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLkFuZC50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gb2xmaWx0ZXIuYW5kLmFwcGx5KG51bGwsIGxvZ2ljYWxBcnJheSk7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLk9yLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiBvbGZpbHRlci5vci5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Ob3QudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIG9sZmlsdGVyLm5vdC5hcHBseShudWxsLCBsb2dpY2FsQXJyYXkpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICBmaWx0ZXJPYmplY3Q6IGFueSxcbiAgICBnZW9tZXRyeU5hbWUsXG4gICAgbG9naWNhbCA9ICcnLFxuICAgIGxldmVsID0gLTFcbiAgKTogT2djSW50ZXJmYWNlRmlsdGVyT3B0aW9uc1tdIHtcbiAgICBpZiAoZmlsdGVyT2JqZWN0IGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGZpbHRlck9iamVjdC5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UuY29uY2F0KFxuICAgICAgICAgIHRoaXMuZGVmaW5lSW50ZXJmYWNlRmlsdGVyU2VxdWVuY2UoXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgbG9naWNhbCxcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaWx0ZXJPYmplY3QuaGFzT3duUHJvcGVydHkoJ2xvZ2ljYWwnKSkge1xuICAgICAgICBsZXZlbCA9IGxldmVsICsgMTtcbiAgICAgICAgdGhpcy5maWx0ZXJTZXF1ZW5jZS5jb25jYXQoXG4gICAgICAgICAgdGhpcy5kZWZpbmVJbnRlcmZhY2VGaWx0ZXJTZXF1ZW5jZShcbiAgICAgICAgICAgIGZpbHRlck9iamVjdC5maWx0ZXJzLFxuICAgICAgICAgICAgZ2VvbWV0cnlOYW1lLFxuICAgICAgICAgICAgZmlsdGVyT2JqZWN0LmxvZ2ljYWwsXG4gICAgICAgICAgICBsZXZlbFxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyU2VxdWVuY2UucHVzaChcbiAgICAgICAgICB0aGlzLmFkZEludGVyZmFjZUZpbHRlcihmaWx0ZXJPYmplY3QsIGdlb21ldHJ5TmFtZSwgbGV2ZWwsIGxvZ2ljYWwpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbHRlclNlcXVlbmNlO1xuICB9XG5cbiAgcHVibGljIGNvbXB1dGVBbGxvd2VkT3BlcmF0b3JzKFxuICAgIGZpZWxkcz86IFNvdXJjZUZpZWxkc09wdGlvbnNQYXJhbXNbXSxcbiAgICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmcsXG4gICAgZGVmYXVsdE9wZXJhdG9yc1R5cGU/OiBPZ2NGaWx0ZXJPcGVyYXRvclR5cGVcbiAgKSB7XG4gICAgbGV0IGVmZmVjdGl2ZU9wZXJhdG9yczoge30gPSB7fTtcbiAgICBsZXQgYWxsb3dlZE9wZXJhdG9ycztcbiAgICBsZXQgZmllbGRzSGFzU3BhdGlhbE9wZXJhdG9yOiBib29sZWFuO1xuICAgIGxldCBpbmNsdWRlQ29udGFpbnM6IGJvb2xlYW47XG5cbiAgICBpZiAoZmllbGRzICYmIHByb3BlcnR5TmFtZSkge1xuICAgICAgY29uc3Qgc3JjRmllbGQgPSBmaWVsZHMuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IHByb3BlcnR5TmFtZSk7XG4gICAgICBhbGxvd2VkT3BlcmF0b3JzID1cbiAgICAgICAgc3JjRmllbGQgJiYgc3JjRmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGVcbiAgICAgICAgICA/IHNyY0ZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlXG4gICAgICAgICAgOiBkZWZhdWx0T3BlcmF0b3JzVHlwZTtcbiAgICB9XG5cbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBmaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoIWZpZWxkLmFsbG93ZWRPcGVyYXRvcnNUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFsbG93ZWRPcGVyYXRvcnNUeXBlID0gZmllbGQuYWxsb3dlZE9wZXJhdG9yc1R5cGUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cbiAgICAgICAgICAgIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICBhbGxvd2VkT3BlcmF0b3JzVHlwZSA9PT1cbiAgICAgICAgICAgIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWwudG9Mb3dlckNhc2UoKVxuICAgICAgICApIHtcbiAgICAgICAgICBmaWVsZHNIYXNTcGF0aWFsT3BlcmF0b3IgPSB0cnVlO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGFsbG93ZWRPcGVyYXRvcnNUeXBlID09PSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGluY2x1ZGVDb250YWlucyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBhbGxvd2VkT3BlcmF0b3JzID0gYWxsb3dlZE9wZXJhdG9yc1xuICAgICAgPyBhbGxvd2VkT3BlcmF0b3JzXG4gICAgICA6IE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpY0FuZFNwYXRpYWw7XG5cbiAgICBzd2l0Y2ggKGFsbG93ZWRPcGVyYXRvcnMudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQWxsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB0aGlzLm9wZXJhdG9ycztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5TcGF0aWFsOlxuICAgICAgICBlZmZlY3RpdmVPcGVyYXRvcnMgPSB7XG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLkludGVyc2VjdHNdOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH0sXG4gICAgICAgICAgW09nY0ZpbHRlck9wZXJhdG9yLldpdGhpbl06IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3JUeXBlLkJhc2ljQW5kU3BhdGlhbDpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5JbnRlcnNlY3RzXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5XaXRoaW5dOiB7IHNwYXRpYWw6IHRydWUsIGZpZWxkUmVzdHJpY3Q6IFtdIH1cbiAgICAgICAgfTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yVHlwZS5CYXNpYzpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzRXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUb106IHtcbiAgICAgICAgICAgIHNwYXRpYWw6IGZhbHNlLFxuICAgICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuVGltZTpcbiAgICAgICAgZWZmZWN0aXZlT3BlcmF0b3JzID0ge1xuICAgICAgICAgIFtPZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmddOiB7IHNwYXRpYWw6IGZhbHNlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvclR5cGUuQmFzaWNOdW1lcmljT3BlcmF0b3I6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xlc3NUaGFuT3JFcXVhbFRvXToge1xuICAgICAgICAgICAgc3BhdGlhbDogZmFsc2UsXG4gICAgICAgICAgICBmaWVsZFJlc3RyaWN0OiBbJ251bWJlciddXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGVmZmVjdGl2ZU9wZXJhdG9ycyA9IHtcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc05vdEVxdWFsVG9dOiB7XG4gICAgICAgICAgICBzcGF0aWFsOiBmYWxzZSxcbiAgICAgICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuSW50ZXJzZWN0c106IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfSxcbiAgICAgICAgICBbT2djRmlsdGVyT3BlcmF0b3IuV2l0aGluXTogeyBzcGF0aWFsOiB0cnVlLCBmaWVsZFJlc3RyaWN0OiBbXSB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGZpZWxkc0hhc1NwYXRpYWxPcGVyYXRvcikge1xuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkludGVyc2VjdHMgPSB7XG4gICAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICAgIGZpZWxkUmVzdHJpY3Q6IFtdXG4gICAgICB9O1xuICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLldpdGhpbiA9IHsgc3BhdGlhbDogdHJ1ZSwgZmllbGRSZXN0cmljdDogW10gfTtcbiAgICAgIGlmIChpbmNsdWRlQ29udGFpbnMpIHtcbiAgICAgICAgKGVmZmVjdGl2ZU9wZXJhdG9ycyBhcyBhbnkpLkNvbnRhaW5zID0ge1xuICAgICAgICAgIHNwYXRpYWw6IHRydWUsXG4gICAgICAgICAgZmllbGRSZXN0cmljdDogW11cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZWZmZWN0aXZlT3BlcmF0b3JzO1xuICB9XG5cbiAgcHVibGljIGFkZEludGVyZmFjZUZpbHRlcihcbiAgICBpZ29PZ2NGaWx0ZXJPYmplY3Q/LFxuICAgIGdlb21ldHJ5TmFtZT8sXG4gICAgbGV2ZWwgPSAwLFxuICAgIHBhcmVudExvZ2ljYWwgPSAnT3InXG4gICk6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMge1xuICAgIGlmICghaWdvT2djRmlsdGVyT2JqZWN0KSB7XG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3QgPSB7IG9wZXJhdG9yOiAnUHJvcGVydHlJc0VxdWFsVG8nIH07XG4gICAgfVxuICAgIGNvbnN0IGYgPSB7XG4gICAgICBwcm9wZXJ0eU5hbWU6ICcnLFxuICAgICAgb3BlcmF0b3I6ICcnLFxuICAgICAgYWN0aXZlOiAnJyxcbiAgICAgIGZpbHRlcmlkOiB1dWlkKCksXG4gICAgICBzdGVwOiAnJyxcbiAgICAgIGJlZ2luOiAnJyxcbiAgICAgIGVuZDogJycsXG4gICAgICBzbGlkZXJPcHRpb25zOiB7fSxcbiAgICAgIGxvd2VyQm91bmRhcnk6ICcnLFxuICAgICAgdXBwZXJCb3VuZGFyeTogJycsXG4gICAgICBleHByZXNzaW9uOiAnJyxcbiAgICAgIHBhdHRlcm46ICcnLFxuICAgICAgd2lsZENhcmQ6ICcqJyxcbiAgICAgIHNpbmdsZUNoYXI6ICcuJyxcbiAgICAgIGVzY2FwZUNoYXI6ICchJyxcbiAgICAgIG1hdGNoQ2FzZTogdHJ1ZSxcbiAgICAgIGlnb1NwYXRpYWxTZWxlY3RvcjogJycsXG4gICAgICBpZ29TTlJDOiAnJyxcbiAgICAgIGdlb21ldHJ5TmFtZTogJycsXG4gICAgICBnZW9tZXRyeTogJycsXG4gICAgICB3a3RfZ2VvbWV0cnk6ICcnLFxuICAgICAgZXh0ZW50OiAnJyxcbiAgICAgIHNyc05hbWU6ICcnLFxuICAgICAgcGFyZW50TG9naWNhbDogJycsXG4gICAgICBsZXZlbDogMFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgIGYsXG4gICAgICB7XG4gICAgICAgIHBhcmVudExvZ2ljYWwsXG4gICAgICAgIGxldmVsLFxuICAgICAgICBnZW9tZXRyeU5hbWVcbiAgICAgIH0sXG4gICAgICBpZ29PZ2NGaWx0ZXJPYmplY3RcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNoZWNrSWdvRmlsdGVyc1Byb3BlcnRpZXMoXG4gICAgZmlsdGVyT2JqZWN0OiBhbnksXG4gICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgcHJvajogb2xQcm9qZWN0aW9uLFxuICAgIGFjdGl2ZSA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IGZpbHRlckFycmF5ID0gW107XG4gICAgaWYgKGZpbHRlck9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBmaWx0ZXJPYmplY3QuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICBmaWx0ZXJBcnJheS5wdXNoKFxuICAgICAgICAgIHRoaXMuY2hlY2tJZ29GaWx0ZXJzUHJvcGVydGllcyhcbiAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICBmaWVsZE5hbWVHZW9tZXRyeSxcbiAgICAgICAgICAgIHByb2osXG4gICAgICAgICAgICBhY3RpdmVcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmaWx0ZXJBcnJheTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnbG9naWNhbCcpKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxvZ2ljYWw6IGZpbHRlck9iamVjdC5sb2dpY2FsLFxuICAgICAgICAgICAgZmlsdGVyczogdGhpcy5jaGVja0lnb0ZpbHRlcnNQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICBmaWx0ZXJPYmplY3QuZmlsdGVycyxcbiAgICAgICAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgICAgIHByb2osXG4gICAgICAgICAgICAgIGFjdGl2ZVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAoZmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdvcGVyYXRvcicpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpbHRlclByb3BlcnRpZXMoXG4gICAgICAgICAgZmlsdGVyT2JqZWN0IGFzIE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnMsXG4gICAgICAgICAgZmllbGROYW1lR2VvbWV0cnksXG4gICAgICAgICAgcHJvaixcbiAgICAgICAgICBhY3RpdmVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEZpbHRlclByb3BlcnRpZXMoXG4gICAgaWdvT2djRmlsdGVyT2JqZWN0OiBPZ2NJbnRlcmZhY2VGaWx0ZXJPcHRpb25zLFxuICAgIGZpZWxkTmFtZUdlb21ldHJ5LFxuICAgIHByb2o6IG9sUHJvamVjdGlvbixcbiAgICBhY3RpdmUgPSBmYWxzZVxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJpZCA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyaWQnKVxuICAgICAgPyBpZ29PZ2NGaWx0ZXJPYmplY3QuZmlsdGVyaWRcbiAgICAgIDogdXVpZCgpO1xuICAgIGNvbnN0IHN0YXR1cyA9IGlnb09nY0ZpbHRlck9iamVjdC5oYXNPd25Qcm9wZXJ0eSgnYWN0aXZlJylcbiAgICAgID8gaWdvT2djRmlsdGVyT2JqZWN0LmFjdGl2ZVxuICAgICAgOiBhY3RpdmU7XG5cbiAgICBjb25zdCBzcnNOYW1lID0gaWdvT2djRmlsdGVyT2JqZWN0Lmhhc093blByb3BlcnR5KCdzcnNOYW1lJylcbiAgICAgID8gaWdvT2djRmlsdGVyT2JqZWN0LnNyc05hbWVcbiAgICAgIDogcHJvalxuICAgICAgPyBwcm9qLmdldENvZGUoKVxuICAgICAgOiAnRVBTRzozODU3JztcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICB7XG4gICAgICAgIGZpbHRlcmlkLFxuICAgICAgICBhY3RpdmU6IHN0YXR1cyxcbiAgICAgICAgaWdvU3BhdGlhbFNlbGVjdG9yOiAnZml4ZWRFeHRlbnQnLFxuICAgICAgICBzcnNOYW1lXG4gICAgICB9LFxuICAgICAgaWdvT2djRmlsdGVyT2JqZWN0LFxuICAgICAgeyBnZW9tZXRyeU5hbWU6IGZpZWxkTmFtZUdlb21ldHJ5IH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIHJlYnVpbHRJZ29PZ2NGaWx0ZXJPYmplY3RGcm9tU2VxdWVuY2UoXG4gICAgc2VxdWVuY2U6IE9nY0ludGVyZmFjZUZpbHRlck9wdGlvbnNbXVxuICApOiBJZ29PZ2NGaWx0ZXJPYmplY3Qge1xuICAgIGlmIChzZXF1ZW5jZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBpZiAoc2VxdWVuY2UubGVuZ3RoID49IDEpIHtcbiAgICAgICAgbGV0IGxhc3RQYXJlbnRMb2dpY2FsID0gc2VxdWVuY2VbMF0ucGFyZW50TG9naWNhbDtcbiAgICAgICAgbGV0IG5leHRFbGVtZW50OiBhbnk7XG4gICAgICAgIGxldCBsb2dpY2FsQXJyYXkgPSBbXTtcbiAgICAgICAgbGV0IGxhc3RQcm9jZXNzZWRGaWx0ZXI7XG4gICAgICAgIHNlcXVlbmNlLmZvckVhY2goKHVpRmlsdGVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgZWxlbWVudCA9IE9iamVjdC5hc3NpZ24oe30sIHVpRmlsdGVyKTtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHNlcXVlbmNlLmluZGV4T2YodWlGaWx0ZXIpO1xuICAgICAgICAgIGlmIChpbmRleCA+PSAwICYmIGluZGV4IDwgc2VxdWVuY2UubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgbmV4dEVsZW1lbnQgPSBzZXF1ZW5jZVtpbmRleCArIDFdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXh0RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSBlbGVtZW50LmFjdGl2ZTtcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5maWx0ZXJpZDtcbiAgICAgICAgICBkZWxldGUgZWxlbWVudC5wYXJlbnRMb2dpY2FsO1xuICAgICAgICAgIGxvZ2ljYWxBcnJheS5wdXNoKGVsZW1lbnQpO1xuXG4gICAgICAgICAgaWYgKHNlcXVlbmNlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgbGFzdFByb2Nlc3NlZEZpbHRlciA9IGVsZW1lbnQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChsYXN0UGFyZW50TG9naWNhbCAhPT0gbmV4dEVsZW1lbnQucGFyZW50TG9naWNhbCkge1xuICAgICAgICAgICAgaWYgKGxvZ2ljYWxBcnJheS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgJ1lvdSBtdXN0IHNldCBhdCAnICtcbiAgICAgICAgICAgICAgICAgICdsZWFzdCB0d28gb3BlcmF0b3IgaW4gYSBsb2dpY2FsICgnICtcbiAgICAgICAgICAgICAgICAgIGxhc3RQYXJlbnRMb2dpY2FsICtcbiAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbGFzdFByb2Nlc3NlZEZpbHRlciA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgeyBsb2dpY2FsOiBsYXN0UGFyZW50TG9naWNhbCwgZmlsdGVyczogbG9naWNhbEFycmF5IH1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgbG9naWNhbEFycmF5ID0gW2xhc3RQcm9jZXNzZWRGaWx0ZXJdO1xuICAgICAgICAgICAgICBsYXN0UGFyZW50TG9naWNhbCA9IG5leHRFbGVtZW50LnBhcmVudExvZ2ljYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGxhc3RQcm9jZXNzZWRGaWx0ZXI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcHV0ZUlnb1NlbGVjdG9yKHNlbGVjdG9yczogSWdvT2djU2VsZWN0b3IpOiBJZ29PZ2NTZWxlY3RvciB7XG4gICAgaWYgKFxuICAgICAgc2VsZWN0b3JzLmdyb3Vwcy5ldmVyeSgoZ3JvdXApID0+IGdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzICE9PSB1bmRlZmluZWQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gc2VsZWN0b3JzO1xuICAgIH1cbiAgICBsZXQgc2VsZWN0b3I6IElnb09nY1NlbGVjdG9yO1xuICAgIGlmIChzZWxlY3RvcnMuZ3JvdXBzICYmIHNlbGVjdG9ycy5idW5kbGVzKSB7XG4gICAgICBpZiAoIXNlbGVjdG9ycy5idW5kbGVzLmV2ZXJ5KChidW5kbGUpID0+IGJ1bmRsZS5pZCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1lvdSBtdXN0IHNldCBhbiBpZCBmb3IgZWFjaCBvZiB5b3VyIGJ1bmRsZXMnXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzZWxlY3RvciA9IE9iamVjdFV0aWxzLmNvcHlEZWVwKHNlbGVjdG9ycyk7XG4gICAgICBzZWxlY3Rvci5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgZ3JvdXAudGl0bGUgPSBncm91cC50aXRsZSA/IGdyb3VwLnRpdGxlIDogZ3JvdXAubmFtZTtcbiAgICAgICAgZ3JvdXAuZW5hYmxlZCA9IGdyb3VwLmVuYWJsZWQgPyBncm91cC5lbmFibGVkIDogZmFsc2U7XG4gICAgICAgIGdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzID0gT2JqZWN0VXRpbHMuY29weURlZXAoXG4gICAgICAgICAgc2VsZWN0b3IuYnVuZGxlcy5maWx0ZXIoKGIpID0+IGdyb3VwLmlkcy5pbmNsdWRlcyhiLmlkKSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIXNlbGVjdG9ycy5ncm91cHMgJiYgc2VsZWN0b3JzLmJ1bmRsZXMpIHtcbiAgICAgIHNlbGVjdG9yID0gT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3JzKTtcbiAgICAgIHNlbGVjdG9yLmdyb3VwcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHRpdGxlOiAnZ3JvdXAxJyxcbiAgICAgICAgICBuYW1lOiAnZ3JvdXAxJyxcbiAgICAgICAgICBjb21wdXRlZFNlbGVjdG9yczogT2JqZWN0VXRpbHMuY29weURlZXAoc2VsZWN0b3IuYnVuZGxlcylcbiAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RvciA9IHtcbiAgICAgICAgYnVuZGxlczogc2VsZWN0b3JzIGFzIGFueSxcbiAgICAgICAgZ3JvdXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6ICdncm91cDEnLFxuICAgICAgICAgICAgbmFtZTogJ2dyb3VwMScsXG4gICAgICAgICAgICBjb21wdXRlZFNlbGVjdG9yczogT2JqZWN0VXRpbHMuY29weURlZXAoXG4gICAgICAgICAgICAgIHNlbGVjdG9yc1xuICAgICAgICAgICAgKSBhcyBPZ2NTZWxlY3RvckJ1bmRsZVtdXG4gICAgICAgICAgfSBhcyBTZWxlY3Rvckdyb3VwXG4gICAgICAgIF0sXG4gICAgICAgIHNlbGVjdG9yVHlwZTogc2VsZWN0b3Iuc2VsZWN0b3JUeXBlXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoIXNlbGVjdG9yLmdyb3Vwcy5maW5kKChzZWxlY3Rvckdyb3VwKSA9PiBzZWxlY3Rvckdyb3VwLmVuYWJsZWQpKSB7XG4gICAgICBzZWxlY3Rvci5ncm91cHNbMF0uZW5hYmxlZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVPZ2NGaWx0ZXJzQXBwbGllZFZhbHVlKFxuICAgIG9wdGlvbnM6IE9nY0ZpbHRlcmFibGVEYXRhU291cmNlT3B0aW9ucyxcbiAgICBmaWVsZE5hbWVHZW9tZXRyeTogc3RyaW5nLFxuICAgIGV4dGVudD86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdLFxuICAgIHByb2o/OiBvbFByb2plY3Rpb25cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBvZ2NGaWx0ZXJzID0gb3B0aW9ucy5vZ2NGaWx0ZXJzO1xuICAgIGlmICghb2djRmlsdGVycykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBjb25kaXRpb25zID0gW107XG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nU2VsZWN0b3IgPSAnJztcbiAgICBsZXQgZmlsdGVyUXVlcnlTdHJpbmdBZHZhbmNlZEZpbHRlcnMgPSAnJztcbiAgICBpZiAob2djRmlsdGVycy5lbmFibGVkICYmIChvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zIHx8IG9nY0ZpbHRlcnMuY2hlY2tib3hlcyB8fCBvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucyB8fCBvZ2NGaWx0ZXJzLnNlbGVjdCkpIHtcbiAgICAgIGxldCBzZWxlY3RvcnM7XG4gICAgICBpZiAob2djRmlsdGVycy5wdXNoQnV0dG9ucykge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLnB1c2hCdXR0b25zO1xuICAgICAgICBjb25zdCBwdXNoQ29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVycywgc2VsZWN0b3JzKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgcHVzaENvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9nY0ZpbHRlcnMuY2hlY2tib3hlcykge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLmNoZWNrYm94ZXM7XG4gICAgICAgIGNvbnN0IGNoZWNrYm94Q29uZGl0aW9ucyA9IHRoaXMuZm9ybWF0R3JvdXBBbmRGaWx0ZXIob2djRmlsdGVycywgc2VsZWN0b3JzKTtcbiAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgY2hlY2tib3hDb25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucykge1xuICAgICAgICBzZWxlY3RvcnMgPSBvZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucztcbiAgICAgICAgY29uc3Qgc2VsZWN0b3JzQ29yciA9IHRoaXMudmVyaWZ5TXVsdGlwbGVFbmFibGVkcyhzZWxlY3RvcnMpO1xuICAgICAgICBjb25zdCByYWRpb0NvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnMsIHNlbGVjdG9yc0NvcnIpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiByYWRpb0NvbmRpdGlvbnMpIHtcbiAgICAgICAgICBjb25kaXRpb25zLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG9nY0ZpbHRlcnMuc2VsZWN0KSB7XG4gICAgICAgIHNlbGVjdG9ycyA9IG9nY0ZpbHRlcnMuc2VsZWN0O1xuICAgICAgICBjb25zdCBzZWxlY3RvcnNDb3JyID0gdGhpcy52ZXJpZnlNdWx0aXBsZUVuYWJsZWRzKHNlbGVjdG9ycyk7XG4gICAgICAgIGNvbnN0IHNlbGVjdENvbmRpdGlvbnMgPSB0aGlzLmZvcm1hdEdyb3VwQW5kRmlsdGVyKG9nY0ZpbHRlcnMsIHNlbGVjdG9yc0NvcnIpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbiBvZiBzZWxlY3RDb25kaXRpb25zKSB7XG4gICAgICAgICAgY29uZGl0aW9ucy5wdXNoKGNvbmRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNvbmRpdGlvbnMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgZmlsdGVyUXVlcnlTdHJpbmdTZWxlY3RvciA9IHRoaXMuYnVpbGRGaWx0ZXIoXG4gICAgICAgICAgY29uZGl0aW9ucy5sZW5ndGggPT09IDFcbiAgICAgICAgICAgID8gY29uZGl0aW9uc1swXVxuICAgICAgICAgICAgOiB7IGxvZ2ljYWw6ICdBbmQnLCBmaWx0ZXJzOiBjb25kaXRpb25zIH0sXG4gICAgICAgICAgZXh0ZW50LFxuICAgICAgICAgIHByb2osXG4gICAgICAgICAgb2djRmlsdGVycy5nZW9tZXRyeU5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9nY0ZpbHRlcnMuZW5hYmxlZCAmJiBvZ2NGaWx0ZXJzLmZpbHRlcnMpIHtcbiAgICAgIG9nY0ZpbHRlcnMuZ2VvbWV0cnlOYW1lID0gb2djRmlsdGVycy5nZW9tZXRyeU5hbWUgfHwgZmllbGROYW1lR2VvbWV0cnk7XG4gICAgICBjb25zdCBpZ29GaWx0ZXJzID0gb2djRmlsdGVycy5maWx0ZXJzO1xuICAgICAgZmlsdGVyUXVlcnlTdHJpbmdBZHZhbmNlZEZpbHRlcnMgPSB0aGlzLmJ1aWxkRmlsdGVyKFxuICAgICAgICBpZ29GaWx0ZXJzLFxuICAgICAgICBleHRlbnQsXG4gICAgICAgIHByb2osXG4gICAgICAgIG9nY0ZpbHRlcnMuZ2VvbWV0cnlOYW1lLFxuICAgICAgICBvcHRpb25zXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBmaWx0ZXJRdWVyeVN0cmluZyA9IG9nY0ZpbHRlcnMuYWR2YW5jZWRPZ2NGaWx0ZXJzXG4gICAgICA/IGZpbHRlclF1ZXJ5U3RyaW5nQWR2YW5jZWRGaWx0ZXJzXG4gICAgICA6IGZpbHRlclF1ZXJ5U3RyaW5nU2VsZWN0b3I7XG4gICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nID0gdGhpcy5mb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXG4gICAgICAgIGZpbHRlclF1ZXJ5U3RyaW5nLFxuICAgICAgICAob3B0aW9ucyBhcyBhbnkpLnBhcmFtcy5MQVlFUlNcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnR5cGUgPT09ICd3ZnMnKSB7XG4gICAgICBmaWx0ZXJRdWVyeVN0cmluZyA9IHRoaXMuZm9ybWF0UHJvY2Vzc2VkT2djRmlsdGVyKFxuICAgICAgICBmaWx0ZXJRdWVyeVN0cmluZyxcbiAgICAgICAgKG9wdGlvbnMgYXMgYW55KS5wYXJhbXMuZmVhdHVyZVR5cGVzXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmaWx0ZXJRdWVyeVN0cmluZztcbiAgfVxuXG4gIHB1YmxpYyB2ZXJpZnlNdWx0aXBsZUVuYWJsZWRzKHNlbGVjdG9ycykge1xuICAgIHNlbGVjdG9ycy5idW5kbGVzLmZvckVhY2goYnVuZGxlID0+IHtcbiAgICAgIGlmICghYnVuZGxlLm11bHRpcGxlKSB7XG4gICAgICAgIGNvbnN0IGVuYWJsZWRzID0gYnVuZGxlLnNlbGVjdG9ycy5yZWR1Y2UoKGxpc3QsIGZpbHRlciwgaW5kZXgpID0+IChmaWx0ZXIuZW5hYmxlZCkgPT09IHRydWUgPyBsaXN0LmNvbmNhdChpbmRleCkgOiBsaXN0LCBbXSk7XG4gICAgICAgIGlmIChlbmFibGVkcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgZW5hYmxlZHMuc3BsaWNlKDAsIDEpO1xuICAgICAgICAgIGVuYWJsZWRzLmZvckVhY2goaW5kZXggPT4ge1xuICAgICAgICAgICAgYnVuZGxlLnNlbGVjdG9yc1tpbmRleF0uZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNlbGVjdG9ycztcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRHcm91cEFuZEZpbHRlcihvZ2NGaWx0ZXJzOiBPZ2NGaWx0ZXJzT3B0aW9ucywgc2VsZWN0b3JzKSB7XG4gICAgc2VsZWN0b3JzID0gdGhpcy5jb21wdXRlSWdvU2VsZWN0b3IoXG4gICAgICBzZWxlY3RvcnNcbiAgICApO1xuICAgIGNvbnN0IHNlbGVjdG9yQnVuZGxlID0gc2VsZWN0b3JzLmdyb3Vwcy5maW5kKFxuICAgICAgKGcpID0+IGcuZW5hYmxlZFxuICAgICkuY29tcHV0ZWRTZWxlY3RvcnM7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgIHNlbGVjdG9yQnVuZGxlLm1hcCgoYnVuZGxlKSA9PiB7XG4gICAgICBjb25zdCBidW5kbGVDb25kaXRpb24gPSBbXTtcbiAgICAgIGNvbnN0IHNlbGVjdG9yc1R5cGUgPSBidW5kbGUuc2VsZWN0b3JzIGFzIGFueTtcbiAgICAgIGlmICghc2VsZWN0b3JzVHlwZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzZWxlY3RvcnNUeXBlXG4gICAgICAgIC5maWx0ZXIoKG9nY3NlbGVjdG9yKSA9PiBvZ2NzZWxlY3Rvci5lbmFibGVkID09PSB0cnVlKVxuICAgICAgICAuZm9yRWFjaCgoZW5hYmxlZFNlbGVjdG9yKSA9PiBidW5kbGVDb25kaXRpb24ucHVzaChlbmFibGVkU2VsZWN0b3IuZmlsdGVycykpO1xuICAgICAgaWYgKGJ1bmRsZUNvbmRpdGlvbi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgY29uZGl0aW9ucy5wdXNoKGJ1bmRsZUNvbmRpdGlvblswXSk7XG4gICAgICB9IGVsc2UgaWYgKGJ1bmRsZUNvbmRpdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaCh7XG4gICAgICAgICAgbG9naWNhbDogYnVuZGxlLmxvZ2ljYWwsXG4gICAgICAgICAgZmlsdGVyczogYnVuZGxlQ29uZGl0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdwdXNoQnV0dG9uJykge1xuICAgICAgb2djRmlsdGVycy5wdXNoQnV0dG9ucyA9IHNlbGVjdG9ycztcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgIG9nY0ZpbHRlcnMuY2hlY2tib3hlcyA9IHNlbGVjdG9ycztcbiAgICB9IGVsc2UgaWYgKHNlbGVjdG9ycy5zZWxlY3RvclR5cGUgPT09ICdyYWRpb0J1dHRvbicpIHtcbiAgICAgIG9nY0ZpbHRlcnMucmFkaW9CdXR0b25zID0gc2VsZWN0b3JzO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0b3JzLnNlbGVjdG9yVHlwZSA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIG9nY0ZpbHRlcnMuc2VsZWN0ID0gc2VsZWN0b3JzO1xuICAgIH1cbiAgICByZXR1cm4gY29uZGl0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRQcm9jZXNzZWRPZ2NGaWx0ZXIoXG4gICAgcHJvY2Vzc2VkRmlsdGVyOiBzdHJpbmcsXG4gICAgbGF5ZXJzT3JUeXBlbmFtZXM6IHN0cmluZ1xuICApOiBzdHJpbmcge1xuXG4gICAgaWYgKCFwcm9jZXNzZWRGaWx0ZXIpIHtyZXR1cm4gdW5kZWZpbmVkO307XG4gICAgbGV0IGFwcGxpZWRGaWx0ZXIgPSAnJztcbiAgICBpZiAocHJvY2Vzc2VkRmlsdGVyLmxlbmd0aCA9PT0gMCAmJiBsYXllcnNPclR5cGVuYW1lcy5pbmRleE9mKCcsJykgPT09IC0xKSB7XG4gICAgICBhcHBsaWVkRmlsdGVyID0gcHJvY2Vzc2VkRmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXllcnNPclR5cGVuYW1lcy5zcGxpdCgnLCcpLmZvckVhY2goKGxheWVyT3JUeXBlbmFtZXMpID0+IHtcbiAgICAgICAgYXBwbGllZEZpbHRlciA9IGAke2FwcGxpZWRGaWx0ZXJ9KCR7cHJvY2Vzc2VkRmlsdGVyLnJlcGxhY2UoXG4gICAgICAgICAgJ2ZpbHRlcj0nLFxuICAgICAgICAgICcnXG4gICAgICAgICl9KWA7XG4gICAgICB9KTtcbiAgICB9XG4gICAgYXBwbGllZEZpbHRlciA9IGFwcGxpZWRGaWx0ZXIucmVwbGFjZSgvXFwoXFwpL2csICcnKTtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9XG4gICAgICBhcHBsaWVkRmlsdGVyLmxlbmd0aCA+IDBcbiAgICAgICAgPyBhcHBsaWVkRmlsdGVyLnJlcGxhY2UoJ2ZpbHRlcj0nLCAnJylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGZpbHRlclZhbHVlO1xuICB9XG5cbiAgcHVibGljIHBhcnNlRmlsdGVyT3B0aW9uRGF0ZSh2YWx1ZTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJ3RvZGF5Jykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKG1vbWVudCh2YWx1ZSkuaXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=