geonetwork-ui 2.3.0-dev.e03215d1 → 2.3.0-dev.e43863db

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 (206) hide show
  1. package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +2 -2
  2. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +9 -7
  3. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +23 -8
  4. package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +15 -4
  5. package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +9 -7
  6. package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
  7. package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +1 -1
  8. package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +47 -2
  9. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +1 -1
  10. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +104 -0
  11. package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +8 -3
  12. package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -1
  13. package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +8 -1
  14. package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +73 -20
  15. package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
  16. package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
  17. package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +1 -1
  18. package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +58 -17
  19. package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +7 -3
  20. package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
  21. package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +17 -9
  22. package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +34 -5
  23. package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +1 -3
  24. package/esm2022/libs/feature/search/src/index.mjs +2 -1
  25. package/esm2022/libs/feature/search/src/lib/results-layout/results-layout.component.mjs +1 -1
  26. package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +4 -4
  27. package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +1 -1
  28. package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +1 -1
  29. package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +1 -1
  30. package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +1 -1
  31. package/esm2022/libs/ui/elements/src/index.mjs +2 -2
  32. package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -2
  33. package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +2 -2
  34. package/esm2022/libs/ui/elements/src/lib/error/error.component.mjs +30 -0
  35. package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +16 -3
  36. package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +89 -54
  37. package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +6 -11
  38. package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +3 -5
  39. package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
  40. package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +4 -3
  41. package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +5 -3
  42. package/esm2022/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +29 -0
  43. package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +5 -3
  44. package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +6 -5
  45. package/esm2022/libs/ui/layout/src/index.mjs +2 -1
  46. package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +76 -0
  47. package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +42 -18
  48. package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +3 -8
  49. package/esm2022/libs/util/app-config/src/lib/app-config.mjs +3 -1
  50. package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +2 -1
  51. package/esm2022/libs/util/app-config/src/lib/model.mjs +1 -1
  52. package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -2
  53. package/esm2022/translations/de.json +12 -14
  54. package/esm2022/translations/en.json +12 -14
  55. package/esm2022/translations/es.json +12 -14
  56. package/esm2022/translations/fr.json +12 -14
  57. package/esm2022/translations/it.json +12 -14
  58. package/esm2022/translations/nl.json +12 -14
  59. package/esm2022/translations/pt.json +12 -14
  60. package/fesm2022/geonetwork-ui.mjs +997 -536
  61. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  62. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts +2 -2
  63. package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -1
  64. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts +1 -1
  65. package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
  66. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +4 -1
  67. package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
  68. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +2 -1
  69. package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
  70. package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
  71. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +3 -3
  72. package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
  73. package/libs/feature/dataviz/src/lib/service/data.service.d.ts +4 -1
  74. package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
  75. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts +21 -0
  76. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -0
  77. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +1 -0
  78. package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
  79. package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
  80. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +10 -5
  81. package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
  82. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +7 -0
  83. package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
  84. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +1 -1
  85. package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
  86. package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
  87. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +2 -2
  88. package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
  89. package/libs/feature/record/src/lib/state/mdview.facade.d.ts +5 -2
  90. package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
  91. package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
  92. package/libs/feature/search/src/index.d.ts +1 -0
  93. package/libs/feature/search/src/index.d.ts.map +1 -1
  94. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts +3 -3
  95. package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
  96. package/libs/ui/elements/src/index.d.ts +1 -1
  97. package/libs/ui/elements/src/index.d.ts.map +1 -1
  98. package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
  99. package/libs/ui/elements/src/lib/error/error.component.d.ts +16 -0
  100. package/libs/ui/elements/src/lib/error/error.component.d.ts.map +1 -0
  101. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +3 -1
  102. package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
  103. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +22 -4
  104. package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
  105. package/libs/ui/elements/src/lib/ui-elements.module.d.ts +29 -30
  106. package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
  107. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts +1 -2
  108. package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts.map +1 -1
  109. package/libs/ui/inputs/src/index.d.ts +1 -0
  110. package/libs/ui/inputs/src/index.d.ts.map +1 -1
  111. package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts +1 -1
  112. package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts.map +1 -1
  113. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts +2 -1
  114. package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
  115. package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +12 -0
  116. package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -0
  117. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +2 -1
  118. package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
  119. package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +27 -27
  120. package/libs/ui/layout/src/index.d.ts +1 -0
  121. package/libs/ui/layout/src/index.d.ts.map +1 -1
  122. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +25 -0
  123. package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -0
  124. package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts +13 -6
  125. package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts.map +1 -1
  126. package/libs/ui/layout/src/lib/ui-layout.module.d.ts +4 -5
  127. package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
  128. package/libs/util/app-config/src/lib/app-config.d.ts.map +1 -1
  129. package/libs/util/app-config/src/lib/fixtures.d.ts.map +1 -1
  130. package/libs/util/app-config/src/lib/model.d.ts +1 -0
  131. package/libs/util/app-config/src/lib/model.d.ts.map +1 -1
  132. package/package.json +2 -2
  133. package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +9 -1
  134. package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +3 -3
  135. package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +35 -31
  136. package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +68 -16
  137. package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +72 -17
  138. package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +16 -10
  139. package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +3 -3
  140. package/src/libs/common/fixtures/src/lib/link.fixtures.ts +8 -0
  141. package/src/libs/common/fixtures/src/lib/records.fixtures.ts +8 -0
  142. package/src/libs/feature/dataviz/src/lib/service/data.service.ts +65 -1
  143. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.css +0 -0
  144. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +14 -0
  145. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +143 -0
  146. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +5 -0
  147. package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +5 -0
  148. package/src/libs/feature/editor/src/lib/fields.config.ts +7 -0
  149. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +7 -0
  150. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +32 -18
  151. package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +72 -17
  152. package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +7 -0
  153. package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +57 -17
  154. package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +6 -2
  155. package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +17 -9
  156. package/src/libs/feature/record/src/lib/state/mdview.facade.ts +40 -4
  157. package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +0 -2
  158. package/src/libs/feature/search/src/index.ts +1 -0
  159. package/src/libs/feature/search/src/lib/results-list/results-list.container.component.html +4 -4
  160. package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -2
  161. package/src/libs/ui/elements/src/index.ts +1 -1
  162. package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +2 -1
  163. package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +1 -1
  164. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.html → error/error.component.html} +18 -3
  165. package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.ts → error/error.component.ts} +5 -4
  166. package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +38 -20
  167. package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +12 -0
  168. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +25 -9
  169. package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +116 -57
  170. package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -6
  171. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +1 -1
  172. package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +0 -1
  173. package/src/libs/ui/inputs/src/index.ts +1 -0
  174. package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.ts +3 -0
  175. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -0
  176. package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +1 -0
  177. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.css +6 -0
  178. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.html +26 -0
  179. package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.ts +32 -0
  180. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +1 -0
  181. package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +1 -0
  182. package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +1 -1
  183. package/src/libs/ui/layout/src/index.ts +1 -0
  184. package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +23 -0
  185. package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +20 -0
  186. package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +84 -0
  187. package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +8 -4
  188. package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +4 -4
  189. package/src/libs/ui/layout/src/lib/carousel/carousel.component.ts +45 -15
  190. package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -2
  191. package/src/libs/util/app-config/src/lib/app-config.ts +2 -0
  192. package/src/libs/util/app-config/src/lib/fixtures.ts +1 -0
  193. package/src/libs/util/app-config/src/lib/model.ts +1 -0
  194. package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +1 -1
  195. package/translations/de.json +12 -14
  196. package/translations/en.json +12 -14
  197. package/translations/es.json +12 -14
  198. package/translations/fr.json +12 -14
  199. package/translations/it.json +12 -14
  200. package/translations/nl.json +12 -14
  201. package/translations/pt.json +12 -14
  202. package/translations/sk.json +12 -14
  203. package/esm2022/libs/ui/elements/src/lib/search-results-error/search-results-error.component.mjs +0 -29
  204. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts +0 -15
  205. package/libs/ui/elements/src/lib/search-results-error/search-results-error.component.d.ts.map +0 -1
  206. /package/src/libs/ui/elements/src/lib/{search-results-error/search-results-error.component.css → error/error.component.css} +0 -0
@@ -1,6 +1,6 @@
1
- import { addAttribute, appendChildren, createChild, createElement, findChildElement, findChildOrCreate, findChildrenElement, findNestedChildOrCreate, findNestedElements, readAttribute, removeAllChildren, removeChildren, removeChildrenByName, setTextContent, } from '../xml-utils';
2
- import { fallback, filterArray, getAtIndex, map, mapArray, noop, pipe, tap, } from '../function-utils';
3
1
  import format from 'date-fns/format';
2
+ import { fallback, filterArray, getAtIndex, map, mapArray, noop, pipe, tap, } from '../function-utils';
3
+ import { addAttribute, appendChildren, createChild, createElement, findChildElement, findChildOrCreate, findChildrenElement, findNestedChildOrCreate, findNestedElements, readAttribute, removeAllChildren, removeChildren, removeChildrenByName, setTextContent, } from '../xml-utils';
4
4
  import { readKind } from './read-parts';
5
5
  import { namePartsToFull } from './utils/individual-name';
6
6
  export function writeCharacterString(text) {
@@ -126,7 +126,7 @@ export function getISODuration(updateFrequency) {
126
126
  duration.hours = Math.round(24 / updateFrequency.updatedTimes);
127
127
  break;
128
128
  case 'week':
129
- duration.days = Math.round(7 / updateFrequency.updatedTimes);
129
+ duration.days = Math.round(7 / updateFrequency.updatedTimes - 0.0001); // this is to make sure that '2 times per week' = 'every 3 days'
130
130
  break;
131
131
  case 'month':
132
132
  if (updateFrequency.updatedTimes <= 1)
@@ -400,4 +400,15 @@ export function createOnlineResource(onlineResource) {
400
400
  export function writeOnlineResources(record, rootEl) {
401
401
  pipe(removeDistributions(), appendChildren(...record.onlineResources.map(createOnlineResource)))(rootEl);
402
402
  }
403
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtcGFydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTEzOS93cml0ZS1wYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBQ2QsV0FBVyxFQUNYLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix1QkFBdUIsRUFFdkIsa0JBQWtCLEVBQ2xCLGFBQWEsRUFFYixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixjQUFjLEdBRWYsTUFBTSxjQUFjLENBQUE7QUFDckIsT0FBTyxFQUdMLFFBQVEsRUFDUixXQUFXLEVBQ1gsVUFBVSxFQUNWLEdBQUcsRUFDSCxRQUFRLEVBQ1IsSUFBSSxFQUNKLElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQTtBQUNwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUV6RCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLElBQVk7SUFFWixPQUFPLEdBQUcsQ0FDUixJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDckUsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixHQUFRO0lBRVIsT0FBTyxHQUFHLENBQ1IsSUFBSSxDQUNGLHVCQUF1QixDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsRUFDakQsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUMvQixDQUNGLENBQUE7QUFDSCxDQUFDO0FBRUQs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QUMsQ0FDakQsQ0FDRjtRQUNILENBQUMsQ0FBQyxJQUFJLEVBQ1IsTUFBTSxJQUFJLGNBQWM7UUFDdEIsQ0FBQyxDQUFDLGNBQWMsQ0FDWixJQUFJLENBQ0YsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUN6QixvQkFBb0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQzFDLENBQ0Y7UUFDSCxDQUFDLENBQUMsSUFBSSxFQUNSLGNBQWMsQ0FDWixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQ25FLElBQUksQ0FDRixhQUFhLENBQUMsY0FBYyxDQUFDLEVBQzdCLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxFQUN4QyxZQUFZLENBQ1YsVUFBVSxFQUNWLHFGQUFxRixDQUN0RixFQUNELFlBQVksQ0FBQyxlQUFlLEVBQUUsWUFBWSxDQUFDLENBQzVDLENBQ0YsQ0FDRixDQUNGLENBQUE7SUFDRCxPQUFPLElBQUksQ0FDVCxhQUFhLENBQUMsc0JBQXNCLENBQUMsRUFDckMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLEVBQ2xDLHFCQUFxQixDQUN0QixDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FDbEMsTUFBcUIsRUFDckIsTUFBa0I7SUFFbEIsSUFBSSxDQUNGLG1CQUFtQixFQUFFLEVBQ3JCLGNBQWMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FDcEUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDYXRhbG9nUmVjb3JkLFxuICBDb25zdHJhaW50LFxuICBEYXRhc2V0RGlzdHJpYnV0aW9uLFxuICBEYXRhc2V0UmVjb3JkLFxuICBEYXRhc2V0U2VydmljZURpc3RyaWJ1dGlvbixcbiAgSW5kaXZpZHVhbCxcbiAgS2V5d29yZCxcbiAgS2V5d29yZFRoZXNhdXJ1cyxcbiAgUmVjb3JkU3RhdHVzLFxuICBSb2xlLFxuICBTZXJ2aWNlRW5kcG9pbnQsXG4gIFNlcnZpY2VPbmxpbmVSZXNvdXJjZSxcbiAgU2VydmljZVJlY29yZCxcbiAgVXBkYXRlRnJlcXVlbmN5Q29kZSxcbiAgVXBkYXRlRnJlcXVlbmN5Q3VzdG9tLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQge1xuICBhZGRBdHRyaWJ1dGUsXG4gIGFwcGVuZENoaWxkcmVuLFxuICBjcmVhdGVDaGlsZCxcbiAgY3JlYXRlRWxlbWVudCxcbiAgZmluZENoaWxkRWxlbWVudCxcbiAgZmluZENoaWxkT3JDcmVhdGUsXG4gIGZpbmRDaGlsZHJlbkVsZW1lbnQsXG4gIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlLFxuICBmaW5kTmVzdGVkRWxlbWVudCxcbiAgZmluZE5lc3RlZEVsZW1lbnRzLFxuICByZWFkQXR0cmlidXRlLFxuICByZWFkVGV4dCxcbiAgcmVtb3ZlQWxsQ2hpbGRyZW4sXG4gIHJlbW92ZUNoaWxkcmVuLFxuICByZW1vdmVDaGlsZHJlbkJ5TmFtZSxcbiAgc2V0VGV4dENvbnRlbnQsXG4gIFhtbEVsZW1lbnQsXG59IGZyb20gJy4uL3htbC11dGlscydcbmltcG9ydCB7XG4gIENoYWluYWJsZUZ1bmN0aW9uLFxuICBjb21iaW5lLFxuICBmYWxsYmFjayxcbiAgZmlsdGVyQXJyYXksXG4gIGdldEF0SW5kZXgsXG4gIG1hcCxcbiAgbWFwQXJyYXksXG4gIG5vb3AsXG4gIHBpcGUsXG4gIHRhcCxcbn0gZnJvbSAnLi4vZnVuY3Rpb24tdXRpbHMnXG5pbXBvcnQgZm9ybWF0IGZyb20gJ2RhdGUtZm5zL2Zvcm1hdCdcbmltcG9ydCB7IHJlYWRLaW5kIH0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHsgbmFtZVBhcnRzVG9GdWxsIH0gZnJvbSAnLi91dGlscy9pbmRpdmlkdWFsLW5hbWUnXG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNoYXJhY3RlclN0cmluZyhcbiAgdGV4dDogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiB0YXAoXG4gICAgcGlwZShmaW5kQ2hpbGRPckNyZWF0ZSgnZ2NvOkNoYXJhY3RlclN0cmluZycpLCBzZXRUZXh0Q29udGVudCh0ZXh0KSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVMaW5rYWdlKFxuICB1cmw6IFVSTFxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gdGFwKFxuICAgIHBpcGUoXG4gICAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmxpbmthZ2UnLCAnZ21kOlVSTCcpLFxuICAgICAgc2V0VGV4dENvbnRlbnQodXJsLnRvU3RyaW5nKCkpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUFuY2hvcihcbiAgdXJsOiBVUkwsXG4gIHRleHQ/OiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIHRhcChcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkT3JDcmVhdGUoJ2dteDpBbmNob3InKSxcbiAgICAgIGFkZEF0dHJpYnV0ZSgneGxpbms6aHJlZicsIHVybC50b1N0cmluZygpKSxcbiAgICAgIHRleHQgPyBzZXRUZXh0Q29udGVudCh0ZXh0KSA6IG5vb3BcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRGF0ZVRpbWUoXG4gIGRhdGU6IERhdGVcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIHRhcChcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkT3JDcmVhdGUoJ2djbzpEYXRlVGltZScpLFxuICAgICAgc2V0VGV4dENvbnRlbnQoZm9ybWF0KGRhdGUsIFwieXl5eS1NTS1kZCdUJ0hIOm1tOnNzXCIpKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVEYXRlKFxuICBkYXRlOiBEYXRlXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiB0YXAoXG4gICAgcGlwZShcbiAgICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnY286RGF0ZScpLFxuICAgICAgc2V0VGV4dENvbnRlbnQoZm9ybWF0KGRhdGUsICd5eXl5LU1NLWRkJykpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9ncmVzc0NvZGUoc3RhdHVzOiBSZWNvcmRTdGF0dXMpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgJ2NvbXBsZXRlZCc6XG4gICAgICByZXR1cm4gJ2NvbXBsZXRlZCdcbiAgICBjYXNlICdkZXByZWNhdGVkJzpcbiAgICAgIHJldHVybiAnZGVwcmVjYXRlZCdcbiAgICBjYXNlICdvbmdvaW5nJzpcbiAgICAgIHJldHVybiAnb25Hb2luZydcbiAgICBjYXNlICdyZW1vdmVkJzpcbiAgICAgIHJldHVybiAncmVtb3ZlZCdcbiAgICBjYXNlICd1bmRlcl9kZXZlbG9wbWVudCc6XG4gICAgICByZXR1cm4gJ3VuZGVyRGV2ZWxvcG1lbnQnXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCBkZXRlcm1pbmUgcHJvZ3Jlc3MgY29kZSBmcm9tIHN0YXR1czogJHtzdGF0dXN9YFxuICAgICAgKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb2xlQ29kZShyb2xlOiBSb2xlKTogc3RyaW5nIHtcbiAgc3dpdGNoIChyb2xlKSB7XG4gICAgY2FzZSAnYXV0aG9yJzpcbiAgICAgIHJldHVybiAnYXV0aG9yJ1xuICAgIGNhc2UgJ2NvbGxhYm9yYXRvcic6XG4gICAgICByZXR1cm4gJ2NvbGxhYm9yYXRvcidcbiAgICBjYXNlICdjb250cmlidXRvcic6XG4gICAgICByZXR1cm4gJ2NvbnRyaWJ1dG9yJ1xuICAgIGNhc2UgJ2N1c3RvZGlhbic6XG4gICAgICByZXR1cm4gJ2N1c3RvZGlhbidcbiAgICBjYXNlICdkaXN0cmlidXRvcic6XG4gICAgICByZXR1cm4gJ2Rpc3RyaWJ1dG9yJ1xuICAgIGNhc2UgJ2VkaXRvcic6XG4gICAgICByZXR1cm4gJ2VkaXRvcidcbiAgICBjYXNlICdmdW5kZXInOlxuICAgICAgcmV0dXJuICdmdW5kZXInXG4gICAgY2FzZSAnbWVkaWF0b3InOlxuICAgICAgcmV0dXJuICdtZWRpYXRvcidcbiAgICBjYXNlICdvcmlnaW5hdG9yJzpcbiAgICAgIHJldHVybiAnb3JpZ2luYXRvcidcbiAgICBjYXNlICdvdGhlcic6XG4gICAgICByZXR1cm4gJ290aGVyJ1xuICAgIGNhc2UgJ293bmVyJzpcbiAgICAgIHJldHVybiAnb3duZXInXG4gICAgY2FzZSAncG9pbnRfb2ZfY29udGFjdCc6XG4gICAgICByZXR1cm4gJ3BvaW50T2ZDb250YWN0J1xuICAgIGNhc2UgJ3ByaW5jaXBhbF9pbnZlc3RpZ2F0b3InOlxuICAgICAgcmV0dXJuICdwcmluY2lwYWxJbnZlc3RpZ2F0b3InXG4gICAgY2FzZSAncHJvY2Vzc29yJzpcbiAgICAgIHJldHVybiAncHJvY2Vzc29yJ1xuICAgIGNhc2UgJ3B1Ymxpc2hlcic6XG4gICAgICByZXR1cm4gJ3B1Ymxpc2hlcidcbiAgICBjYXNlICdyZXNvdXJjZV9wcm92aWRlcic6XG4gICAgICByZXR1cm4gJ3Jlc291cmNlUHJvdmlkZXInXG4gICAgY2FzZSAncmlnaHRzX2hvbGRlcic6XG4gICAgICByZXR1cm4gJ3JpZ2h0c0hvbGRlcidcbiAgICBjYXNlICdzcG9uc29yJzpcbiAgICAgIHJldHVybiAnc3BvbnNvcidcbiAgICBjYXNlICdzdGFrZWhvbGRlcic6XG4gICAgICByZXR1cm4gJ3N0YWtlaG9sZGVyJ1xuICAgIGNhc2UgJ3Vuc3BlY2lmaWVkJzpcbiAgICAgIHJldHVybiAndW5zcGVjaWZpZWQnXG4gICAgY2FzZSAndXNlcic6XG4gICAgICByZXR1cm4gJ3VzZXInXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGRldGVybWluZSByb2xlIGNvZGUgZnJvbSByb2xlOiAke3JvbGV9YClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlzdHJpYnV0aW9uUHJvdG9jb2woXG4gIGRpc3RyaWJ1dGlvbjogRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbik6IHN0cmluZyB7XG4gIHN3aXRjaCAoZGlzdHJpYnV0aW9uLmFjY2Vzc1NlcnZpY2VQcm90b2NvbC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnd2ZzJzpcbiAgICAgIHJldHVybiAnT0dDOldGUydcbiAgICBjYXNlICd3bXMnOlxuICAgICAgcmV0dXJuICdPR0M6V01TJ1xuICAgIGNhc2UgJ3dwcyc6XG4gICAgICByZXR1cm4gJ09HQzpXUFMnXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkaXN0cmlidXRpb24uYWNjZXNzU2VydmljZVByb3RvY29sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1haW50ZW5hbmNlRnJlcXVlbmN5Q29kZShcbiAgdXBkYXRlRnJlcXVlbmN5OiBVcGRhdGVGcmVxdWVuY3lDb2RlXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgc3dpdGNoICh1cGRhdGVGcmVxdWVuY3kpIHtcbiAgICBjYXNlICdhc05lZWRlZCc6XG4gICAgICByZXR1cm4gJ2FzTmVlZGVkJ1xuICAgIGNhc2UgJ3Vua25vd24nOlxuICAgICAgcmV0dXJuICd1bmtub3duJ1xuICAgIGNhc2UgJ2lycmVndWxhcic6XG4gICAgICByZXR1cm4gJ2lycmVndWxhcidcbiAgICBjYXNlICdub3RQbGFubmVkJzpcbiAgICAgIHJldHVybiAnbm90UGxhbm5lZCdcbiAgICBjYXNlICdjb250aW51YWwnOlxuICAgICAgcmV0dXJuICdjb250aW51YWwnXG4gICAgY2FzZSAncGVyaW9kaWMnOlxuICAgICAgcmV0dXJuICdwZXJpb2RpYydcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SVNPRHVyYXRpb24odXBkYXRlRnJlcXVlbmN5OiBVcGRhdGVGcmVxdWVuY3lDdXN0b20pOiBzdHJpbmcge1xuICBjb25zdCBkdXJhdGlvbiA9IHtcbiAgICB5ZWFyczogMCxcbiAgICBtb250aHM6IDAsXG4gICAgd2Vla3M6IDAsXG4gICAgZGF5czogMCxcbiAgICBob3VyczogMCxcbiAgfVxuICBzd2l0Y2ggKHVwZGF0ZUZyZXF1ZW5jeS5wZXIpIHtcbiAgICBjYXNlICdkYXknOlxuICAgICAgaWYgKHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMgPD0gMSkgZHVyYXRpb24uZGF5cyA9IDFcbiAgICAgIGVsc2UgZHVyYXRpb24uaG91cnMgPSBNYXRoLnJvdW5kKDI0IC8gdXBkYXRlRnJlcXVlbmN5LnVwZGF0ZWRUaW1lcylcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnd2Vlayc6XG4gICAgICBkdXJhdGlvbi5kYXlzID0gTWF0aC5yb3VuZCg3IC8gdXBkYXRlRnJlcXVlbmN5LnVwZGF0ZWRUaW1lcylcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnbW9udGgnOlxuICAgICAgaWYgKHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMgPD0gMSkgZHVyYXRpb24ubW9udGhzID0gMVxuICAgICAgZWxzZSBkdXJhdGlvbi5kYXlzID0gTWF0aC5yb3VuZCgzMCAvIHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMpXG4gICAgICBicmVha1xuICAgIGNhc2UgJ3llYXInOlxuICAgICAgaWYgKHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMgPD0gMSkgZHVyYXRpb24ueWVhcnMgPSAxXG4gICAgICBlbHNlIGR1cmF0aW9uLm1vbnRocyA9IE1hdGgucm91bmQoMTIgLyB1cGRhdGVGcmVxdWVuY3kudXBkYXRlZFRpbWVzKVxuICAgICAgYnJlYWtcbiAgfVxuICBjb25zdCBob3VycyA9IGR1cmF0aW9uLmhvdXJzID4gMCA/IGBUJHtkdXJhdGlvbi5ob3Vyc31IYCA6ICcnXG4gIHJldHVybiBgUCR7ZHVyYXRpb24ueWVhcnN9WSR7ZHVyYXRpb24ubW9udGhzfU0ke2R1cmF0aW9uLmRheXN9RCR7aG91cnN9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kUmVzcG9uc2libGVQYXJ0eShjb250YWN0OiBJbmRpdmlkdWFsKSB7XG4gIGNvbnN0IGZ1bGxOYW1lID0gbmFtZVBhcnRzVG9GdWxsKGNvbnRhY3QuZmlyc3ROYW1lLCBjb250YWN0Lmxhc3ROYW1lKVxuXG4gIGNvbnN0IGNyZWF0ZUFkZHJlc3MgPSBwaXBlKFxuICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDphZGRyZXNzJyksXG4gICAgY3JlYXRlQ2hpbGQoJ2dtZDpDSV9BZGRyZXNzJyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZWxlY3Ryb25pY01haWxBZGRyZXNzJyksXG4gICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnRhY3QuZW1haWwpXG4gICAgICApXG4gICAgKSxcbiAgICBjb250YWN0LmFkZHJlc3NcbiAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpkZWxpdmVyeVBvaW50JyksXG4gICAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhjb250YWN0LmFkZHJlc3MpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICA6IG5vb3BcbiAgKVxuXG4gIGNvbnN0IGNyZWF0ZUNvbnRhY3QgPSBwaXBlKFxuICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpjb250YWN0SW5mbycpLFxuICAgIGNyZWF0ZUNoaWxkKCdnbWQ6Q0lfQ29udGFjdCcpLFxuICAgIGNvbnRhY3QucGhvbmVcbiAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpwaG9uZScpLFxuICAgICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpDSV9UZWxlcGhvbmUnKSxcbiAgICAgICAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6dm9pY2UnKSxcbiAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnRhY3QucGhvbmUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICA6IG5vb3AsXG4gICAgYXBwZW5kQ2hpbGRyZW4oY3JlYXRlQWRkcmVzcyksXG4gICAgJ3dlYnNpdGUnIGluIGNvbnRhY3Qub3JnYW5pemF0aW9uXG4gICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6b25saW5lUmVzb3VyY2UnKSxcbiAgICAgICAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6Q0lfT25saW5lUmVzb3VyY2UnKSxcbiAgICAgICAgICAgIHdyaXRlTGlua2FnZShjb250YWN0Lm9yZ2FuaXphdGlvbi53ZWJzaXRlKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgOiBub29wXG4gIClcblxuICByZXR1cm4gYXBwZW5kQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpDSV9SZXNwb25zaWJsZVBhcnR5JyksXG4gICAgICBmdWxsTmFtZVxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmluZGl2aWR1YWxOYW1lJyksXG4gICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGZ1bGxOYW1lKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBub29wLFxuICAgICAgY29udGFjdC5wb3NpdGlvblxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnBvc2l0aW9uTmFtZScpLFxuICAgICAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhjb250YWN0LnBvc2l0aW9uKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBub29wLFxuICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOm9yZ2FuaXNhdGlvbk5hbWUnKSxcbiAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhjb250YWN0Lm9yZ2FuaXphdGlvbi5uYW1lKVxuICAgICAgICApLFxuICAgICAgICBjcmVhdGVDb250YWN0LFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpyb2xlJyksXG4gICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpDSV9Sb2xlQ29kZScpLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNDSV9Sb2xlQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIGdldFJvbGVDb2RlKGNvbnRhY3Qucm9sZSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUNpdGF0aW9uRGF0ZShcbiAgZGF0ZTogRGF0ZSxcbiAgdHlwZTogJ3JldmlzaW9uJyB8ICdjcmVhdGlvbicgfCAncHVibGljYXRpb24nXG4pIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6ZGF0ZScsICdnbWQ6Q0lfRGF0ZScpLFxuICAgIGZpbHRlckFycmF5KFxuICAgICAgcGlwZShcbiAgICAgICAgZmluZENoaWxkRWxlbWVudCgnZ21kOkNJX0RhdGVUeXBlQ29kZScpLFxuICAgICAgICByZWFkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJyksXG4gICAgICAgIG1hcCgodmFsdWUpID0+IHZhbHVlID09PSB0eXBlKVxuICAgICAgKVxuICAgICksXG4gICAgZ2V0QXRJbmRleCgwKSxcbiAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6ZGF0ZScpLFxuICAgIHJlbW92ZUFsbENoaWxkcmVuKCksXG4gICAgd3JpdGVEYXRlVGltZShkYXRlKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDaXRhdGlvbkRhdGUoXG4gIGRhdGU6IERhdGUsXG4gIHR5cGU6ICdyZXZpc2lvbicgfCAnY3JlYXRpb24nIHwgJ3B1YmxpY2F0aW9uJ1xuKSB7XG4gIHJldHVybiBhcHBlbmRDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmRhdGUnKSxcbiAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6Q0lfRGF0ZScpLFxuICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgIHBpcGUoY3JlYXRlRWxlbWVudCgnZ21kOmRhdGUnKSwgd3JpdGVEYXRlVGltZShkYXRlKSksXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmRhdGVUeXBlJyksXG4gICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpDSV9EYXRlVHlwZUNvZGUnKSxcbiAgICAgICAgICBhZGRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjQ0lfRGF0ZVR5cGVDb2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgdHlwZSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlS2V5d29yZHMoKSB7XG4gIHJldHVybiByZW1vdmVDaGlsZHJlbihwaXBlKGZpbmROZXN0ZWRFbGVtZW50cygnZ21kOmRlc2NyaXB0aXZlS2V5d29yZHMnKSkpXG59XG5cbi8vIHJldHVybnMgYSA8Z21kOnRoZXNhdXJ1c05hbWU+IGVsZW1lbnRcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUaGVzYXVydXModGhlc2F1cnVzOiBLZXl3b3JkVGhlc2F1cnVzKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDp0aGVzYXVydXNOYW1lJyksXG4gICAgY3JlYXRlQ2hpbGQoJ2dtZDpDSV9DaXRhdGlvbicpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgcGlwZShcbiAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnRpdGxlJyksXG4gICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHRoZXNhdXJ1cy5uYW1lIHx8IHRoZXNhdXJ1cy5pZClcbiAgICAgICksXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6aWRlbnRpZmllcicpLFxuICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX0lkZW50aWZpZXInKSxcbiAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpjb2RlJyksXG4gICAgICAgICAgICB0aGVzYXVydXMudXJsXG4gICAgICAgICAgICAgID8gd3JpdGVBbmNob3IodGhlc2F1cnVzLnVybCwgdGhlc2F1cnVzLmlkKVxuICAgICAgICAgICAgICA6IHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHRoZXNhdXJ1cy5pZClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZEtleXdvcmRzKGtleXdvcmRzOiBLZXl3b3JkW10pIHtcbiAgLy8ga2V5d29yZHMgYXJlIGdyb3VwZWQgYnkgdGhlc2F1cnVzIGlmIHRoZXkgaGF2ZSBvbmUsIG90aGVyd2lzZSBieSB0eXBlXG4gIGNvbnN0IGtleXdvcmRzQnlUaGVzYXVydXM6IEtleXdvcmRbXVtdID0ga2V5d29yZHMucmVkdWNlKChhY2MsIGtleXdvcmQpID0+IHtcbiAgICBjb25zdCB0aGVzYXVydXNJZCA9IGtleXdvcmQudGhlc2F1cnVzPy5pZFxuICAgIGNvbnN0IHR5cGUgPSBrZXl3b3JkLnR5cGVcbiAgICBsZXQgZXhpc3RpbmdHcm91cCA9IGFjYy5maW5kKChncm91cCkgPT5cbiAgICAgIHRoZXNhdXJ1c0lkXG4gICAgICAgID8gZ3JvdXBbMF0udGhlc2F1cnVzPy5pZCA9PT0gdGhlc2F1cnVzSWRcbiAgICAgICAgOiBncm91cFswXS50eXBlID09PSB0eXBlICYmICFncm91cFswXS50aGVzYXVydXNcbiAgICApXG4gICAgaWYgKCFleGlzdGluZ0dyb3VwKSB7XG4gICAgICBleGlzdGluZ0dyb3VwID0gW11cbiAgICAgIGFjYy5wdXNoKGV4aXN0aW5nR3JvdXApXG4gICAgfVxuICAgIGV4aXN0aW5nR3JvdXAucHVzaChrZXl3b3JkKVxuICAgIHJldHVybiBhY2NcbiAgfSwgW10pXG4gIHJldHVybiBhcHBlbmRDaGlsZHJlbihcbiAgICAuLi5rZXl3b3Jkc0J5VGhlc2F1cnVzLm1hcCgoa2V5d29yZHMpID0+XG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZGVzY3JpcHRpdmVLZXl3b3JkcycpLFxuICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX0tleXdvcmRzJyksXG4gICAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6dHlwZScpLFxuICAgICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9LZXl3b3JkVHlwZUNvZGUnKSxcbiAgICAgICAgICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfS2V5d29yZFR5cGVDb2RlJ1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGFkZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIGtleXdvcmRzWzBdLnR5cGUpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBrZXl3b3Jkc1swXS50aGVzYXVydXNcbiAgICAgICAgICA/IGFwcGVuZENoaWxkcmVuKGNyZWF0ZVRoZXNhdXJ1cyhrZXl3b3Jkc1swXS50aGVzYXVydXMpKVxuICAgICAgICAgIDogbm9vcCxcbiAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgLi4ua2V5d29yZHMubWFwKChrZXl3b3JkKSA9PlxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmtleXdvcmQnKSxcbiAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoa2V5d29yZC5sYWJlbClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnN0cmFpbnQoXG4gIGNvbnN0cmFpbnQ6IENvbnN0cmFpbnQsXG4gIHR5cGU6ICdsZWdhbCcgfCAnc2VjdXJpdHknIHwgJ290aGVyJ1xuKSB7XG4gIGlmICh0eXBlID09PSAnc2VjdXJpdHknKSB7XG4gICAgcmV0dXJuIHBpcGUoXG4gICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycpLFxuICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9TZWN1cml0eUNvbnN0cmFpbnRzJyksXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6Y2xhc3NpZmljYXRpb24nKSxcbiAgICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX0NsYXNzaWZpY2F0aW9uQ29kZScpLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9DbGFzc2lmaWNhdGlvbkNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCAncmVzdHJpY3RlZCcpXG4gICAgICAgICksXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnVzZUxpbWl0YXRpb24nKSxcbiAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhjb25zdHJhaW50LnRleHQpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xlZ2FsJykge1xuICAgIHJldHVybiBwaXBlKFxuICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnKSxcbiAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6TURfTGVnYWxDb25zdHJhaW50cycpLFxuICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmFjY2Vzc0NvbnN0cmFpbnRzJyksXG4gICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9SZXN0cmljdGlvbkNvZGUnKSxcbiAgICAgICAgICBhZGRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfUmVzdHJpY3Rpb25Db2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgJ290aGVyUmVzdHJpY3Rpb25zJylcbiAgICAgICAgKSxcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6b3RoZXJDb25zdHJhaW50cycpLFxuICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnN0cmFpbnQudGV4dClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIHJldHVybiBwaXBlKFxuICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpyZXNvdXJjZUNvbnN0cmFpbnRzJyksXG4gICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9Db25zdHJhaW50cycpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgcGlwZShcbiAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnVzZUxpbWl0YXRpb24nKSxcbiAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29uc3RyYWludC50ZXh0KVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlT3RoZXJDb25zdHJhaW50cygpIHtcbiAgcmV0dXJuIHJlbW92ZUNoaWxkcmVuKFxuICAgIHBpcGUoXG4gICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycpLFxuICAgICAgZmlsdGVyQXJyYXkoXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6TURfQ29uc3RyYWludHMnLCAnZ21kOnVzZUxpbWl0YXRpb24nKSxcbiAgICAgICAgICAoYXJyYXkpID0+IGFycmF5Lmxlbmd0aCA+IDBcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU2VjdXJpdHlDb25zdHJhaW50cygpIHtcbiAgcmV0dXJuIHJlbW92ZUNoaWxkcmVuKFxuICAgIHBpcGUoXG4gICAgICBmaW5kQ2hpbGRyZW5FbGVtZW50KCdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycpLFxuICAgICAgZmlsdGVyQXJyYXkoXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6TURfU2VjdXJpdHlDb25zdHJhaW50cycsICdnbWQ6dXNlTGltaXRhdGlvbicpLFxuICAgICAgICAgIChhcnJheSkgPT4gYXJyYXkubGVuZ3RoID4gMFxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVMZWdhbENvbnN0cmFpbnRzKCkge1xuICByZXR1cm4gcmVtb3ZlQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpyZXNvdXJjZUNvbnN0cmFpbnRzJyksXG4gICAgICBmaWx0ZXJBcnJheShcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBmaW5kTmVzdGVkRWxlbWVudHMoXG4gICAgICAgICAgICAnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnLFxuICAgICAgICAgICAgJ2dtZDphY2Nlc3NDb25zdHJhaW50cycsXG4gICAgICAgICAgICAnZ21kOk1EX1Jlc3RyaWN0aW9uQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIG1hcEFycmF5KHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSksXG4gICAgICAgICAgKHJlc3RyaWN0aW9uQ29kZXMpID0+XG4gICAgICAgICAgICByZXN0cmljdGlvbkNvZGVzLmV2ZXJ5KChjb2RlKSA9PiBjb2RlICE9PSAnbGljZW5zZScpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUxpY2Vuc2VzKCkge1xuICByZXR1cm4gcmVtb3ZlQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpyZXNvdXJjZUNvbnN0cmFpbnRzJyksXG4gICAgICBmaWx0ZXJBcnJheShcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBmaW5kTmVzdGVkRWxlbWVudHMoXG4gICAgICAgICAgICAnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnLFxuICAgICAgICAgICAgJ2dtZDphY2Nlc3NDb25zdHJhaW50cycsXG4gICAgICAgICAgICAnZ21kOk1EX1Jlc3RyaWN0aW9uQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIG1hcEFycmF5KHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSksXG4gICAgICAgICAgKHJlc3RyaWN0aW9uQ29kZXMpID0+XG4gICAgICAgICAgICByZXN0cmljdGlvbkNvZGVzLnNvbWUoKGNvZGUpID0+IGNvZGUgPT09ICdsaWNlbnNlJylcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGljZW5zZShsaWNlbnNlOiBDb25zdHJhaW50KSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpyZXNvdXJjZUNvbnN0cmFpbnRzJyksXG4gICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9MZWdhbENvbnN0cmFpbnRzJyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6YWNjZXNzQ29uc3RyYWludHMnKSxcbiAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9SZXN0cmljdGlvbkNvZGUnKSxcbiAgICAgICAgYWRkQXR0cmlidXRlKFxuICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfUmVzdHJpY3Rpb25Db2RlJ1xuICAgICAgICApLFxuICAgICAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCAnbGljZW5zZScpXG4gICAgICApLFxuICAgICAgcGlwZShcbiAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmFjY2Vzc0NvbnN0cmFpbnRzJyksXG4gICAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6TURfUmVzdHJpY3Rpb25Db2RlJyksXG4gICAgICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI01EX1Jlc3RyaWN0aW9uQ29kZSdcbiAgICAgICAgKSxcbiAgICAgICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgJ290aGVyUmVzdHJpY3Rpb25zJylcbiAgICAgICksXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6b3RoZXJDb25zdHJhaW50cycpLFxuICAgICAgICAndXJsJyBpbiBsaWNlbnNlXG4gICAgICAgICAgPyB3cml0ZUFuY2hvcihsaWNlbnNlLnVybCwgbGljZW5zZS50ZXh0KVxuICAgICAgICAgIDogd3JpdGVDaGFyYWN0ZXJTdHJpbmcobGljZW5zZS50ZXh0KVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRGlzdHJpYnV0aW9ucygpIHtcbiAgcmV0dXJuIHBpcGUocmVtb3ZlQ2hpbGRyZW5CeU5hbWUoJ2dtZDpkaXN0cmlidXRpb25JbmZvJykpXG59XG5cbmZ1bmN0aW9uIGFwcGVuZERpc3RyaWJ1dGlvbkZvcm1hdChtaW1lVHlwZTogc3RyaW5nKSB7XG4gIHJldHVybiBhcHBlbmRDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmRpc3RyaWJ1dGlvbkZvcm1hdCcpLFxuICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9Gb3JtYXQnKSxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2dtZDpuYW1lJyksIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKG1pbWVUeXBlKSksXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnZlcnNpb24nKSxcbiAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZygnMS4wJykgLy8gaGFyZGNvZGluZyB0aGlzIGFzIGl0IG1vc3QgbGlrZWx5IHdvbid0IGJlIHVzZWQgYnV0IGlzIG1hbmRhdG9yeVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaXN0cmlidXRpb25JbmZvKCkge1xuICByZXR1cm4gcGlwZShcbiAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZGlzdHJpYnV0aW9uSW5mbycpLFxuICAgIGNyZWF0ZUNoaWxkKCdnbWQ6TURfRGlzdHJpYnV0aW9uJylcbiAgKVxufVxuXG4vLyBhcHBseSB0byBNRF9EaXN0cmlidXRpb25cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmREaXN0cmlidXRpb24oXG4gIGRpc3RyaWJ1dGlvbjogRGF0YXNldERpc3RyaWJ1dGlvbixcbiAgYXBwZW5kRm9ybWF0Rm46IChcbiAgICBtaW1lVHlwZTogc3RyaW5nXG4gICkgPT4gQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD5cbikge1xuICBsZXQgbmFtZTogc3RyaW5nXG4gIGxldCBmdW5jdGlvbkNvZGU6IHN0cmluZ1xuICBsZXQgcHJvdG9jb2w6IHN0cmluZ1xuICBpZiAoZGlzdHJpYnV0aW9uLnR5cGUgPT09ICdzZXJ2aWNlJykge1xuICAgIG5hbWUgPSBkaXN0cmlidXRpb24uaWRlbnRpZmllckluU2VydmljZSAvLyB0aGlzIGlzIGZvciBHZW9OZXR3b3JrIHRvIGtub3cgdGhlIGxheWVyIG5hbWVcbiAgICBmdW5jdGlvbkNvZGUgPSAnZG93bmxvYWQnXG4gICAgcHJvdG9jb2wgPSBnZXREaXN0cmlidXRpb25Qcm90b2NvbChkaXN0cmlidXRpb24pXG4gIH0gZWxzZSBpZiAoZGlzdHJpYnV0aW9uLnR5cGUgPT09ICdkb3dubG9hZCcpIHtcbiAgICBuYW1lID0gZGlzdHJpYnV0aW9uLm5hbWVcbiAgICBmdW5jdGlvbkNvZGUgPSAnZG93bmxvYWQnXG4gICAgcHJvdG9jb2wgPSAnV1dXOkRPV05MT0FEJ1xuICB9IGVsc2Uge1xuICAgIG5hbWUgPSBkaXN0cmlidXRpb24ubmFtZVxuICAgIGZ1bmN0aW9uQ29kZSA9ICdpbmZvcm1hdGlvbidcbiAgICBwcm90b2NvbCA9ICdXV1c6TElOSydcbiAgfVxuICBjb25zdCBhcHBlbmRUcmFuc2Zlck9wdGlvbnMgPSBhcHBlbmRDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnRyYW5zZmVyT3B0aW9ucycpLFxuICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9EaWdpdGFsVHJhbnNmZXJPcHRpb25zJyksXG4gICAgICBjcmVhdGVDaGlsZCgnZ21kOm9uTGluZScpLFxuICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpDSV9PbmxpbmVSZXNvdXJjZScpLFxuICAgICAgd3JpdGVMaW5rYWdlKGRpc3RyaWJ1dGlvbi51cmwpLFxuICAgICAgJ2Rlc2NyaXB0aW9uJyBpbiBkaXN0cmlidXRpb25cbiAgICAgICAgPyBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpkZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhkaXN0cmlidXRpb24uZGVzY3JpcHRpb24pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vb3AsXG4gICAgICBuYW1lICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICAgIHBpcGUoY3JlYXRlRWxlbWVudCgnZ21kOm5hbWUnKSwgd3JpdGVDaGFyYWN0ZXJTdHJpbmcobmFtZSkpXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vb3AsXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6cHJvdG9jb2wnKSwgd3JpdGVDaGFyYWN0ZXJTdHJpbmcocHJvdG9jb2wpKSxcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZnVuY3Rpb24nKSxcbiAgICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOkNJX09uTGluZUZ1bmN0aW9uQ29kZScpLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNDSV9PbkxpbmVGdW5jdGlvbkNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCBmdW5jdGlvbkNvZGUpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbiAgcmV0dXJuIHBpcGUoXG4gICAgJ21pbWVUeXBlJyBpbiBkaXN0cmlidXRpb24gPyBhcHBlbmRGb3JtYXRGbihkaXN0cmlidXRpb24ubWltZVR5cGUpIDogbm9vcCxcbiAgICBhcHBlbmRUcmFuc2Zlck9wdGlvbnNcbiAgKVxufVxuXG4vKipcbiAqIExvb2tzIGZvciBzcnY6U1ZfU2VydmljZUlkZW50aWZpY2F0aW9uIG9yIGdtZDpNRF9EYXRhSWRlbnRpZmljYXRpb24gZWxlbWVudFxuICogZGVwZW5kaW5nIG9uIHJlY29yZCB0eXBlLCBjcmVhdGUgaWYgbWlzc2luZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSB7XG4gIHJldHVybiAocm9vdEVsOiBYbWxFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qga2luZCA9IHJlYWRLaW5kKHJvb3RFbClcbiAgICBsZXQgZWx0TmFtZSA9ICdnbWQ6TURfRGF0YUlkZW50aWZpY2F0aW9uJ1xuICAgIGlmIChraW5kID09PSAnc2VydmljZScpIGVsdE5hbWUgPSAnc3J2OlNWX1NlcnZpY2VJZGVudGlmaWNhdGlvbidcbiAgICByZXR1cm4gZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDppZGVudGlmaWNhdGlvbkluZm8nLCBlbHROYW1lKShyb290RWwpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRPckNyZWF0ZURpc3RyaWJ1dGlvbigpIHtcbiAgcmV0dXJuIChyb290RWw6IFhtbEVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoXG4gICAgICAnZ21kOmRpc3RyaWJ1dGlvbkluZm8nLFxuICAgICAgJ2dtZDpNRF9EaXN0cmlidXRpb24nXG4gICAgKShyb290RWwpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVW5pcXVlSWRlbnRpZmllcihcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnbWQ6ZmlsZUlkZW50aWZpZXInKSxcbiAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhyZWNvcmQudW5pcXVlSWRlbnRpZmllcilcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUtpbmQocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmhpZXJhcmNoeUxldmVsJywgJ2dtZDpNRF9TY29wZUNvZGUnKSxcbiAgICBhZGRBdHRyaWJ1dGUoXG4gICAgICAnY29kZUxpc3QnLFxuICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfU2NvcGVDb2RlJ1xuICAgICksXG4gICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgcmVjb3JkLmtpbmQpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVPd25lck9yZ2FuaXphdGlvbihcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICAvLyBpZiBubyBjb250YWN0IG1hdGNoZXMgdGhlIG93bmVyIG9yZywgY3JlYXRlIGFuIGVtcHR5IG9uZVxuICBjb25zdCBvd25lckNvbnRhY3Q6IEluZGl2aWR1YWwgPSByZWNvcmQuY29udGFjdHMuZmluZChcbiAgICAoY29udGFjdCkgPT4gY29udGFjdC5vcmdhbml6YXRpb24ubmFtZSA9PT0gcmVjb3JkLm93bmVyT3JnYW5pemF0aW9uLm5hbWVcbiAgKVxuICBwaXBlKFxuICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnbWQ6Y29udGFjdCcpLFxuICAgIHJlbW92ZUFsbENoaWxkcmVuKCksXG4gICAgYXBwZW5kUmVzcG9uc2libGVQYXJ0eShcbiAgICAgIG93bmVyQ29udGFjdFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLm93bmVyQ29udGFjdCxcbiAgICAgICAgICAgIC8vIG93bmVyIHJlc3BvbnNpYmxlIHBhcnR5IGlzIGFsd2F5cyBwb2ludCBvZiBjb250YWN0XG4gICAgICAgICAgICByb2xlOiAncG9pbnRfb2ZfY29udGFjdCcsXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjogcmVjb3JkLm93bmVyT3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgcm9sZTogJ3BvaW50X29mX2NvbnRhY3QnLFxuICAgICAgICAgIH1cbiAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVSZWNvcmRVcGRhdGVkKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ2dtZDpkYXRlU3RhbXAnKSxcbiAgICByZW1vdmVBbGxDaGlsZHJlbigpLFxuICAgIHdyaXRlRGF0ZVRpbWUocmVjb3JkLnJlY29yZFVwZGF0ZWQpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVUaXRsZShyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDpjaXRhdGlvbicsICdnbWQ6Q0lfQ2l0YXRpb24nLCAnZ21kOnRpdGxlJyksXG4gICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcocmVjb3JkLnRpdGxlKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlQWJzdHJhY3QocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnbWQ6YWJzdHJhY3QnKSxcbiAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhyZWNvcmQuYWJzdHJhY3QpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVTdGF0dXMocmVjb3JkOiBEYXRhc2V0UmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKCdnbWQ6c3RhdHVzJywgJ2dtZDpNRF9Qcm9ncmVzc0NvZGUnKSxcbiAgICBhZGRBdHRyaWJ1dGUoXG4gICAgICAnY29kZUxpc3QnLFxuICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfUHJvZ3Jlc3NDb2RlJ1xuICAgICksXG4gICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgZ2V0UHJvZ3Jlc3NDb2RlKHJlY29yZC5zdGF0dXMpKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlQ29udGFjdHMocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmNvbnRhY3QnKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5jb250YWN0cy5tYXAoKGNvbnRhY3QpID0+XG4gICAgICAgIHBpcGUoY3JlYXRlRWxlbWVudCgnZ21kOmNvbnRhY3QnKSwgYXBwZW5kUmVzcG9uc2libGVQYXJ0eShjb250YWN0KSlcbiAgICAgIClcbiAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVDb250YWN0c0ZvclJlc291cmNlKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOnBvaW50T2ZDb250YWN0JyksXG4gICAgcmVtb3ZlQ2hpbGRyZW5CeU5hbWUoJ2dtZDpjb250YWN0JyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAuLi5yZWNvcmQuY29udGFjdHNGb3JSZXNvdXJjZS5tYXAoKGNvbnRhY3QpID0+XG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnBvaW50T2ZDb250YWN0JyksXG4gICAgICAgICAgYXBwZW5kUmVzcG9uc2libGVQYXJ0eShjb250YWN0KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlS2V5d29yZHMocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUtleXdvcmRzKCksXG4gICAgYXBwZW5kS2V5d29yZHMocmVjb3JkLmtleXdvcmRzKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVG9waWNzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOnRvcGljQ2F0ZWdvcnknKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC50b3BpY3MubWFwKCh0b3BpYykgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6dG9waWNDYXRlZ29yeScpLFxuICAgICAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6TURfVG9waWNDYXRlZ29yeUNvZGUnKSxcbiAgICAgICAgICBzZXRUZXh0Q29udGVudCh0b3BpYylcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxpY2Vuc2VzKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVMaWNlbnNlcygpLFxuICAgIGFwcGVuZENoaWxkcmVuKC4uLnJlY29yZC5saWNlbnNlcy5tYXAoY3JlYXRlTGljZW5zZSkpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVMZWdhbENvbnN0cmFpbnRzKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVMZWdhbENvbnN0cmFpbnRzKCksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAuLi5yZWNvcmQubGVnYWxDb25zdHJhaW50cy5tYXAoKGMpID0+IGNyZWF0ZUNvbnN0cmFpbnQoYywgJ2xlZ2FsJykpXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlU2VjdXJpdHlDb25zdHJhaW50cyhcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgcmVtb3ZlU2VjdXJpdHlDb25zdHJhaW50cygpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4ucmVjb3JkLnNlY3VyaXR5Q29uc3RyYWludHMubWFwKChjKSA9PiBjcmVhdGVDb25zdHJhaW50KGMsICdzZWN1cml0eScpKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZU90aGVyQ29uc3RyYWludHMoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZU90aGVyQ29uc3RyYWludHMoKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5vdGhlckNvbnN0cmFpbnRzLm1hcCgoYykgPT4gY3JlYXRlQ29uc3RyYWludChjLCAnb3RoZXInKSlcbiAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVVcGRhdGVGcmVxdWVuY3koXG4gIHJlY29yZDogRGF0YXNldFJlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnbWQ6cmVzb3VyY2VNYWludGVuYW5jZScpLFxuICAgIHJlbW92ZUFsbENoaWxkcmVuKCksXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ2dtZDpNRF9NYWludGVuYW5jZUluZm9ybWF0aW9uJyksXG4gICAgdHlwZW9mIHJlY29yZC51cGRhdGVGcmVxdWVuY3kgPT09ICdvYmplY3QnXG4gICAgICA/IHBpcGUoXG4gICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDp1c2VyRGVmaW5lZE1haW50ZW5hbmNlRnJlcXVlbmN5JyksXG4gICAgICAgICAgY3JlYXRlQ2hpbGQoJ2d0czpUTV9QZXJpb2REdXJhdGlvbicpLFxuICAgICAgICAgIHNldFRleHRDb250ZW50KGdldElTT0R1cmF0aW9uKHJlY29yZC51cGRhdGVGcmVxdWVuY3kpKVxuICAgICAgICApXG4gICAgICA6IHBpcGUoXG4gICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDptYWludGVuYW5jZUFuZFVwZGF0ZUZyZXF1ZW5jeScpLFxuICAgICAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6TURfTWFpbnRlbmFuY2VGcmVxdWVuY3lDb2RlJyksXG4gICAgICAgICAgYWRkQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI01EX01haW50ZW5hbmNlRnJlcXVlbmN5Q29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdFZhbHVlJyxcbiAgICAgICAgICAgIGdldE1haW50ZW5hbmNlRnJlcXVlbmN5Q29kZShyZWNvcmQudXBkYXRlRnJlcXVlbmN5KVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVzb3VyY2VDcmVhdGVkKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIGlmICghKCdyZXNvdXJjZUNyZWF0ZWQnIGluIHJlY29yZCkpIHJldHVyblxuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDpjaXRhdGlvbicsICdnbWQ6Q0lfQ2l0YXRpb24nKSxcbiAgICBmYWxsYmFjayhcbiAgICAgIHVwZGF0ZUNpdGF0aW9uRGF0ZShyZWNvcmQucmVzb3VyY2VDcmVhdGVkLCAnY3JlYXRpb24nKSxcbiAgICAgIGFwcGVuZENpdGF0aW9uRGF0ZShyZWNvcmQucmVzb3VyY2VDcmVhdGVkLCAnY3JlYXRpb24nKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVJlc291cmNlVXBkYXRlZChcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBpZiAoISgncmVzb3VyY2VVcGRhdGVkJyBpbiByZWNvcmQpKSByZXR1cm5cbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKCdnbWQ6Y2l0YXRpb24nLCAnZ21kOkNJX0NpdGF0aW9uJyksXG4gICAgZmFsbGJhY2soXG4gICAgICB1cGRhdGVDaXRhdGlvbkRhdGUocmVjb3JkLnJlc291cmNlVXBkYXRlZCwgJ3JldmlzaW9uJyksXG4gICAgICBhcHBlbmRDaXRhdGlvbkRhdGUocmVjb3JkLnJlc291cmNlVXBkYXRlZCwgJ3JldmlzaW9uJylcbiAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVSZXNvdXJjZVB1Ymxpc2hlZChcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBpZiAoISgncmVzb3VyY2VQdWJsaXNoZWQnIGluIHJlY29yZCkpIHJldHVyblxuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDpjaXRhdGlvbicsICdnbWQ6Q0lfQ2l0YXRpb24nKSxcbiAgICBmYWxsYmFjayhcbiAgICAgIHVwZGF0ZUNpdGF0aW9uRGF0ZShyZWNvcmQucmVzb3VyY2VQdWJsaXNoZWQsICdwdWJsaWNhdGlvbicpLFxuICAgICAgYXBwZW5kQ2l0YXRpb25EYXRlKHJlY29yZC5yZXNvdXJjZVB1Ymxpc2hlZCwgJ3B1YmxpY2F0aW9uJylcbiAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVTcGF0aWFsUmVwcmVzZW50YXRpb24oXG4gIHJlY29yZDogRGF0YXNldFJlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKFxuICAgICAgJ2dtZDpzcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlJyxcbiAgICAgICdnbWQ6TURfU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZUNvZGUnXG4gICAgKSxcbiAgICBhZGRBdHRyaWJ1dGUoXG4gICAgICAnY29kZUxpc3QnLFxuICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZUNvZGUnXG4gICAgKSxcbiAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCByZWNvcmQuc3BhdGlhbFJlcHJlc2VudGF0aW9uKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlR3JhcGhpY092ZXJ2aWV3cyhcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgcmVtb3ZlQ2hpbGRyZW5CeU5hbWUoJ2dtZDpncmFwaGljT3ZlcnZpZXcnKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5vdmVydmlld3MubWFwKChvdmVydmlldykgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6Z3JhcGhpY092ZXJ2aWV3JyksXG4gICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9Ccm93c2VHcmFwaGljJyksXG4gICAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZmlsZU5hbWUnKSxcbiAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcob3ZlcnZpZXcudXJsLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICAnZGVzY3JpcHRpb24nIGluIG92ZXJ2aWV3XG4gICAgICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZmlsZURlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhvdmVydmlldy5kZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogbm9vcFxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRGlzdHJpYnV0aW9ucyhyZWNvcmQ6IERhdGFzZXRSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIHJlbW92ZURpc3RyaWJ1dGlvbnMoKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5kaXN0cmlidXRpb25zLm1hcCgoZCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVEaXN0cmlidXRpb25JbmZvKCksXG4gICAgICAgICAgYXBwZW5kRGlzdHJpYnV0aW9uKGQsIGFwcGVuZERpc3RyaWJ1dGlvbkZvcm1hdClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxpbmVhZ2UocmVjb3JkOiBEYXRhc2V0UmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZShcbiAgICAgICdnbWQ6ZGF0YVF1YWxpdHlJbmZvJyxcbiAgICAgICdnbWQ6RFFfRGF0YVF1YWxpdHknLFxuICAgICAgJ2dtZDpsaW5lYWdlJyxcbiAgICAgICdnbWQ6TElfTGluZWFnZScsXG4gICAgICAnZ21kOnN0YXRlbWVudCdcbiAgICApLFxuICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHJlY29yZC5saW5lYWdlKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlcnZpY2VFbmRwb2ludFByb3RvY29sKGVuZHBvaW50OiBTZXJ2aWNlRW5kcG9pbnQpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGVuZHBvaW50LnByb3RvY29sLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICd3ZnMnOlxuICAgICAgcmV0dXJuICdPR0M6V0ZTJ1xuICAgIGNhc2UgJ3dtcyc6XG4gICAgICByZXR1cm4gJ09HQzpXTVMnXG4gICAgY2FzZSAnd3BzJzpcbiAgICAgIHJldHVybiAnT0dDOldQUydcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGVuZHBvaW50LnByb3RvY29sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU9ubGluZVJlc291cmNlKG9ubGluZVJlc291cmNlOiBTZXJ2aWNlT25saW5lUmVzb3VyY2UpIHtcbiAgbGV0IGxpbmthZ2VVcmwsIGZ1bmN0aW9uQ29kZSwgcHJvdG9jb2xcbiAgaWYgKG9ubGluZVJlc291cmNlLnR5cGUgPT09ICdlbmRwb2ludCcpIHtcbiAgICBsaW5rYWdlVXJsID0gb25saW5lUmVzb3VyY2UuZW5kcG9pbnRVcmwudG9TdHJpbmcoKVxuICAgIHByb3RvY29sID0gZ2V0U2VydmljZUVuZHBvaW50UHJvdG9jb2wob25saW5lUmVzb3VyY2UpXG4gICAgZnVuY3Rpb25Db2RlID0gJ2Rvd25sb2FkJ1xuICB9IGVsc2Uge1xuICAgIGxpbmthZ2VVcmwgPSBvbmxpbmVSZXNvdXJjZS51cmwudG9TdHJpbmcoKVxuICAgIGZ1bmN0aW9uQ29kZSA9ICdpbmZvcm1hdGlvbidcbiAgICBwcm90b2NvbCA9ICdXV1c6TElOSydcbiAgfVxuICBjb25zdCBhcHBlbmRUcmFuc2Zlck9wdGlvbnMgPSBhcHBlbmRDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnRyYW5zZmVyT3B0aW9ucycpLFxuICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9EaWdpdGFsVHJhbnNmZXJPcHRpb25zJyksXG4gICAgICBjcmVhdGVDaGlsZCgnZ21kOm9uTGluZScpLFxuICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpDSV9PbmxpbmVSZXNvdXJjZScpLFxuICAgICAgd3JpdGVMaW5rYWdlKGxpbmthZ2VVcmwpLFxuICAgICAgJ2Rlc2NyaXB0aW9uJyBpbiBvbmxpbmVSZXNvdXJjZVxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKG9ubGluZVJlc291cmNlLmRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBub29wLFxuICAgICAgJ25hbWUnIGluIG9ubGluZVJlc291cmNlXG4gICAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6bmFtZScpLFxuICAgICAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhvbmxpbmVSZXNvdXJjZS5uYW1lKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBub29wLFxuICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgIHBpcGUoY3JlYXRlRWxlbWVudCgnZ21kOnByb3RvY29sJyksIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHByb3RvY29sKSksXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmZ1bmN0aW9uJyksXG4gICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpDSV9PbkxpbmVGdW5jdGlvbkNvZGUnKSxcbiAgICAgICAgICBhZGRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjQ0lfT25MaW5lRnVuY3Rpb25Db2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgZnVuY3Rpb25Db2RlKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG4gIHJldHVybiBwaXBlKFxuICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpkaXN0cmlidXRpb25JbmZvJyksXG4gICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9EaXN0cmlidXRpb24nKSxcbiAgICBhcHBlbmRUcmFuc2Zlck9wdGlvbnNcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVPbmxpbmVSZXNvdXJjZXMoXG4gIHJlY29yZDogU2VydmljZVJlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICByZW1vdmVEaXN0cmlidXRpb25zKCksXG4gICAgYXBwZW5kQ2hpbGRyZW4oLi4ucmVjb3JkLm9ubGluZVJlc291cmNlcy5tYXAoY3JlYXRlT25saW5lUmVzb3VyY2UpKVxuICApKHJvb3RFbClcbn1cbiJdfQ==
403
+ export function writeTemporalExtents(record, rootEl) {
404
+ pipe(findOrCreateIdentification(), findNestedChildOrCreate('gmd:extent', 'gmd:EX_Extent'), removeChildrenByName('gmd:temporalElement'), appendChildren(...record.temporalExtents.map((extent) => pipe(createElement('gmd:temporalElement'), createChild('gmd:EX_TemporalExtent'), appendChildren('start' in extent && 'end' in extent
405
+ ? pipe(createElement('gmd:extent'), createChild('gml:TimePeriod'), appendChildren(pipe(createElement('gml:beginPosition'), pipe(extent.start
406
+ ? setTextContent(format(extent.start, 'yyyy-MM-dd'))
407
+ : addAttribute('indeterminatePosition', 'unknown'))), pipe(createElement('gml:endPosition'), pipe(extent.end
408
+ ? setTextContent(format(extent.end, 'yyyy-MM-dd'))
409
+ : addAttribute('indeterminatePosition', 'unknown')))))
410
+ : pipe(createElement('gmd:extent'), createChild('gml:TimeInstant'), appendChildren(pipe(createElement('gml:timePosition'), pipe(extent.start
411
+ ? setTextContent(format(extent.start, 'yyyy-MM-dd'))
412
+ : addAttribute('indeterminatePosition', 'unknown'))))))))))(rootEl);
413
+ }
414
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtcGFydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTEzOS93cml0ZS1wYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDcEMsT0FBTyxFQUVMLFFBQVEsRUFDUixXQUFXLEVBQ1gsVUFBVSxFQUNWLEdBQUcsRUFDSCxRQUFRLEVBQ1IsSUFBSSxFQUNKLElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBRUwsWUFBWSxFQUNaLGNBQWMsRUFDZCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGNBQWMsR0FDZixNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUV6RCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLElBQVk7SUFFWixPQUFPLEdBQUcsQ0FDUixJQUFJLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDckUsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUMxQixHQUFRO0lBRVIsT0FBTyxHQUFHLENBQ1IsSUFBSSxDQUNGLHVCQUF1QixDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsRUFDakQsY0FBYyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUMvQixDQUNGLENBQUE7QUFDSCxDQUFDO0FBRUQs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QUUsU0FBUyxDQUFDLENBQ3JELENBQ0YsQ0FDRixDQUNGLENBQ04sQ0FDRixDQUNGLENBQ0YsQ0FDRixDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhdGFsb2dSZWNvcmQsXG4gIENvbnN0cmFpbnQsXG4gIERhdGFzZXREaXN0cmlidXRpb24sXG4gIERhdGFzZXRSZWNvcmQsXG4gIERhdGFzZXRTZXJ2aWNlRGlzdHJpYnV0aW9uLFxuICBJbmRpdmlkdWFsLFxuICBLZXl3b3JkLFxuICBLZXl3b3JkVGhlc2F1cnVzLFxuICBSZWNvcmRTdGF0dXMsXG4gIFJvbGUsXG4gIFNlcnZpY2VFbmRwb2ludCxcbiAgU2VydmljZU9ubGluZVJlc291cmNlLFxuICBTZXJ2aWNlUmVjb3JkLFxuICBVcGRhdGVGcmVxdWVuY3lDb2RlLFxuICBVcGRhdGVGcmVxdWVuY3lDdXN0b20sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCBmb3JtYXQgZnJvbSAnZGF0ZS1mbnMvZm9ybWF0J1xuaW1wb3J0IHtcbiAgQ2hhaW5hYmxlRnVuY3Rpb24sXG4gIGZhbGxiYWNrLFxuICBmaWx0ZXJBcnJheSxcbiAgZ2V0QXRJbmRleCxcbiAgbWFwLFxuICBtYXBBcnJheSxcbiAgbm9vcCxcbiAgcGlwZSxcbiAgdGFwLFxufSBmcm9tICcuLi9mdW5jdGlvbi11dGlscydcbmltcG9ydCB7XG4gIFhtbEVsZW1lbnQsXG4gIGFkZEF0dHJpYnV0ZSxcbiAgYXBwZW5kQ2hpbGRyZW4sXG4gIGNyZWF0ZUNoaWxkLFxuICBjcmVhdGVFbGVtZW50LFxuICBmaW5kQ2hpbGRFbGVtZW50LFxuICBmaW5kQ2hpbGRPckNyZWF0ZSxcbiAgZmluZENoaWxkcmVuRWxlbWVudCxcbiAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUsXG4gIGZpbmROZXN0ZWRFbGVtZW50cyxcbiAgcmVhZEF0dHJpYnV0ZSxcbiAgcmVtb3ZlQWxsQ2hpbGRyZW4sXG4gIHJlbW92ZUNoaWxkcmVuLFxuICByZW1vdmVDaGlsZHJlbkJ5TmFtZSxcbiAgc2V0VGV4dENvbnRlbnQsXG59IGZyb20gJy4uL3htbC11dGlscydcbmltcG9ydCB7IHJlYWRLaW5kIH0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHsgbmFtZVBhcnRzVG9GdWxsIH0gZnJvbSAnLi91dGlscy9pbmRpdmlkdWFsLW5hbWUnXG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNoYXJhY3RlclN0cmluZyhcbiAgdGV4dDogc3RyaW5nXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiB0YXAoXG4gICAgcGlwZShmaW5kQ2hpbGRPckNyZWF0ZSgnZ2NvOkNoYXJhY3RlclN0cmluZycpLCBzZXRUZXh0Q29udGVudCh0ZXh0KSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVMaW5rYWdlKFxuICB1cmw6IFVSTFxuKTogQ2hhaW5hYmxlRnVuY3Rpb248WG1sRWxlbWVudCwgWG1sRWxlbWVudD4ge1xuICByZXR1cm4gdGFwKFxuICAgIHBpcGUoXG4gICAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmxpbmthZ2UnLCAnZ21kOlVSTCcpLFxuICAgICAgc2V0VGV4dENvbnRlbnQodXJsLnRvU3RyaW5nKCkpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUFuY2hvcihcbiAgdXJsOiBVUkwsXG4gIHRleHQ/OiBzdHJpbmdcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIHRhcChcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkT3JDcmVhdGUoJ2dteDpBbmNob3InKSxcbiAgICAgIGFkZEF0dHJpYnV0ZSgneGxpbms6aHJlZicsIHVybC50b1N0cmluZygpKSxcbiAgICAgIHRleHQgPyBzZXRUZXh0Q29udGVudCh0ZXh0KSA6IG5vb3BcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRGF0ZVRpbWUoXG4gIGRhdGU6IERhdGVcbik6IENoYWluYWJsZUZ1bmN0aW9uPFhtbEVsZW1lbnQsIFhtbEVsZW1lbnQ+IHtcbiAgcmV0dXJuIHRhcChcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkT3JDcmVhdGUoJ2djbzpEYXRlVGltZScpLFxuICAgICAgc2V0VGV4dENvbnRlbnQoZm9ybWF0KGRhdGUsIFwieXl5eS1NTS1kZCdUJ0hIOm1tOnNzXCIpKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVEYXRlKFxuICBkYXRlOiBEYXRlXG4pOiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PiB7XG4gIHJldHVybiB0YXAoXG4gICAgcGlwZShcbiAgICAgIGZpbmRDaGlsZE9yQ3JlYXRlKCdnY286RGF0ZScpLFxuICAgICAgc2V0VGV4dENvbnRlbnQoZm9ybWF0KGRhdGUsICd5eXl5LU1NLWRkJykpXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9ncmVzc0NvZGUoc3RhdHVzOiBSZWNvcmRTdGF0dXMpOiBzdHJpbmcge1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgJ2NvbXBsZXRlZCc6XG4gICAgICByZXR1cm4gJ2NvbXBsZXRlZCdcbiAgICBjYXNlICdkZXByZWNhdGVkJzpcbiAgICAgIHJldHVybiAnZGVwcmVjYXRlZCdcbiAgICBjYXNlICdvbmdvaW5nJzpcbiAgICAgIHJldHVybiAnb25Hb2luZydcbiAgICBjYXNlICdyZW1vdmVkJzpcbiAgICAgIHJldHVybiAncmVtb3ZlZCdcbiAgICBjYXNlICd1bmRlcl9kZXZlbG9wbWVudCc6XG4gICAgICByZXR1cm4gJ3VuZGVyRGV2ZWxvcG1lbnQnXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvdWxkIG5vdCBkZXRlcm1pbmUgcHJvZ3Jlc3MgY29kZSBmcm9tIHN0YXR1czogJHtzdGF0dXN9YFxuICAgICAgKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSb2xlQ29kZShyb2xlOiBSb2xlKTogc3RyaW5nIHtcbiAgc3dpdGNoIChyb2xlKSB7XG4gICAgY2FzZSAnYXV0aG9yJzpcbiAgICAgIHJldHVybiAnYXV0aG9yJ1xuICAgIGNhc2UgJ2NvbGxhYm9yYXRvcic6XG4gICAgICByZXR1cm4gJ2NvbGxhYm9yYXRvcidcbiAgICBjYXNlICdjb250cmlidXRvcic6XG4gICAgICByZXR1cm4gJ2NvbnRyaWJ1dG9yJ1xuICAgIGNhc2UgJ2N1c3RvZGlhbic6XG4gICAgICByZXR1cm4gJ2N1c3RvZGlhbidcbiAgICBjYXNlICdkaXN0cmlidXRvcic6XG4gICAgICByZXR1cm4gJ2Rpc3RyaWJ1dG9yJ1xuICAgIGNhc2UgJ2VkaXRvcic6XG4gICAgICByZXR1cm4gJ2VkaXRvcidcbiAgICBjYXNlICdmdW5kZXInOlxuICAgICAgcmV0dXJuICdmdW5kZXInXG4gICAgY2FzZSAnbWVkaWF0b3InOlxuICAgICAgcmV0dXJuICdtZWRpYXRvcidcbiAgICBjYXNlICdvcmlnaW5hdG9yJzpcbiAgICAgIHJldHVybiAnb3JpZ2luYXRvcidcbiAgICBjYXNlICdvdGhlcic6XG4gICAgICByZXR1cm4gJ290aGVyJ1xuICAgIGNhc2UgJ293bmVyJzpcbiAgICAgIHJldHVybiAnb3duZXInXG4gICAgY2FzZSAncG9pbnRfb2ZfY29udGFjdCc6XG4gICAgICByZXR1cm4gJ3BvaW50T2ZDb250YWN0J1xuICAgIGNhc2UgJ3ByaW5jaXBhbF9pbnZlc3RpZ2F0b3InOlxuICAgICAgcmV0dXJuICdwcmluY2lwYWxJbnZlc3RpZ2F0b3InXG4gICAgY2FzZSAncHJvY2Vzc29yJzpcbiAgICAgIHJldHVybiAncHJvY2Vzc29yJ1xuICAgIGNhc2UgJ3B1Ymxpc2hlcic6XG4gICAgICByZXR1cm4gJ3B1Ymxpc2hlcidcbiAgICBjYXNlICdyZXNvdXJjZV9wcm92aWRlcic6XG4gICAgICByZXR1cm4gJ3Jlc291cmNlUHJvdmlkZXInXG4gICAgY2FzZSAncmlnaHRzX2hvbGRlcic6XG4gICAgICByZXR1cm4gJ3JpZ2h0c0hvbGRlcidcbiAgICBjYXNlICdzcG9uc29yJzpcbiAgICAgIHJldHVybiAnc3BvbnNvcidcbiAgICBjYXNlICdzdGFrZWhvbGRlcic6XG4gICAgICByZXR1cm4gJ3N0YWtlaG9sZGVyJ1xuICAgIGNhc2UgJ3Vuc3BlY2lmaWVkJzpcbiAgICAgIHJldHVybiAndW5zcGVjaWZpZWQnXG4gICAgY2FzZSAndXNlcic6XG4gICAgICByZXR1cm4gJ3VzZXInXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGRldGVybWluZSByb2xlIGNvZGUgZnJvbSByb2xlOiAke3JvbGV9YClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlzdHJpYnV0aW9uUHJvdG9jb2woXG4gIGRpc3RyaWJ1dGlvbjogRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbik6IHN0cmluZyB7XG4gIHN3aXRjaCAoZGlzdHJpYnV0aW9uLmFjY2Vzc1NlcnZpY2VQcm90b2NvbC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnd2ZzJzpcbiAgICAgIHJldHVybiAnT0dDOldGUydcbiAgICBjYXNlICd3bXMnOlxuICAgICAgcmV0dXJuICdPR0M6V01TJ1xuICAgIGNhc2UgJ3dwcyc6XG4gICAgICByZXR1cm4gJ09HQzpXUFMnXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkaXN0cmlidXRpb24uYWNjZXNzU2VydmljZVByb3RvY29sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1haW50ZW5hbmNlRnJlcXVlbmN5Q29kZShcbiAgdXBkYXRlRnJlcXVlbmN5OiBVcGRhdGVGcmVxdWVuY3lDb2RlXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgc3dpdGNoICh1cGRhdGVGcmVxdWVuY3kpIHtcbiAgICBjYXNlICdhc05lZWRlZCc6XG4gICAgICByZXR1cm4gJ2FzTmVlZGVkJ1xuICAgIGNhc2UgJ3Vua25vd24nOlxuICAgICAgcmV0dXJuICd1bmtub3duJ1xuICAgIGNhc2UgJ2lycmVndWxhcic6XG4gICAgICByZXR1cm4gJ2lycmVndWxhcidcbiAgICBjYXNlICdub3RQbGFubmVkJzpcbiAgICAgIHJldHVybiAnbm90UGxhbm5lZCdcbiAgICBjYXNlICdjb250aW51YWwnOlxuICAgICAgcmV0dXJuICdjb250aW51YWwnXG4gICAgY2FzZSAncGVyaW9kaWMnOlxuICAgICAgcmV0dXJuICdwZXJpb2RpYydcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SVNPRHVyYXRpb24odXBkYXRlRnJlcXVlbmN5OiBVcGRhdGVGcmVxdWVuY3lDdXN0b20pOiBzdHJpbmcge1xuICBjb25zdCBkdXJhdGlvbiA9IHtcbiAgICB5ZWFyczogMCxcbiAgICBtb250aHM6IDAsXG4gICAgd2Vla3M6IDAsXG4gICAgZGF5czogMCxcbiAgICBob3VyczogMCxcbiAgfVxuICBzd2l0Y2ggKHVwZGF0ZUZyZXF1ZW5jeS5wZXIpIHtcbiAgICBjYXNlICdkYXknOlxuICAgICAgaWYgKHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMgPD0gMSkgZHVyYXRpb24uZGF5cyA9IDFcbiAgICAgIGVsc2UgZHVyYXRpb24uaG91cnMgPSBNYXRoLnJvdW5kKDI0IC8gdXBkYXRlRnJlcXVlbmN5LnVwZGF0ZWRUaW1lcylcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAnd2Vlayc6XG4gICAgICBkdXJhdGlvbi5kYXlzID0gTWF0aC5yb3VuZCg3IC8gdXBkYXRlRnJlcXVlbmN5LnVwZGF0ZWRUaW1lcyAtIDAuMDAwMSkgLy8gdGhpcyBpcyB0byBtYWtlIHN1cmUgdGhhdCAnMiB0aW1lcyBwZXIgd2VlaycgPSAnZXZlcnkgMyBkYXlzJ1xuICAgICAgYnJlYWtcbiAgICBjYXNlICdtb250aCc6XG4gICAgICBpZiAodXBkYXRlRnJlcXVlbmN5LnVwZGF0ZWRUaW1lcyA8PSAxKSBkdXJhdGlvbi5tb250aHMgPSAxXG4gICAgICBlbHNlIGR1cmF0aW9uLmRheXMgPSBNYXRoLnJvdW5kKDMwIC8gdXBkYXRlRnJlcXVlbmN5LnVwZGF0ZWRUaW1lcylcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAneWVhcic6XG4gICAgICBpZiAodXBkYXRlRnJlcXVlbmN5LnVwZGF0ZWRUaW1lcyA8PSAxKSBkdXJhdGlvbi55ZWFycyA9IDFcbiAgICAgIGVsc2UgZHVyYXRpb24ubW9udGhzID0gTWF0aC5yb3VuZCgxMiAvIHVwZGF0ZUZyZXF1ZW5jeS51cGRhdGVkVGltZXMpXG4gICAgICBicmVha1xuICB9XG4gIGNvbnN0IGhvdXJzID0gZHVyYXRpb24uaG91cnMgPiAwID8gYFQke2R1cmF0aW9uLmhvdXJzfUhgIDogJydcbiAgcmV0dXJuIGBQJHtkdXJhdGlvbi55ZWFyc31ZJHtkdXJhdGlvbi5tb250aHN9TSR7ZHVyYXRpb24uZGF5c31EJHtob3Vyc31gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRSZXNwb25zaWJsZVBhcnR5KGNvbnRhY3Q6IEluZGl2aWR1YWwpIHtcbiAgY29uc3QgZnVsbE5hbWUgPSBuYW1lUGFydHNUb0Z1bGwoY29udGFjdC5maXJzdE5hbWUsIGNvbnRhY3QubGFzdE5hbWUpXG5cbiAgY29uc3QgY3JlYXRlQWRkcmVzcyA9IHBpcGUoXG4gICAgY3JlYXRlRWxlbWVudCgnZ21kOmFkZHJlc3MnKSxcbiAgICBjcmVhdGVDaGlsZCgnZ21kOkNJX0FkZHJlc3MnKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIHBpcGUoXG4gICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDplbGVjdHJvbmljTWFpbEFkZHJlc3MnKSxcbiAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5lbWFpbClcbiAgICAgIClcbiAgICApLFxuICAgIGNvbnRhY3QuYWRkcmVzc1xuICAgICAgPyBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmRlbGl2ZXJ5UG9pbnQnKSxcbiAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnRhY3QuYWRkcmVzcylcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIDogbm9vcFxuICApXG5cbiAgY29uc3QgY3JlYXRlQ29udGFjdCA9IHBpcGUoXG4gICAgY3JlYXRlRWxlbWVudCgnZ21kOmNvbnRhY3RJbmZvJyksXG4gICAgY3JlYXRlQ2hpbGQoJ2dtZDpDSV9Db250YWN0JyksXG4gICAgY29udGFjdC5waG9uZVxuICAgICAgPyBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnBob25lJyksXG4gICAgICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOkNJX1RlbGVwaG9uZScpLFxuICAgICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDp2b2ljZScpLFxuICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29udGFjdC5waG9uZSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIDogbm9vcCxcbiAgICBhcHBlbmRDaGlsZHJlbihjcmVhdGVBZGRyZXNzKSxcbiAgICAnd2Vic2l0ZScgaW4gY29udGFjdC5vcmdhbml6YXRpb25cbiAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpvbmxpbmVSZXNvdXJjZScpLFxuICAgICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpDSV9PbmxpbmVSZXNvdXJjZScpLFxuICAgICAgICAgICAgd3JpdGVMaW5rYWdlKGNvbnRhY3Qub3JnYW5pemF0aW9uLndlYnNpdGUpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICA6IG5vb3BcbiAgKVxuXG4gIHJldHVybiBhcHBlbmRDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOkNJX1Jlc3BvbnNpYmxlUGFydHknKSxcbiAgICAgIGZ1bGxOYW1lXG4gICAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6aW5kaXZpZHVhbE5hbWUnKSxcbiAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoZnVsbE5hbWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vb3AsXG4gICAgICBjb250YWN0LnBvc2l0aW9uXG4gICAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6cG9zaXRpb25OYW1lJyksXG4gICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnRhY3QucG9zaXRpb24pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vb3AsXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6b3JnYW5pc2F0aW9uTmFtZScpLFxuICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnRhY3Qub3JnYW5pemF0aW9uLm5hbWUpXG4gICAgICAgICksXG4gICAgICAgIGNyZWF0ZUNvbnRhY3QsXG4gICAgICAgIHBpcGUoXG4gICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOnJvbGUnKSxcbiAgICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOkNJX1JvbGVDb2RlJyksXG4gICAgICAgICAgYWRkQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI0NJX1JvbGVDb2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywgZ2V0Um9sZUNvZGUoY29udGFjdC5yb2xlKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlQ2l0YXRpb25EYXRlKFxuICBkYXRlOiBEYXRlLFxuICB0eXBlOiAncmV2aXNpb24nIHwgJ2NyZWF0aW9uJyB8ICdwdWJsaWNhdGlvbidcbikge1xuICByZXR1cm4gcGlwZShcbiAgICBmaW5kTmVzdGVkRWxlbWVudHMoJ2dtZDpkYXRlJywgJ2dtZDpDSV9EYXRlJyksXG4gICAgZmlsdGVyQXJyYXkoXG4gICAgICBwaXBlKFxuICAgICAgICBmaW5kQ2hpbGRFbGVtZW50KCdnbWQ6Q0lfRGF0ZVR5cGVDb2RlJyksXG4gICAgICAgIHJlYWRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnKSxcbiAgICAgICAgbWFwKCh2YWx1ZSkgPT4gdmFsdWUgPT09IHR5cGUpXG4gICAgICApXG4gICAgKSxcbiAgICBnZXRBdEluZGV4KDApLFxuICAgIGZpbmRDaGlsZEVsZW1lbnQoJ2dtZDpkYXRlJyksXG4gICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKSxcbiAgICB3cml0ZURhdGVUaW1lKGRhdGUpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZENpdGF0aW9uRGF0ZShcbiAgZGF0ZTogRGF0ZSxcbiAgdHlwZTogJ3JldmlzaW9uJyB8ICdjcmVhdGlvbicgfCAncHVibGljYXRpb24nXG4pIHtcbiAgcmV0dXJuIGFwcGVuZENoaWxkcmVuKFxuICAgIHBpcGUoXG4gICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZGF0ZScpLFxuICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpDSV9EYXRlJyksXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6ZGF0ZScpLCB3cml0ZURhdGVUaW1lKGRhdGUpKSxcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZGF0ZVR5cGUnKSxcbiAgICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOkNJX0RhdGVUeXBlQ29kZScpLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNDSV9EYXRlVHlwZUNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCB0eXBlKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVLZXl3b3JkcygpIHtcbiAgcmV0dXJuIHJlbW92ZUNoaWxkcmVuKHBpcGUoZmluZE5lc3RlZEVsZW1lbnRzKCdnbWQ6ZGVzY3JpcHRpdmVLZXl3b3JkcycpKSlcbn1cblxuLy8gcmV0dXJucyBhIDxnbWQ6dGhlc2F1cnVzTmFtZT4gZWxlbWVudFxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRoZXNhdXJ1cyh0aGVzYXVydXM6IEtleXdvcmRUaGVzYXVydXMpIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgY3JlYXRlRWxlbWVudCgnZ21kOnRoZXNhdXJ1c05hbWUnKSxcbiAgICBjcmVhdGVDaGlsZCgnZ21kOkNJX0NpdGF0aW9uJyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6dGl0bGUnKSxcbiAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcodGhlc2F1cnVzLm5hbWUgfHwgdGhlc2F1cnVzLmlkKVxuICAgICAgKSxcbiAgICAgIHBpcGUoXG4gICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDppZGVudGlmaWVyJyksXG4gICAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6TURfSWRlbnRpZmllcicpLFxuICAgICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmNvZGUnKSxcbiAgICAgICAgICAgIHRoZXNhdXJ1cy51cmxcbiAgICAgICAgICAgICAgPyB3cml0ZUFuY2hvcih0aGVzYXVydXMudXJsLCB0aGVzYXVydXMuaWQpXG4gICAgICAgICAgICAgIDogd3JpdGVDaGFyYWN0ZXJTdHJpbmcodGhlc2F1cnVzLmlkKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kS2V5d29yZHMoa2V5d29yZHM6IEtleXdvcmRbXSkge1xuICAvLyBrZXl3b3JkcyBhcmUgZ3JvdXBlZCBieSB0aGVzYXVydXMgaWYgdGhleSBoYXZlIG9uZSwgb3RoZXJ3aXNlIGJ5IHR5cGVcbiAgY29uc3Qga2V5d29yZHNCeVRoZXNhdXJ1czogS2V5d29yZFtdW10gPSBrZXl3b3Jkcy5yZWR1Y2UoKGFjYywga2V5d29yZCkgPT4ge1xuICAgIGNvbnN0IHRoZXNhdXJ1c0lkID0ga2V5d29yZC50aGVzYXVydXM/LmlkXG4gICAgY29uc3QgdHlwZSA9IGtleXdvcmQudHlwZVxuICAgIGxldCBleGlzdGluZ0dyb3VwID0gYWNjLmZpbmQoKGdyb3VwKSA9PlxuICAgICAgdGhlc2F1cnVzSWRcbiAgICAgICAgPyBncm91cFswXS50aGVzYXVydXM/LmlkID09PSB0aGVzYXVydXNJZFxuICAgICAgICA6IGdyb3VwWzBdLnR5cGUgPT09IHR5cGUgJiYgIWdyb3VwWzBdLnRoZXNhdXJ1c1xuICAgIClcbiAgICBpZiAoIWV4aXN0aW5nR3JvdXApIHtcbiAgICAgIGV4aXN0aW5nR3JvdXAgPSBbXVxuICAgICAgYWNjLnB1c2goZXhpc3RpbmdHcm91cClcbiAgICB9XG4gICAgZXhpc3RpbmdHcm91cC5wdXNoKGtleXdvcmQpXG4gICAgcmV0dXJuIGFjY1xuICB9LCBbXSlcbiAgcmV0dXJuIGFwcGVuZENoaWxkcmVuKFxuICAgIC4uLmtleXdvcmRzQnlUaGVzYXVydXMubWFwKChrZXl3b3JkcykgPT5cbiAgICAgIHBpcGUoXG4gICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpkZXNjcmlwdGl2ZUtleXdvcmRzJyksXG4gICAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6TURfS2V5d29yZHMnKSxcbiAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgcGlwZShcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDp0eXBlJyksXG4gICAgICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX0tleXdvcmRUeXBlQ29kZScpLFxuICAgICAgICAgICAgYWRkQXR0cmlidXRlKFxuICAgICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9LZXl3b3JkVHlwZUNvZGUnXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYWRkQXR0cmlidXRlKCdjb2RlTGlzdFZhbHVlJywga2V5d29yZHNbMF0udHlwZSlcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIGtleXdvcmRzWzBdLnRoZXNhdXJ1c1xuICAgICAgICAgID8gYXBwZW5kQ2hpbGRyZW4oY3JlYXRlVGhlc2F1cnVzKGtleXdvcmRzWzBdLnRoZXNhdXJ1cykpXG4gICAgICAgICAgOiBub29wLFxuICAgICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICAuLi5rZXl3b3Jkcy5tYXAoKGtleXdvcmQpID0+XG4gICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6a2V5d29yZCcpLFxuICAgICAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhrZXl3b3JkLmxhYmVsKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29uc3RyYWludChcbiAgY29uc3RyYWludDogQ29uc3RyYWludCxcbiAgdHlwZTogJ2xlZ2FsJyB8ICdzZWN1cml0eScgfCAnb3RoZXInXG4pIHtcbiAgaWYgKHR5cGUgPT09ICdzZWN1cml0eScpIHtcbiAgICByZXR1cm4gcGlwZShcbiAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpyZXNvdXJjZUNvbnN0cmFpbnRzJyksXG4gICAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX1NlY3VyaXR5Q29uc3RyYWludHMnKSxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpjbGFzc2lmaWNhdGlvbicpLFxuICAgICAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6TURfQ2xhc3NpZmljYXRpb25Db2RlJyksXG4gICAgICAgICAgYWRkQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI01EX0NsYXNzaWZpY2F0aW9uQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsICdyZXN0cmljdGVkJylcbiAgICAgICAgKSxcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6dXNlTGltaXRhdGlvbicpLFxuICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGNvbnN0cmFpbnQudGV4dClcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnbGVnYWwnKSB7XG4gICAgcmV0dXJuIHBpcGUoXG4gICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6cmVzb3VyY2VDb25zdHJhaW50cycpLFxuICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9MZWdhbENvbnN0cmFpbnRzJyksXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6YWNjZXNzQ29uc3RyYWludHMnKSxcbiAgICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX1Jlc3RyaWN0aW9uQ29kZScpLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9SZXN0cmljdGlvbkNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCAnb3RoZXJSZXN0cmljdGlvbnMnKVxuICAgICAgICApLFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpvdGhlckNvbnN0cmFpbnRzJyksXG4gICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcoY29uc3RyYWludC50ZXh0KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHBpcGUoXG4gICAgY3JlYXRlRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnKSxcbiAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX0NvbnN0cmFpbnRzJyksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6dXNlTGltaXRhdGlvbicpLFxuICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhjb25zdHJhaW50LnRleHQpXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVPdGhlckNvbnN0cmFpbnRzKCkge1xuICByZXR1cm4gcmVtb3ZlQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpyZXNvdXJjZUNvbnN0cmFpbnRzJyksXG4gICAgICBmaWx0ZXJBcnJheShcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBmaW5kTmVzdGVkRWxlbWVudHMoJ2dtZDpNRF9Db25zdHJhaW50cycsICdnbWQ6dXNlTGltaXRhdGlvbicpLFxuICAgICAgICAgIChhcnJheSkgPT4gYXJyYXkubGVuZ3RoID4gMFxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVTZWN1cml0eUNvbnN0cmFpbnRzKCkge1xuICByZXR1cm4gcmVtb3ZlQ2hpbGRyZW4oXG4gICAgcGlwZShcbiAgICAgIGZpbmRDaGlsZHJlbkVsZW1lbnQoJ2dtZDpyZXNvdXJjZUNvbnN0cmFpbnRzJyksXG4gICAgICBmaWx0ZXJBcnJheShcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBmaW5kTmVzdGVkRWxlbWVudHMoJ2dtZDpNRF9TZWN1cml0eUNvbnN0cmFpbnRzJywgJ2dtZDp1c2VMaW1pdGF0aW9uJyksXG4gICAgICAgICAgKGFycmF5KSA9PiBhcnJheS5sZW5ndGggPiAwXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUxlZ2FsQ29uc3RyYWludHMoKSB7XG4gIHJldHVybiByZW1vdmVDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnKSxcbiAgICAgIGZpbHRlckFycmF5KFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGZpbmROZXN0ZWRFbGVtZW50cyhcbiAgICAgICAgICAgICdnbWQ6TURfTGVnYWxDb25zdHJhaW50cycsXG4gICAgICAgICAgICAnZ21kOmFjY2Vzc0NvbnN0cmFpbnRzJyxcbiAgICAgICAgICAgICdnbWQ6TURfUmVzdHJpY3Rpb25Db2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgbWFwQXJyYXkocmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpKSxcbiAgICAgICAgICAocmVzdHJpY3Rpb25Db2RlcykgPT5cbiAgICAgICAgICAgIHJlc3RyaWN0aW9uQ29kZXMuZXZlcnkoKGNvZGUpID0+IGNvZGUgIT09ICdsaWNlbnNlJylcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTGljZW5zZXMoKSB7XG4gIHJldHVybiByZW1vdmVDaGlsZHJlbihcbiAgICBwaXBlKFxuICAgICAgZmluZENoaWxkcmVuRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnKSxcbiAgICAgIGZpbHRlckFycmF5KFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGZpbmROZXN0ZWRFbGVtZW50cyhcbiAgICAgICAgICAgICdnbWQ6TURfTGVnYWxDb25zdHJhaW50cycsXG4gICAgICAgICAgICAnZ21kOmFjY2Vzc0NvbnN0cmFpbnRzJyxcbiAgICAgICAgICAgICdnbWQ6TURfUmVzdHJpY3Rpb25Db2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgbWFwQXJyYXkocmVhZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScpKSxcbiAgICAgICAgICAocmVzdHJpY3Rpb25Db2RlcykgPT5cbiAgICAgICAgICAgIHJlc3RyaWN0aW9uQ29kZXMuc29tZSgoY29kZSkgPT4gY29kZSA9PT0gJ2xpY2Vuc2UnKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaWNlbnNlKGxpY2Vuc2U6IENvbnN0cmFpbnQpIHtcbiAgcmV0dXJuIHBpcGUoXG4gICAgY3JlYXRlRWxlbWVudCgnZ21kOnJlc291cmNlQ29uc3RyYWludHMnKSxcbiAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX0xlZ2FsQ29uc3RyYWludHMnKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIHBpcGUoXG4gICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDphY2Nlc3NDb25zdHJhaW50cycpLFxuICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX1Jlc3RyaWN0aW9uQ29kZScpLFxuICAgICAgICBhZGRBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9SZXN0cmljdGlvbkNvZGUnXG4gICAgICAgICksXG4gICAgICAgIGFkZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsICdsaWNlbnNlJylcbiAgICAgICksXG4gICAgICBwaXBlKFxuICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6YWNjZXNzQ29uc3RyYWludHMnKSxcbiAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9SZXN0cmljdGlvbkNvZGUnKSxcbiAgICAgICAgYWRkQXR0cmlidXRlKFxuICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfUmVzdHJpY3Rpb25Db2RlJ1xuICAgICAgICApLFxuICAgICAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCAnb3RoZXJSZXN0cmljdGlvbnMnKVxuICAgICAgKSxcbiAgICAgIHBpcGUoXG4gICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpvdGhlckNvbnN0cmFpbnRzJyksXG4gICAgICAgICd1cmwnIGluIGxpY2Vuc2VcbiAgICAgICAgICA/IHdyaXRlQW5jaG9yKGxpY2Vuc2UudXJsLCBsaWNlbnNlLnRleHQpXG4gICAgICAgICAgOiB3cml0ZUNoYXJhY3RlclN0cmluZyhsaWNlbnNlLnRleHQpXG4gICAgICApXG4gICAgKVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEaXN0cmlidXRpb25zKCkge1xuICByZXR1cm4gcGlwZShyZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmRpc3RyaWJ1dGlvbkluZm8nKSlcbn1cblxuZnVuY3Rpb24gYXBwZW5kRGlzdHJpYnV0aW9uRm9ybWF0KG1pbWVUeXBlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGFwcGVuZENoaWxkcmVuKFxuICAgIHBpcGUoXG4gICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZGlzdHJpYnV0aW9uRm9ybWF0JyksXG4gICAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX0Zvcm1hdCcpLFxuICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgIHBpcGUoY3JlYXRlRWxlbWVudCgnZ21kOm5hbWUnKSwgd3JpdGVDaGFyYWN0ZXJTdHJpbmcobWltZVR5cGUpKSxcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6dmVyc2lvbicpLFxuICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKCcxLjAnKSAvLyBoYXJkY29kaW5nIHRoaXMgYXMgaXQgbW9zdCBsaWtlbHkgd29uJ3QgYmUgdXNlZCBidXQgaXMgbWFuZGF0b3J5XG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpc3RyaWJ1dGlvbkluZm8oKSB7XG4gIHJldHVybiBwaXBlKFxuICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpkaXN0cmlidXRpb25JbmZvJyksXG4gICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9EaXN0cmlidXRpb24nKVxuICApXG59XG5cbi8vIGFwcGx5IHRvIE1EX0Rpc3RyaWJ1dGlvblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZERpc3RyaWJ1dGlvbihcbiAgZGlzdHJpYnV0aW9uOiBEYXRhc2V0RGlzdHJpYnV0aW9uLFxuICBhcHBlbmRGb3JtYXRGbjogKFxuICAgIG1pbWVUeXBlOiBzdHJpbmdcbiAgKSA9PiBDaGFpbmFibGVGdW5jdGlvbjxYbWxFbGVtZW50LCBYbWxFbGVtZW50PlxuKSB7XG4gIGxldCBuYW1lOiBzdHJpbmdcbiAgbGV0IGZ1bmN0aW9uQ29kZTogc3RyaW5nXG4gIGxldCBwcm90b2NvbDogc3RyaW5nXG4gIGlmIChkaXN0cmlidXRpb24udHlwZSA9PT0gJ3NlcnZpY2UnKSB7XG4gICAgbmFtZSA9IGRpc3RyaWJ1dGlvbi5pZGVudGlmaWVySW5TZXJ2aWNlIC8vIHRoaXMgaXMgZm9yIEdlb05ldHdvcmsgdG8ga25vdyB0aGUgbGF5ZXIgbmFtZVxuICAgIGZ1bmN0aW9uQ29kZSA9ICdkb3dubG9hZCdcbiAgICBwcm90b2NvbCA9IGdldERpc3RyaWJ1dGlvblByb3RvY29sKGRpc3RyaWJ1dGlvbilcbiAgfSBlbHNlIGlmIChkaXN0cmlidXRpb24udHlwZSA9PT0gJ2Rvd25sb2FkJykge1xuICAgIG5hbWUgPSBkaXN0cmlidXRpb24ubmFtZVxuICAgIGZ1bmN0aW9uQ29kZSA9ICdkb3dubG9hZCdcbiAgICBwcm90b2NvbCA9ICdXV1c6RE9XTkxPQUQnXG4gIH0gZWxzZSB7XG4gICAgbmFtZSA9IGRpc3RyaWJ1dGlvbi5uYW1lXG4gICAgZnVuY3Rpb25Db2RlID0gJ2luZm9ybWF0aW9uJ1xuICAgIHByb3RvY29sID0gJ1dXVzpMSU5LJ1xuICB9XG4gIGNvbnN0IGFwcGVuZFRyYW5zZmVyT3B0aW9ucyA9IGFwcGVuZENoaWxkcmVuKFxuICAgIHBpcGUoXG4gICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6dHJhbnNmZXJPcHRpb25zJyksXG4gICAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX0RpZ2l0YWxUcmFuc2Zlck9wdGlvbnMnKSxcbiAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6b25MaW5lJyksXG4gICAgICBjcmVhdGVDaGlsZCgnZ21kOkNJX09ubGluZVJlc291cmNlJyksXG4gICAgICB3cml0ZUxpbmthZ2UoZGlzdHJpYnV0aW9uLnVybCksXG4gICAgICAnZGVzY3JpcHRpb24nIGluIGRpc3RyaWJ1dGlvblxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21kOmRlc2NyaXB0aW9uJyksXG4gICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKGRpc3RyaWJ1dGlvbi5kZXNjcmlwdGlvbilcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIDogbm9vcCxcbiAgICAgIG5hbWUgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6bmFtZScpLCB3cml0ZUNoYXJhY3RlclN0cmluZyhuYW1lKSlcbiAgICAgICAgICApXG4gICAgICAgIDogbm9vcCxcbiAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICBwaXBlKGNyZWF0ZUVsZW1lbnQoJ2dtZDpwcm90b2NvbCcpLCB3cml0ZUNoYXJhY3RlclN0cmluZyhwcm90b2NvbCkpLFxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpmdW5jdGlvbicpLFxuICAgICAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6Q0lfT25MaW5lRnVuY3Rpb25Db2RlJyksXG4gICAgICAgICAgYWRkQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0JyxcbiAgICAgICAgICAgICdodHRwOi8vc3RhbmRhcmRzLmlzby5vcmcvaXNvLzE5MTM5L3Jlc291cmNlcy9nbXhDb2RlbGlzdHMueG1sI0NJX09uTGluZUZ1bmN0aW9uQ29kZSdcbiAgICAgICAgICApLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIGZ1bmN0aW9uQ29kZSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKVxuICByZXR1cm4gcGlwZShcbiAgICAnbWltZVR5cGUnIGluIGRpc3RyaWJ1dGlvbiA/IGFwcGVuZEZvcm1hdEZuKGRpc3RyaWJ1dGlvbi5taW1lVHlwZSkgOiBub29wLFxuICAgIGFwcGVuZFRyYW5zZmVyT3B0aW9uc1xuICApXG59XG5cbi8qKlxuICogTG9va3MgZm9yIHNydjpTVl9TZXJ2aWNlSWRlbnRpZmljYXRpb24gb3IgZ21kOk1EX0RhdGFJZGVudGlmaWNhdGlvbiBlbGVtZW50XG4gKiBkZXBlbmRpbmcgb24gcmVjb3JkIHR5cGUsIGNyZWF0ZSBpZiBtaXNzaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpIHtcbiAgcmV0dXJuIChyb290RWw6IFhtbEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBraW5kID0gcmVhZEtpbmQocm9vdEVsKVxuICAgIGxldCBlbHROYW1lID0gJ2dtZDpNRF9EYXRhSWRlbnRpZmljYXRpb24nXG4gICAgaWYgKGtpbmQgPT09ICdzZXJ2aWNlJykgZWx0TmFtZSA9ICdzcnY6U1ZfU2VydmljZUlkZW50aWZpY2F0aW9uJ1xuICAgIHJldHVybiBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmlkZW50aWZpY2F0aW9uSW5mbycsIGVsdE5hbWUpKHJvb3RFbClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZE9yQ3JlYXRlRGlzdHJpYnV0aW9uKCkge1xuICByZXR1cm4gKHJvb3RFbDogWG1sRWxlbWVudCkgPT4ge1xuICAgIHJldHVybiBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZShcbiAgICAgICdnbWQ6ZGlzdHJpYnV0aW9uSW5mbycsXG4gICAgICAnZ21kOk1EX0Rpc3RyaWJ1dGlvbidcbiAgICApKHJvb3RFbClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVVbmlxdWVJZGVudGlmaWVyKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHBpcGUoXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ2dtZDpmaWxlSWRlbnRpZmllcicpLFxuICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHJlY29yZC51bmlxdWVJZGVudGlmaWVyKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlS2luZChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKCdnbWQ6aGllcmFyY2h5TGV2ZWwnLCAnZ21kOk1EX1Njb3BlQ29kZScpLFxuICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICdjb2RlTGlzdCcsXG4gICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9TY29wZUNvZGUnXG4gICAgKSxcbiAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCByZWNvcmQua2luZClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZU93bmVyT3JnYW5pemF0aW9uKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIC8vIGlmIG5vIGNvbnRhY3QgbWF0Y2hlcyB0aGUgb3duZXIgb3JnLCBjcmVhdGUgYW4gZW1wdHkgb25lXG4gIGNvbnN0IG93bmVyQ29udGFjdDogSW5kaXZpZHVhbCA9IHJlY29yZC5jb250YWN0cy5maW5kKFxuICAgIChjb250YWN0KSA9PiBjb250YWN0Lm9yZ2FuaXphdGlvbi5uYW1lID09PSByZWNvcmQub3duZXJPcmdhbml6YXRpb24ubmFtZVxuICApXG4gIHBpcGUoXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ2dtZDpjb250YWN0JyksXG4gICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKSxcbiAgICBhcHBlbmRSZXNwb25zaWJsZVBhcnR5KFxuICAgICAgb3duZXJDb250YWN0XG4gICAgICAgID8ge1xuICAgICAgICAgICAgLi4ub3duZXJDb250YWN0LFxuICAgICAgICAgICAgLy8gb3duZXIgcmVzcG9uc2libGUgcGFydHkgaXMgYWx3YXlzIHBvaW50IG9mIGNvbnRhY3RcbiAgICAgICAgICAgIHJvbGU6ICdwb2ludF9vZl9jb250YWN0JyxcbiAgICAgICAgICB9XG4gICAgICAgIDoge1xuICAgICAgICAgICAgb3JnYW5pemF0aW9uOiByZWNvcmQub3duZXJPcmdhbml6YXRpb24sXG4gICAgICAgICAgICBlbWFpbDogJycsXG4gICAgICAgICAgICByb2xlOiAncG9pbnRfb2ZfY29udGFjdCcsXG4gICAgICAgICAgfVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVJlY29yZFVwZGF0ZWQocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kQ2hpbGRPckNyZWF0ZSgnZ21kOmRhdGVTdGFtcCcpLFxuICAgIHJlbW92ZUFsbENoaWxkcmVuKCksXG4gICAgd3JpdGVEYXRlVGltZShyZWNvcmQucmVjb3JkVXBkYXRlZClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVRpdGxlKHJlY29yZDogQ2F0YWxvZ1JlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmNpdGF0aW9uJywgJ2dtZDpDSV9DaXRhdGlvbicsICdnbWQ6dGl0bGUnKSxcbiAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhyZWNvcmQudGl0bGUpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVBYnN0cmFjdChyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ2dtZDphYnN0cmFjdCcpLFxuICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKHJlY29yZC5hYnN0cmFjdClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVN0YXR1cyhyZWNvcmQ6IERhdGFzZXRSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDpzdGF0dXMnLCAnZ21kOk1EX1Byb2dyZXNzQ29kZScpLFxuICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICdjb2RlTGlzdCcsXG4gICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9Qcm9ncmVzc0NvZGUnXG4gICAgKSxcbiAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCBnZXRQcm9ncmVzc0NvZGUocmVjb3JkLnN0YXR1cykpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVDb250YWN0cyhyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6Y29udGFjdCcpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4ucmVjb3JkLmNvbnRhY3RzLm1hcCgoY29udGFjdCkgPT5cbiAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6Y29udGFjdCcpLCBhcHBlbmRSZXNwb25zaWJsZVBhcnR5KGNvbnRhY3QpKVxuICAgICAgKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUNvbnRhY3RzRm9yUmVzb3VyY2UoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6cG9pbnRPZkNvbnRhY3QnKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmNvbnRhY3QnKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5jb250YWN0c0ZvclJlc291cmNlLm1hcCgoY29udGFjdCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6cG9pbnRPZkNvbnRhY3QnKSxcbiAgICAgICAgICBhcHBlbmRSZXNwb25zaWJsZVBhcnR5KGNvbnRhY3QpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVLZXl3b3JkcyhyZWNvcmQ6IENhdGFsb2dSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgcmVtb3ZlS2V5d29yZHMoKSxcbiAgICBhcHBlbmRLZXl3b3JkcyhyZWNvcmQua2V5d29yZHMpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVUb3BpY3MocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUNoaWxkcmVuQnlOYW1lKCdnbWQ6dG9waWNDYXRlZ29yeScpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4ucmVjb3JkLnRvcGljcy5tYXAoKHRvcGljKSA9PlxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDp0b3BpY0NhdGVnb3J5JyksXG4gICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9Ub3BpY0NhdGVnb3J5Q29kZScpLFxuICAgICAgICAgIHNldFRleHRDb250ZW50KHRvcGljKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlTGljZW5zZXMocmVjb3JkOiBDYXRhbG9nUmVjb3JkLCByb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUxpY2Vuc2VzKCksXG4gICAgYXBwZW5kQ2hpbGRyZW4oLi4ucmVjb3JkLmxpY2Vuc2VzLm1hcChjcmVhdGVMaWNlbnNlKSlcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUxlZ2FsQ29uc3RyYWludHMoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIHJlbW92ZUxlZ2FsQ29uc3RyYWludHMoKSxcbiAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgIC4uLnJlY29yZC5sZWdhbENvbnN0cmFpbnRzLm1hcCgoYykgPT4gY3JlYXRlQ29uc3RyYWludChjLCAnbGVnYWwnKSlcbiAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVTZWN1cml0eUNvbnN0cmFpbnRzKFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVTZWN1cml0eUNvbnN0cmFpbnRzKCksXG4gICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAuLi5yZWNvcmQuc2VjdXJpdHlDb25zdHJhaW50cy5tYXAoKGMpID0+IGNyZWF0ZUNvbnN0cmFpbnQoYywgJ3NlY3VyaXR5JykpXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlT3RoZXJDb25zdHJhaW50cyhcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgcmVtb3ZlT3RoZXJDb25zdHJhaW50cygpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4ucmVjb3JkLm90aGVyQ29uc3RyYWludHMubWFwKChjKSA9PiBjcmVhdGVDb25zdHJhaW50KGMsICdvdGhlcicpKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVVwZGF0ZUZyZXF1ZW5jeShcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZENoaWxkT3JDcmVhdGUoJ2dtZDpyZXNvdXJjZU1haW50ZW5hbmNlJyksXG4gICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKSxcbiAgICBmaW5kQ2hpbGRPckNyZWF0ZSgnZ21kOk1EX01haW50ZW5hbmNlSW5mb3JtYXRpb24nKSxcbiAgICB0eXBlb2YgcmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeSA9PT0gJ29iamVjdCdcbiAgICAgID8gcGlwZShcbiAgICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOnVzZXJEZWZpbmVkTWFpbnRlbmFuY2VGcmVxdWVuY3knKSxcbiAgICAgICAgICBjcmVhdGVDaGlsZCgnZ3RzOlRNX1BlcmlvZER1cmF0aW9uJyksXG4gICAgICAgICAgc2V0VGV4dENvbnRlbnQoZ2V0SVNPRHVyYXRpb24ocmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeSkpXG4gICAgICAgIClcbiAgICAgIDogcGlwZShcbiAgICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOm1haW50ZW5hbmNlQW5kVXBkYXRlRnJlcXVlbmN5JyksXG4gICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpNRF9NYWludGVuYW5jZUZyZXF1ZW5jeUNvZGUnKSxcbiAgICAgICAgICBhZGRBdHRyaWJ1dGUoXG4gICAgICAgICAgICAnY29kZUxpc3QnLFxuICAgICAgICAgICAgJ2h0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMzkvcmVzb3VyY2VzL2dteENvZGVsaXN0cy54bWwjTURfTWFpbnRlbmFuY2VGcmVxdWVuY3lDb2RlJ1xuICAgICAgICAgICksXG4gICAgICAgICAgYWRkQXR0cmlidXRlKFxuICAgICAgICAgICAgJ2NvZGVMaXN0VmFsdWUnLFxuICAgICAgICAgICAgZ2V0TWFpbnRlbmFuY2VGcmVxdWVuY3lDb2RlKHJlY29yZC51cGRhdGVGcmVxdWVuY3kpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVSZXNvdXJjZUNyZWF0ZWQoXG4gIHJlY29yZDogRGF0YXNldFJlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgaWYgKCEoJ3Jlc291cmNlQ3JlYXRlZCcgaW4gcmVjb3JkKSkgcmV0dXJuXG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmNpdGF0aW9uJywgJ2dtZDpDSV9DaXRhdGlvbicpLFxuICAgIGZhbGxiYWNrKFxuICAgICAgdXBkYXRlQ2l0YXRpb25EYXRlKHJlY29yZC5yZXNvdXJjZUNyZWF0ZWQsICdjcmVhdGlvbicpLFxuICAgICAgYXBwZW5kQ2l0YXRpb25EYXRlKHJlY29yZC5yZXNvdXJjZUNyZWF0ZWQsICdjcmVhdGlvbicpXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlUmVzb3VyY2VVcGRhdGVkKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIGlmICghKCdyZXNvdXJjZVVwZGF0ZWQnIGluIHJlY29yZCkpIHJldHVyblxuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoJ2dtZDpjaXRhdGlvbicsICdnbWQ6Q0lfQ2l0YXRpb24nKSxcbiAgICBmYWxsYmFjayhcbiAgICAgIHVwZGF0ZUNpdGF0aW9uRGF0ZShyZWNvcmQucmVzb3VyY2VVcGRhdGVkLCAncmV2aXNpb24nKSxcbiAgICAgIGFwcGVuZENpdGF0aW9uRGF0ZShyZWNvcmQucmVzb3VyY2VVcGRhdGVkLCAncmV2aXNpb24nKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVJlc291cmNlUHVibGlzaGVkKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIGlmICghKCdyZXNvdXJjZVB1Ymxpc2hlZCcgaW4gcmVjb3JkKSkgcmV0dXJuXG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICBmaW5kTmVzdGVkQ2hpbGRPckNyZWF0ZSgnZ21kOmNpdGF0aW9uJywgJ2dtZDpDSV9DaXRhdGlvbicpLFxuICAgIGZhbGxiYWNrKFxuICAgICAgdXBkYXRlQ2l0YXRpb25EYXRlKHJlY29yZC5yZXNvdXJjZVB1Ymxpc2hlZCwgJ3B1YmxpY2F0aW9uJyksXG4gICAgICBhcHBlbmRDaXRhdGlvbkRhdGUocmVjb3JkLnJlc291cmNlUHVibGlzaGVkLCAncHVibGljYXRpb24nKVxuICAgIClcbiAgKShyb290RWwpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZVNwYXRpYWxSZXByZXNlbnRhdGlvbihcbiAgcmVjb3JkOiBEYXRhc2V0UmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIGZpbmRPckNyZWF0ZUlkZW50aWZpY2F0aW9uKCksXG4gICAgZmluZE5lc3RlZENoaWxkT3JDcmVhdGUoXG4gICAgICAnZ21kOnNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGUnLFxuICAgICAgJ2dtZDpNRF9TcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlQ29kZSdcbiAgICApLFxuICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICdjb2RlTGlzdCcsXG4gICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNNRF9TcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlQ29kZSdcbiAgICApLFxuICAgIGFkZEF0dHJpYnV0ZSgnY29kZUxpc3RWYWx1ZScsIHJlY29yZC5zcGF0aWFsUmVwcmVzZW50YXRpb24pXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVHcmFwaGljT3ZlcnZpZXdzKFxuICByZWNvcmQ6IERhdGFzZXRSZWNvcmQsXG4gIHJvb3RFbDogWG1sRWxlbWVudFxuKSB7XG4gIHBpcGUoXG4gICAgZmluZE9yQ3JlYXRlSWRlbnRpZmljYXRpb24oKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOmdyYXBoaWNPdmVydmlldycpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4ucmVjb3JkLm92ZXJ2aWV3cy5tYXAoKG92ZXJ2aWV3KSA9PlxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpncmFwaGljT3ZlcnZpZXcnKSxcbiAgICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX0Jyb3dzZUdyYXBoaWMnKSxcbiAgICAgICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpmaWxlTmFtZScpLFxuICAgICAgICAgICAgICB3cml0ZUNoYXJhY3RlclN0cmluZyhvdmVydmlldy51cmwudG9TdHJpbmcoKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICAgICdkZXNjcmlwdGlvbicgaW4gb3ZlcnZpZXdcbiAgICAgICAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpmaWxlRGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKG92ZXJ2aWV3LmRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBub29wXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVEaXN0cmlidXRpb25zKHJlY29yZDogRGF0YXNldFJlY29yZCwgcm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gIHBpcGUoXG4gICAgcmVtb3ZlRGlzdHJpYnV0aW9ucygpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4ucmVjb3JkLmRpc3RyaWJ1dGlvbnMubWFwKChkKSA9PlxuICAgICAgICBwaXBlKFxuICAgICAgICAgIGNyZWF0ZURpc3RyaWJ1dGlvbkluZm8oKSxcbiAgICAgICAgICBhcHBlbmREaXN0cmlidXRpb24oZCwgYXBwZW5kRGlzdHJpYnV0aW9uRm9ybWF0KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlTGluZWFnZShyZWNvcmQ6IERhdGFzZXRSZWNvcmQsIHJvb3RFbDogWG1sRWxlbWVudCkge1xuICBwaXBlKFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKFxuICAgICAgJ2dtZDpkYXRhUXVhbGl0eUluZm8nLFxuICAgICAgJ2dtZDpEUV9EYXRhUXVhbGl0eScsXG4gICAgICAnZ21kOmxpbmVhZ2UnLFxuICAgICAgJ2dtZDpMSV9MaW5lYWdlJyxcbiAgICAgICdnbWQ6c3RhdGVtZW50J1xuICAgICksXG4gICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcocmVjb3JkLmxpbmVhZ2UpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VydmljZUVuZHBvaW50UHJvdG9jb2woZW5kcG9pbnQ6IFNlcnZpY2VFbmRwb2ludCk6IHN0cmluZyB7XG4gIHN3aXRjaCAoZW5kcG9pbnQucHJvdG9jb2wudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ3dmcyc6XG4gICAgICByZXR1cm4gJ09HQzpXRlMnXG4gICAgY2FzZSAnd21zJzpcbiAgICAgIHJldHVybiAnT0dDOldNUydcbiAgICBjYXNlICd3cHMnOlxuICAgICAgcmV0dXJuICdPR0M6V1BTJ1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZW5kcG9pbnQucHJvdG9jb2xcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlT25saW5lUmVzb3VyY2Uob25saW5lUmVzb3VyY2U6IFNlcnZpY2VPbmxpbmVSZXNvdXJjZSkge1xuICBsZXQgbGlua2FnZVVybCwgZnVuY3Rpb25Db2RlLCBwcm90b2NvbFxuICBpZiAob25saW5lUmVzb3VyY2UudHlwZSA9PT0gJ2VuZHBvaW50Jykge1xuICAgIGxpbmthZ2VVcmwgPSBvbmxpbmVSZXNvdXJjZS5lbmRwb2ludFVybC50b1N0cmluZygpXG4gICAgcHJvdG9jb2wgPSBnZXRTZXJ2aWNlRW5kcG9pbnRQcm90b2NvbChvbmxpbmVSZXNvdXJjZSlcbiAgICBmdW5jdGlvbkNvZGUgPSAnZG93bmxvYWQnXG4gIH0gZWxzZSB7XG4gICAgbGlua2FnZVVybCA9IG9ubGluZVJlc291cmNlLnVybC50b1N0cmluZygpXG4gICAgZnVuY3Rpb25Db2RlID0gJ2luZm9ybWF0aW9uJ1xuICAgIHByb3RvY29sID0gJ1dXVzpMSU5LJ1xuICB9XG4gIGNvbnN0IGFwcGVuZFRyYW5zZmVyT3B0aW9ucyA9IGFwcGVuZENoaWxkcmVuKFxuICAgIHBpcGUoXG4gICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6dHJhbnNmZXJPcHRpb25zJyksXG4gICAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX0RpZ2l0YWxUcmFuc2Zlck9wdGlvbnMnKSxcbiAgICAgIGNyZWF0ZUNoaWxkKCdnbWQ6b25MaW5lJyksXG4gICAgICBjcmVhdGVDaGlsZCgnZ21kOkNJX09ubGluZVJlc291cmNlJyksXG4gICAgICB3cml0ZUxpbmthZ2UobGlua2FnZVVybCksXG4gICAgICAnZGVzY3JpcHRpb24nIGluIG9ubGluZVJlc291cmNlXG4gICAgICAgID8gYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZGVzY3JpcHRpb24nKSxcbiAgICAgICAgICAgICAgd3JpdGVDaGFyYWN0ZXJTdHJpbmcob25saW5lUmVzb3VyY2UuZGVzY3JpcHRpb24pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vb3AsXG4gICAgICAnbmFtZScgaW4gb25saW5lUmVzb3VyY2VcbiAgICAgICAgPyBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpuYW1lJyksXG4gICAgICAgICAgICAgIHdyaXRlQ2hhcmFjdGVyU3RyaW5nKG9ubGluZVJlc291cmNlLm5hbWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICA6IG5vb3AsXG4gICAgICBhcHBlbmRDaGlsZHJlbihcbiAgICAgICAgcGlwZShjcmVhdGVFbGVtZW50KCdnbWQ6cHJvdG9jb2wnKSwgd3JpdGVDaGFyYWN0ZXJTdHJpbmcocHJvdG9jb2wpKSxcbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6ZnVuY3Rpb24nKSxcbiAgICAgICAgICBjcmVhdGVDaGlsZCgnZ21kOkNJX09uTGluZUZ1bmN0aW9uQ29kZScpLFxuICAgICAgICAgIGFkZEF0dHJpYnV0ZShcbiAgICAgICAgICAgICdjb2RlTGlzdCcsXG4gICAgICAgICAgICAnaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTEzOS9yZXNvdXJjZXMvZ214Q29kZWxpc3RzLnhtbCNDSV9PbkxpbmVGdW5jdGlvbkNvZGUnXG4gICAgICAgICAgKSxcbiAgICAgICAgICBhZGRBdHRyaWJ1dGUoJ2NvZGVMaXN0VmFsdWUnLCBmdW5jdGlvbkNvZGUpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIClcbiAgcmV0dXJuIHBpcGUoXG4gICAgY3JlYXRlRWxlbWVudCgnZ21kOmRpc3RyaWJ1dGlvbkluZm8nKSxcbiAgICBjcmVhdGVDaGlsZCgnZ21kOk1EX0Rpc3RyaWJ1dGlvbicpLFxuICAgIGFwcGVuZFRyYW5zZmVyT3B0aW9uc1xuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZU9ubGluZVJlc291cmNlcyhcbiAgcmVjb3JkOiBTZXJ2aWNlUmVjb3JkLFxuICByb290RWw6IFhtbEVsZW1lbnRcbikge1xuICBwaXBlKFxuICAgIHJlbW92ZURpc3RyaWJ1dGlvbnMoKSxcbiAgICBhcHBlbmRDaGlsZHJlbiguLi5yZWNvcmQub25saW5lUmVzb3VyY2VzLm1hcChjcmVhdGVPbmxpbmVSZXNvdXJjZSkpXG4gICkocm9vdEVsKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVUZW1wb3JhbEV4dGVudHMoXG4gIHJlY29yZDogRGF0YXNldFJlY29yZCxcbiAgcm9vdEVsOiBYbWxFbGVtZW50XG4pIHtcbiAgcGlwZShcbiAgICBmaW5kT3JDcmVhdGVJZGVudGlmaWNhdGlvbigpLFxuICAgIGZpbmROZXN0ZWRDaGlsZE9yQ3JlYXRlKCdnbWQ6ZXh0ZW50JywgJ2dtZDpFWF9FeHRlbnQnKSxcbiAgICByZW1vdmVDaGlsZHJlbkJ5TmFtZSgnZ21kOnRlbXBvcmFsRWxlbWVudCcpLFxuICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgLi4ucmVjb3JkLnRlbXBvcmFsRXh0ZW50cy5tYXAoKGV4dGVudCkgPT5cbiAgICAgICAgcGlwZShcbiAgICAgICAgICBjcmVhdGVFbGVtZW50KCdnbWQ6dGVtcG9yYWxFbGVtZW50JyksXG4gICAgICAgICAgY3JlYXRlQ2hpbGQoJ2dtZDpFWF9UZW1wb3JhbEV4dGVudCcpLFxuICAgICAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgJ3N0YXJ0JyBpbiBleHRlbnQgJiYgJ2VuZCcgaW4gZXh0ZW50XG4gICAgICAgICAgICAgID8gcGlwZShcbiAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpleHRlbnQnKSxcbiAgICAgICAgICAgICAgICAgIGNyZWF0ZUNoaWxkKCdnbWw6VGltZVBlcmlvZCcpLFxuICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21sOmJlZ2luUG9zaXRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW50LnN0YXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gc2V0VGV4dENvbnRlbnQoZm9ybWF0KGV4dGVudC5zdGFydCwgJ3l5eXktTU0tZGQnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhZGRBdHRyaWJ1dGUoJ2luZGV0ZXJtaW5hdGVQb3NpdGlvbicsICd1bmtub3duJylcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIHBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCgnZ21sOmVuZFBvc2l0aW9uJyksXG4gICAgICAgICAgICAgICAgICAgICAgcGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVudC5lbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZXRUZXh0Q29udGVudChmb3JtYXQoZXh0ZW50LmVuZCwgJ3l5eXktTU0tZGQnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhZGRBdHRyaWJ1dGUoJ2luZGV0ZXJtaW5hdGVQb3NpdGlvbicsICd1bmtub3duJylcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogcGlwZShcbiAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtZDpleHRlbnQnKSxcbiAgICAgICAgICAgICAgICAgIGNyZWF0ZUNoaWxkKCdnbWw6VGltZUluc3RhbnQnKSxcbiAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkcmVuKFxuICAgICAgICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoJ2dtbDp0aW1lUG9zaXRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICBwaXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW50LnN0YXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gc2V0VGV4dENvbnRlbnQoZm9ybWF0KGV4dGVudC5zdGFydCwgJ3l5eXktTU0tZGQnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOiBhZGRBdHRyaWJ1dGUoJ2luZGV0ZXJtaW5hdGVQb3NpdGlvbicsICd1bmtub3duJylcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApKHJvb3RFbClcbn1cbiJdfQ==
@@ -89,15 +89,17 @@ export class Gn4PlatformService {
89
89
  return this.thesauri[uri];
90
90
  }
91
91
  getUserFeedbacks(uuid) {
92
- return this.userfeedbackApiService
93
- .getUserComments(uuid)
94
- .pipe(map((userFeedbacks) => userFeedbacks.map(this.mapper.userFeedbacksFromApi)));
92
+ return this.userfeedbackApiService.getUserComments(uuid).pipe(map((userFeedbacks) => userFeedbacks.map(this.mapper.userFeedbacksFromApi)), catchError((error) => {
93
+ console.error('Error fetching user feedbacks:', error);
94
+ return of(undefined);
95
+ }));
95
96
  }
96
97
  postUserFeedbacks(userFeedback) {
97
98
  const mappedUserFeedBack = this.mapper.userFeedbacksToApi(userFeedback);
98
- return this.userfeedbackApiService
99
- .newUserFeedback(mappedUserFeedBack)
100
- .pipe(map(() => undefined));
99
+ return this.userfeedbackApiService.newUserFeedback(mappedUserFeedBack).pipe(map(() => undefined), catchError((error) => {
100
+ console.error('Error posting user feedback:', error);
101
+ return of(undefined);
102
+ }));
101
103
  }
102
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: i1.SiteApiService }, { token: i1.MeApiService }, { token: i1.UsersApiService }, { token: i2.Gn4PlatformMapper }, { token: i1.ToolsApiService }, { token: i1.RegistriesApiService }, { token: i3.LangService }, { token: i1.UserfeedbackApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
103
105
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
@@ -105,4 +107,4 @@ export class Gn4PlatformService {
105
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, decorators: [{
106
108
  type: Injectable
107
109
  }], ctorParameters: function () { return [{ type: i1.SiteApiService }, { type: i1.MeApiService }, { type: i1.UsersApiService }, { type: i2.Gn4PlatformMapper }, { type: i1.ToolsApiService }, { type: i1.RegistriesApiService }, { type: i3.LangService }, { type: i1.UserfeedbackApiService }]; } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXBsYXRmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L3BsYXRmb3JtL2duNC1wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ2xFLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQU90RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTs7Ozs7QUFFckUsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFBO0FBRzdCLE1BQU0sT0FBTyxrQkFBa0I7SUF1QzdCLFlBQ1UsY0FBOEIsRUFDOUIsS0FBbUIsRUFDbkIsUUFBeUIsRUFDekIsTUFBeUIsRUFDekIsZUFBZ0MsRUFDaEMsb0JBQTBDLEVBQzFDLFdBQXdCLEVBQ3hCLHNCQUE4QztRQVA5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMseUJBQW9CLEdBQXBC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LElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQzFCLFNBQWtCLEVBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUN0QixDQUNGLEVBQ0QsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUE7UUFFSCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVk7UUFDM0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCO2FBQy9CLGVBQWUsQ0FBQyxJQUFJLENBQUM7YUFDckIsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQ3BCLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUNwRCxDQUNGLENBQUE7SUFDTCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsWUFBMEI7UUFDMUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQjthQUMvQixlQUFlLENBQUMsa0JBQWtCLENBQUM7YUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBQy9CLENBQUM7OEdBekpVLGtCQUFrQjtrSEFBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc2hhcmVSZXBsYXksIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgTWVBcGlTZXJ2aWNlLFxuICBSZWdpc3RyaWVzQXBpU2VydmljZSxcbiAgU2l0ZUFwaVNlcnZpY2UsXG4gIFRvb2xzQXBpU2VydmljZSxcbiAgVXNlcmZlZWRiYWNrQXBpU2VydmljZSxcbiAgVXNlcnNBcGlTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL2duNC9zcmMnXG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9wbGF0Zm9ybS5zZXJ2aWNlLmludGVyZmFjZSdcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3VzZXIvdXNlci5tb2RlbCdcbmltcG9ydCB7XG4gIE9yZ2FuaXphdGlvbixcbiAgVXNlckZlZWRiYWNrLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQnXG5pbXBvcnQgeyBHbjRQbGF0Zm9ybU1hcHBlciB9IGZyb20gJy4vZ240LXBsYXRmb3JtLm1hcHBlcidcbmltcG9ydCB7IGx0ciB9IGZyb20gJ3NlbXZlcidcbmltcG9ydCB7IFRoZXNhdXJ1c01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvdGhlc2F1cnVzL3RoZXNhdXJ1cy5tb2RlbCdcbmltcG9ydCB7IExhbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy91dGlsL2kxOG4vc3JjJ1xuXG5jb25zdCBtaW5BcGlWZXJzaW9uID0gJzQuMi4yJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR240UGxhdGZvcm1TZXJ2aWNlIGltcGxlbWVudHMgUGxhdGZvcm1TZXJ2aWNlSW50ZXJmYWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0eXBlID0gJ0dlb05ldHdvcmsnXG4gIHByaXZhdGUgcmVhZG9ubHkgbWUkOiBPYnNlcnZhYmxlPFVzZXJNb2RlbD5cbiAgcHJpdmF0ZSByZWFkb25seSB1c2VycyQ6IE9ic2VydmFibGU8VXNlck1vZGVsW10+XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNVc2VyQW5vbnltb3VzJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuXG4gIHByaXZhdGUga2V5VHJhbnNsYXRpb25zJCA9IHRoaXMudG9vbHNBcGlTZXJ2aWNlXG4gICAgLmdldFRyYW5zbGF0aW9uc1BhY2thZ2UxKCdnbnVpJylcbiAgICAucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0Vycm9yIHdoaWxlIGxvYWRpbmcgZ251aSBsYW5ndWFnZSBwYWNrYWdlJylcbiAgICAgICAgcmV0dXJuIG9mKHt9KVxuICAgICAgfSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgIClcblxuICBwcml2YXRlIHNldHRpbmdzJCA9IG9mKHRydWUpLnBpcGUoXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuc2l0ZUFwaVNlcnZpY2UuZ2V0U2l0ZU9yUG9ydGFsRGVzY3JpcHRpb24oKSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpVmVyc2lvbiQgPSB0aGlzLnNldHRpbmdzJC5waXBlKFxuICAgIG1hcCgoaW5mbykgPT4gaW5mb1snc3lzdGVtL3BsYXRmb3JtL3ZlcnNpb24nXSBhcyBzdHJpbmcpLFxuICAgIHRhcCgodmVyc2lvbikgPT4ge1xuICAgICAgaWYgKGx0cih2ZXJzaW9uLCBtaW5BcGlWZXJzaW9uKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEduNCBBUEkgdmVyc2lvbiBpcyBub3QgY29tcGF0aWJsZS5cXG5NaW5pbXVtOiAke21pbkFwaVZlcnNpb259XFxuWW91ciB2ZXJzaW9uOiAke3ZlcnNpb259YFxuICAgICAgICApXG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKVxuXG4gIC8qKlxuICAgKiBBIG1hcCBvZiBhbHJlYWR5IGxvYWRlZCB0aGVzYXVyaSAoZ3JvdXBzIG9mIGtleXdvcmRzKTsgdGhlIGtleSBpcyBhIFVSSVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB0aGVzYXVyaTogUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTxUaGVzYXVydXNNb2RlbD4+ID0ge31cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNpdGVBcGlTZXJ2aWNlOiBTaXRlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIG1lQXBpOiBNZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2Vyc0FwaTogVXNlcnNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWFwcGVyOiBHbjRQbGF0Zm9ybU1hcHBlcixcbiAgICBwcml2YXRlIHRvb2xzQXBpU2VydmljZTogVG9vbHNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVnaXN0cmllc0FwaVNlcnZpY2U6IFJlZ2lzdHJpZXNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ1NlcnZpY2U6IExhbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlcmZlZWRiYWNrQXBpU2VydmljZTogVXNlcmZlZWRiYWNrQXBpU2VydmljZVxuICApIHtcbiAgICB0aGlzLm1lJCA9IHRoaXMubWVBcGkuZ2V0TWUoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChhcGlVc2VyKSA9PiB0aGlzLm1hcHBlci51c2VyRnJvbU1lQXBpKGFwaVVzZXIpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSlcbiAgICApXG5cbiAgICB0aGlzLmlzVXNlckFub255bW91cyQgPSB0aGlzLm1lJC5waXBlKFxuICAgICAgbWFwKCh1c2VyKSA9PiAhdXNlciB8fCAhKCdpZCcgaW4gdXNlcikpXG4gICAgKVxuXG4gICAgdGhpcy51c2VycyQgPSB0aGlzLnVzZXJzQXBpLmdldFVzZXJzKCkucGlwZShcbiAgICAgIG1hcCgodXNlcnMpID0+IHVzZXJzLm1hcCgodXNlcikgPT4gdGhpcy5tYXBwZXIudXNlckZyb21BcGkodXNlcikpKSxcbiAgICAgIHNoYXJlUmVwbGF5KClcbiAgICApXG4gIH1cblxuICBnZXRUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudHlwZVxuICB9XG5cbiAgZ2V0QXBpVmVyc2lvbigpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmFwaVZlcnNpb24kXG4gIH1cblxuICBnZXRNZSgpOiBPYnNlcnZhYmxlPFVzZXJNb2RlbD4ge1xuICAgIHJldHVybiB0aGlzLm1lJFxuICB9XG5cbiAgaXNBbm9ueW1vdXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuaXNVc2VyQW5vbnltb3VzJFxuICB9XG5cbiAgZ2V0T3JnYW5pemF0aW9ucygpOiBPYnNlcnZhYmxlPE9yZ2FuaXphdGlvbltdPiB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgZ2V0VXNlcnNCeU9yZ2FuaXphdGlvbihvcmdhbmlzYXRpb246IE9yZ2FuaXphdGlvbik6IE9ic2VydmFibGU8VXNlck1vZGVsW10+IHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBnZXRVc2VycygpOiBPYnNlcnZhYmxlPFVzZXJNb2RlbFtdPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlcnMkXG4gIH1cblxuICB0cmFuc2xhdGVLZXkoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIC8vIGlmIHRoZSBrZXkgaXMgYSBVUkksIHVzZSB0aGUgcmVnaXN0cmllcyBBUEkgdG8gbG9vayBmb3IgdGhlIHRyYW5zbGF0aW9uXG4gICAgaWYgKGtleS5tYXRjaCgvXmh0dHBzPzpcXC9cXC8vKSkge1xuICAgICAgLy8gdGhlIHRoZXNhdXJ1cyBVUkkgaXMgaW5mZXJyZWQgYnkgcmVtb3ZpbmcgYSBwYXJ0IG9mIHRoZSBrZXl3b3JkIFVSSVxuICAgICAgLy8gdGhpcyBpcyBub3QgZXhhY3Qgc2NpZW5jZSBidXQgaXQncyBPSywgd2UnbGwgc3RpbGwgZW5kIHVwIGxvYWRpbmcgYSBidW5jaCBvZiBrZXl3b3JkcyBhdCBvbmNlIGFueXdheVxuICAgICAgY29uc3QgdGhlc2F1cnVzVXJpID0ga2V5LnJlcGxhY2UoL1xcLyhbXi9dKykkLywgJy8nKVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0VGhlc2F1cnVzQnlVcmkodGhlc2F1cnVzVXJpKS5waXBlKFxuICAgICAgICBtYXAoKHRoZXNhdXJ1cykgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGVzYXVydXMpIHtcbiAgICAgICAgICAgIGlmIChpdGVtLmtleSA9PT0ga2V5KSByZXR1cm4gaXRlbS5sYWJlbFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ga2V5XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmtleVRyYW5zbGF0aW9ucyQucGlwZShtYXAoKHRyYW5zbGF0aW9ucykgPT4gdHJhbnNsYXRpb25zW2tleV0pKVxuICB9XG5cbiAgZ2V0VGhlc2F1cnVzQnlVcmkodXJpOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRoZXNhdXJ1c01vZGVsPiB7XG4gICAgaWYgKHRoaXMudGhlc2F1cmlbdXJpXSkge1xuICAgICAgcmV0dXJuIHRoaXMudGhlc2F1cmlbdXJpXVxuICAgIH1cbiAgICB0aGlzLnRoZXNhdXJpW3VyaV0gPSB0aGlzLnJlZ2lzdHJpZXNBcGlTZXJ2aWNlXG4gICAgICAuc2VhcmNoS2V5d29yZHMoXG4gICAgICAgIG51bGwsXG4gICAgICAgIHRoaXMubGFuZ1NlcnZpY2UuaXNvMyxcbiAgICAgICAgMTAwMCxcbiAgICAgICAgMCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgYCR7dXJpfSpgXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh0aGVzYXVydXMpID0+XG4gICAgICAgICAgdGhpcy5tYXBwZXIudGhlc2F1cnVzRnJvbUFwaShcbiAgICAgICAgICAgIHRoZXNhdXJ1cyBhcyBhbnlbXSxcbiAgICAgICAgICAgIHRoaXMubGFuZ1NlcnZpY2UuaXNvM1xuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgIClcblxuICAgIHJldHVybiB0aGlzLnRoZXNhdXJpW3VyaV1cbiAgfVxuXG4gIGdldFVzZXJGZWVkYmFja3ModXVpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyRmVlZGJhY2tbXT4ge1xuICAgIHJldHVybiB0aGlzLnVzZXJmZWVkYmFja0FwaVNlcnZpY2VcbiAgICAgIC5nZXRVc2VyQ29tbWVudHModXVpZClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHVzZXJGZWVkYmFja3MpID0+XG4gICAgICAgICAgdXNlckZlZWRiYWNrcy5tYXAodGhpcy5tYXBwZXIudXNlckZlZWRiYWNrc0Zyb21BcGkpXG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuXG4gIHBvc3RVc2VyRmVlZGJhY2tzKHVzZXJGZWVkYmFjazogVXNlckZlZWRiYWNrKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgbWFwcGVkVXNlckZlZWRCYWNrID0gdGhpcy5tYXBwZXIudXNlckZlZWRiYWNrc1RvQXBpKHVzZXJGZWVkYmFjaylcbiAgICByZXR1cm4gdGhpcy51c2VyZmVlZGJhY2tBcGlTZXJ2aWNlXG4gICAgICAubmV3VXNlckZlZWRiYWNrKG1hcHBlZFVzZXJGZWVkQmFjaylcbiAgICAgIC5waXBlKG1hcCgoKSA9PiB1bmRlZmluZWQpKVxuICB9XG59XG4iXX0=
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXBsYXRmb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L3BsYXRmb3JtL2duNC1wbGF0Zm9ybS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ2xFLE9BQU8sRUFDTCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxlQUFlLEVBQ2Ysc0JBQXNCLEVBQ3RCLGVBQWUsR0FDaEIsTUFBTSwrQ0FBK0MsQ0FBQTtBQU90RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBRTVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQTs7Ozs7QUFFckUsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFBO0FBRzdCLE1BQU0sT0FBTyxrQkFBa0I7SUF1QzdCLFlBQ1UsY0FBOEIsRUFDOUIsS0FBbUIsRUFDbkIsUUFBeUIsRUFDekIsTUFBeUIsRUFDekIsZUFBZ0MsRUFDaEMsb0JBQTBDLEVBQzFDLFdBQXdCLEVBQ3hCLHNCQUE4QztRQVA5QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixXQUFNLEdBQU4sTUFBTSxDQUFtQjtRQUN6QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMseUJBQW9CLEdBQXBC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QkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQge1xuICBNZUFwaVNlcnZpY2UsXG4gIFJlZ2lzdHJpZXNBcGlTZXJ2aWNlLFxuICBTaXRlQXBpU2VydmljZSxcbiAgVG9vbHNBcGlTZXJ2aWNlLFxuICBVc2VyZmVlZGJhY2tBcGlTZXJ2aWNlLFxuICBVc2Vyc0FwaVNlcnZpY2UsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3MvZ240L3NyYydcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgVXNlck1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvdXNlci91c2VyLm1vZGVsJ1xuaW1wb3J0IHtcbiAgT3JnYW5pemF0aW9uLFxuICBVc2VyRmVlZGJhY2ssXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IEduNFBsYXRmb3JtTWFwcGVyIH0gZnJvbSAnLi9nbjQtcGxhdGZvcm0ubWFwcGVyJ1xuaW1wb3J0IHsgbHRyIH0gZnJvbSAnc2VtdmVyJ1xuaW1wb3J0IHsgVGhlc2F1cnVzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC90aGVzYXVydXMvdGhlc2F1cnVzLm1vZGVsJ1xuaW1wb3J0IHsgTGFuZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3V0aWwvaTE4bi9zcmMnXG5cbmNvbnN0IG1pbkFwaVZlcnNpb24gPSAnNC4yLjInXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHbjRQbGF0Zm9ybVNlcnZpY2UgaW1wbGVtZW50cyBQbGF0Zm9ybVNlcnZpY2VJbnRlcmZhY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHR5cGUgPSAnR2VvTmV0d29yaydcbiAgcHJpdmF0ZSByZWFkb25seSBtZSQ6IE9ic2VydmFibGU8VXNlck1vZGVsPlxuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJzJDogT2JzZXJ2YWJsZTxVc2VyTW9kZWxbXT5cbiAgcHJpdmF0ZSByZWFkb25seSBpc1VzZXJBbm9ueW1vdXMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG5cbiAgcHJpdmF0ZSBrZXlUcmFuc2xhdGlvbnMkID0gdGhpcy50b29sc0FwaVNlcnZpY2VcbiAgICAuZ2V0VHJhbnNsYXRpb25zUGFja2FnZTEoJ2dudWknKVxuICAgIC5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUud2FybignRXJyb3Igd2hpbGUgbG9hZGluZyBnbnVpIGxhbmd1YWdlIHBhY2thZ2UnKVxuICAgICAgICByZXR1cm4gb2Yoe30pXG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgKVxuXG4gIHByaXZhdGUgc2V0dGluZ3MkID0gb2YodHJ1ZSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zaXRlQXBpU2VydmljZS5nZXRTaXRlT3JQb3J0YWxEZXNjcmlwdGlvbigpKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgcHJpdmF0ZSByZWFkb25seSBhcGlWZXJzaW9uJCA9IHRoaXMuc2V0dGluZ3MkLnBpcGUoXG4gICAgbWFwKChpbmZvKSA9PiBpbmZvWydzeXN0ZW0vcGxhdGZvcm0vdmVyc2lvbiddIGFzIHN0cmluZyksXG4gICAgdGFwKCh2ZXJzaW9uKSA9PiB7XG4gICAgICBpZiAobHRyKHZlcnNpb24sIG1pbkFwaVZlcnNpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgR240IEFQSSB2ZXJzaW9uIGlzIG5vdCBjb21wYXRpYmxlLlxcbk1pbmltdW06ICR7bWluQXBpVmVyc2lvbn1cXG5Zb3VyIHZlcnNpb246ICR7dmVyc2lvbn1gXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApXG5cbiAgLyoqXG4gICAqIEEgbWFwIG9mIGFscmVhZHkgbG9hZGVkIHRoZXNhdXJpIChncm91cHMgb2Yga2V5d29yZHMpOyB0aGUga2V5IGlzIGEgVVJJXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHRoZXNhdXJpOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPFRoZXNhdXJ1c01vZGVsPj4gPSB7fVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2l0ZUFwaVNlcnZpY2U6IFNpdGVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVBcGk6IE1lQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJzQXBpOiBVc2Vyc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtYXBwZXI6IEduNFBsYXRmb3JtTWFwcGVyLFxuICAgIHByaXZhdGUgdG9vbHNBcGlTZXJ2aWNlOiBUb29sc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWdpc3RyaWVzQXBpU2VydmljZTogUmVnaXN0cmllc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsYW5nU2VydmljZTogTGFuZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyZmVlZGJhY2tBcGlTZXJ2aWNlOiBVc2VyZmVlZGJhY2tBcGlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMubWUkID0gdGhpcy5tZUFwaS5nZXRNZSgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGFwaVVzZXIpID0+IHRoaXMubWFwcGVyLnVzZXJGcm9tTWVBcGkoYXBpVXNlcikpLFxuICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgIClcblxuICAgIHRoaXMuaXNVc2VyQW5vbnltb3VzJCA9IHRoaXMubWUkLnBpcGUoXG4gICAgICBtYXAoKHVzZXIpID0+ICF1c2VyIHx8ICEoJ2lkJyBpbiB1c2VyKSlcbiAgICApXG5cbiAgICB0aGlzLnVzZXJzJCA9IHRoaXMudXNlcnNBcGkuZ2V0VXNlcnMoKS5waXBlKFxuICAgICAgbWFwKCh1c2VycykgPT4gdXNlcnMubWFwKCh1c2VyKSA9PiB0aGlzLm1hcHBlci51c2VyRnJvbUFwaSh1c2VyKSkpLFxuICAgICAgc2hhcmVSZXBsYXkoKVxuICAgIClcbiAgfVxuXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50eXBlXG4gIH1cblxuICBnZXRBcGlWZXJzaW9uKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBpVmVyc2lvbiRcbiAgfVxuXG4gIGdldE1lKCk6IE9ic2VydmFibGU8VXNlck1vZGVsPiB7XG4gICAgcmV0dXJuIHRoaXMubWUkXG4gIH1cblxuICBpc0Fub255bW91cygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5pc1VzZXJBbm9ueW1vdXMkXG4gIH1cblxuICBnZXRPcmdhbml6YXRpb25zKCk6IE9ic2VydmFibGU8T3JnYW5pemF0aW9uW10+IHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBnZXRVc2Vyc0J5T3JnYW5pemF0aW9uKG9yZ2FuaXNhdGlvbjogT3JnYW5pemF0aW9uKTogT2JzZXJ2YWJsZTxVc2VyTW9kZWxbXT4ge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGdldFVzZXJzKCk6IE9ic2VydmFibGU8VXNlck1vZGVsW10+IHtcbiAgICByZXR1cm4gdGhpcy51c2VycyRcbiAgfVxuXG4gIHRyYW5zbGF0ZUtleShrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgLy8gaWYgdGhlIGtleSBpcyBhIFVSSSwgdXNlIHRoZSByZWdpc3RyaWVzIEFQSSB0byBsb29rIGZvciB0aGUgdHJhbnNsYXRpb25cbiAgICBpZiAoa2V5Lm1hdGNoKC9eaHR0cHM/OlxcL1xcLy8pKSB7XG4gICAgICAvLyB0aGUgdGhlc2F1cnVzIFVSSSBpcyBpbmZlcnJlZCBieSByZW1vdmluZyBhIHBhcnQgb2YgdGhlIGtleXdvcmQgVVJJXG4gICAgICAvLyB0aGlzIGlzIG5vdCBleGFjdCBzY2llbmNlIGJ1dCBpdCdzIE9LLCB3ZSdsbCBzdGlsbCBlbmQgdXAgbG9hZGluZyBhIGJ1bmNoIG9mIGtleXdvcmRzIGF0IG9uY2UgYW55d2F5XG4gICAgICBjb25zdCB0aGVzYXVydXNVcmkgPSBrZXkucmVwbGFjZSgvXFwvKFteL10rKSQvLCAnLycpXG4gICAgICByZXR1cm4gdGhpcy5nZXRUaGVzYXVydXNCeVVyaSh0aGVzYXVydXNVcmkpLnBpcGUoXG4gICAgICAgIG1hcCgodGhlc2F1cnVzKSA9PiB7XG4gICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoZXNhdXJ1cykge1xuICAgICAgICAgICAgaWYgKGl0ZW0ua2V5ID09PSBrZXkpIHJldHVybiBpdGVtLmxhYmVsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBrZXlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMua2V5VHJhbnNsYXRpb25zJC5waXBlKG1hcCgodHJhbnNsYXRpb25zKSA9PiB0cmFuc2xhdGlvbnNba2V5XSkpXG4gIH1cblxuICBnZXRUaGVzYXVydXNCeVVyaSh1cmk6IHN0cmluZyk6IE9ic2VydmFibGU8VGhlc2F1cnVzTW9kZWw+IHtcbiAgICBpZiAodGhpcy50aGVzYXVyaVt1cmldKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVzYXVyaVt1cmldXG4gICAgfVxuICAgIHRoaXMudGhlc2F1cmlbdXJpXSA9IHRoaXMucmVnaXN0cmllc0FwaVNlcnZpY2VcbiAgICAgIC5zZWFyY2hLZXl3b3JkcyhcbiAgICAgICAgbnVsbCxcbiAgICAgICAgdGhpcy5sYW5nU2VydmljZS5pc28zLFxuICAgICAgICAxMDAwLFxuICAgICAgICAwLFxuICAgICAgICBudWxsLFxuICAgICAgICBudWxsLFxuICAgICAgICBudWxsLFxuICAgICAgICBgJHt1cml9KmBcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHRoZXNhdXJ1cykgPT5cbiAgICAgICAgICB0aGlzLm1hcHBlci50aGVzYXVydXNGcm9tQXBpKFxuICAgICAgICAgICAgdGhlc2F1cnVzIGFzIGFueVtdLFxuICAgICAgICAgICAgdGhpcy5sYW5nU2VydmljZS5pc28zXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZVJlcGxheSgxKVxuICAgICAgKVxuXG4gICAgcmV0dXJuIHRoaXMudGhlc2F1cmlbdXJpXVxuICB9XG5cbiAgZ2V0VXNlckZlZWRiYWNrcyh1dWlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVzZXJGZWVkYmFja1tdPiB7XG4gICAgcmV0dXJuIHRoaXMudXNlcmZlZWRiYWNrQXBpU2VydmljZS5nZXRVc2VyQ29tbWVudHModXVpZCkucGlwZShcbiAgICAgIG1hcCgodXNlckZlZWRiYWNrcykgPT5cbiAgICAgICAgdXNlckZlZWRiYWNrcy5tYXAodGhpcy5tYXBwZXIudXNlckZlZWRiYWNrc0Zyb21BcGkpXG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgdXNlciBmZWVkYmFja3M6JywgZXJyb3IpXG4gICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHBvc3RVc2VyRmVlZGJhY2tzKHVzZXJGZWVkYmFjazogVXNlckZlZWRiYWNrKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgbWFwcGVkVXNlckZlZWRCYWNrID0gdGhpcy5tYXBwZXIudXNlckZlZWRiYWNrc1RvQXBpKHVzZXJGZWVkYmFjaylcbiAgICByZXR1cm4gdGhpcy51c2VyZmVlZGJhY2tBcGlTZXJ2aWNlLm5ld1VzZXJGZWVkYmFjayhtYXBwZWRVc2VyRmVlZEJhY2spLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdW5kZWZpbmVkKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBvc3RpbmcgdXNlciBmZWVkYmFjazonLCBlcnJvcilcbiAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZClcbiAgICAgIH0pXG4gICAgKVxuICB9XG59XG4iXX0=
@@ -21,4 +21,4 @@ export const RecordStatusValues = [
21
21
  'deprecated',
22
22
  'removed',
23
23
  ];
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQvbWV0YWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBT2hFLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFBO0FBQy9DLE1BQU0sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFBO0FBQ2xELE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO0FBQ2hELE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO0FBQ2pELE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO0FBQ2pELE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO0FBVWhELE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBQzNDLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO0FBQzVDLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO0FBQzdDLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO0FBVTVDLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ3hDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO0FBQ3RDLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO0FBQ2hELE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO0FBQ3pDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLFdBQVc7SUFDWCxTQUFTO0lBQ1QsbUJBQW1CO0lBQ25CLFlBQVk7SUFDWixTQUFTO0NBQ1YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB0eXBlIHsgSW5kaXZpZHVhbCB9IGZyb20gJy4vY29udGFjdC5tb2RlbCdcbmltcG9ydCB0eXBlIHsgT3JnYW5pemF0aW9uIH0gZnJvbSAnLi9vcmdhbml6YXRpb24ubW9kZWwnXG5pbXBvcnQgdHlwZSB7IEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbidcblxudHlwZSBVdWlkID0gc3RyaW5nXG5cbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kudW5rbm93bicpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5Lm5vdFBsYW5uZWQnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5hc05lZWRlZCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmlycmVndWxhcicpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmNvbnRpbnVhbCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LnBlcmlvZGljJylcblxuZXhwb3J0IHR5cGUgVXBkYXRlRnJlcXVlbmN5Q29kZSA9XG4gIHwgJ3Vua25vd24nXG4gIHwgJ25vdFBsYW5uZWQnXG4gIHwgJ2FzTmVlZGVkJ1xuICB8ICdpcnJlZ3VsYXInXG4gIHwgJ2NvbnRpbnVhbCdcbiAgfCAncGVyaW9kaWMnXG5cbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuZGF5Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kud2VlaycpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5Lm1vbnRoJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kueWVhcicpXG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUZyZXF1ZW5jeUN1c3RvbSA9IHtcbiAgdXBkYXRlZFRpbWVzOiBudW1iZXIgLy8gdGhpcyBzaG91bGQgYmUgYW4gaW50ZWdlclxuICBwZXI6ICdkYXknIHwgJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJ1xufVxuZXhwb3J0IHR5cGUgVXBkYXRlRnJlcXVlbmN5ID0gVXBkYXRlRnJlcXVlbmN5Q29kZSB8IFVwZGF0ZUZyZXF1ZW5jeUN1c3RvbVxuXG5leHBvcnQgdHlwZSBSZWNvcmRLaW5kID0gJ2RhdGFzZXQnIHwgJ3NlcnZpY2UnXG5cbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMuY29tcGxldGVkJylcbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMub25nb2luZycpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLnVuZGVyX2RldmVsb3BtZW50Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMuZGVwcmVjYXRlZCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLnJlbW92ZWQnKVxuXG5leHBvcnQgY29uc3QgUmVjb3JkU3RhdHVzVmFsdWVzID0gW1xuICAnY29tcGxldGVkJyxcbiAgJ29uZ29pbmcnLFxuICAndW5kZXJfZGV2ZWxvcG1lbnQnLFxuICAnZGVwcmVjYXRlZCcsXG4gICdyZW1vdmVkJyxcbl1cbmV4cG9ydCB0eXBlIFJlY29yZFN0YXR1cyA9IHR5cGVvZiBSZWNvcmRTdGF0dXNWYWx1ZXNbbnVtYmVyXVxuXG5leHBvcnQgdHlwZSBDb25zdHJhaW50ID0ge1xuICB0ZXh0OiBzdHJpbmdcbiAgdXJsPzogVVJMXG59XG5cbmV4cG9ydCB0eXBlIFNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGUgPVxuICB8ICdncmlkJ1xuICB8ICd2ZWN0b3InXG4gIHwgJ3RpbidcbiAgfCAndGFibGUnXG4gIHwgJ3BvaW50J1xuXG5leHBvcnQgdHlwZSBLZXl3b3JkVHlwZSA9ICdwbGFjZScgfCAndGVtcG9yYWwnIHwgJ3RoZW1lJyB8ICdvdGhlcidcblxuZXhwb3J0IHR5cGUgS2V5d29yZFRoZXNhdXJ1cyA9IHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIHVybD86IFVSTFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQge1xuICBsYWJlbDogc3RyaW5nXG4gIHR5cGU6IEtleXdvcmRUeXBlXG4gIHRoZXNhdXJ1cz86IEtleXdvcmRUaGVzYXVydXNcbn1cbi8vIGxhbmd1YWdlcyBzaG91bGQgYmUgZXhwcmVzc2VkIHVzaW5nIHR3by1sZXR0ZXJzIElTTyA2MzktMSBjb2Rlc1xuZXhwb3J0IHR5cGUgTGFuZ3VhZ2VDb2RlID0gc3RyaW5nXG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZVJlY29yZCB7XG4gIHVuaXF1ZUlkZW50aWZpZXI6IFV1aWRcbiAgb3duZXJPcmdhbml6YXRpb246IE9yZ2FuaXphdGlvblxuICBjb250YWN0czogQXJyYXk8SW5kaXZpZHVhbD5cbiAgdGl0bGU6IHN0cmluZ1xuICBhYnN0cmFjdDogc3RyaW5nXG4gIHJlY29yZENyZWF0ZWQ/OiBEYXRlXG4gIHJlY29yZFB1Ymxpc2hlZD86IERhdGVcbiAgcmVjb3JkVXBkYXRlZDogRGF0ZVxuICBsYW5ndWFnZXM6IEFycmF5PExhbmd1YWdlQ29kZT5cbiAga2luZDogUmVjb3JkS2luZFxuICB0b3BpY3M6IEFycmF5PHN0cmluZz4gLy8gVE9ETzogaGFuZGxlIGNvZGVsaXN0c1xuICBrZXl3b3JkczogQXJyYXk8S2V5d29yZD5cbiAgbGljZW5zZXM6IEFycmF5PENvbnN0cmFpbnQ+XG4gIGxlZ2FsQ29uc3RyYWludHM6IEFycmF5PENvbnN0cmFpbnQ+XG4gIHNlY3VyaXR5Q29uc3RyYWludHM6IEFycmF5PENvbnN0cmFpbnQ+XG4gIG90aGVyQ29uc3RyYWludHM6IEFycmF5PENvbnN0cmFpbnQ+XG4gIG92ZXJ2aWV3czogQXJyYXk8R3JhcGhpY092ZXJ2aWV3PlxuICBleHRyYXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBsYW5kaW5nUGFnZT86IFVSTFxuICB1cGRhdGVGcmVxdWVuY3k/OiBVcGRhdGVGcmVxdWVuY3lcblxuICAvLyBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSByZXNvdXJjZSAoZGF0YXNldCwgc2VydmljZSlcbiAgY29udGFjdHNGb3JSZXNvdXJjZTogQXJyYXk8SW5kaXZpZHVhbD5cbiAgcmVzb3VyY2VDcmVhdGVkPzogRGF0ZVxuICByZXNvdXJjZVB1Ymxpc2hlZD86IERhdGVcbiAgcmVzb3VyY2VVcGRhdGVkPzogRGF0ZVxuXG4gIC8vIHRvIGFkZDogY2Fub25pY2FsIHVybFxuICAvLyB0byBhZGQ6IHNvdXJjZSBjYXRhbG9nICg/PylcbiAgLy8gdG8gYWRkOiBpcyBvcGVuIGRhdGEgP1xufVxuXG4vLyBUT0RPOiBoYW5kbGUgYWN0dWFsIGNvZGVsaXN0c1xuZXhwb3J0IHR5cGUgU2VydmljZVByb3RvY29sID1cbiAgfCAnd21zJ1xuICB8ICd3ZnMnXG4gIHwgJ3dwcydcbiAgfCAnd210cydcbiAgfCAnZXNyaVJlc3QnXG4gIHwgJ29nY0ZlYXR1cmVzJ1xuICB8ICdvdGhlcidcblxuZXhwb3J0IHR5cGUgRGF0YXNldERpc3RyaWJ1dGlvblR5cGUgPSAnc2VydmljZScgfCAnZG93bmxvYWQnIHwgJ2xpbmsnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb24ge1xuICB0eXBlOiAnc2VydmljZSdcbiAgdXJsOiBVUkxcbiAgYWNjZXNzU2VydmljZVByb3RvY29sOiBTZXJ2aWNlUHJvdG9jb2xcbiAgaWRlbnRpZmllckluU2VydmljZT86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uIHtcbiAgdHlwZTogJ2Rvd25sb2FkJ1xuICB1cmw6IFVSTFxuICBtaW1lVHlwZT86IHN0cmluZ1xuICBzaXplQnl0ZXM/OiBudW1iZXJcbiAgLy8gcmVtb3ZlZCBiZWNhdXNlIHdoYXQncyB0aGUgdXNlPyBlbmNvZGluZyBjYW4gYmUgZXhwb3NlZCBieSB0aGUgZmlsZSBzZXJ2ZXIgb3JcbiAgLy8gZXZlbiBmb3VuZCBvdXQgYnkgdHJpYWwgYW5kIGVycm9yOyBiZXNpZGVzIHdlIGNhbiByZWFzb25hYmx5IGV4cGVjdCB1bmljb2RlIG9yIGlzbyBtb3N0IG9mIHRoZSB0aW1lXG4gIC8vIHRleHRFbmNvZGluZz86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIGFjY2Vzc1NlcnZpY2VQcm90b2NvbD86IFNlcnZpY2VQcm90b2NvbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ubGluZUxpbmtSZXNvdXJjZSB7XG4gIHR5cGU6ICdsaW5rJ1xuICB1cmw6IFVSTFxuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIERhdGFzZXREaXN0cmlidXRpb24gPSAoXG4gIHwgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbiAgfCBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb25cbiAgfCBPbmxpbmVMaW5rUmVzb3VyY2VcbikgJiB7XG4gIHR5cGU6IERhdGFzZXREaXN0cmlidXRpb25UeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhpY092ZXJ2aWV3IHtcbiAgdXJsOiBVUkxcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0U3BhdGlhbEV4dGVudCB7XG4gIGdlb21ldHJ5OiBHZW9tZXRyeVxuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xufVxuXG4vKipcbiAqIEF0IGxlYXN0IGEgc3RhcnQgb3IgYW4gZW5kIGRhdGUgc2hvdWxkIGJlIHByb3ZpZGVkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldFRlbXBvcmFsRXh0ZW50IHtcbiAgc3RhcnQ/OiBEYXRlXG4gIGVuZD86IERhdGVcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0UmVjb3JkIGV4dGVuZHMgQmFzZVJlY29yZCB7XG4gIGtpbmQ6ICdkYXRhc2V0J1xuICBzdGF0dXM6IFJlY29yZFN0YXR1c1xuICBsaW5lYWdlOiBzdHJpbmcgLy8gRXhwbGFuYXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGlzIHJlY29yZCAoZS5nOiBob3csIHdoeSlcIlxuICBkaXN0cmlidXRpb25zOiBBcnJheTxEYXRhc2V0RGlzdHJpYnV0aW9uPlxuICBzcGF0aWFsRXh0ZW50czogQXJyYXk8RGF0YXNldFNwYXRpYWxFeHRlbnQ+XG4gIHRlbXBvcmFsRXh0ZW50czogQXJyYXk8RGF0YXNldFRlbXBvcmFsRXh0ZW50PlxuICBzcGF0aWFsUmVwcmVzZW50YXRpb24/OiBTcGF0aWFsUmVwcmVzZW50YXRpb25UeXBlXG59XG5cbmV4cG9ydCB0eXBlIFNlcnZpY2VPbmxpbmVSZXNvdXJjZVR5cGUgPSAnZW5kcG9pbnQnIHwgJ2xpbmsnXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUVuZHBvaW50IHtcbiAgZW5kcG9pbnRVcmw6IFVSTFxuICBwcm90b2NvbDogc3RyaW5nXG4gIHR5cGU6ICdlbmRwb2ludCdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgU2VydmljZU9ubGluZVJlc291cmNlID0gKFNlcnZpY2VFbmRwb2ludCB8IE9ubGluZUxpbmtSZXNvdXJjZSkgJiB7XG4gIHR5cGU6IFNlcnZpY2VPbmxpbmVSZXNvdXJjZVR5cGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2aWNlUmVjb3JkIGV4dGVuZHMgQmFzZVJlY29yZCB7XG4gIGtpbmQ6ICdzZXJ2aWNlJ1xuICBvbmxpbmVSZXNvdXJjZXM6IEFycmF5PFNlcnZpY2VPbmxpbmVSZXNvdXJjZT5cbn1cblxuZXhwb3J0IHR5cGUgQ2F0YWxvZ1JlY29yZCA9IFNlcnZpY2VSZWNvcmQgfCBEYXRhc2V0UmVjb3JkXG5cbmV4cG9ydCB0eXBlIENhdGFsb2dSZWNvcmRLZXlzID0ga2V5b2YgU2VydmljZVJlY29yZCB8IGtleW9mIERhdGFzZXRSZWNvcmRcbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9yZWNvcmQvbWV0YWRhdGEubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBT2hFLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFBO0FBQy9DLE1BQU0sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFBO0FBQ2xELE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO0FBQ2hELE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO0FBQ2pELE1BQU0sQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO0FBQ2pELE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO0FBVWhELE1BQU0sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO0FBQzNDLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO0FBQzVDLE1BQU0sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO0FBQzdDLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO0FBVTVDLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBQ3hDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO0FBQ3RDLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO0FBQ2hELE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO0FBQ3pDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLFdBQVc7SUFDWCxTQUFTO0lBQ1QsbUJBQW1CO0lBQ25CLFlBQVk7SUFDWixTQUFTO0NBQ1YsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hcmtlciB9IGZyb20gJ0BiaWVzYmplcmcvbmd4LXRyYW5zbGF0ZS1leHRyYWN0LW1hcmtlcidcbmltcG9ydCB0eXBlIHsgSW5kaXZpZHVhbCB9IGZyb20gJy4vY29udGFjdC5tb2RlbCdcbmltcG9ydCB0eXBlIHsgT3JnYW5pemF0aW9uIH0gZnJvbSAnLi9vcmdhbml6YXRpb24ubW9kZWwnXG5pbXBvcnQgdHlwZSB7IEdlb21ldHJ5IH0gZnJvbSAnZ2VvanNvbidcblxudHlwZSBVdWlkID0gc3RyaW5nXG5cbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kudW5rbm93bicpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5Lm5vdFBsYW5uZWQnKVxubWFya2VyKCdkb21haW4ucmVjb3JkLnVwZGF0ZUZyZXF1ZW5jeS5hc05lZWRlZCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmlycmVndWxhcicpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LmNvbnRpbnVhbCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5LnBlcmlvZGljJylcblxuZXhwb3J0IHR5cGUgVXBkYXRlRnJlcXVlbmN5Q29kZSA9XG4gIHwgJ3Vua25vd24nXG4gIHwgJ25vdFBsYW5uZWQnXG4gIHwgJ2FzTmVlZGVkJ1xuICB8ICdpcnJlZ3VsYXInXG4gIHwgJ2NvbnRpbnVhbCdcbiAgfCAncGVyaW9kaWMnXG5cbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kuZGF5Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kud2VlaycpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQudXBkYXRlRnJlcXVlbmN5Lm1vbnRoJylcbm1hcmtlcignZG9tYWluLnJlY29yZC51cGRhdGVGcmVxdWVuY3kueWVhcicpXG5cbmV4cG9ydCB0eXBlIFVwZGF0ZUZyZXF1ZW5jeUN1c3RvbSA9IHtcbiAgdXBkYXRlZFRpbWVzOiBudW1iZXIgLy8gdGhpcyBzaG91bGQgYmUgYW4gaW50ZWdlclxuICBwZXI6ICdkYXknIHwgJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJ1xufVxuZXhwb3J0IHR5cGUgVXBkYXRlRnJlcXVlbmN5ID0gVXBkYXRlRnJlcXVlbmN5Q29kZSB8IFVwZGF0ZUZyZXF1ZW5jeUN1c3RvbVxuXG5leHBvcnQgdHlwZSBSZWNvcmRLaW5kID0gJ2RhdGFzZXQnIHwgJ3NlcnZpY2UnXG5cbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMuY29tcGxldGVkJylcbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMub25nb2luZycpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLnVuZGVyX2RldmVsb3BtZW50Jylcbm1hcmtlcignZG9tYWluLnJlY29yZC5zdGF0dXMuZGVwcmVjYXRlZCcpXG5tYXJrZXIoJ2RvbWFpbi5yZWNvcmQuc3RhdHVzLnJlbW92ZWQnKVxuXG5leHBvcnQgY29uc3QgUmVjb3JkU3RhdHVzVmFsdWVzID0gW1xuICAnY29tcGxldGVkJyxcbiAgJ29uZ29pbmcnLFxuICAndW5kZXJfZGV2ZWxvcG1lbnQnLFxuICAnZGVwcmVjYXRlZCcsXG4gICdyZW1vdmVkJyxcbl1cbmV4cG9ydCB0eXBlIFJlY29yZFN0YXR1cyA9IHR5cGVvZiBSZWNvcmRTdGF0dXNWYWx1ZXNbbnVtYmVyXVxuXG5leHBvcnQgdHlwZSBDb25zdHJhaW50ID0ge1xuICB0ZXh0OiBzdHJpbmdcbiAgdXJsPzogVVJMXG59XG5cbmV4cG9ydCB0eXBlIFNwYXRpYWxSZXByZXNlbnRhdGlvblR5cGUgPVxuICB8ICdncmlkJ1xuICB8ICd2ZWN0b3InXG4gIHwgJ3RpbidcbiAgfCAndGFibGUnXG4gIHwgJ3BvaW50J1xuXG5leHBvcnQgdHlwZSBLZXl3b3JkVHlwZSA9ICdwbGFjZScgfCAndGVtcG9yYWwnIHwgJ3RoZW1lJyB8ICdvdGhlcidcblxuZXhwb3J0IHR5cGUgS2V5d29yZFRoZXNhdXJ1cyA9IHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIHVybD86IFVSTFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleXdvcmQge1xuICBsYWJlbDogc3RyaW5nXG4gIHR5cGU6IEtleXdvcmRUeXBlXG4gIHRoZXNhdXJ1cz86IEtleXdvcmRUaGVzYXVydXNcbn1cbi8vIGxhbmd1YWdlcyBzaG91bGQgYmUgZXhwcmVzc2VkIHVzaW5nIHR3by1sZXR0ZXJzIElTTyA2MzktMSBjb2Rlc1xuZXhwb3J0IHR5cGUgTGFuZ3VhZ2VDb2RlID0gc3RyaW5nXG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZVJlY29yZCB7XG4gIHVuaXF1ZUlkZW50aWZpZXI6IFV1aWRcbiAgb3duZXJPcmdhbml6YXRpb246IE9yZ2FuaXphdGlvblxuICBjb250YWN0czogQXJyYXk8SW5kaXZpZHVhbD5cbiAgdGl0bGU6IHN0cmluZ1xuICBhYnN0cmFjdDogc3RyaW5nXG4gIHJlY29yZENyZWF0ZWQ/OiBEYXRlXG4gIHJlY29yZFB1Ymxpc2hlZD86IERhdGVcbiAgcmVjb3JkVXBkYXRlZDogRGF0ZVxuICBsYW5ndWFnZXM6IEFycmF5PExhbmd1YWdlQ29kZT5cbiAga2luZDogUmVjb3JkS2luZFxuICB0b3BpY3M6IEFycmF5PHN0cmluZz4gLy8gVE9ETzogaGFuZGxlIGNvZGVsaXN0c1xuICBrZXl3b3JkczogQXJyYXk8S2V5d29yZD5cbiAgbGljZW5zZXM6IEFycmF5PENvbnN0cmFpbnQ+XG4gIGxlZ2FsQ29uc3RyYWludHM6IEFycmF5PENvbnN0cmFpbnQ+XG4gIHNlY3VyaXR5Q29uc3RyYWludHM6IEFycmF5PENvbnN0cmFpbnQ+XG4gIG90aGVyQ29uc3RyYWludHM6IEFycmF5PENvbnN0cmFpbnQ+XG4gIG92ZXJ2aWV3czogQXJyYXk8R3JhcGhpY092ZXJ2aWV3PlxuICBleHRyYXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBsYW5kaW5nUGFnZT86IFVSTFxuICB1cGRhdGVGcmVxdWVuY3k/OiBVcGRhdGVGcmVxdWVuY3lcblxuICAvLyBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHRoZSByZXNvdXJjZSAoZGF0YXNldCwgc2VydmljZSlcbiAgY29udGFjdHNGb3JSZXNvdXJjZTogQXJyYXk8SW5kaXZpZHVhbD5cbiAgcmVzb3VyY2VDcmVhdGVkPzogRGF0ZVxuICByZXNvdXJjZVB1Ymxpc2hlZD86IERhdGVcbiAgcmVzb3VyY2VVcGRhdGVkPzogRGF0ZVxuXG4gIC8vIHRvIGFkZDogY2Fub25pY2FsIHVybFxuICAvLyB0byBhZGQ6IHNvdXJjZSBjYXRhbG9nICg/PylcbiAgLy8gdG8gYWRkOiBpcyBvcGVuIGRhdGEgP1xufVxuXG4vLyBUT0RPOiBoYW5kbGUgYWN0dWFsIGNvZGVsaXN0c1xuZXhwb3J0IHR5cGUgU2VydmljZVByb3RvY29sID1cbiAgfCAnd21zJ1xuICB8ICd3ZnMnXG4gIHwgJ3dwcydcbiAgfCAnd210cydcbiAgfCAnZXNyaVJlc3QnXG4gIHwgJ29nY0ZlYXR1cmVzJ1xuICB8ICdvdGhlcidcblxuZXhwb3J0IHR5cGUgRGF0YXNldERpc3RyaWJ1dGlvblR5cGUgPSAnc2VydmljZScgfCAnZG93bmxvYWQnIHwgJ2xpbmsnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb24ge1xuICB0eXBlOiAnc2VydmljZSdcbiAgdXJsOiBVUkxcbiAgYWNjZXNzU2VydmljZVByb3RvY29sOiBTZXJ2aWNlUHJvdG9jb2xcbiAgaWRlbnRpZmllckluU2VydmljZT86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldERvd25sb2FkRGlzdHJpYnV0aW9uIHtcbiAgdHlwZTogJ2Rvd25sb2FkJ1xuICB1cmw6IFVSTFxuICBtaW1lVHlwZT86IHN0cmluZ1xuICBzaXplQnl0ZXM/OiBudW1iZXJcbiAgLy8gcmVtb3ZlZCBiZWNhdXNlIHdoYXQncyB0aGUgdXNlPyBlbmNvZGluZyBjYW4gYmUgZXhwb3NlZCBieSB0aGUgZmlsZSBzZXJ2ZXIgb3JcbiAgLy8gZXZlbiBmb3VuZCBvdXQgYnkgdHJpYWwgYW5kIGVycm9yOyBiZXNpZGVzIHdlIGNhbiByZWFzb25hYmx5IGV4cGVjdCB1bmljb2RlIG9yIGlzbyBtb3N0IG9mIHRoZSB0aW1lXG4gIC8vIHRleHRFbmNvZGluZz86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIGFjY2Vzc1NlcnZpY2VQcm90b2NvbD86IFNlcnZpY2VQcm90b2NvbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9ubGluZUxpbmtSZXNvdXJjZSB7XG4gIHR5cGU6ICdsaW5rJ1xuICB1cmw6IFVSTFxuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIERhdGFzZXREaXN0cmlidXRpb24gPSAoXG4gIHwgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb25cbiAgfCBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb25cbiAgfCBPbmxpbmVMaW5rUmVzb3VyY2VcbikgJiB7XG4gIHR5cGU6IERhdGFzZXREaXN0cmlidXRpb25UeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhpY092ZXJ2aWV3IHtcbiAgdXJsOiBVUkxcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0U3BhdGlhbEV4dGVudCB7XG4gIGdlb21ldHJ5OiBHZW9tZXRyeVxuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xufVxuXG4vKipcbiAqIFBlcmlvZCBpZiBib3RoIHN0YXJ0IGFuZCBlbmQgYXJlIHByb3ZpZGVkXG4gKiBJbnN0YW50IGlmIG9ubHkgc3RhcnQgaXMgcHJvdmlkZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhc2V0VGVtcG9yYWxFeHRlbnQge1xuICBzdGFydDogRGF0ZVxuICBlbmQ/OiBEYXRlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldFJlY29yZCBleHRlbmRzIEJhc2VSZWNvcmQge1xuICBraW5kOiAnZGF0YXNldCdcbiAgc3RhdHVzOiBSZWNvcmRTdGF0dXNcbiAgbGluZWFnZTogc3RyaW5nIC8vIEV4cGxhbmF0aW9uIG9mIHRoZSBvcmlnaW4gb2YgdGhpcyByZWNvcmQgKGUuZzogaG93LCB3aHkpXCJcbiAgZGlzdHJpYnV0aW9uczogQXJyYXk8RGF0YXNldERpc3RyaWJ1dGlvbj5cbiAgc3BhdGlhbEV4dGVudHM6IEFycmF5PERhdGFzZXRTcGF0aWFsRXh0ZW50PlxuICB0ZW1wb3JhbEV4dGVudHM6IEFycmF5PERhdGFzZXRUZW1wb3JhbEV4dGVudD5cbiAgc3BhdGlhbFJlcHJlc2VudGF0aW9uPzogU3BhdGlhbFJlcHJlc2VudGF0aW9uVHlwZVxufVxuXG5leHBvcnQgdHlwZSBTZXJ2aWNlT25saW5lUmVzb3VyY2VUeXBlID0gJ2VuZHBvaW50JyB8ICdsaW5rJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2VFbmRwb2ludCB7XG4gIGVuZHBvaW50VXJsOiBVUkxcbiAgcHJvdG9jb2w6IHN0cmluZ1xuICB0eXBlOiAnZW5kcG9pbnQnXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFNlcnZpY2VPbmxpbmVSZXNvdXJjZSA9IChTZXJ2aWNlRW5kcG9pbnQgfCBPbmxpbmVMaW5rUmVzb3VyY2UpICYge1xuICB0eXBlOiBTZXJ2aWNlT25saW5lUmVzb3VyY2VUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZVJlY29yZCBleHRlbmRzIEJhc2VSZWNvcmQge1xuICBraW5kOiAnc2VydmljZSdcbiAgb25saW5lUmVzb3VyY2VzOiBBcnJheTxTZXJ2aWNlT25saW5lUmVzb3VyY2U+XG59XG5cbmV4cG9ydCB0eXBlIENhdGFsb2dSZWNvcmQgPSBTZXJ2aWNlUmVjb3JkIHwgRGF0YXNldFJlY29yZFxuXG5leHBvcnQgdHlwZSBDYXRhbG9nUmVjb3JkS2V5cyA9IGtleW9mIFNlcnZpY2VSZWNvcmQgfCBrZXlvZiBEYXRhc2V0UmVjb3JkXG4iXX0=
@@ -166,7 +166,7 @@ export class ChartViewComponent {
166
166
  this.changeDetector.detectChanges();
167
167
  }
168
168
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChartViewComponent, deps: [{ token: i1.DataService }, { token: i0.ChangeDetectorRef }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
169
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: { link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: i5.PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "component", type: i6.ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: i7.DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
169
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: { link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: i5.PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "component", type: i6.ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: i7.DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
170
170
  }
171
171
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChartViewComponent, decorators: [{
172
172
  type: Component,