@igo2/geo 17.0.0-next.7 → 17.0.0-next.8

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 (233) hide show
  1. package/assets/icons/cross_black_18px.svg +88 -88
  2. package/assets/icons/place_blue_36px.svg +55 -55
  3. package/assets/icons/place_green_36px.svg +55 -55
  4. package/assets/icons/place_red_36px.svg +55 -55
  5. package/assets/icons/place_yellow_36px.svg +55 -55
  6. package/assets/images/north-direction.png +0 -0
  7. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +3 -3
  8. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +3 -3
  9. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +3 -3
  10. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +4 -4
  11. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +3 -3
  12. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +3 -3
  13. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +11 -17
  14. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +4 -4
  15. package/esm2022/lib/catalog/catalog.module.mjs +4 -4
  16. package/esm2022/lib/catalog/shared/catalog.service.mjs +3 -3
  17. package/esm2022/lib/catalog/shared/index.mjs +1 -1
  18. package/esm2022/lib/datasource/index.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/capabilities.service.mjs +3 -3
  20. package/esm2022/lib/datasource/shared/datasource.service.mjs +3 -3
  21. package/esm2022/lib/datasource/shared/datasources/index.mjs +1 -1
  22. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +3 -3
  23. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +3 -3
  24. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +3 -3
  25. package/esm2022/lib/directions/directions-buttons/index.mjs +1 -1
  26. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +3 -3
  27. package/esm2022/lib/directions/directions-inputs/index.mjs +1 -1
  28. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +3 -3
  29. package/esm2022/lib/directions/directions-results/index.mjs +1 -1
  30. package/esm2022/lib/directions/directions-sources/index.mjs +1 -1
  31. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +3 -3
  32. package/esm2022/lib/directions/directions.component.mjs +3 -3
  33. package/esm2022/lib/directions/directions.module.mjs +4 -4
  34. package/esm2022/lib/directions/shared/directions-source.service.mjs +1 -1
  35. package/esm2022/lib/directions/shared/directions.enum.mjs +1 -1
  36. package/esm2022/lib/directions/shared/directions.service.mjs +19 -5
  37. package/esm2022/lib/directions/shared/index.mjs +1 -1
  38. package/esm2022/lib/download/download-button/download-button.component.mjs +3 -3
  39. package/esm2022/lib/download/download-button/index.mjs +1 -1
  40. package/esm2022/lib/download/download.module.mjs +4 -4
  41. package/esm2022/lib/download/index.mjs +1 -1
  42. package/esm2022/lib/download/shared/download.interface.mjs +1 -1
  43. package/esm2022/lib/download/shared/download.service.mjs +3 -3
  44. package/esm2022/lib/download/shared/index.mjs +1 -1
  45. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +3 -3
  46. package/esm2022/lib/draw/draw/draw-popup.component.mjs +4 -4
  47. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +3 -3
  48. package/esm2022/lib/draw/draw/draw.component.mjs +4 -4
  49. package/esm2022/lib/draw/draw/draw.module.mjs +4 -4
  50. package/esm2022/lib/draw/drawingTool.module.mjs +4 -4
  51. package/esm2022/lib/draw/index.mjs +1 -1
  52. package/esm2022/lib/draw/shared/draw-icon.service.mjs +3 -3
  53. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +3 -3
  54. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +3 -3
  55. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +4 -4
  56. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +3 -3
  57. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +4 -4
  58. package/esm2022/lib/feature/feature.module.mjs +4 -4
  59. package/esm2022/lib/feature/shared/feature.enums.mjs +1 -1
  60. package/esm2022/lib/filter/filter.module.mjs +4 -4
  61. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +3 -3
  62. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +3 -3
  63. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +4 -4
  64. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +3 -3
  65. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +3 -3
  66. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +3 -3
  67. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +3 -3
  68. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +3 -3
  69. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +3 -3
  70. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +3 -3
  71. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +3 -3
  72. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +3 -3
  73. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +3 -3
  74. package/esm2022/lib/filter/shared/time-filter.service.mjs +3 -3
  75. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +3 -3
  76. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +3 -3
  77. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +4 -4
  78. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +3 -3
  79. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +3 -3
  80. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +3 -3
  81. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +3 -3
  82. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +3 -3
  83. package/esm2022/lib/geo.module.mjs +4 -4
  84. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +3 -3
  85. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +4 -4
  86. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +4 -4
  87. package/esm2022/lib/geometry/geometry.module.mjs +4 -4
  88. package/esm2022/lib/geometry/shared/controls/index.mjs +1 -1
  89. package/esm2022/lib/geometry/shared/index.mjs +1 -1
  90. package/esm2022/lib/import-export/export-button/export-button.component.mjs +3 -3
  91. package/esm2022/lib/import-export/export-button/index.mjs +1 -1
  92. package/esm2022/lib/import-export/import-export/import-export.component.mjs +4 -4
  93. package/esm2022/lib/import-export/import-export/index.mjs +1 -1
  94. package/esm2022/lib/import-export/import-export.module.mjs +4 -4
  95. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +3 -3
  96. package/esm2022/lib/import-export/shared/export.errors.mjs +1 -1
  97. package/esm2022/lib/import-export/shared/export.service.mjs +3 -3
  98. package/esm2022/lib/import-export/shared/import.service.mjs +3 -3
  99. package/esm2022/lib/import-export/shared/index.mjs +1 -1
  100. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +3 -3
  101. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +3 -3
  102. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +3 -3
  103. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +3 -3
  104. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +3 -3
  105. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +3 -3
  106. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +17 -23
  107. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +3 -3
  108. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +3 -3
  109. package/esm2022/lib/layer/layer.module.mjs +4 -4
  110. package/esm2022/lib/layer/shared/layer.service.mjs +3 -3
  111. package/esm2022/lib/layer/shared/layers/index.mjs +1 -1
  112. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +3 -3
  113. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +3 -3
  114. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +3 -3
  115. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +3 -3
  116. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +3 -3
  117. package/esm2022/lib/map/info-section/info-section.component.mjs +3 -3
  118. package/esm2022/lib/map/map-browser/map-browser.component.mjs +3 -3
  119. package/esm2022/lib/map/map-center/map-center.component.mjs +3 -3
  120. package/esm2022/lib/map/map.module.mjs +4 -4
  121. package/esm2022/lib/map/menu-button/menu-button.component.mjs +3 -3
  122. package/esm2022/lib/map/offline-button/offline-button.component.mjs +3 -3
  123. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +3 -3
  124. package/esm2022/lib/map/shared/hover-feature.directive.mjs +3 -3
  125. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +3 -3
  126. package/esm2022/lib/map/shared/map.service.mjs +3 -3
  127. package/esm2022/lib/map/shared/mapOffline.directive.mjs +3 -3
  128. package/esm2022/lib/map/shared/projection.service.mjs +3 -3
  129. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +3 -3
  130. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +3 -3
  131. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +3 -3
  132. package/esm2022/lib/measure/measure.module.mjs +4 -4
  133. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +3 -3
  134. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +3 -3
  135. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +3 -3
  136. package/esm2022/lib/measure/measurer/measurer.component.mjs +4 -4
  137. package/esm2022/lib/measure/measurer/measurer.module.mjs +4 -4
  138. package/esm2022/lib/measure/shared/index.mjs +1 -1
  139. package/esm2022/lib/metadata/metadata-button/index.mjs +1 -1
  140. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +8 -8
  141. package/esm2022/lib/metadata/metadata.module.mjs +4 -4
  142. package/esm2022/lib/metadata/shared/index.mjs +1 -1
  143. package/esm2022/lib/metadata/shared/metadata.service.mjs +4 -4
  144. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +3 -3
  145. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +3 -3
  146. package/esm2022/lib/offline/geoDB/index.mjs +1 -1
  147. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +3 -3
  148. package/esm2022/lib/offline/shared/geo-network.service.mjs +3 -3
  149. package/esm2022/lib/offline/shared/index.mjs +1 -1
  150. package/esm2022/lib/overlay/index.mjs +1 -1
  151. package/esm2022/lib/overlay/overlay.module.mjs +4 -4
  152. package/esm2022/lib/overlay/shared/overlay.directive.mjs +3 -3
  153. package/esm2022/lib/overlay/shared/overlay.service.mjs +3 -3
  154. package/esm2022/lib/print/index.mjs +1 -1
  155. package/esm2022/lib/print/print/print.component.mjs +5 -5
  156. package/esm2022/lib/print/print-form/index.mjs +1 -1
  157. package/esm2022/lib/print/print-form/print-form.component.mjs +18 -6
  158. package/esm2022/lib/print/print.module.mjs +4 -4
  159. package/esm2022/lib/print/shared/index.mjs +1 -1
  160. package/esm2022/lib/print/shared/print.interface.mjs +1 -1
  161. package/esm2022/lib/print/shared/print.service.mjs +96 -58
  162. package/esm2022/lib/query/index.mjs +1 -1
  163. package/esm2022/lib/query/query.module.mjs +4 -4
  164. package/esm2022/lib/query/shared/query-search-source.mjs +3 -3
  165. package/esm2022/lib/query/shared/query.directive.mjs +3 -3
  166. package/esm2022/lib/query/shared/query.enums.mjs +1 -1
  167. package/esm2022/lib/query/shared/query.service.mjs +3 -3
  168. package/esm2022/lib/search/search-bar/search-bar.component.mjs +3 -3
  169. package/esm2022/lib/search/search-bar/search-bar.module.mjs +4 -4
  170. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +3 -3
  171. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +3 -3
  172. package/esm2022/lib/search/search-results/search-results-item.component.mjs +3 -3
  173. package/esm2022/lib/search/search-results/search-results.component.mjs +3 -3
  174. package/esm2022/lib/search/search-results/search-results.module.mjs +4 -4
  175. package/esm2022/lib/search/search-selector/search-selector.component.mjs +3 -3
  176. package/esm2022/lib/search/search-selector/search-selector.module.mjs +4 -4
  177. package/esm2022/lib/search/search-settings/search-settings.component.mjs +3 -3
  178. package/esm2022/lib/search/search-settings/search-settings.module.mjs +4 -4
  179. package/esm2022/lib/search/search.module.mjs +4 -4
  180. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +3 -3
  181. package/esm2022/lib/search/shared/search.service.mjs +3 -3
  182. package/esm2022/lib/search/shared/sources/cadastre.mjs +3 -3
  183. package/esm2022/lib/search/shared/sources/coordinates.mjs +6 -6
  184. package/esm2022/lib/search/shared/sources/icherche.mjs +9 -9
  185. package/esm2022/lib/search/shared/sources/ilayer.mjs +6 -6
  186. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
  187. package/esm2022/lib/search/shared/sources/nominatim.mjs +3 -3
  188. package/esm2022/lib/search/shared/sources/storedqueries.mjs +6 -6
  189. package/esm2022/lib/search/shared/sources/workspace.mjs +3 -3
  190. package/esm2022/lib/style/style-list/style-list.module.mjs +4 -4
  191. package/esm2022/lib/style/style-list/style-list.service.mjs +3 -3
  192. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +3 -3
  193. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +3 -3
  194. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +3 -3
  195. package/esm2022/lib/style/style-service/draw-style.service.mjs +3 -3
  196. package/esm2022/lib/style/style-service/style.service.mjs +3 -3
  197. package/esm2022/lib/style/style.module.mjs +4 -4
  198. package/esm2022/lib/toast/index.mjs +1 -1
  199. package/esm2022/lib/toast/toast.component.mjs +3 -3
  200. package/esm2022/lib/toast/toast.module.mjs +4 -4
  201. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +3 -3
  202. package/esm2022/lib/wkt/index.mjs +1 -1
  203. package/esm2022/lib/wkt/shared/index.mjs +1 -1
  204. package/esm2022/lib/wkt/shared/wkt.service.mjs +3 -3
  205. package/esm2022/lib/wkt/wkt.module.mjs +4 -4
  206. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +3 -3
  207. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +4 -4
  208. package/esm2022/lib/workspace/index.mjs +1 -1
  209. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +3 -3
  210. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +3 -3
  211. package/esm2022/lib/workspace/shared/index.mjs +1 -1
  212. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +3 -3
  213. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +3 -3
  214. package/esm2022/lib/workspace/widgets/index.mjs +1 -1
  215. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +3 -3
  216. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +4 -4
  217. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +3 -3
  218. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +4 -4
  219. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +3 -3
  220. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +4 -4
  221. package/esm2022/lib/workspace/workspace.module.mjs +4 -4
  222. package/fesm2022/igo2-geo.mjs +736 -682
  223. package/fesm2022/igo2-geo.mjs.map +1 -1
  224. package/lib/catalog/catalog-library/catalog-library.component.d.ts +1 -4
  225. package/lib/directions/shared/directions.service.d.ts +1 -0
  226. package/lib/layer/layer-list/layer-list.component.d.ts +1 -4
  227. package/lib/print/print-form/print-form.component.d.ts +4 -1
  228. package/lib/print/shared/print.interface.d.ts +1 -0
  229. package/lib/print/shared/print.service.d.ts +16 -10
  230. package/lib/wkt/shared/wkt.service.d.ts +1 -1
  231. package/locale/en.geo.json +2 -1
  232. package/locale/fr.geo.json +2 -1
  233. package/package.json +6 -6
@@ -123,6 +123,12 @@ export class PrintFormComponent {
123
123
  set doZipFile(value) {
124
124
  this.doZipFileField.setValue(value, { onlySelf: true });
125
125
  }
126
+ get showNorth() {
127
+ return this.showNorthArrowField.value;
128
+ }
129
+ set showNorth(value) {
130
+ this.showNorthArrowField.setValue(value, { onlySelf: true });
131
+ }
126
132
  get outputFormatField() {
127
133
  return this.form.controls.outputFormat;
128
134
  }
@@ -153,6 +159,9 @@ export class PrintFormComponent {
153
159
  get doZipFileField() {
154
160
  return this.form.controls.doZipFile;
155
161
  }
162
+ get showNorthArrowField() {
163
+ return this.form.controls.showNorth;
164
+ }
156
165
  get titleField() {
157
166
  return this.form.controls.title;
158
167
  }
@@ -183,7 +192,8 @@ export class PrintFormComponent {
183
192
  showProjection: false,
184
193
  showScale: false,
185
194
  showLegend: false,
186
- doZipFile: [{ hidden: this.isPrintService }]
195
+ doZipFile: [{ hidden: this.isPrintService }],
196
+ showNorthArrow: false
187
197
  });
188
198
  }
189
199
  ngOnInit() {
@@ -254,10 +264,10 @@ export class PrintFormComponent {
254
264
  this.commentField.setValidators([Validators.maxLength(this.maxLength)]);
255
265
  this.commentField.updateValueAndValidity();
256
266
  }
257
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PrintFormComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.MediaService }], target: i0.ɵɵFactoryTarget.Component });
258
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: PrintFormComponent, isStandalone: true, selector: "igo-print-form", inputs: { disabled$: "disabled$", imageFormat: "imageFormat", outputFormat: "outputFormat", paperFormat: "paperFormat", orientation: "orientation", resolution: "resolution", legendPosition: "legendPosition", title: "title", subtitle: "subtitle", comment: "comment", showProjection: "showProjection", showScale: "showScale", showLegend: "showLegend", doZipFile: "doZipFile" }, outputs: { submit: "submit" }, ngImport: i0, template: "<form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.title' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"title\"\n placeholder=\"{{ 'igo.geo.printForm.title' | translate }}\"\n />\n <mat-error *ngIf=\"titleField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.title' | translate,\n value: 130\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.subtitle' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"subtitle\"\n placeholder=\"{{ 'igo.geo.printForm.subtitle' | translate }}\"\n />\n <mat-error *ngIf=\"subtitleField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.subtitle' | translate,\n value: 120\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.comment' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"comment\"\n placeholder=\"{{ 'igo.geo.printForm.comment' | translate }}\"\n />\n <mat-error *ngIf=\"commentField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.comment' | translate,\n value: maxLength\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container slide-toggle-container\">\n <div class=\"print-slide-toggle-container\">\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showProjection\"\n [labelPosition]=\"'before'\"\n >\n {{ 'igo.geo.printForm.showProjection' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showScale\"\n [labelPosition]=\"'before'\"\n >\n {{ 'igo.geo.printForm.showScale' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"doZipFile\"\n [labelPosition]=\"'before'\"\n [style.display]=\"isPrintService ? 'none' : ''\"\n >\n {{ 'igo.geo.printForm.doZipFile' | translate }}\n </mat-slide-toggle>\n </div>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{\n 'igo.geo.printForm.legendPosition' | translate\n }}</mat-label>\n <mat-select\n formControlName=\"legendPosition\"\n placeholder=\"{{ 'igo.geo.printForm.legendPosition' | translate }}\"\n >\n <mat-option\n *ngFor=\"let legendPosition of legendPositions | keyvalue\"\n [value]=\"legendPosition.key\"\n >\n <ng-container\n *ngIf=\"!['newpage', 'newimage'].includes(legendPosition.value)\"\n >\n {{\n 'igo.geo.printForm.legendPositions.' + legendPosition.value\n | translate\n }}\n </ng-container>\n\n <ng-container\n *ngIf=\"['newpage', 'newimage'].includes(legendPosition.value)\"\n >\n {{\n (outputFormat === 'Pdf'\n ? 'igo.geo.printForm.legendPositions.newpage'\n : 'igo.geo.printForm.legendPositions.newimage'\n ) | translate\n }}\n </ng-container>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.outputFormat' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"toggleImageSaveProp()\"\n formControlName=\"outputFormat\"\n placeholder=\"{{ 'igo.geo.printForm.outputFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let outputFormat of outputFormats | keyvalue\"\n [value]=\"outputFormat.key\"\n >\n {{ outputFormat.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'block' : 'none'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.paperFormat' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"changeCommentLength()\"\n formControlName=\"paperFormat\"\n placeholder=\"{{ 'igo.geo.printForm.paperFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let paperFormat of paperFormats | keyvalue\"\n [value]=\"paperFormat.key\"\n >\n {{\n 'igo.geo.printForm.paperFormats.' + paperFormat.value | translate\n }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'none' : 'block'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.imageFormat' | translate }}</mat-label>\n <mat-select\n formControlName=\"imageFormat\"\n placeholder=\"{{ 'igo.geo.printForm.imageFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let imageFormat of imageFormats | keyvalue\"\n [value]=\"imageFormat.key\"\n >\n {{ imageFormat.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label\n >{{ 'igo.geo.printForm.resolution' | translate }} ({{\n 'igo.geo.printForm.resolutionUnit' | translate\n }})</mat-label\n >\n <mat-select\n formControlName=\"resolution\"\n placeholder=\"{{ 'igo.geo.printForm.resolution' | translate }}\"\n >\n <mat-option *ngFor=\"let resolution of resolutions\" [value]=\"resolution\">\n {{ resolution }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'block' : 'none'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.orientation' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"changeCommentLength()\"\n formControlName=\"orientation\"\n placeholder=\"{{ 'igo.geo.printForm.orientation' | translate }}\"\n >\n <mat-option\n *ngFor=\"let orientation of orientations | keyvalue\"\n [value]=\"orientation.key\"\n >\n {{ 'igo.geo.printForm.' + orientation.value | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-form-button-group print-button-top-padding\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (disabled$ | async)\"\n (click)=\"handleFormSubmit(form.value, form.valid)\"\n >\n {{ 'igo.geo.printForm.saveBtn' | translate }}\n </button>\n </div>\n</form>\n", styles: [":host mat-form-field{width:100%}:host .slide-toggle-container{margin-bottom:16px}:host .print-slide-toggle-container mat-slide-toggle{width:100%;padding:0 8px}:host .print-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}:host .print-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}:host .print-option{display:block;margin-bottom:12px}:host .igo-form{padding:10px 5px 5px}:host .igo-form-button-group{text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
267
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: PrintFormComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.MediaService }], target: i0.ɵɵFactoryTarget.Component });
268
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: PrintFormComponent, isStandalone: true, selector: "igo-print-form", inputs: { disabled$: "disabled$", imageFormat: "imageFormat", outputFormat: "outputFormat", paperFormat: "paperFormat", orientation: "orientation", resolution: "resolution", legendPosition: "legendPosition", title: "title", subtitle: "subtitle", comment: "comment", showProjection: "showProjection", showScale: "showScale", showLegend: "showLegend", doZipFile: "doZipFile", showNorth: "showNorth" }, outputs: { submit: "submit" }, ngImport: i0, template: "<form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.title' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"title\"\n placeholder=\"{{ 'igo.geo.printForm.title' | translate }}\"\n />\n <mat-error *ngIf=\"titleField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.title' | translate,\n value: 130\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.subtitle' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"subtitle\"\n placeholder=\"{{ 'igo.geo.printForm.subtitle' | translate }}\"\n />\n <mat-error *ngIf=\"subtitleField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.subtitle' | translate,\n value: 120\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.comment' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"comment\"\n placeholder=\"{{ 'igo.geo.printForm.comment' | translate }}\"\n />\n <mat-error *ngIf=\"commentField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.comment' | translate,\n value: maxLength\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container slide-toggle-container\">\n <div class=\"print-slide-toggle-container\">\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showProjection\"\n [labelPosition]=\"'before'\"\n >\n {{ 'igo.geo.printForm.showProjection' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showScale\"\n [labelPosition]=\"'before'\"\n >\n {{ 'igo.geo.printForm.showScale' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"doZipFile\"\n [labelPosition]=\"'before'\"\n [style.display]=\"isPrintService ? 'none' : ''\"\n >\n {{ 'igo.geo.printForm.doZipFile' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showNorthArrow\"\n [labelPosition]=\"'before'\"\n >\n {{ 'igo.geo.printForm.showNorthArrow' | translate }}\n </mat-slide-toggle>\n </div>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{\n 'igo.geo.printForm.legendPosition' | translate\n }}</mat-label>\n <mat-select\n formControlName=\"legendPosition\"\n placeholder=\"{{ 'igo.geo.printForm.legendPosition' | translate }}\"\n >\n <mat-option\n *ngFor=\"let legendPosition of legendPositions | keyvalue\"\n [value]=\"legendPosition.key\"\n >\n <ng-container\n *ngIf=\"!['newpage', 'newimage'].includes(legendPosition.value)\"\n >\n {{\n 'igo.geo.printForm.legendPositions.' + legendPosition.value\n | translate\n }}\n </ng-container>\n\n <ng-container\n *ngIf=\"['newpage', 'newimage'].includes(legendPosition.value)\"\n >\n {{\n (outputFormat === 'Pdf'\n ? 'igo.geo.printForm.legendPositions.newpage'\n : 'igo.geo.printForm.legendPositions.newimage'\n ) | translate\n }}\n </ng-container>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.outputFormat' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"toggleImageSaveProp()\"\n formControlName=\"outputFormat\"\n placeholder=\"{{ 'igo.geo.printForm.outputFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let outputFormat of outputFormats | keyvalue\"\n [value]=\"outputFormat.key\"\n >\n {{ outputFormat.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'block' : 'none'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.paperFormat' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"changeCommentLength()\"\n formControlName=\"paperFormat\"\n placeholder=\"{{ 'igo.geo.printForm.paperFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let paperFormat of paperFormats | keyvalue\"\n [value]=\"paperFormat.key\"\n >\n {{\n 'igo.geo.printForm.paperFormats.' + paperFormat.value | translate\n }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'none' : 'block'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.imageFormat' | translate }}</mat-label>\n <mat-select\n formControlName=\"imageFormat\"\n placeholder=\"{{ 'igo.geo.printForm.imageFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let imageFormat of imageFormats | keyvalue\"\n [value]=\"imageFormat.key\"\n >\n {{ imageFormat.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label\n >{{ 'igo.geo.printForm.resolution' | translate }} ({{\n 'igo.geo.printForm.resolutionUnit' | translate\n }})</mat-label\n >\n <mat-select\n formControlName=\"resolution\"\n placeholder=\"{{ 'igo.geo.printForm.resolution' | translate }}\"\n >\n <mat-option *ngFor=\"let resolution of resolutions\" [value]=\"resolution\">\n {{ resolution }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'block' : 'none'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.orientation' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"changeCommentLength()\"\n formControlName=\"orientation\"\n placeholder=\"{{ 'igo.geo.printForm.orientation' | translate }}\"\n >\n <mat-option\n *ngFor=\"let orientation of orientations | keyvalue\"\n [value]=\"orientation.key\"\n >\n {{ 'igo.geo.printForm.' + orientation.value | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-form-button-group print-button-top-padding\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (disabled$ | async)\"\n (click)=\"handleFormSubmit(form.value, form.valid)\"\n >\n {{ 'igo.geo.printForm.saveBtn' | translate }}\n </button>\n </div>\n</form>\n", styles: [":host mat-form-field{width:100%}:host .slide-toggle-container{margin-bottom:16px}:host .print-slide-toggle-container mat-slide-toggle{width:100%;padding:0 8px}:host .print-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}:host .print-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}:host .print-option{display:block;margin-bottom:12px}:host .igo-form{padding:10px 5px 5px}:host .igo-form-button-group{text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
259
269
  }
260
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: PrintFormComponent, decorators: [{
270
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: PrintFormComponent, decorators: [{
261
271
  type: Component,
262
272
  args: [{ selector: 'igo-print-form', standalone: true, imports: [
263
273
  FormsModule,
@@ -273,7 +283,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
273
283
  AsyncPipe,
274
284
  KeyValuePipe,
275
285
  IgoLanguageModule
276
- ], template: "<form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.title' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"title\"\n placeholder=\"{{ 'igo.geo.printForm.title' | translate }}\"\n />\n <mat-error *ngIf=\"titleField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.title' | translate,\n value: 130\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.subtitle' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"subtitle\"\n placeholder=\"{{ 'igo.geo.printForm.subtitle' | translate }}\"\n />\n <mat-error *ngIf=\"subtitleField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.subtitle' | translate,\n value: 120\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.comment' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"comment\"\n placeholder=\"{{ 'igo.geo.printForm.comment' | translate }}\"\n />\n <mat-error *ngIf=\"commentField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.comment' | translate,\n value: maxLength\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container slide-toggle-container\">\n <div class=\"print-slide-toggle-container\">\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showProjection\"\n [labelPosition]=\"'before'\"\n >\n {{ 'igo.geo.printForm.showProjection' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showScale\"\n [labelPosition]=\"'before'\"\n >\n {{ 'igo.geo.printForm.showScale' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"doZipFile\"\n [labelPosition]=\"'before'\"\n [style.display]=\"isPrintService ? 'none' : ''\"\n >\n {{ 'igo.geo.printForm.doZipFile' | translate }}\n </mat-slide-toggle>\n </div>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{\n 'igo.geo.printForm.legendPosition' | translate\n }}</mat-label>\n <mat-select\n formControlName=\"legendPosition\"\n placeholder=\"{{ 'igo.geo.printForm.legendPosition' | translate }}\"\n >\n <mat-option\n *ngFor=\"let legendPosition of legendPositions | keyvalue\"\n [value]=\"legendPosition.key\"\n >\n <ng-container\n *ngIf=\"!['newpage', 'newimage'].includes(legendPosition.value)\"\n >\n {{\n 'igo.geo.printForm.legendPositions.' + legendPosition.value\n | translate\n }}\n </ng-container>\n\n <ng-container\n *ngIf=\"['newpage', 'newimage'].includes(legendPosition.value)\"\n >\n {{\n (outputFormat === 'Pdf'\n ? 'igo.geo.printForm.legendPositions.newpage'\n : 'igo.geo.printForm.legendPositions.newimage'\n ) | translate\n }}\n </ng-container>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.outputFormat' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"toggleImageSaveProp()\"\n formControlName=\"outputFormat\"\n placeholder=\"{{ 'igo.geo.printForm.outputFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let outputFormat of outputFormats | keyvalue\"\n [value]=\"outputFormat.key\"\n >\n {{ outputFormat.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'block' : 'none'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.paperFormat' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"changeCommentLength()\"\n formControlName=\"paperFormat\"\n placeholder=\"{{ 'igo.geo.printForm.paperFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let paperFormat of paperFormats | keyvalue\"\n [value]=\"paperFormat.key\"\n >\n {{\n 'igo.geo.printForm.paperFormats.' + paperFormat.value | translate\n }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'none' : 'block'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.imageFormat' | translate }}</mat-label>\n <mat-select\n formControlName=\"imageFormat\"\n placeholder=\"{{ 'igo.geo.printForm.imageFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let imageFormat of imageFormats | keyvalue\"\n [value]=\"imageFormat.key\"\n >\n {{ imageFormat.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label\n >{{ 'igo.geo.printForm.resolution' | translate }} ({{\n 'igo.geo.printForm.resolutionUnit' | translate\n }})</mat-label\n >\n <mat-select\n formControlName=\"resolution\"\n placeholder=\"{{ 'igo.geo.printForm.resolution' | translate }}\"\n >\n <mat-option *ngFor=\"let resolution of resolutions\" [value]=\"resolution\">\n {{ resolution }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'block' : 'none'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.orientation' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"changeCommentLength()\"\n formControlName=\"orientation\"\n placeholder=\"{{ 'igo.geo.printForm.orientation' | translate }}\"\n >\n <mat-option\n *ngFor=\"let orientation of orientations | keyvalue\"\n [value]=\"orientation.key\"\n >\n {{ 'igo.geo.printForm.' + orientation.value | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-form-button-group print-button-top-padding\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (disabled$ | async)\"\n (click)=\"handleFormSubmit(form.value, form.valid)\"\n >\n {{ 'igo.geo.printForm.saveBtn' | translate }}\n </button>\n </div>\n</form>\n", styles: [":host mat-form-field{width:100%}:host .slide-toggle-container{margin-bottom:16px}:host .print-slide-toggle-container mat-slide-toggle{width:100%;padding:0 8px}:host .print-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}:host .print-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}:host .print-option{display:block;margin-bottom:12px}:host .igo-form{padding:10px 5px 5px}:host .igo-form-button-group{text-align:center}\n"] }]
286
+ ], template: "<form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.title' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"title\"\n placeholder=\"{{ 'igo.geo.printForm.title' | translate }}\"\n />\n <mat-error *ngIf=\"titleField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.title' | translate,\n value: 130\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.subtitle' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"subtitle\"\n placeholder=\"{{ 'igo.geo.printForm.subtitle' | translate }}\"\n />\n <mat-error *ngIf=\"subtitleField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.subtitle' | translate,\n value: 120\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.comment' | translate }}</mat-label>\n <input\n matInput\n formControlName=\"comment\"\n placeholder=\"{{ 'igo.geo.printForm.comment' | translate }}\"\n />\n <mat-error *ngIf=\"commentField.errors?.maxlength\">{{\n 'igo.geo.formValidation.maxLength'\n | translate\n : {\n column: 'igo.geo.printForm.comment' | translate,\n value: maxLength\n }\n }}</mat-error>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container slide-toggle-container\">\n <div class=\"print-slide-toggle-container\">\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showProjection\"\n [labelPosition]=\"'before'\"\n >\n {{ 'igo.geo.printForm.showProjection' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showScale\"\n [labelPosition]=\"'before'\"\n >\n {{ 'igo.geo.printForm.showScale' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"doZipFile\"\n [labelPosition]=\"'before'\"\n [style.display]=\"isPrintService ? 'none' : ''\"\n >\n {{ 'igo.geo.printForm.doZipFile' | translate }}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showNorthArrow\"\n [labelPosition]=\"'before'\"\n >\n {{ 'igo.geo.printForm.showNorthArrow' | translate }}\n </mat-slide-toggle>\n </div>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{\n 'igo.geo.printForm.legendPosition' | translate\n }}</mat-label>\n <mat-select\n formControlName=\"legendPosition\"\n placeholder=\"{{ 'igo.geo.printForm.legendPosition' | translate }}\"\n >\n <mat-option\n *ngFor=\"let legendPosition of legendPositions | keyvalue\"\n [value]=\"legendPosition.key\"\n >\n <ng-container\n *ngIf=\"!['newpage', 'newimage'].includes(legendPosition.value)\"\n >\n {{\n 'igo.geo.printForm.legendPositions.' + legendPosition.value\n | translate\n }}\n </ng-container>\n\n <ng-container\n *ngIf=\"['newpage', 'newimage'].includes(legendPosition.value)\"\n >\n {{\n (outputFormat === 'Pdf'\n ? 'igo.geo.printForm.legendPositions.newpage'\n : 'igo.geo.printForm.legendPositions.newimage'\n ) | translate\n }}\n </ng-container>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.outputFormat' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"toggleImageSaveProp()\"\n formControlName=\"outputFormat\"\n placeholder=\"{{ 'igo.geo.printForm.outputFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let outputFormat of outputFormats | keyvalue\"\n [value]=\"outputFormat.key\"\n >\n {{ outputFormat.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'block' : 'none'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.paperFormat' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"changeCommentLength()\"\n formControlName=\"paperFormat\"\n placeholder=\"{{ 'igo.geo.printForm.paperFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let paperFormat of paperFormats | keyvalue\"\n [value]=\"paperFormat.key\"\n >\n {{\n 'igo.geo.printForm.paperFormats.' + paperFormat.value | translate\n }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'none' : 'block'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.imageFormat' | translate }}</mat-label>\n <mat-select\n formControlName=\"imageFormat\"\n placeholder=\"{{ 'igo.geo.printForm.imageFormat' | translate }}\"\n >\n <mat-option\n *ngFor=\"let imageFormat of imageFormats | keyvalue\"\n [value]=\"imageFormat.key\"\n >\n {{ imageFormat.value }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label\n >{{ 'igo.geo.printForm.resolution' | translate }} ({{\n 'igo.geo.printForm.resolutionUnit' | translate\n }})</mat-label\n >\n <mat-select\n formControlName=\"resolution\"\n placeholder=\"{{ 'igo.geo.printForm.resolution' | translate }}\"\n >\n <mat-option *ngFor=\"let resolution of resolutions\" [value]=\"resolution\">\n {{ resolution }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n class=\"igo-input-container\"\n [style.display]=\"isPrintService ? 'block' : 'none'\"\n >\n <mat-form-field>\n <mat-label>{{ 'igo.geo.printForm.orientation' | translate }}</mat-label>\n <mat-select\n (selectionChange)=\"changeCommentLength()\"\n formControlName=\"orientation\"\n placeholder=\"{{ 'igo.geo.printForm.orientation' | translate }}\"\n >\n <mat-option\n *ngFor=\"let orientation of orientations | keyvalue\"\n [value]=\"orientation.key\"\n >\n {{ 'igo.geo.printForm.' + orientation.value | translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-form-button-group print-button-top-padding\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (disabled$ | async)\"\n (click)=\"handleFormSubmit(form.value, form.valid)\"\n >\n {{ 'igo.geo.printForm.saveBtn' | translate }}\n </button>\n </div>\n</form>\n", styles: [":host mat-form-field{width:100%}:host .slide-toggle-container{margin-bottom:16px}:host .print-slide-toggle-container mat-slide-toggle{width:100%;padding:0 8px}:host .print-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-form-field{width:100%}:host .print-slide-toggle-container mat-slide-toggle ::ng-deep .mdc-label{margin-left:0;width:calc(100% - 60px)}:host .print-option{display:block;margin-bottom:12px}:host .igo-form{padding:10px 5px 5px}:host .igo-form-button-group{text-align:center}\n"] }]
277
287
  }], ctorParameters: () => [{ type: i1.UntypedFormBuilder }, { type: i2.MediaService }], propDecorators: { disabled$: [{
278
288
  type: Input
279
289
  }], imageFormat: [{
@@ -302,7 +312,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
302
312
  type: Input
303
313
  }], doZipFile: [{
304
314
  type: Input
315
+ }], showNorth: [{
316
+ type: Input
305
317
  }], submit: [{
306
318
  type: Output
307
319
  }] } });
308
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9wcmludC9wcmludC1mb3JtL3ByaW50LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcHJpbnQvcHJpbnQtZm9ybS9wcmludC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFDTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUdsQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdkMsT0FBTyxFQUNMLG1CQUFtQixF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RkFBbEIsa0JBQWtCLGllQ3JEL0Isb3hPQXVPQSw2aUJEak1JLFdBQVcsMnBCQUNYLG1CQUFtQiwrVUFDbkIsa0JBQWtCLHVZQUNsQixjQUFjLDJXQUNkLElBQUksNEZBQ0osb0JBQW9CLGtXQUNwQixlQUFlLG9yQkFDZixLQUFLLGtIQUNMLGVBQWUsOEJBQ2YsZUFBZSx1TkFDZixTQUFTLHlDQUNULFlBQVksZ0RBQ1osaUJBQWlCOzsyRkFHUixrQkFBa0I7a0JBckI5QixTQUFTOytCQUNFLGdCQUFnQixjQUdkLElBQUksV0FDUDt3QkFDUCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLElBQUk7d0JBQ0osb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLEtBQUs7d0JBQ0wsZUFBZTt3QkFDZixlQUFlO3dCQUNmLFNBQVM7d0JBQ1QsWUFBWTt3QkFDWixpQkFBaUI7cUJBQ2xCO2tIQVlRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0YsV0FBVztzQkFEZCxLQUFLO2dCQVdGLFlBQVk7c0JBRGYsS0FBSztnQkFXRixXQUFXO3NCQURkLEtBQUs7Z0JBV0YsV0FBVztzQkFEZCxLQUFLO2dCQVdGLFVBQVU7c0JBRGIsS0FBSztnQkFXRixjQUFjO3NCQURqQixLQUFLO2dCQVdGLEtBQUs7c0JBRFIsS0FBSztnQkFRRixRQUFRO3NCQURYLEtBQUs7Z0JBUUYsT0FBTztzQkFEVixLQUFLO2dCQVFGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBUUYsU0FBUztzQkFEWixLQUFLO2dCQVFGLFVBQVU7c0JBRGIsS0FBSztnQkFTRixTQUFTO3NCQURaLEtBQUs7Z0JBNERJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgS2V5VmFsdWVQaXBlLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFVudHlwZWRGb3JtR3JvdXAsXG4gIFZhbGlkYXRvcnNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdE9wdGlvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5cbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5pbXBvcnQgeyBNZWRpYVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lZGlhJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFByaW50T3B0aW9ucyB9IGZyb20gJy4uL3NoYXJlZC9wcmludC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgUHJpbnRMZWdlbmRQb3NpdGlvbixcbiAgUHJpbnRPcmllbnRhdGlvbixcbiAgUHJpbnRPdXRwdXRGb3JtYXQsXG4gIFByaW50UGFwZXJGb3JtYXQsXG4gIFByaW50UmVzb2x1dGlvbixcbiAgUHJpbnRTYXZlSW1hZ2VGb3JtYXRcbn0gZnJvbSAnLi4vc2hhcmVkL3ByaW50LnR5cGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tcHJpbnQtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcmludC1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHJpbnQtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTmdJZixcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgS2V5VmFsdWVQaXBlLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUHJpbnRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG4gIHB1YmxpYyBvdXRwdXRGb3JtYXRzID0gUHJpbnRPdXRwdXRGb3JtYXQ7XG4gIHB1YmxpYyBwYXBlckZvcm1hdHMgPSBQcmludFBhcGVyRm9ybWF0O1xuICBwdWJsaWMgb3JpZW50YXRpb25zID0gUHJpbnRPcmllbnRhdGlvbjtcbiAgcHVibGljIHJlc29sdXRpb25zID0gWy4uLlByaW50UmVzb2x1dGlvbl07XG4gIHB1YmxpYyBpbWFnZUZvcm1hdHMgPSBQcmludFNhdmVJbWFnZUZvcm1hdDtcbiAgcHVibGljIGxlZ2VuZFBvc2l0aW9ucyA9IFByaW50TGVnZW5kUG9zaXRpb247XG4gIHB1YmxpYyBpc1ByaW50U2VydmljZSA9IHRydWU7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgQElucHV0KClcbiAgZ2V0IGltYWdlRm9ybWF0KCk6IFByaW50U2F2ZUltYWdlRm9ybWF0IHtcbiAgICByZXR1cm4gdGhpcy5pbWFnZUZvcm1hdEZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBpbWFnZUZvcm1hdCh2YWx1ZTogUHJpbnRTYXZlSW1hZ2VGb3JtYXQpIHtcbiAgICB0aGlzLmltYWdlRm9ybWF0RmllbGQuc2V0VmFsdWUodmFsdWUgfHwgUHJpbnRTYXZlSW1hZ2VGb3JtYXQuSnBlZywge1xuICAgICAgb25seVNlbGY6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBvdXRwdXRGb3JtYXQoKTogUHJpbnRPdXRwdXRGb3JtYXQge1xuICAgIHJldHVybiB0aGlzLm91dHB1dEZvcm1hdEZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBvdXRwdXRGb3JtYXQodmFsdWU6IFByaW50T3V0cHV0Rm9ybWF0KSB7XG4gICAgdGhpcy5vdXRwdXRGb3JtYXRGaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCBQcmludE91dHB1dEZvcm1hdC5QZGYsIHtcbiAgICAgIG9ubHlTZWxmOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcGFwZXJGb3JtYXQoKTogUHJpbnRQYXBlckZvcm1hdCB7XG4gICAgcmV0dXJuIHRoaXMucGFwZXJGb3JtYXRGaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgcGFwZXJGb3JtYXQodmFsdWU6IFByaW50UGFwZXJGb3JtYXQpIHtcbiAgICB0aGlzLnBhcGVyRm9ybWF0RmllbGQuc2V0VmFsdWUodmFsdWUgfHwgUHJpbnRQYXBlckZvcm1hdC5MZXR0ZXIsIHtcbiAgICAgIG9ubHlTZWxmOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgb3JpZW50YXRpb24oKTogUHJpbnRPcmllbnRhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMub3JpZW50YXRpb25GaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgb3JpZW50YXRpb24odmFsdWU6IFByaW50T3JpZW50YXRpb24pIHtcbiAgICB0aGlzLm9yaWVudGF0aW9uRmllbGQuc2V0VmFsdWUodmFsdWUgfHwgUHJpbnRPcmllbnRhdGlvbi5sYW5kc2NhcGUsIHtcbiAgICAgIG9ubHlTZWxmOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcmVzb2x1dGlvbigpOiBQcmludFJlc29sdXRpb24ge1xuICAgIHJldHVybiB0aGlzLnJlc29sdXRpb25GaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgcmVzb2x1dGlvbih2YWx1ZTogUHJpbnRSZXNvbHV0aW9uKSB7XG4gICAgdGhpcy5yZXNvbHV0aW9uRmllbGQuc2V0VmFsdWUodmFsdWUgfHwgKCc5Nicgc2F0aXNmaWVzIFByaW50UmVzb2x1dGlvbiksIHtcbiAgICAgIG9ubHlTZWxmOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgbGVnZW5kUG9zaXRpb24oKTogUHJpbnRMZWdlbmRQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubGVnZW5kUG9zaXRpb25GaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgbGVnZW5kUG9zaXRpb24odmFsdWU6IFByaW50TGVnZW5kUG9zaXRpb24pIHtcbiAgICB0aGlzLmxlZ2VuZFBvc2l0aW9uRmllbGQuc2V0VmFsdWUodmFsdWUgfHwgUHJpbnRMZWdlbmRQb3NpdGlvbi5ub25lLCB7XG4gICAgICBvbmx5U2VsZjogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IHRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGVGaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgdGl0bGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudGl0bGVGaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgc3VidGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zdWJ0aXRsZUZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBzdWJ0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zdWJ0aXRsZUZpZWxkLnNldFZhbHVlKHZhbHVlLCB7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBjb21tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29tbWVudEZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBjb21tZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbW1lbnRGaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgc2hvd1Byb2plY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1Byb2plY3Rpb25GaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgc2hvd1Byb2plY3Rpb24odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dQcm9qZWN0aW9uRmllbGQuc2V0VmFsdWUodmFsdWUsIHsgb25seVNlbGY6IHRydWUgfSk7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IHNob3dTY2FsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93U2NhbGVGaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgc2hvd1NjYWxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG93U2NhbGVGaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgc2hvd0xlZ2VuZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93TGVnZW5kRmllbGQudmFsdWU7XG4gIH1cbiAgc2V0IHNob3dMZWdlbmQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dMZWdlbmRGaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBkb1ppcEZpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZG9aaXBGaWxlRmllbGQudmFsdWU7XG4gIH1cbiAgc2V0IGRvWmlwRmlsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZG9aaXBGaWxlRmllbGQuc2V0VmFsdWUodmFsdWUsIHsgb25seVNlbGY6IHRydWUgfSk7XG4gIH1cblxuICBnZXQgb3V0cHV0Rm9ybWF0RmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5vdXRwdXRGb3JtYXQgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IHBhcGVyRm9ybWF0RmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5wYXBlckZvcm1hdCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBnZXQgaW1hZ2VGb3JtYXRGaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLmltYWdlRm9ybWF0IGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCBvcmllbnRhdGlvbkZpZWxkKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkub3JpZW50YXRpb24gYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IHJlc29sdXRpb25GaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLnJlc29sdXRpb24gYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IGNvbW1lbnRGaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLmNvbW1lbnQgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IHNob3dQcm9qZWN0aW9uRmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5zaG93UHJvamVjdGlvbiBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBnZXQgc2hvd1NjYWxlRmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5zaG93U2NhbGUgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IHNob3dMZWdlbmRGaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLnNob3dMZWdlbmQgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IGRvWmlwRmlsZUZpZWxkKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkuZG9aaXBGaWxlIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCB0aXRsZUZpZWxkKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkudGl0bGUgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IHN1YnRpdGxlRmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5zdWJ0aXRsZSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBnZXQgbGVnZW5kUG9zaXRpb25GaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLmxlZ2VuZFBvc2l0aW9uIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIEBPdXRwdXQoKSBzdWJtaXQ6IEV2ZW50RW1pdHRlcjxQcmludE9wdGlvbnM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG1heExlbmd0aDogbnVtYmVyID0gMTgwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIG1lZGlhU2VydmljZTogTWVkaWFTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgdGl0bGU6IFsnJywgW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDApLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMzApXV0sXG4gICAgICBzdWJ0aXRsZTogWycnLCBbVmFsaWRhdG9ycy5taW5MZW5ndGgoMCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEyMCldXSxcbiAgICAgIGNvbW1lbnQ6IFtcbiAgICAgICAgJycsXG4gICAgICAgIFtWYWxpZGF0b3JzLm1pbkxlbmd0aCgwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5tYXhMZW5ndGgpXVxuICAgICAgXSxcbiAgICAgIG91dHB1dEZvcm1hdDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgcGFwZXJGb3JtYXQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGltYWdlRm9ybWF0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICByZXNvbHV0aW9uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBvcmllbnRhdGlvbjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgbGVnZW5kUG9zaXRpb246IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHNob3dQcm9qZWN0aW9uOiBmYWxzZSxcbiAgICAgIHNob3dTY2FsZTogZmFsc2UsXG4gICAgICBzaG93TGVnZW5kOiBmYWxzZSxcbiAgICAgIGRvWmlwRmlsZTogW3sgaGlkZGVuOiB0aGlzLmlzUHJpbnRTZXJ2aWNlIH1dXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRvWmlwRmlsZUZpZWxkLnNldFZhbHVlKGZhbHNlKTtcbiAgICBpZiAodGhpcy5tZWRpYVNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgdGhpcy5yZXNvbHV0aW9ucyA9IHRoaXMucmVzb2x1dGlvbnMuZmlsdGVyKFxuICAgICAgICAocmVzb2x1dGlvbikgPT4gcmVzb2x1dGlvbiAhPT0gJzMwMCdcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRm9ybVN1Ym1pdChkYXRhOiBQcmludE9wdGlvbnMsIGlzVmFsaWQ6IGJvb2xlYW4pIHtcbiAgICBkYXRhLmlzUHJpbnRTZXJ2aWNlID0gdGhpcy5pc1ByaW50U2VydmljZTtcbiAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgdGhpcy5zdWJtaXQuZW1pdChkYXRhKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVJbWFnZVNhdmVQcm9wKCkge1xuICAgIGlmICh0aGlzLm91dHB1dEZvcm1hdEZpZWxkLnZhbHVlID09PSAnSW1hZ2UnKSB7XG4gICAgICB0aGlzLmlzUHJpbnRTZXJ2aWNlID0gZmFsc2U7XG4gICAgICB0aGlzLmNvbW1lbnRGaWVsZC5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICAgIHRoaXMuY29tbWVudEZpZWxkLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc1ByaW50U2VydmljZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlQ29tbWVudExlbmd0aCgpIHtcbiAgICBzd2l0Y2ggKHRoaXMucGFwZXJGb3JtYXQpIHtcbiAgICAgIGNhc2UgUHJpbnRQYXBlckZvcm1hdC5BMDpcbiAgICAgICAgLy8gQTAsIGxhbmRzY2FwZSwgbGVuZ3RoIDkwMCB8IEEwLCBwb3J0cmFpdCwgY29tbWVudCBsZW5ndGg6ICA2MDBcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPVxuICAgICAgICAgIHRoaXMub3JpZW50YXRpb24gPT09IFByaW50T3JpZW50YXRpb24ubGFuZHNjYXBlID8gOTAwIDogNjAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHJpbnRQYXBlckZvcm1hdC5BMTpcbiAgICAgICAgLy8gQTEsIGxhbmRzY2FwZSwgbGVuZ3RoIDYwMCB8IEExLCBwb3J0cmFpdCwgbGVuZ3RoIDQwMDtcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPVxuICAgICAgICAgIHRoaXMub3JpZW50YXRpb24gPT09IFByaW50T3JpZW50YXRpb24ubGFuZHNjYXBlID8gNjAwIDogNDAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHJpbnRQYXBlckZvcm1hdC5BMjpcbiAgICAgICAgLy8gQTIsIGxhbmRzY2FwZSwgbGVuZ3RoIDQwMCB8IEEyLCBwb3J0cmFpdCwgbGVuZ3RoIDMwMDtcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPVxuICAgICAgICAgIHRoaXMub3JpZW50YXRpb24gPT09IFByaW50T3JpZW50YXRpb24ubGFuZHNjYXBlID8gNDAwIDogMzAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHJpbnRQYXBlckZvcm1hdC5BMzpcbiAgICAgICAgLy8gQTMsIGxhbmRzY2FwZSwgbGVuZ3RoIDMwMCB8IEEzLCBwb3J0cmFpdCwgbGVuZ3RoIDIwMDtcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPVxuICAgICAgICAgIHRoaXMub3JpZW50YXRpb24gPT09IFByaW50T3JpZW50YXRpb24ubGFuZHNjYXBlID8gMzAwIDogMjAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHJpbnRQYXBlckZvcm1hdC5BNDpcbiAgICAgICAgLy8gQTQsIGxhbmRzY2FwZSBsZW5ndGggMjAwIHwgQTQsIHBvcnRyYWl0IGxlbmd0aCAxMjA7XG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID1cbiAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uID09PSBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSA/IDIwMCA6IDEwMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFByaW50UGFwZXJGb3JtYXQuQTU6XG4gICAgICAgIC8vIEE1LCBsYW5kc2NhcGUgbGVuZ3RoIDEyMCB8IEE1LCBwb3J0cmFpdCBsZW5ndGggODA7XG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID1cbiAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uID09PSBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSA/IDEyMCA6IDgwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHJpbnRQYXBlckZvcm1hdC5MZXR0ZXI6XG4gICAgICAgIC8vIGxldHRyZSwgbGFuZHNjYXBlLCAxODAgfCBsZXR0cmUsIHBvcnRyYWl0LCAxNDBcbiAgICAgICAgdGhpcy5tYXhMZW5ndGggPVxuICAgICAgICAgIHRoaXMub3JpZW50YXRpb24gPT09IFByaW50T3JpZW50YXRpb24ubGFuZHNjYXBlID8gMTgwIDogMTQwO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIGxlZ2FsLCBsYW5kc2NhcGUsIDIwMCB8IGxlZ2FsLCBwb3J0cmFpdCwgMTQwXG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID1cbiAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uID09PSBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSA/IDIwMCA6IDE0MDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5jb21tZW50RmllbGQuc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5tYXhMZW5ndGgpXSk7XG4gICAgdGhpcy5jb21tZW50RmllbGQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICB9XG59XG4iLCI8Zm9ybSBjbGFzcz1cImlnby1mb3JtXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby5wcmludEZvcm0udGl0bGUnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXRcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdpZ28uZ2VvLnByaW50Rm9ybS50aXRsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgLz5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJ0aXRsZUZpZWxkLmVycm9ycz8ubWF4bGVuZ3RoXCI+e3tcbiAgICAgICAgJ2lnby5nZW8uZm9ybVZhbGlkYXRpb24ubWF4TGVuZ3RoJ1xuICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICBjb2x1bW46ICdpZ28uZ2VvLnByaW50Rm9ybS50aXRsZScgfCB0cmFuc2xhdGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDEzMFxuICAgICAgICAgICAgICB9XG4gICAgICB9fTwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5nZW8ucHJpbnRGb3JtLnN1YnRpdGxlJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN1YnRpdGxlXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnaWdvLmdlby5wcmludEZvcm0uc3VidGl0bGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIC8+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwic3VidGl0bGVGaWVsZC5lcnJvcnM/Lm1heGxlbmd0aFwiPnt7XG4gICAgICAgICdpZ28uZ2VvLmZvcm1WYWxpZGF0aW9uLm1heExlbmd0aCdcbiAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgY29sdW1uOiAnaWdvLmdlby5wcmludEZvcm0uc3VidGl0bGUnIHwgdHJhbnNsYXRlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAxMjBcbiAgICAgICAgICAgICAgfVxuICAgICAgfX08L21hdC1lcnJvcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uZ2VvLnByaW50Rm9ybS5jb21tZW50JyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbW1lbnRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdpZ28uZ2VvLnByaW50Rm9ybS5jb21tZW50JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAvPlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImNvbW1lbnRGaWVsZC5lcnJvcnM/Lm1heGxlbmd0aFwiPnt7XG4gICAgICAgICdpZ28uZ2VvLmZvcm1WYWxpZGF0aW9uLm1heExlbmd0aCdcbiAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgY29sdW1uOiAnaWdvLmdlby5wcmludEZvcm0uY29tbWVudCcgfCB0cmFuc2xhdGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG1heExlbmd0aFxuICAgICAgICAgICAgICB9XG4gICAgICB9fTwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyIHNsaWRlLXRvZ2dsZS1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHJpbnQtc2xpZGUtdG9nZ2xlLWNvbnRhaW5lclwiPlxuICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgY2xhc3M9XCJwcmludC1vcHRpb25cIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzaG93UHJvamVjdGlvblwiXG4gICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2lnby5nZW8ucHJpbnRGb3JtLnNob3dQcm9qZWN0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgY2xhc3M9XCJwcmludC1vcHRpb25cIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzaG93U2NhbGVcIlxuICAgICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgICA+XG4gICAgICAgIHt7ICdpZ28uZ2VvLnByaW50Rm9ybS5zaG93U2NhbGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgICA8bWF0LXNsaWRlLXRvZ2dsZVxuICAgICAgICBjbGFzcz1cInByaW50LW9wdGlvblwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRvWmlwRmlsZVwiXG4gICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwiaXNQcmludFNlcnZpY2UgPyAnbm9uZScgOiAnJ1wiXG4gICAgICA+XG4gICAgICAgIHt7ICdpZ28uZ2VvLnByaW50Rm9ybS5kb1ppcEZpbGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbD57e1xuICAgICAgICAnaWdvLmdlby5wcmludEZvcm0ubGVnZW5kUG9zaXRpb24nIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVnZW5kUG9zaXRpb25cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdpZ28uZ2VvLnByaW50Rm9ybS5sZWdlbmRQb3NpdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBsZWdlbmRQb3NpdGlvbiBvZiBsZWdlbmRQb3NpdGlvbnMgfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cImxlZ2VuZFBvc2l0aW9uLmtleVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIiFbJ25ld3BhZ2UnLCAnbmV3aW1hZ2UnXS5pbmNsdWRlcyhsZWdlbmRQb3NpdGlvbi52YWx1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICdpZ28uZ2VvLnByaW50Rm9ybS5sZWdlbmRQb3NpdGlvbnMuJyArIGxlZ2VuZFBvc2l0aW9uLnZhbHVlXG4gICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlsnbmV3cGFnZScsICduZXdpbWFnZSddLmluY2x1ZGVzKGxlZ2VuZFBvc2l0aW9uLnZhbHVlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgKG91dHB1dEZvcm1hdCA9PT0gJ1BkZidcbiAgICAgICAgICAgICAgICA/ICdpZ28uZ2VvLnByaW50Rm9ybS5sZWdlbmRQb3NpdGlvbnMubmV3cGFnZSdcbiAgICAgICAgICAgICAgICA6ICdpZ28uZ2VvLnByaW50Rm9ybS5sZWdlbmRQb3NpdGlvbnMubmV3aW1hZ2UnXG4gICAgICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5nZW8ucHJpbnRGb3JtLm91dHB1dEZvcm1hdCcgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwidG9nZ2xlSW1hZ2VTYXZlUHJvcCgpXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3V0cHV0Rm9ybWF0XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnaWdvLmdlby5wcmludEZvcm0ub3V0cHV0Rm9ybWF0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG91dHB1dEZvcm1hdCBvZiBvdXRwdXRGb3JtYXRzIHwga2V5dmFsdWVcIlxuICAgICAgICAgIFt2YWx1ZV09XCJvdXRwdXRGb3JtYXQua2V5XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IG91dHB1dEZvcm1hdC52YWx1ZSB9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiXG4gICAgW3N0eWxlLmRpc3BsYXldPVwiaXNQcmludFNlcnZpY2UgPyAnYmxvY2snIDogJ25vbmUnXCJcbiAgPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5nZW8ucHJpbnRGb3JtLnBhcGVyRm9ybWF0JyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VDb21tZW50TGVuZ3RoKClcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXBlckZvcm1hdFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5nZW8ucHJpbnRGb3JtLnBhcGVyRm9ybWF0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHBhcGVyRm9ybWF0IG9mIHBhcGVyRm9ybWF0cyB8IGtleXZhbHVlXCJcbiAgICAgICAgICBbdmFsdWVdPVwicGFwZXJGb3JtYXQua2V5XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICAnaWdvLmdlby5wcmludEZvcm0ucGFwZXJGb3JtYXRzLicgKyBwYXBlckZvcm1hdC52YWx1ZSB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCJcbiAgICBbc3R5bGUuZGlzcGxheV09XCJpc1ByaW50U2VydmljZSA/ICdub25lJyA6ICdibG9jaydcIlxuICA+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby5wcmludEZvcm0uaW1hZ2VGb3JtYXQnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbWFnZUZvcm1hdFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5nZW8ucHJpbnRGb3JtLmltYWdlRm9ybWF0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGltYWdlRm9ybWF0IG9mIGltYWdlRm9ybWF0cyB8IGtleXZhbHVlXCJcbiAgICAgICAgICBbdmFsdWVdPVwiaW1hZ2VGb3JtYXQua2V5XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGltYWdlRm9ybWF0LnZhbHVlIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWxcbiAgICAgICAgPnt7ICdpZ28uZ2VvLnByaW50Rm9ybS5yZXNvbHV0aW9uJyB8IHRyYW5zbGF0ZSB9fSAoe3tcbiAgICAgICAgICAnaWdvLmdlby5wcmludEZvcm0ucmVzb2x1dGlvblVuaXQnIHwgdHJhbnNsYXRlXG4gICAgICAgIH19KTwvbWF0LWxhYmVsXG4gICAgICA+XG4gICAgICA8bWF0LXNlbGVjdFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZXNvbHV0aW9uXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnaWdvLmdlby5wcmludEZvcm0ucmVzb2x1dGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgcmVzb2x1dGlvbiBvZiByZXNvbHV0aW9uc1wiIFt2YWx1ZV09XCJyZXNvbHV0aW9uXCI+XG4gICAgICAgICAge3sgcmVzb2x1dGlvbiB9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiXG4gICAgW3N0eWxlLmRpc3BsYXldPVwiaXNQcmludFNlcnZpY2UgPyAnYmxvY2snIDogJ25vbmUnXCJcbiAgPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5nZW8ucHJpbnRGb3JtLm9yaWVudGF0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJjaGFuZ2VDb21tZW50TGVuZ3RoKClcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvcmllbnRhdGlvblwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5nZW8ucHJpbnRGb3JtLm9yaWVudGF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxtYXQtb3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9yaWVudGF0aW9uIG9mIG9yaWVudGF0aW9ucyB8IGtleXZhbHVlXCJcbiAgICAgICAgICBbdmFsdWVdPVwib3JpZW50YXRpb24ua2V5XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdpZ28uZ2VvLnByaW50Rm9ybS4nICsgb3JpZW50YXRpb24udmFsdWUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJpZ28tZm9ybS1idXR0b24tZ3JvdXAgcHJpbnQtYnV0dG9uLXRvcC1wYWRkaW5nXCI+XG4gICAgPGJ1dHRvblxuICAgICAgbWF0LXJhaXNlZC1idXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cIiFmb3JtLnZhbGlkIHx8IChkaXNhYmxlZCQgfCBhc3luYylcIlxuICAgICAgKGNsaWNrKT1cImhhbmRsZUZvcm1TdWJtaXQoZm9ybS52YWx1ZSwgZm9ybS52YWxpZClcIlxuICAgID5cbiAgICAgIHt7ICdpZ28uZ2VvLnByaW50Rm9ybS5zYXZlQnRuJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9wcmludC9wcmludC1mb3JtL3ByaW50LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcHJpbnQvcHJpbnQtZm9ybS9wcmludC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFDTCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUdsQixVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHdkMsT0FBTyxFQUNMLG1CQUFtQixF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QU87c0JBRFYsS0FBSztnQkFRRixjQUFjO3NCQURqQixLQUFLO2dCQVFGLFNBQVM7c0JBRFosS0FBSztnQkFRRixVQUFVO3NCQURiLEtBQUs7Z0JBU0YsU0FBUztzQkFEWixLQUFLO2dCQVNGLFNBQVM7c0JBRFosS0FBSztnQkFnRUksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBLZXlWYWx1ZVBpcGUsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEZvcm1zTW9kdWxlLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgVW50eXBlZEZvcm1Hcm91cCxcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcblxuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IE1lZGlhU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVkaWEnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgUHJpbnRPcHRpb25zIH0gZnJvbSAnLi4vc2hhcmVkL3ByaW50LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBQcmludExlZ2VuZFBvc2l0aW9uLFxuICBQcmludE9yaWVudGF0aW9uLFxuICBQcmludE91dHB1dEZvcm1hdCxcbiAgUHJpbnRQYXBlckZvcm1hdCxcbiAgUHJpbnRSZXNvbHV0aW9uLFxuICBQcmludFNhdmVJbWFnZUZvcm1hdFxufSBmcm9tICcuLi9zaGFyZWQvcHJpbnQudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1wcmludC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ByaW50LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcmludC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBOZ0lmLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBOZ0ZvcixcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBLZXlWYWx1ZVBpcGUsXG4gICAgSWdvTGFuZ3VhZ2VNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBQcmludEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgZm9ybTogVW50eXBlZEZvcm1Hcm91cDtcbiAgcHVibGljIG91dHB1dEZvcm1hdHMgPSBQcmludE91dHB1dEZvcm1hdDtcbiAgcHVibGljIHBhcGVyRm9ybWF0cyA9IFByaW50UGFwZXJGb3JtYXQ7XG4gIHB1YmxpYyBvcmllbnRhdGlvbnMgPSBQcmludE9yaWVudGF0aW9uO1xuICBwdWJsaWMgcmVzb2x1dGlvbnMgPSBbLi4uUHJpbnRSZXNvbHV0aW9uXTtcbiAgcHVibGljIGltYWdlRm9ybWF0cyA9IFByaW50U2F2ZUltYWdlRm9ybWF0O1xuICBwdWJsaWMgbGVnZW5kUG9zaXRpb25zID0gUHJpbnRMZWdlbmRQb3NpdGlvbjtcbiAgcHVibGljIGlzUHJpbnRTZXJ2aWNlID0gdHJ1ZTtcblxuICBASW5wdXQoKSBkaXNhYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcblxuICBASW5wdXQoKVxuICBnZXQgaW1hZ2VGb3JtYXQoKTogUHJpbnRTYXZlSW1hZ2VGb3JtYXQge1xuICAgIHJldHVybiB0aGlzLmltYWdlRm9ybWF0RmllbGQudmFsdWU7XG4gIH1cbiAgc2V0IGltYWdlRm9ybWF0KHZhbHVlOiBQcmludFNhdmVJbWFnZUZvcm1hdCkge1xuICAgIHRoaXMuaW1hZ2VGb3JtYXRGaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCBQcmludFNhdmVJbWFnZUZvcm1hdC5KcGVnLCB7XG4gICAgICBvbmx5U2VsZjogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IG91dHB1dEZvcm1hdCgpOiBQcmludE91dHB1dEZvcm1hdCB7XG4gICAgcmV0dXJuIHRoaXMub3V0cHV0Rm9ybWF0RmllbGQudmFsdWU7XG4gIH1cbiAgc2V0IG91dHB1dEZvcm1hdCh2YWx1ZTogUHJpbnRPdXRwdXRGb3JtYXQpIHtcbiAgICB0aGlzLm91dHB1dEZvcm1hdEZpZWxkLnNldFZhbHVlKHZhbHVlIHx8IFByaW50T3V0cHV0Rm9ybWF0LlBkZiwge1xuICAgICAgb25seVNlbGY6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBwYXBlckZvcm1hdCgpOiBQcmludFBhcGVyRm9ybWF0IHtcbiAgICByZXR1cm4gdGhpcy5wYXBlckZvcm1hdEZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBwYXBlckZvcm1hdCh2YWx1ZTogUHJpbnRQYXBlckZvcm1hdCkge1xuICAgIHRoaXMucGFwZXJGb3JtYXRGaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCBQcmludFBhcGVyRm9ybWF0LkxldHRlciwge1xuICAgICAgb25seVNlbGY6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBvcmllbnRhdGlvbigpOiBQcmludE9yaWVudGF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5vcmllbnRhdGlvbkZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBvcmllbnRhdGlvbih2YWx1ZTogUHJpbnRPcmllbnRhdGlvbikge1xuICAgIHRoaXMub3JpZW50YXRpb25GaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSwge1xuICAgICAgb25seVNlbGY6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCByZXNvbHV0aW9uKCk6IFByaW50UmVzb2x1dGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x1dGlvbkZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCByZXNvbHV0aW9uKHZhbHVlOiBQcmludFJlc29sdXRpb24pIHtcbiAgICB0aGlzLnJlc29sdXRpb25GaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCAoJzk2JyBzYXRpc2ZpZXMgUHJpbnRSZXNvbHV0aW9uKSwge1xuICAgICAgb25seVNlbGY6IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBsZWdlbmRQb3NpdGlvbigpOiBQcmludExlZ2VuZFBvc2l0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5sZWdlbmRQb3NpdGlvbkZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBsZWdlbmRQb3NpdGlvbih2YWx1ZTogUHJpbnRMZWdlbmRQb3NpdGlvbikge1xuICAgIHRoaXMubGVnZW5kUG9zaXRpb25GaWVsZC5zZXRWYWx1ZSh2YWx1ZSB8fCBQcmludExlZ2VuZFBvc2l0aW9uLm5vbmUsIHtcbiAgICAgIG9ubHlTZWxmOiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50aXRsZUZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy50aXRsZUZpZWxkLnNldFZhbHVlKHZhbHVlLCB7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBzdWJ0aXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN1YnRpdGxlRmllbGQudmFsdWU7XG4gIH1cbiAgc2V0IHN1YnRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN1YnRpdGxlRmllbGQuc2V0VmFsdWUodmFsdWUsIHsgb25seVNlbGY6IHRydWUgfSk7XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IGNvbW1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb21tZW50RmllbGQudmFsdWU7XG4gIH1cbiAgc2V0IGNvbW1lbnQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuY29tbWVudEZpZWxkLnNldFZhbHVlKHZhbHVlLCB7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBzaG93UHJvamVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93UHJvamVjdGlvbkZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBzaG93UHJvamVjdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2hvd1Byb2plY3Rpb25GaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgc2hvd1NjYWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dTY2FsZUZpZWxkLnZhbHVlO1xuICB9XG4gIHNldCBzaG93U2NhbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNob3dTY2FsZUZpZWxkLnNldFZhbHVlKHZhbHVlLCB7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBzaG93TGVnZW5kKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dMZWdlbmRGaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgc2hvd0xlZ2VuZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2hvd0xlZ2VuZEZpZWxkLnNldFZhbHVlKHZhbHVlLCB7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IGRvWmlwRmlsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kb1ppcEZpbGVGaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgZG9aaXBGaWxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kb1ppcEZpbGVGaWVsZC5zZXRWYWx1ZSh2YWx1ZSwgeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBzaG93Tm9ydGgoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd05vcnRoQXJyb3dGaWVsZC52YWx1ZTtcbiAgfVxuICBzZXQgc2hvd05vcnRoKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG93Tm9ydGhBcnJvd0ZpZWxkLnNldFZhbHVlKHZhbHVlLCB7IG9ubHlTZWxmOiB0cnVlIH0pO1xuICB9XG5cbiAgZ2V0IG91dHB1dEZvcm1hdEZpZWxkKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkub3V0cHV0Rm9ybWF0IGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCBwYXBlckZvcm1hdEZpZWxkKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkucGFwZXJGb3JtYXQgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IGltYWdlRm9ybWF0RmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5pbWFnZUZvcm1hdCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBnZXQgb3JpZW50YXRpb25GaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLm9yaWVudGF0aW9uIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCByZXNvbHV0aW9uRmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5yZXNvbHV0aW9uIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCBjb21tZW50RmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5jb21tZW50IGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCBzaG93UHJvamVjdGlvbkZpZWxkKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkuc2hvd1Byb2plY3Rpb24gYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IHNob3dTY2FsZUZpZWxkKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkuc2hvd1NjYWxlIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCBzaG93TGVnZW5kRmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5zaG93TGVnZW5kIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCBkb1ppcEZpbGVGaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLmRvWmlwRmlsZSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBnZXQgc2hvd05vcnRoQXJyb3dGaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLnNob3dOb3J0aCBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBnZXQgdGl0bGVGaWVsZCgpIHtcbiAgICByZXR1cm4gKHRoaXMuZm9ybS5jb250cm9scyBhcyBhbnkpLnRpdGxlIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGdldCBzdWJ0aXRsZUZpZWxkKCkge1xuICAgIHJldHVybiAodGhpcy5mb3JtLmNvbnRyb2xzIGFzIGFueSkuc3VidGl0bGUgYXMgVW50eXBlZEZvcm1Db250cm9sO1xuICB9XG5cbiAgZ2V0IGxlZ2VuZFBvc2l0aW9uRmllbGQoKSB7XG4gICAgcmV0dXJuICh0aGlzLmZvcm0uY29udHJvbHMgYXMgYW55KS5sZWdlbmRQb3NpdGlvbiBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBAT3V0cHV0KCkgc3VibWl0OiBFdmVudEVtaXR0ZXI8UHJpbnRPcHRpb25zPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBtYXhMZW5ndGg6IG51bWJlciA9IDE4MDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBtZWRpYVNlcnZpY2U6IE1lZGlhU2VydmljZVxuICApIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgIHRpdGxlOiBbJycsIFtWYWxpZGF0b3JzLm1pbkxlbmd0aCgwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTMwKV1dLFxuICAgICAgc3VidGl0bGU6IFsnJywgW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDApLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMjApXV0sXG4gICAgICBjb21tZW50OiBbXG4gICAgICAgICcnLFxuICAgICAgICBbVmFsaWRhdG9ycy5taW5MZW5ndGgoMCksIFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubWF4TGVuZ3RoKV1cbiAgICAgIF0sXG4gICAgICBvdXRwdXRGb3JtYXQ6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHBhcGVyRm9ybWF0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBpbWFnZUZvcm1hdDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgcmVzb2x1dGlvbjogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgb3JpZW50YXRpb246IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGxlZ2VuZFBvc2l0aW9uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBzaG93UHJvamVjdGlvbjogZmFsc2UsXG4gICAgICBzaG93U2NhbGU6IGZhbHNlLFxuICAgICAgc2hvd0xlZ2VuZDogZmFsc2UsXG4gICAgICBkb1ppcEZpbGU6IFt7IGhpZGRlbjogdGhpcy5pc1ByaW50U2VydmljZSB9XSxcbiAgICAgIHNob3dOb3J0aEFycm93OiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5kb1ppcEZpbGVGaWVsZC5zZXRWYWx1ZShmYWxzZSk7XG4gICAgaWYgKHRoaXMubWVkaWFTZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgIHRoaXMucmVzb2x1dGlvbnMgPSB0aGlzLnJlc29sdXRpb25zLmZpbHRlcihcbiAgICAgICAgKHJlc29sdXRpb24pID0+IHJlc29sdXRpb24gIT09ICczMDAnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUZvcm1TdWJtaXQoZGF0YTogUHJpbnRPcHRpb25zLCBpc1ZhbGlkOiBib29sZWFuKSB7XG4gICAgZGF0YS5pc1ByaW50U2VydmljZSA9IHRoaXMuaXNQcmludFNlcnZpY2U7XG4gICAgaWYgKGlzVmFsaWQpIHtcbiAgICAgIHRoaXMuc3VibWl0LmVtaXQoZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlSW1hZ2VTYXZlUHJvcCgpIHtcbiAgICBpZiAodGhpcy5vdXRwdXRGb3JtYXRGaWVsZC52YWx1ZSA9PT0gJ0ltYWdlJykge1xuICAgICAgdGhpcy5pc1ByaW50U2VydmljZSA9IGZhbHNlO1xuICAgICAgdGhpcy5jb21tZW50RmllbGQuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICB0aGlzLmNvbW1lbnRGaWVsZC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNQcmludFNlcnZpY2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUNvbW1lbnRMZW5ndGgoKSB7XG4gICAgc3dpdGNoICh0aGlzLnBhcGVyRm9ybWF0KSB7XG4gICAgICBjYXNlIFByaW50UGFwZXJGb3JtYXQuQTA6XG4gICAgICAgIC8vIEEwLCBsYW5kc2NhcGUsIGxlbmd0aCA5MDAgfCBBMCwgcG9ydHJhaXQsIGNvbW1lbnQgbGVuZ3RoOiAgNjAwXG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID1cbiAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uID09PSBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSA/IDkwMCA6IDYwMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFByaW50UGFwZXJGb3JtYXQuQTE6XG4gICAgICAgIC8vIEExLCBsYW5kc2NhcGUsIGxlbmd0aCA2MDAgfCBBMSwgcG9ydHJhaXQsIGxlbmd0aCA0MDA7XG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID1cbiAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uID09PSBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSA/IDYwMCA6IDQwMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFByaW50UGFwZXJGb3JtYXQuQTI6XG4gICAgICAgIC8vIEEyLCBsYW5kc2NhcGUsIGxlbmd0aCA0MDAgfCBBMiwgcG9ydHJhaXQsIGxlbmd0aCAzMDA7XG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID1cbiAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uID09PSBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSA/IDQwMCA6IDMwMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFByaW50UGFwZXJGb3JtYXQuQTM6XG4gICAgICAgIC8vIEEzLCBsYW5kc2NhcGUsIGxlbmd0aCAzMDAgfCBBMywgcG9ydHJhaXQsIGxlbmd0aCAyMDA7XG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID1cbiAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uID09PSBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSA/IDMwMCA6IDIwMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFByaW50UGFwZXJGb3JtYXQuQTQ6XG4gICAgICAgIC8vIEE0LCBsYW5kc2NhcGUgbGVuZ3RoIDIwMCB8IEE0LCBwb3J0cmFpdCBsZW5ndGggMTIwO1xuICAgICAgICB0aGlzLm1heExlbmd0aCA9XG4gICAgICAgICAgdGhpcy5vcmllbnRhdGlvbiA9PT0gUHJpbnRPcmllbnRhdGlvbi5sYW5kc2NhcGUgPyAyMDAgOiAxMDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQcmludFBhcGVyRm9ybWF0LkE1OlxuICAgICAgICAvLyBBNSwgbGFuZHNjYXBlIGxlbmd0aCAxMjAgfCBBNSwgcG9ydHJhaXQgbGVuZ3RoIDgwO1xuICAgICAgICB0aGlzLm1heExlbmd0aCA9XG4gICAgICAgICAgdGhpcy5vcmllbnRhdGlvbiA9PT0gUHJpbnRPcmllbnRhdGlvbi5sYW5kc2NhcGUgPyAxMjAgOiA4MDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFByaW50UGFwZXJGb3JtYXQuTGV0dGVyOlxuICAgICAgICAvLyBsZXR0cmUsIGxhbmRzY2FwZSwgMTgwIHwgbGV0dHJlLCBwb3J0cmFpdCwgMTQwXG4gICAgICAgIHRoaXMubWF4TGVuZ3RoID1cbiAgICAgICAgICB0aGlzLm9yaWVudGF0aW9uID09PSBQcmludE9yaWVudGF0aW9uLmxhbmRzY2FwZSA/IDE4MCA6IDE0MDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBsZWdhbCwgbGFuZHNjYXBlLCAyMDAgfCBsZWdhbCwgcG9ydHJhaXQsIDE0MFxuICAgICAgICB0aGlzLm1heExlbmd0aCA9XG4gICAgICAgICAgdGhpcy5vcmllbnRhdGlvbiA9PT0gUHJpbnRPcmllbnRhdGlvbi5sYW5kc2NhcGUgPyAyMDAgOiAxNDA7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuY29tbWVudEZpZWxkLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubWF4TGVuZ3RoKV0pO1xuICAgIHRoaXMuY29tbWVudEZpZWxkLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxufVxuIiwiPGZvcm0gY2xhc3M9XCJpZ28tZm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5nZW8ucHJpbnRGb3JtLnRpdGxlJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnaWdvLmdlby5wcmludEZvcm0udGl0bGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIC8+XG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwidGl0bGVGaWVsZC5lcnJvcnM/Lm1heGxlbmd0aFwiPnt7XG4gICAgICAgICdpZ28uZ2VvLmZvcm1WYWxpZGF0aW9uLm1heExlbmd0aCdcbiAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgY29sdW1uOiAnaWdvLmdlby5wcmludEZvcm0udGl0bGUnIHwgdHJhbnNsYXRlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAxMzBcbiAgICAgICAgICAgICAgfVxuICAgICAgfX08L21hdC1lcnJvcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uZ2VvLnByaW50Rm9ybS5zdWJ0aXRsZScgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdWJ0aXRsZVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5nZW8ucHJpbnRGb3JtLnN1YnRpdGxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAvPlxuICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInN1YnRpdGxlRmllbGQuZXJyb3JzPy5tYXhsZW5ndGhcIj57e1xuICAgICAgICAnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5tYXhMZW5ndGgnXG4gICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIGNvbHVtbjogJ2lnby5nZW8ucHJpbnRGb3JtLnN1YnRpdGxlJyB8IHRyYW5zbGF0ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMTIwXG4gICAgICAgICAgICAgIH1cbiAgICAgIH19PC9tYXQtZXJyb3I+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJpZ28taW5wdXQtY29udGFpbmVyXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbD57eyAnaWdvLmdlby5wcmludEZvcm0uY29tbWVudCcgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb21tZW50XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnaWdvLmdlby5wcmludEZvcm0uY29tbWVudCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgLz5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJjb21tZW50RmllbGQuZXJyb3JzPy5tYXhsZW5ndGhcIj57e1xuICAgICAgICAnaWdvLmdlby5mb3JtVmFsaWRhdGlvbi5tYXhMZW5ndGgnXG4gICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIGNvbHVtbjogJ2lnby5nZW8ucHJpbnRGb3JtLmNvbW1lbnQnIHwgdHJhbnNsYXRlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBtYXhMZW5ndGhcbiAgICAgICAgICAgICAgfVxuICAgICAgfX08L21hdC1lcnJvcj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lciBzbGlkZS10b2dnbGUtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInByaW50LXNsaWRlLXRvZ2dsZS1jb250YWluZXJcIj5cbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgIGNsYXNzPVwicHJpbnQtb3B0aW9uXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2hvd1Byb2plY3Rpb25cIlxuICAgICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgICA+XG4gICAgICAgIHt7ICdpZ28uZ2VvLnByaW50Rm9ybS5zaG93UHJvamVjdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlXG4gICAgICAgIGNsYXNzPVwicHJpbnQtb3B0aW9uXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2hvd1NjYWxlXCJcbiAgICAgICAgW2xhYmVsUG9zaXRpb25dPVwiJ2JlZm9yZSdcIlxuICAgICAgPlxuICAgICAgICB7eyAnaWdvLmdlby5wcmludEZvcm0uc2hvd1NjYWxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgY2xhc3M9XCJwcmludC1vcHRpb25cIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkb1ppcEZpbGVcIlxuICAgICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiXG4gICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzUHJpbnRTZXJ2aWNlID8gJ25vbmUnIDogJydcIlxuICAgICAgPlxuICAgICAgICB7eyAnaWdvLmdlby5wcmludEZvcm0uZG9aaXBGaWxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgY2xhc3M9XCJwcmludC1vcHRpb25cIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzaG93Tm9ydGhBcnJvd1wiXG4gICAgICAgIFtsYWJlbFBvc2l0aW9uXT1cIidiZWZvcmUnXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2lnby5nZW8ucHJpbnRGb3JtLnNob3dOb3J0aEFycm93JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+e3tcbiAgICAgICAgJ2lnby5nZW8ucHJpbnRGb3JtLmxlZ2VuZFBvc2l0aW9uJyB8IHRyYW5zbGF0ZVxuICAgICAgfX08L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxlZ2VuZFBvc2l0aW9uXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnaWdvLmdlby5wcmludEZvcm0ubGVnZW5kUG9zaXRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1vcHRpb25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgbGVnZW5kUG9zaXRpb24gb2YgbGVnZW5kUG9zaXRpb25zIHwga2V5dmFsdWVcIlxuICAgICAgICAgIFt2YWx1ZV09XCJsZWdlbmRQb3NpdGlvbi5rZXlcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCIhWyduZXdwYWdlJywgJ25ld2ltYWdlJ10uaW5jbHVkZXMobGVnZW5kUG9zaXRpb24udmFsdWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAnaWdvLmdlby5wcmludEZvcm0ubGVnZW5kUG9zaXRpb25zLicgKyBsZWdlbmRQb3NpdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJbJ25ld3BhZ2UnLCAnbmV3aW1hZ2UnXS5pbmNsdWRlcyhsZWdlbmRQb3NpdGlvbi52YWx1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIChvdXRwdXRGb3JtYXQgPT09ICdQZGYnXG4gICAgICAgICAgICAgICAgPyAnaWdvLmdlby5wcmludEZvcm0ubGVnZW5kUG9zaXRpb25zLm5ld3BhZ2UnXG4gICAgICAgICAgICAgICAgOiAnaWdvLmdlby5wcmludEZvcm0ubGVnZW5kUG9zaXRpb25zLm5ld2ltYWdlJ1xuICAgICAgICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uZ2VvLnByaW50Rm9ybS5vdXRwdXRGb3JtYXQnIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cInRvZ2dsZUltYWdlU2F2ZVByb3AoKVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm91dHB1dEZvcm1hdFwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5nZW8ucHJpbnRGb3JtLm91dHB1dEZvcm1hdCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvdXRwdXRGb3JtYXQgb2Ygb3V0cHV0Rm9ybWF0cyB8IGtleXZhbHVlXCJcbiAgICAgICAgICBbdmFsdWVdPVwib3V0cHV0Rm9ybWF0LmtleVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBvdXRwdXRGb3JtYXQudmFsdWUgfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIlxuICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzUHJpbnRTZXJ2aWNlID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gID5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uZ2VvLnByaW50Rm9ybS5wYXBlckZvcm1hdCcgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlQ29tbWVudExlbmd0aCgpXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGFwZXJGb3JtYXRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdpZ28uZ2VvLnByaW50Rm9ybS5wYXBlckZvcm1hdCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwYXBlckZvcm1hdCBvZiBwYXBlckZvcm1hdHMgfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cInBhcGVyRm9ybWF0LmtleVwiXG4gICAgICAgID5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgJ2lnby5nZW8ucHJpbnRGb3JtLnBhcGVyRm9ybWF0cy4nICsgcGFwZXJGb3JtYXQudmFsdWUgfCB0cmFuc2xhdGVcbiAgICAgICAgICB9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiaWdvLWlucHV0LWNvbnRhaW5lclwiXG4gICAgW3N0eWxlLmRpc3BsYXldPVwiaXNQcmludFNlcnZpY2UgPyAnbm9uZScgOiAnYmxvY2snXCJcbiAgPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+e3sgJ2lnby5nZW8ucHJpbnRGb3JtLmltYWdlRm9ybWF0JyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW1hZ2VGb3JtYXRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdpZ28uZ2VvLnByaW50Rm9ybS5pbWFnZUZvcm1hdCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBpbWFnZUZvcm1hdCBvZiBpbWFnZUZvcm1hdHMgfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cImltYWdlRm9ybWF0LmtleVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBpbWFnZUZvcm1hdC52YWx1ZSB9fVxuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsXG4gICAgICAgID57eyAnaWdvLmdlby5wcmludEZvcm0ucmVzb2x1dGlvbicgfCB0cmFuc2xhdGUgfX0gKHt7XG4gICAgICAgICAgJ2lnby5nZW8ucHJpbnRGb3JtLnJlc29sdXRpb25Vbml0JyB8IHRyYW5zbGF0ZVxuICAgICAgICB9fSk8L21hdC1sYWJlbFxuICAgICAgPlxuICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVzb2x1dGlvblwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2lnby5nZW8ucHJpbnRGb3JtLnJlc29sdXRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHJlc29sdXRpb24gb2YgcmVzb2x1dGlvbnNcIiBbdmFsdWVdPVwicmVzb2x1dGlvblwiPlxuICAgICAgICAgIHt7IHJlc29sdXRpb24gfX1cbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXZcbiAgICBjbGFzcz1cImlnby1pbnB1dC1jb250YWluZXJcIlxuICAgIFtzdHlsZS5kaXNwbGF5XT1cImlzUHJpbnRTZXJ2aWNlID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gID5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPnt7ICdpZ28uZ2VvLnByaW50Rm9ybS5vcmllbnRhdGlvbicgfCB0cmFuc2xhdGUgfX08L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwiY2hhbmdlQ29tbWVudExlbmd0aCgpXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib3JpZW50YXRpb25cIlxuICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdpZ28uZ2VvLnByaW50Rm9ybS5vcmllbnRhdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8bWF0LW9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBvcmllbnRhdGlvbiBvZiBvcmllbnRhdGlvbnMgfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgW3ZhbHVlXT1cIm9yaWVudGF0aW9uLmtleVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnaWdvLmdlby5wcmludEZvcm0uJyArIG9yaWVudGF0aW9uLnZhbHVlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiaWdvLWZvcm0tYnV0dG9uLWdyb3VwIHByaW50LWJ1dHRvbi10b3AtcGFkZGluZ1wiPlxuICAgIDxidXR0b25cbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhZm9ybS52YWxpZCB8fCAoZGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICAgIChjbGljayk9XCJoYW5kbGVGb3JtU3VibWl0KGZvcm0udmFsdWUsIGZvcm0udmFsaWQpXCJcbiAgICA+XG4gICAgICB7eyAnaWdvLmdlby5wcmludEZvcm0uc2F2ZUJ0bicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -6,11 +6,11 @@ import * as i0 from "@angular/core";
6
6
  * @deprecated import the PrintComponent, PrintFormComponent directly
7
7
  */
8
8
  export class IgoPrintModule {
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoPrintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: IgoPrintModule, imports: [PrintComponent, PrintFormComponent], exports: [PrintComponent, PrintFormComponent] });
11
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoPrintModule, imports: [PrintComponent, PrintFormComponent] });
9
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoPrintModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.9", ngImport: i0, type: IgoPrintModule, imports: [PrintComponent, PrintFormComponent], exports: [PrintComponent, PrintFormComponent] });
11
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoPrintModule, imports: [PrintComponent, PrintFormComponent] });
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgoPrintModule, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: IgoPrintModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  imports: [PrintComponent, PrintFormComponent],
@@ -2,4 +2,4 @@ export * from './print.interface';
2
2
  export * from './print.service';
3
3
  export * from './print.type';
4
4
  export * from './geopdf';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9wcmludC9zaGFyZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wcmludC5pbnRlcmZhY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ByaW50LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3ByaW50LnR5cGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dlb3BkZic7XHJcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9wcmludC9zaGFyZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wcmludC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wcmludC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcHJpbnQudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2dlb3BkZic7XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcHJpbnQvc2hhcmVkL3ByaW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUHJpbnRMZWdlbmRQb3NpdGlvbixcbiAgUHJpbnRPcmllbnRhdGlvbixcbiAgUHJpbnRPdXRwdXRGb3JtYXQsXG4gIFByaW50UGFwZXJGb3JtYXQsXG4gIFByaW50UmVzb2x1dGlvbixcbiAgUHJpbnRTYXZlSW1hZ2VGb3JtYXRcbn0gZnJvbSAnLi9wcmludC50eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBQcmludE9wdGlvbnMge1xuICBvdXRwdXRGb3JtYXQ6IFByaW50T3V0cHV0Rm9ybWF0O1xuICBwYXBlckZvcm1hdDogUHJpbnRQYXBlckZvcm1hdDtcbiAgb3JpZW50YXRpb246IFByaW50T3JpZW50YXRpb247XG4gIHJlc29sdXRpb246IFByaW50UmVzb2x1dGlvbjtcbiAgbGVnZW5kUG9zaXRpb246IFByaW50TGVnZW5kUG9zaXRpb247XG4gIHRpdGxlPzogc3RyaW5nO1xuICBzdWJ0aXRsZT86IHN0cmluZztcbiAgY29tbWVudD86IHN0cmluZztcbiAgaW1hZ2VGb3JtYXQ/OiBQcmludFNhdmVJbWFnZUZvcm1hdDtcbiAgc2hvd1Byb2plY3Rpb24/OiBib29sZWFuO1xuICBzaG93TGVnZW5kPzogYm9vbGVhbjtcbiAgc2hvd1NjYWxlPzogYm9vbGVhbjtcbiAgaXNQcmludFNlcnZpY2U6IGJvb2xlYW47XG4gIGRvWmlwRmlsZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXh0UGRmU2l6ZUFuZE1hcmdpbiB7XG4gIGZvbnRTaXplOiBudW1iZXI7XG4gIG1hcmdpbkxlZnQ6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvcHJpbnQvc2hhcmVkL3ByaW50LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgUHJpbnRMZWdlbmRQb3NpdGlvbixcbiAgUHJpbnRPcmllbnRhdGlvbixcbiAgUHJpbnRPdXRwdXRGb3JtYXQsXG4gIFByaW50UGFwZXJGb3JtYXQsXG4gIFByaW50UmVzb2x1dGlvbixcbiAgUHJpbnRTYXZlSW1hZ2VGb3JtYXRcbn0gZnJvbSAnLi9wcmludC50eXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBQcmludE9wdGlvbnMge1xuICBvdXRwdXRGb3JtYXQ6IFByaW50T3V0cHV0Rm9ybWF0O1xuICBwYXBlckZvcm1hdDogUHJpbnRQYXBlckZvcm1hdDtcbiAgb3JpZW50YXRpb246IFByaW50T3JpZW50YXRpb247XG4gIHJlc29sdXRpb246IFByaW50UmVzb2x1dGlvbjtcbiAgbGVnZW5kUG9zaXRpb246IFByaW50TGVnZW5kUG9zaXRpb247XG4gIHRpdGxlPzogc3RyaW5nO1xuICBzdWJ0aXRsZT86IHN0cmluZztcbiAgY29tbWVudD86IHN0cmluZztcbiAgaW1hZ2VGb3JtYXQ/OiBQcmludFNhdmVJbWFnZUZvcm1hdDtcbiAgc2hvd1Byb2plY3Rpb24/OiBib29sZWFuO1xuICBzaG93TGVnZW5kPzogYm9vbGVhbjtcbiAgc2hvd1NjYWxlPzogYm9vbGVhbjtcbiAgaXNQcmludFNlcnZpY2U6IGJvb2xlYW47XG4gIGRvWmlwRmlsZTogYm9vbGVhbjtcbiAgc2hvd05vcnRoQXJyb3c/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRQZGZTaXplQW5kTWFyZ2luIHtcbiAgZm9udFNpemU6IG51bWJlcjtcbiAgbWFyZ2luTGVmdDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbn1cbiJdfQ==