@carto/kepler.gl 0.0.85 → 0.0.86-alpha.deck9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/action-wrapper.js +36 -41
- package/dist/actions/actions.js +15 -21
- package/dist/actions/identity-actions.js +14 -20
- package/dist/actions/index.js +16 -16
- package/dist/actions/map-state-actions.js +12 -18
- package/dist/actions/map-style-actions.js +30 -46
- package/dist/actions/provider-actions.js +49 -73
- package/dist/actions/ui-state-actions.js +73 -113
- package/dist/actions/vis-state-actions.js +152 -148
- package/dist/cloud-providers/index.js +6 -7
- package/dist/cloud-providers/provider.js +189 -279
- package/dist/components/bottom-widget.js +105 -117
- package/dist/components/common/action-panel.js +122 -74
- package/dist/components/common/animation-control/animation-control.js +69 -54
- package/dist/components/common/animation-control/animation-controller.js +134 -160
- package/dist/components/common/animation-control/animation-speed-slider.js +47 -54
- package/dist/components/common/animation-control/floating-time-display.js +120 -100
- package/dist/components/common/animation-control/playback-controls.js +147 -144
- package/dist/components/common/animation-control/speed-control.js +31 -23
- package/dist/components/common/checkbox.js +56 -70
- package/dist/components/common/color-legend.js +83 -110
- package/dist/components/common/data-table/button.js +31 -23
- package/dist/components/common/data-table/canvas.js +11 -5
- package/dist/components/common/data-table/cell-size.js +51 -61
- package/dist/components/common/data-table/grid.js +40 -59
- package/dist/components/common/data-table/index.js +464 -348
- package/dist/components/common/data-table/option-dropdown.js +50 -33
- package/dist/components/common/dataset-label.js +17 -13
- package/dist/components/common/error-boundary.js +27 -45
- package/dist/components/common/field-selector.js +99 -139
- package/dist/components/common/field-token.js +24 -9
- package/dist/components/common/file-uploader/file-drop.js +96 -115
- package/dist/components/common/file-uploader/file-upload-progress.js +68 -45
- package/dist/components/common/file-uploader/file-upload.js +215 -187
- package/dist/components/common/file-uploader/upload-button.js +35 -22
- package/dist/components/common/histogram-plot.js +47 -58
- package/dist/components/common/icons/add.js +14 -27
- package/dist/components/common/icons/anchor_window.js +16 -18
- package/dist/components/common/icons/arrow-down-alt.js +14 -27
- package/dist/components/common/icons/arrow-down-solid.js +14 -27
- package/dist/components/common/icons/arrow-down.js +14 -27
- package/dist/components/common/icons/arrow-left.js +17 -30
- package/dist/components/common/icons/arrow-right.js +14 -27
- package/dist/components/common/icons/arrow-up-alt.js +15 -28
- package/dist/components/common/icons/arrow-up-solid.js +14 -27
- package/dist/components/common/icons/arrow-up.js +14 -27
- package/dist/components/common/icons/base.js +39 -57
- package/dist/components/common/icons/bug.js +16 -29
- package/dist/components/common/icons/cancel.js +14 -27
- package/dist/components/common/icons/checkmark.js +18 -31
- package/dist/components/common/icons/chevron-right.js +20 -33
- package/dist/components/common/icons/clipboard.js +15 -28
- package/dist/components/common/icons/clock.js +16 -29
- package/dist/components/common/icons/close.js +19 -32
- package/dist/components/common/icons/code-alt.js +16 -29
- package/dist/components/common/icons/copy.js +18 -31
- package/dist/components/common/icons/crosshairs.js +16 -29
- package/dist/components/common/icons/cube-3d.js +18 -31
- package/dist/components/common/icons/cursor-click.js +18 -31
- package/dist/components/common/icons/data-table.js +15 -28
- package/dist/components/common/icons/db.js +15 -28
- package/dist/components/common/icons/delete.js +16 -29
- package/dist/components/common/icons/docs.js +30 -43
- package/dist/components/common/icons/drag-n-drop.js +16 -29
- package/dist/components/common/icons/draw-polygon.js +33 -46
- package/dist/components/common/icons/email.js +18 -31
- package/dist/components/common/icons/expand.js +16 -29
- package/dist/components/common/icons/eye-seen.js +16 -29
- package/dist/components/common/icons/eye-unseen.js +16 -29
- package/dist/components/common/icons/file-type.js +35 -19
- package/dist/components/common/icons/file.js +14 -27
- package/dist/components/common/icons/files.js +14 -26
- package/dist/components/common/icons/filter-funnel.js +14 -27
- package/dist/components/common/icons/free-window.js +16 -18
- package/dist/components/common/icons/gear.js +16 -29
- package/dist/components/common/icons/hash.js +14 -27
- package/dist/components/common/icons/histogram.js +15 -27
- package/dist/components/common/icons/index.js +156 -156
- package/dist/components/common/icons/info.js +25 -38
- package/dist/components/common/icons/layers.js +14 -27
- package/dist/components/common/icons/left-arrow.js +16 -29
- package/dist/components/common/icons/legend.js +14 -27
- package/dist/components/common/icons/line-chart.js +14 -27
- package/dist/components/common/icons/login.js +17 -30
- package/dist/components/common/icons/logout.js +16 -29
- package/dist/components/common/icons/map-icon.js +18 -32
- package/dist/components/common/icons/map.js +18 -32
- package/dist/components/common/icons/messages.js +14 -27
- package/dist/components/common/icons/minus.js +14 -27
- package/dist/components/common/icons/order-by-dataset.js +15 -17
- package/dist/components/common/icons/order-by-list.js +7 -9
- package/dist/components/common/icons/pause.js +14 -27
- package/dist/components/common/icons/picture.js +14 -26
- package/dist/components/common/icons/pin.js +17 -30
- package/dist/components/common/icons/play.js +14 -27
- package/dist/components/common/icons/polygon.js +35 -48
- package/dist/components/common/icons/rectangle.js +36 -49
- package/dist/components/common/icons/reduce.js +17 -30
- package/dist/components/common/icons/reset.js +14 -27
- package/dist/components/common/icons/rocket.js +14 -27
- package/dist/components/common/icons/save.js +16 -29
- package/dist/components/common/icons/save2.js +20 -33
- package/dist/components/common/icons/search.js +16 -29
- package/dist/components/common/icons/settings.js +16 -29
- package/dist/components/common/icons/share.js +14 -27
- package/dist/components/common/icons/split.js +42 -55
- package/dist/components/common/icons/square-select.js +16 -29
- package/dist/components/common/icons/swap-horizontal.js +18 -31
- package/dist/components/common/icons/table.js +14 -27
- package/dist/components/common/icons/trash.js +16 -29
- package/dist/components/common/icons/upload.js +14 -27
- package/dist/components/common/icons/vert-dots.js +52 -65
- package/dist/components/common/icons/vert-three-dots.js +27 -40
- package/dist/components/common/icons/warning.js +26 -39
- package/dist/components/common/image-preview.js +71 -33
- package/dist/components/common/info-helper.js +36 -29
- package/dist/components/common/item-selector/accessor.js +7 -13
- package/dist/components/common/item-selector/chickleted-input.js +72 -56
- package/dist/components/common/item-selector/dropdown-list.js +182 -214
- package/dist/components/common/item-selector/item-selector-submenu.js +34 -55
- package/dist/components/common/item-selector/item-selector.js +183 -194
- package/dist/components/common/item-selector/typeahead.js +236 -248
- package/dist/components/common/line-chart.js +80 -58
- package/dist/components/common/loading-spinner.js +46 -31
- package/dist/components/common/logo.js +61 -48
- package/dist/components/common/map-layer-selector.js +31 -25
- package/dist/components/common/modal.js +167 -106
- package/dist/components/common/portaled.js +169 -189
- package/dist/components/common/progress-bar.js +27 -24
- package/dist/components/common/range-brush.js +176 -215
- package/dist/components/common/range-plot.js +52 -63
- package/dist/components/common/range-slider.js +206 -231
- package/dist/components/common/slider/mouse-event.js +59 -66
- package/dist/components/common/slider/slider-bar-handle.js +51 -61
- package/dist/components/common/slider/slider-handle.js +127 -102
- package/dist/components/common/slider/slider.js +143 -162
- package/dist/components/common/styled-components.js +518 -256
- package/dist/components/common/switch.js +11 -11
- package/dist/components/common/time-range-slider-time-title.js +49 -32
- package/dist/components/common/time-range-slider.js +56 -45
- package/dist/components/common/time-slider-marker.js +71 -52
- package/dist/components/common/tippy-tooltip.js +89 -59
- package/dist/components/common/toolbar-item.js +53 -45
- package/dist/components/common/toolbar.js +24 -18
- package/dist/components/common/vertical-toolbar.js +13 -6
- package/dist/components/container.js +87 -119
- package/dist/components/context.js +6 -8
- package/dist/components/editor/constants.js +4 -4
- package/dist/components/editor/editor.js +122 -157
- package/dist/components/editor/feature-action-panel.js +52 -59
- package/dist/components/editor/feature-styles.js +46 -29
- package/dist/components/editor/handle-style.js +38 -29
- package/dist/components/filters/components.js +8 -4
- package/dist/components/filters/filter-panels/filter-panel-with-field-select.js +33 -43
- package/dist/components/filters/filter-panels/multi-select-filter-panel.js +20 -21
- package/dist/components/filters/filter-panels/new-filter-panel.js +24 -31
- package/dist/components/filters/filter-panels/polygon-filter-panel.js +26 -31
- package/dist/components/filters/filter-panels/range-filter-panel.js +20 -21
- package/dist/components/filters/filter-panels/single-select-filter-panel.js +20 -21
- package/dist/components/filters/filter-panels/time-range-filter-panel.js +28 -31
- package/dist/components/filters/index.js +10 -10
- package/dist/components/filters/multi-select-filter.js +11 -9
- package/dist/components/filters/polygon-filter.js +26 -41
- package/dist/components/filters/range-filter.js +9 -7
- package/dist/components/filters/single-select-filter.js +11 -13
- package/dist/components/filters/time-range-filter.js +16 -14
- package/dist/components/filters/time-widget.js +125 -84
- package/dist/components/geocoder/geocoder.js +158 -177
- package/dist/components/geocoder-panel.js +66 -87
- package/dist/components/index.js +328 -329
- package/dist/components/injector.js +44 -63
- package/dist/components/kepler-gl.js +325 -361
- package/dist/components/map/coordinate-info.js +18 -16
- package/dist/components/map/layer-hover-info.js +108 -86
- package/dist/components/map/layer-selector-panel.js +50 -48
- package/dist/components/map/locale-panel.js +38 -44
- package/dist/components/map/map-control-panel.js +70 -47
- package/dist/components/map/map-control-toolbar.js +9 -6
- package/dist/components/map/map-control-tooltip.js +10 -8
- package/dist/components/map/map-control.js +35 -27
- package/dist/components/map/map-draw-panel.js +38 -48
- package/dist/components/map/map-legend-panel.js +47 -50
- package/dist/components/map/map-legend.js +133 -116
- package/dist/components/map/map-popover.js +155 -100
- package/dist/components/map/split-map-button.js +30 -34
- package/dist/components/map/toggle-3d-button.js +25 -27
- package/dist/components/map-container.js +313 -359
- package/dist/components/maps-layout.js +16 -26
- package/dist/components/modal-container.js +359 -355
- package/dist/components/modals/add-map-style-modal.js +233 -194
- package/dist/components/modals/cloud-tile.js +96 -67
- package/dist/components/modals/data-table-modal.js +155 -152
- package/dist/components/modals/delete-data-modal.js +20 -20
- package/dist/components/modals/error-display.js +9 -7
- package/dist/components/modals/export-data-modal.js +118 -140
- package/dist/components/modals/export-image-modal.js +82 -69
- package/dist/components/modals/export-map-modal/components.js +20 -18
- package/dist/components/modals/export-map-modal/export-html-map.js +82 -74
- package/dist/components/modals/export-map-modal/export-json-map.js +65 -45
- package/dist/components/modals/export-map-modal/export-map-modal.js +42 -47
- package/dist/components/modals/image-modal-container.js +20 -21
- package/dist/components/modals/load-data-modal.js +28 -30
- package/dist/components/modals/load-storage-map.js +277 -178
- package/dist/components/modals/loading-dialog.js +41 -19
- package/dist/components/modals/modal-dialog.js +4 -6
- package/dist/components/modals/modal-tabs.js +83 -48
- package/dist/components/modals/overwrite-map-modal.js +41 -30
- package/dist/components/modals/provider-modal-container.js +23 -42
- package/dist/components/modals/save-map-modal.js +107 -83
- package/dist/components/modals/share-map-modal.js +101 -95
- package/dist/components/modals/status-panel.js +63 -43
- package/dist/components/modals/storage-map-viewer.js +133 -70
- package/dist/components/notification-panel/notification-item.js +94 -97
- package/dist/components/notification-panel.js +35 -43
- package/dist/components/performance.js +49 -53
- package/dist/components/plot-container.js +151 -169
- package/dist/components/side-panel/cloud-storage-dropdown.js +13 -15
- package/dist/components/side-panel/common/dataset-info.js +16 -12
- package/dist/components/side-panel/common/dataset-tag.js +48 -27
- package/dist/components/side-panel/common/dataset-title.js +119 -116
- package/dist/components/side-panel/common/source-data-catalog.js +31 -32
- package/dist/components/side-panel/common/source-data-selector.js +52 -77
- package/dist/components/side-panel/custom-panel.js +6 -8
- package/dist/components/side-panel/filter-manager.js +48 -62
- package/dist/components/side-panel/filter-panel/filter-panel-header.js +35 -25
- package/dist/components/side-panel/filter-panel/filter-panel.js +46 -64
- package/dist/components/side-panel/interaction-manager.js +20 -18
- package/dist/components/side-panel/interaction-panel/brush-config.js +17 -17
- package/dist/components/side-panel/interaction-panel/interaction-panel.js +76 -95
- package/dist/components/side-panel/interaction-panel/tooltip-config/tooltip-chicklet.js +118 -143
- package/dist/components/side-panel/interaction-panel/tooltip-config.js +95 -76
- package/dist/components/side-panel/layer-manager.js +105 -115
- package/dist/components/side-panel/layer-panel/add-layer-button.js +92 -54
- package/dist/components/side-panel/layer-panel/color-dimension-scale-selector.js +5 -5
- package/dist/components/side-panel/layer-panel/color-palette.js +50 -37
- package/dist/components/side-panel/layer-panel/color-range-selector.js +196 -207
- package/dist/components/side-panel/layer-panel/color-selector.js +104 -110
- package/dist/components/side-panel/layer-panel/column-selector.js +34 -22
- package/dist/components/side-panel/layer-panel/custom-markers-config-group.js +4 -4
- package/dist/components/side-panel/layer-panel/custom-palette.js +248 -205
- package/dist/components/side-panel/layer-panel/custom-picker.js +51 -69
- package/dist/components/side-panel/layer-panel/dataset-layer-group.js +37 -42
- package/dist/components/side-panel/layer-panel/dataset-layer-section.js +31 -27
- package/dist/components/side-panel/layer-panel/dataset-section.js +45 -35
- package/dist/components/side-panel/layer-panel/dimension-scale-selector.js +14 -13
- package/dist/components/side-panel/layer-panel/hex-column-config.js +32 -55
- package/dist/components/side-panel/layer-panel/layer-aggregation-resolution.js +5 -5
- package/dist/components/side-panel/layer-panel/layer-column-config.js +42 -46
- package/dist/components/side-panel/layer-panel/layer-config-group.js +178 -144
- package/dist/components/side-panel/layer-panel/layer-configurator.js +826 -830
- package/dist/components/side-panel/layer-panel/layer-list.js +101 -94
- package/dist/components/side-panel/layer-panel/layer-panel-header.js +124 -82
- package/dist/components/side-panel/layer-panel/layer-panel.js +111 -105
- package/dist/components/side-panel/layer-panel/layer-type-dropdown-list.js +67 -58
- package/dist/components/side-panel/layer-panel/layer-type-list-item.js +47 -32
- package/dist/components/side-panel/layer-panel/layer-type-selector.js +30 -41
- package/dist/components/side-panel/layer-panel/layer-visibility-by-zoom.js +42 -43
- package/dist/components/side-panel/layer-panel/panel-view-list-toggle.js +55 -57
- package/dist/components/side-panel/layer-panel/single-color-palette.js +48 -33
- package/dist/components/side-panel/layer-panel/text-label-panel.js +81 -116
- package/dist/components/side-panel/layer-panel/vis-config-by-field-selector.js +88 -102
- package/dist/components/side-panel/layer-panel/vis-config-slider.js +99 -85
- package/dist/components/side-panel/layer-panel/vis-config-switch.js +38 -29
- package/dist/components/side-panel/map-manager.js +70 -89
- package/dist/components/side-panel/map-style-panel/map-layer-selector.js +72 -60
- package/dist/components/side-panel/map-style-panel/map-style-selector.js +64 -42
- package/dist/components/side-panel/panel-dropdown.js +21 -37
- package/dist/components/side-panel/panel-header-action.js +60 -65
- package/dist/components/side-panel/panel-header.js +165 -184
- package/dist/components/side-panel/panel-tab.js +35 -29
- package/dist/components/side-panel/panel-title.js +15 -18
- package/dist/components/side-panel/panel-toggle.js +30 -31
- package/dist/components/side-panel/side-bar.js +100 -91
- package/dist/components/side-panel.js +108 -123
- package/dist/connect/keplergl-connect.js +17 -26
- package/dist/connect/with-local-selector.js +31 -63
- package/dist/constants/action-types.js +113 -115
- package/dist/constants/color-palette.js +14 -16
- package/dist/constants/color-ranges.js +23 -28
- package/dist/constants/custom-color-ranges.js +12 -12
- package/dist/constants/default-settings.js +323 -254
- package/dist/constants/index.js +63 -63
- package/dist/constants/keyevent.js +4 -4
- package/dist/constants/tooltip.js +5 -5
- package/dist/constants/user-feedbacks.js +9 -5
- package/dist/constants/user-guides.js +10 -10
- package/dist/deckgl-layers/3d-building-layer/3d-building-layer.js +37 -63
- package/dist/deckgl-layers/3d-building-layer/3d-building-utils.js +52 -56
- package/dist/deckgl-layers/cluster-layer/cluster-layer.js +165 -168
- package/dist/deckgl-layers/column-layer/enhanced-column-layer.js +24 -43
- package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.d.ts +2 -2
- package/dist/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.js +27 -40
- package/dist/deckgl-layers/hexagon-layer/enhanced-hexagon-layer.js +27 -40
- package/dist/deckgl-layers/layer-utils/cluster-utils.js +60 -68
- package/dist/deckgl-layers/layer-utils/cpu-aggregator.d.ts +4 -4
- package/dist/deckgl-layers/layer-utils/cpu-aggregator.js +281 -282
- package/dist/deckgl-layers/layer-utils/shader-utils.js +2 -2
- package/dist/deckgl-layers/line-layer/line-layer.js +62 -70
- package/dist/deckgl-layers/svg-icon-layer/scatterplot-icon-layer.js +37 -51
- package/dist/deckgl-layers/svg-icon-layer/svg-icon-layer.js +65 -85
- package/dist/index.js +15 -16
- package/dist/layers/aggregation-layer.js +299 -331
- package/dist/layers/arc-layer/arc-layer-icon.js +27 -41
- package/dist/layers/arc-layer/arc-layer.js +174 -201
- package/dist/layers/base-layer.d.ts +1 -1
- package/dist/layers/base-layer.js +1371 -1544
- package/dist/layers/cluster-layer/cluster-layer-icon.js +30 -44
- package/dist/layers/cluster-layer/cluster-layer.js +89 -103
- package/dist/layers/default-layer-icon.js +39 -53
- package/dist/layers/geojson-layer/geojson-layer-icon.js +42 -55
- package/dist/layers/geojson-layer/geojson-layer.js +292 -353
- package/dist/layers/geojson-layer/geojson-utils.js +31 -36
- package/dist/layers/grid-layer/grid-layer-icon.js +87 -100
- package/dist/layers/grid-layer/grid-layer.js +51 -61
- package/dist/layers/grid-layer/grid-utils.js +13 -9
- package/dist/layers/h3-hexagon-layer/h3-hexagon-layer-icon.js +21 -35
- package/dist/layers/h3-hexagon-layer/h3-hexagon-layer.js +225 -260
- package/dist/layers/h3-hexagon-layer/h3-utils.js +16 -16
- package/dist/layers/heatmap-layer/heatmap-layer-icon.js +39 -52
- package/dist/layers/heatmap-layer/heatmap-layer.js +140 -171
- package/dist/layers/hexagon-layer/hexagon-layer-icon.js +51 -64
- package/dist/layers/hexagon-layer/hexagon-layer.js +49 -63
- package/dist/layers/hexagon-layer/hexagon-utils.js +15 -14
- package/dist/layers/icon-layer/icon-info-modal.js +82 -75
- package/dist/layers/icon-layer/icon-layer-icon.js +24 -37
- package/dist/layers/icon-layer/icon-layer.js +274 -303
- package/dist/layers/index.js +43 -29
- package/dist/layers/layer-factory.js +25 -41
- package/dist/layers/layer-text-label.js +21 -23
- package/dist/layers/layer-update.js +16 -18
- package/dist/layers/line-layer/line-layer-icon.js +30 -43
- package/dist/layers/line-layer/line-layer.js +123 -142
- package/dist/layers/mapbox-utils.js +61 -62
- package/dist/layers/mapboxgl-layer.js +124 -169
- package/dist/layers/point-layer/point-layer-icon.js +45 -59
- package/dist/layers/point-layer/point-layer.d.ts +2 -2
- package/dist/layers/point-layer/point-layer.js +355 -386
- package/dist/layers/s2-geometry-layer/s2-geometry-layer.js +208 -238
- package/dist/layers/s2-geometry-layer/s2-layer-icon.js +21 -35
- package/dist/layers/s2-geometry-layer/s2-utils.js +9 -8
- package/dist/layers/scenegraph-layer/scenegraph-info-modal.js +24 -25
- package/dist/layers/scenegraph-layer/scenegraph-layer-icon.js +102 -115
- package/dist/layers/scenegraph-layer/scenegraph-layer.js +148 -172
- package/dist/layers/trip-layer/trip-info-modal.js +50 -30
- package/dist/layers/trip-layer/trip-layer-icon.js +40 -53
- package/dist/layers/trip-layer/trip-layer.js +239 -307
- package/dist/layers/trip-layer/trip-utils.js +34 -50
- package/dist/layers/types.js +2 -2
- package/dist/localization/formatted-message.js +8 -10
- package/dist/localization/index.js +7 -7
- package/dist/localization/locales.js +6 -9
- package/dist/localization/messages.js +13 -10
- package/dist/localization/translations/ca.js +11 -13
- package/dist/localization/translations/cn.js +11 -13
- package/dist/localization/translations/en.js +11 -13
- package/dist/localization/translations/es.js +11 -13
- package/dist/localization/translations/fi.js +11 -13
- package/dist/localization/translations/ja.js +11 -13
- package/dist/localization/translations/pt.js +11 -13
- package/dist/localization/translations/ru.js +11 -13
- package/dist/middleware/index.js +3 -5
- package/dist/processors/data-processor.js +164 -201
- package/dist/processors/file-handler.js +111 -233
- package/dist/processors/index.js +4 -4
- package/dist/reducers/combined-updaters.js +41 -41
- package/dist/reducers/composer-helpers.js +20 -45
- package/dist/reducers/composers.js +9 -8
- package/dist/reducers/core.js +31 -35
- package/dist/reducers/index.js +21 -22
- package/dist/reducers/map-state-updaters.js +65 -47
- package/dist/reducers/map-state.js +23 -15
- package/dist/reducers/map-style-updaters.js +233 -159
- package/dist/reducers/map-style.js +30 -16
- package/dist/reducers/provider-state-updaters.js +217 -229
- package/dist/reducers/provider-state.js +29 -17
- package/dist/reducers/root.js +86 -58
- package/dist/reducers/ui-state-updaters.js +337 -218
- package/dist/reducers/ui-state.js +45 -16
- package/dist/reducers/vis-state-merger.js +205 -209
- package/dist/reducers/vis-state-selectors.js +5 -19
- package/dist/reducers/vis-state-updaters.js +1003 -876
- package/dist/reducers/vis-state.js +75 -16
- package/dist/schemas/dataset-schema.js +84 -108
- package/dist/schemas/index.js +28 -29
- package/dist/schemas/map-state-schema.js +21 -18
- package/dist/schemas/map-style-schema.js +47 -55
- package/dist/schemas/schema-manager.js +147 -161
- package/dist/schemas/schema-utils.js +8 -9
- package/dist/schemas/schema.js +72 -87
- package/dist/schemas/versions.js +3 -3
- package/dist/schemas/vis-state-schema.js +441 -583
- package/dist/styles/base.js +1217 -1021
- package/dist/styles/index.js +3 -3
- package/dist/styles/media-breakpoints.js +23 -18
- package/dist/tasks/tasks.js +36 -39
- package/dist/templates/export-map-html.js +233 -4
- package/dist/utils/aggregate-utils.js +13 -16
- package/dist/utils/color-utils.js +29 -37
- package/dist/utils/custom-scales.js +3 -3
- package/dist/utils/data-scale-utils.js +6 -13
- package/dist/utils/data-utils.js +60 -83
- package/dist/utils/dataset-utils.js +48 -77
- package/dist/utils/dom-to-image.js +108 -163
- package/dist/utils/dom-utils.js +88 -105
- package/dist/utils/export-utils.js +116 -103
- package/dist/utils/filter-utils.js +379 -374
- package/dist/utils/gl-utils.js +16 -15
- package/dist/utils/gpu-filter-utils.js +54 -73
- package/dist/utils/index.js +47 -48
- package/dist/utils/interaction-utils.js +53 -46
- package/dist/utils/layer-utils.js +89 -78
- package/dist/utils/locale-utils.js +24 -16
- package/dist/utils/map-style-utils/mapbox-gl-style-editor.js +67 -76
- package/dist/utils/map-style-utils/mapbox-utils.js +4 -3
- package/dist/utils/mapbox-utils.js +3 -4
- package/dist/utils/notifications-utils.js +33 -38
- package/dist/utils/observe-dimensions.js +42 -54
- package/dist/utils/projection-utils.js +14 -11
- package/dist/utils/split-map-utils.js +30 -33
- package/dist/utils/table-utils/data-container-utils.js +15 -14
- package/dist/utils/table-utils/data-row.js +58 -65
- package/dist/utils/table-utils/index.js +2 -2
- package/dist/utils/table-utils/indexed-data-container.js +105 -173
- package/dist/utils/table-utils/kepler-table.js +362 -386
- package/dist/utils/table-utils/row-data-container.js +99 -164
- package/dist/utils/utils.js +29 -30
- package/package.json +21 -21
- package/src/deckgl-layers/grid-layer/enhanced-cpu-grid-layer.ts +2 -2
- package/src/deckgl-layers/layer-utils/cpu-aggregator.ts +21 -11
- package/src/layers/base-layer.ts +17 -10
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.ordinalFieldScaleFunctions = exports.ordinalFieldAggrScaleFunctions = exports.notSupportedScaleOpts = exports.notSupportAggrOpts = exports.linearFieldScaleFunctions = exports.linearFieldAggrScaleFunctions = exports.ZOOM_LEVEL_LIMITS = exports.UNKNOWN_COLOR = exports.TwoXResolutionOption = exports.TRIP_POINT_FIELDS = exports.TRIP_ARC_FIELDS = exports.THROTTLE_NOTIFICATION_TIME = exports.THEME = exports.TABLE_OPTION_LIST = exports.TABLE_OPTION = exports.SixteenByNineRatioOption = exports.ScreenRatioOption = exports.SPEED_CONTROL_STEP = exports.SPEED_CONTROL_RANGE = exports.SORT_ORDER = exports.SIDEBAR_PANELS = exports.SHARE_MAP_ID = exports.SCALE_TYPES = exports.SCALE_FUNC = exports.SAVE_MAP_ID = exports.RESOLUTIONS = exports.PANELS = exports.OneXResolutionOption = exports.OVERWRITE_MAP_ID = exports.NO_VALUE_COLOR = exports.MAX_GPU_FILTERS = exports.MAX_DEFAULT_TOOLTIPS = exports.MASK_LAYER_ID = exports.MAP_THUMBNAIL_DIMENSION = exports.MAP_INFO_CHARACTER = exports.MAP_CONTROLS = exports.LOADING_METHODS = exports.LAYER_BLENDINGS = exports.KEPLER_GL_WEBSITE = exports.KEPLER_GL_VERSION = exports.KEPLER_GL_NAME = exports.ICON_PREFIX = exports.ICON_FIELDS = exports.HIGHLIGH_COLOR_3D = exports.GEOJSON_FIELDS = exports.GEOCODER_LAYER_ID = exports.GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_COLOR = exports.GEOCODER_GEO_OFFSET = exports.GEOCODER_DATASET_NAME = exports.FourByThreeRatioOption = exports.FPS = exports.FILTER_TYPES = exports.FILED_TYPE_DISPLAY = exports.FIELD_TYPES_AGGREGATORS = exports.FIELD_OPTS = exports.FIELD_COLORS = exports.FIELD_AGGREGATORS = exports.EXPORT_MAP_ID = exports.EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMATS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIOS = exports.EXPORT_IMAGE_ID = exports.EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODES = exports.EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE = exports.EXPORT_DATA_ID = exports.EDITOR_MODES = exports.EDITOR_AVAILABLE_LAYERS = exports.DIMENSIONS = exports.DELETE_DATA_ID = exports.DEFAULT_UUID_COUNT = exports.DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TIME_FORMAT = exports.DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_MAP_STYLES = exports.DEFAULT_MAPBOX_API_URL = exports.DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_COLOR = exports.DEFAULT_AGGREGATION = exports.DATA_TABLE_ID = exports.DATASET_FORMATS = exports.CustomRatioOption = exports.CLOUDFRONT = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALES = exports.BASE_SPEED = exports.ANIMATION_WINDOW = exports.ALL_FIELD_TYPES = exports.AGGREGATION_TYPES = exports.ADD_MAP_STYLE_ID = exports.ADD_DATA_ID = exports.ACTION_PREFIX = void 0;
|
|
8
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
8
|
var _keymirror = _interopRequireDefault(require("keymirror"));
|
|
10
9
|
var _reactMapGlDraw = require("react-map-gl-draw");
|
|
11
10
|
var _d3Scale = require("d3-scale");
|
|
@@ -14,8 +13,7 @@ var _utils = require("../utils/utils");
|
|
|
14
13
|
var _customScales = require("../utils/custom-scales");
|
|
15
14
|
var _tooltip = require("./tooltip");
|
|
16
15
|
var _types = require("../layers/types");
|
|
17
|
-
|
|
18
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } // Copyright (c) 2022 Uber Technologies, Inc.
|
|
16
|
+
// Copyright (c) 2022 Uber Technologies, Inc.
|
|
19
17
|
//
|
|
20
18
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
21
19
|
// of this software and associated documentation files (the "Software"), to deal
|
|
@@ -34,10 +32,11 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
34
32
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
35
33
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
36
34
|
// THE SOFTWARE.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
|
|
36
|
+
const ACTION_PREFIX = exports.ACTION_PREFIX = '@@kepler.gl/';
|
|
37
|
+
const CLOUDFRONT = exports.CLOUDFRONT = 'https://d1a3f4spazzrp4.cloudfront.net/kepler.gl';
|
|
38
|
+
const ICON_PREFIX = exports.ICON_PREFIX = `${CLOUDFRONT}/geodude`;
|
|
39
|
+
const DEFAULT_MAPBOX_API_URL = exports.DEFAULT_MAPBOX_API_URL = 'https://api.mapbox.com';
|
|
41
40
|
|
|
42
41
|
// Modal Ids
|
|
43
42
|
/**
|
|
@@ -46,79 +45,79 @@ var DEFAULT_MAPBOX_API_URL = exports.DEFAULT_MAPBOX_API_URL = 'https://api.mapbo
|
|
|
46
45
|
* @type {string}
|
|
47
46
|
* @public
|
|
48
47
|
*/
|
|
49
|
-
|
|
48
|
+
const DATA_TABLE_ID = exports.DATA_TABLE_ID = 'dataTable';
|
|
50
49
|
/**
|
|
51
50
|
* Modal id: delete dataset confirm dialog
|
|
52
51
|
* @constant
|
|
53
52
|
* @type {string}
|
|
54
53
|
* @public
|
|
55
54
|
*/
|
|
56
|
-
|
|
55
|
+
const DELETE_DATA_ID = exports.DELETE_DATA_ID = 'deleteData';
|
|
57
56
|
/**
|
|
58
57
|
* Modal id: add data modal
|
|
59
58
|
* @constant
|
|
60
59
|
* @type {string}
|
|
61
60
|
* @public
|
|
62
61
|
*/
|
|
63
|
-
|
|
62
|
+
const ADD_DATA_ID = exports.ADD_DATA_ID = 'addData';
|
|
64
63
|
/**
|
|
65
64
|
* Modal id: export image modal
|
|
66
65
|
* @constant
|
|
67
66
|
* @type {string}
|
|
68
67
|
* @public
|
|
69
68
|
*/
|
|
70
|
-
|
|
69
|
+
const EXPORT_IMAGE_ID = exports.EXPORT_IMAGE_ID = 'exportImage';
|
|
71
70
|
/**
|
|
72
71
|
* Modal id: export data modal
|
|
73
72
|
* @constant
|
|
74
73
|
* @type {string}
|
|
75
74
|
* @public
|
|
76
75
|
*/
|
|
77
|
-
|
|
76
|
+
const EXPORT_DATA_ID = exports.EXPORT_DATA_ID = 'exportData';
|
|
78
77
|
/**
|
|
79
78
|
* Modal id: add custom map style modal
|
|
80
79
|
* @constant
|
|
81
80
|
* @type {string}
|
|
82
81
|
* @public
|
|
83
82
|
*/
|
|
84
|
-
|
|
83
|
+
const ADD_MAP_STYLE_ID = exports.ADD_MAP_STYLE_ID = 'addMapStyle';
|
|
85
84
|
/**
|
|
86
85
|
* Modal id: export map modal
|
|
87
86
|
* @constant
|
|
88
87
|
* @type {string}
|
|
89
88
|
* @public
|
|
90
89
|
*/
|
|
91
|
-
|
|
90
|
+
const EXPORT_MAP_ID = exports.EXPORT_MAP_ID = 'exportMap';
|
|
92
91
|
/**
|
|
93
92
|
* Modal id: save map modal
|
|
94
93
|
* @constant
|
|
95
94
|
* @type {string}
|
|
96
95
|
* @public
|
|
97
96
|
*/
|
|
98
|
-
|
|
97
|
+
const SAVE_MAP_ID = exports.SAVE_MAP_ID = 'saveMap';
|
|
99
98
|
/**
|
|
100
99
|
* Modal id: confirm to overwrite saved map
|
|
101
100
|
* @constant
|
|
102
101
|
* @type {string}
|
|
103
102
|
* @public
|
|
104
103
|
*/
|
|
105
|
-
|
|
104
|
+
const OVERWRITE_MAP_ID = exports.OVERWRITE_MAP_ID = 'overwriteMap';
|
|
106
105
|
/**
|
|
107
106
|
* Modal id: share map url modal
|
|
108
107
|
* @constant
|
|
109
108
|
* @type {string}
|
|
110
109
|
* @public
|
|
111
110
|
*/
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
const SHARE_MAP_ID = exports.SHARE_MAP_ID = 'shareMap';
|
|
112
|
+
const KEPLER_GL_NAME = exports.KEPLER_GL_NAME = 'kepler.gl';
|
|
114
113
|
|
|
115
114
|
// __PACKAGE_VERSION__ is automatically injected by Babel/Webpack during the building process
|
|
116
115
|
// Since we are injecting this during the build process with babel
|
|
117
116
|
// while developing VERSION is not defined, we capture the exception and return
|
|
118
117
|
// an empty string which will allow us to retrieve the latest umd version
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
const KEPLER_GL_VERSION = exports.KEPLER_GL_VERSION = "0.0.86-alpha.deck9.1";
|
|
119
|
+
const KEPLER_GL_WEBSITE = exports.KEPLER_GL_WEBSITE = 'http://kepler.gl/';
|
|
120
|
+
const DIMENSIONS = exports.DIMENSIONS = {
|
|
122
121
|
sidePanel: {
|
|
123
122
|
width: 300,
|
|
124
123
|
margin: {
|
|
@@ -152,12 +151,12 @@ var DIMENSIONS = exports.DIMENSIONS = {
|
|
|
152
151
|
* const Map = () => <KeplerGl theme={THEME.light} id="map"/>
|
|
153
152
|
* ```
|
|
154
153
|
*/
|
|
155
|
-
|
|
154
|
+
const THEME = exports.THEME = (0, _keymirror.default)({
|
|
156
155
|
light: null,
|
|
157
156
|
dark: null,
|
|
158
157
|
base: null
|
|
159
158
|
});
|
|
160
|
-
|
|
159
|
+
const SIDEBAR_PANELS = exports.SIDEBAR_PANELS = [{
|
|
161
160
|
id: 'layer',
|
|
162
161
|
label: 'sidebar.panels.layer',
|
|
163
162
|
iconComponent: _icons.Layers,
|
|
@@ -180,103 +179,113 @@ var SIDEBAR_PANELS = exports.SIDEBAR_PANELS = [{
|
|
|
180
179
|
}];
|
|
181
180
|
|
|
182
181
|
// backward compatibility
|
|
183
|
-
|
|
182
|
+
const PANELS = exports.PANELS = SIDEBAR_PANELS;
|
|
184
183
|
|
|
185
184
|
// MAP STYLES
|
|
186
185
|
|
|
187
|
-
|
|
186
|
+
const DEFAULT_LAYER_GROUPS = exports.DEFAULT_LAYER_GROUPS = [{
|
|
188
187
|
slug: 'label',
|
|
189
|
-
filter:
|
|
190
|
-
|
|
188
|
+
filter: _ref => {
|
|
189
|
+
let {
|
|
190
|
+
id
|
|
191
|
+
} = _ref;
|
|
191
192
|
return id.match(/(?=(label|place-|poi-))/);
|
|
192
193
|
},
|
|
193
194
|
defaultVisibility: true
|
|
194
195
|
}, {
|
|
195
196
|
slug: 'road',
|
|
196
|
-
filter:
|
|
197
|
-
|
|
197
|
+
filter: _ref2 => {
|
|
198
|
+
let {
|
|
199
|
+
id
|
|
200
|
+
} = _ref2;
|
|
198
201
|
return id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/);
|
|
199
202
|
},
|
|
200
203
|
defaultVisibility: true
|
|
201
204
|
}, {
|
|
202
205
|
slug: 'border',
|
|
203
|
-
filter:
|
|
204
|
-
|
|
206
|
+
filter: _ref3 => {
|
|
207
|
+
let {
|
|
208
|
+
id
|
|
209
|
+
} = _ref3;
|
|
205
210
|
return id.match(/border|boundaries/);
|
|
206
211
|
},
|
|
207
212
|
defaultVisibility: false
|
|
208
213
|
}, {
|
|
209
214
|
slug: 'building',
|
|
210
|
-
filter:
|
|
211
|
-
|
|
215
|
+
filter: _ref4 => {
|
|
216
|
+
let {
|
|
217
|
+
id
|
|
218
|
+
} = _ref4;
|
|
212
219
|
return id.match(/building/);
|
|
213
220
|
},
|
|
214
221
|
defaultVisibility: true
|
|
215
222
|
}, {
|
|
216
223
|
slug: 'water',
|
|
217
|
-
filter:
|
|
218
|
-
|
|
224
|
+
filter: _ref5 => {
|
|
225
|
+
let {
|
|
226
|
+
id
|
|
227
|
+
} = _ref5;
|
|
219
228
|
return id.match(/(?=(water|stream|ferry))/);
|
|
220
229
|
},
|
|
221
230
|
defaultVisibility: true
|
|
222
231
|
}, {
|
|
223
232
|
slug: 'land',
|
|
224
|
-
filter:
|
|
225
|
-
|
|
233
|
+
filter: _ref6 => {
|
|
234
|
+
let {
|
|
235
|
+
id
|
|
236
|
+
} = _ref6;
|
|
226
237
|
return id.match(/(?=(parks|landcover|industrial|sand|hillshade))/);
|
|
227
238
|
},
|
|
228
239
|
defaultVisibility: true
|
|
229
240
|
}, {
|
|
230
241
|
slug: '3d building',
|
|
231
|
-
filter:
|
|
232
|
-
return false;
|
|
233
|
-
},
|
|
242
|
+
filter: () => false,
|
|
234
243
|
defaultVisibility: false
|
|
235
244
|
}];
|
|
236
|
-
|
|
245
|
+
const DEFAULT_MAP_STYLES = exports.DEFAULT_MAP_STYLES = [{
|
|
237
246
|
id: 'dark',
|
|
238
247
|
label: 'Dark',
|
|
239
248
|
url: 'mapbox://styles/uberdata/cjoqbbf6l9k302sl96tyvka09',
|
|
240
|
-
icon:
|
|
249
|
+
icon: `${ICON_PREFIX}/UBER_DARK_V2.png`,
|
|
241
250
|
layerGroups: DEFAULT_LAYER_GROUPS
|
|
242
251
|
}, {
|
|
243
252
|
id: 'light',
|
|
244
253
|
label: 'Light',
|
|
245
254
|
url: 'mapbox://styles/uberdata/cjoqb9j339k1f2sl9t5ic5bn4',
|
|
246
|
-
icon:
|
|
255
|
+
icon: `${ICON_PREFIX}/UBER_LIGHT_V2.png`,
|
|
247
256
|
layerGroups: DEFAULT_LAYER_GROUPS
|
|
248
257
|
}, {
|
|
249
258
|
id: 'muted',
|
|
250
259
|
label: 'Muted Light',
|
|
251
260
|
url: 'mapbox://styles/uberdata/cjfyl03kp1tul2smf5v2tbdd4',
|
|
252
|
-
icon:
|
|
261
|
+
icon: `${ICON_PREFIX}/UBER_MUTED_LIGHT.png`,
|
|
253
262
|
layerGroups: DEFAULT_LAYER_GROUPS
|
|
254
263
|
}, {
|
|
255
264
|
id: 'muted_night',
|
|
256
265
|
label: 'Muted Night',
|
|
257
266
|
url: 'mapbox://styles/uberdata/cjfxhlikmaj1b2soyzevnywgs',
|
|
258
|
-
icon:
|
|
267
|
+
icon: `${ICON_PREFIX}/UBER_MUTED_NIGHT.png`,
|
|
259
268
|
layerGroups: DEFAULT_LAYER_GROUPS
|
|
260
269
|
}, {
|
|
261
270
|
id: 'satellite',
|
|
262
271
|
label: 'Satellite',
|
|
263
|
-
url:
|
|
264
|
-
icon:
|
|
272
|
+
url: `mapbox://styles/mapbox/satellite-v9`,
|
|
273
|
+
icon: `${ICON_PREFIX}/UBER_SATELLITE.png`
|
|
265
274
|
}];
|
|
266
|
-
|
|
275
|
+
const GEOJSON_FIELDS = exports.GEOJSON_FIELDS = {
|
|
267
276
|
geojson: ['_geojson', 'all_points', 'geojson']
|
|
268
277
|
};
|
|
269
|
-
|
|
278
|
+
const ICON_FIELDS = exports.ICON_FIELDS = {
|
|
270
279
|
icon: ['icon']
|
|
271
280
|
};
|
|
272
|
-
|
|
273
|
-
|
|
281
|
+
const TRIP_POINT_FIELDS = exports.TRIP_POINT_FIELDS = [['lat', 'lng'], ['lat', 'lon'], ['latitude', 'longitude']];
|
|
282
|
+
const TRIP_ARC_FIELDS = exports.TRIP_ARC_FIELDS = {
|
|
274
283
|
lat0: 'begintrip',
|
|
275
284
|
lng0: 'begintrip',
|
|
276
285
|
lat1: 'dropoff',
|
|
277
286
|
lng1: 'dropoff'
|
|
278
287
|
};
|
|
279
|
-
|
|
288
|
+
const FILTER_TYPES = exports.FILTER_TYPES = (0, _keymirror.default)({
|
|
280
289
|
range: null,
|
|
281
290
|
select: null,
|
|
282
291
|
input: null,
|
|
@@ -284,7 +293,7 @@ var FILTER_TYPES = exports.FILTER_TYPES = (0, _keymirror["default"])({
|
|
|
284
293
|
multiSelect: null,
|
|
285
294
|
polygon: null
|
|
286
295
|
});
|
|
287
|
-
|
|
296
|
+
const SCALE_TYPES = exports.SCALE_TYPES = (0, _keymirror.default)({
|
|
288
297
|
ordinal: null,
|
|
289
298
|
quantile: null,
|
|
290
299
|
quantize: null,
|
|
@@ -298,9 +307,19 @@ var SCALE_TYPES = exports.SCALE_TYPES = (0, _keymirror["default"])({
|
|
|
298
307
|
logarithmic: null,
|
|
299
308
|
identity: null
|
|
300
309
|
});
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
310
|
+
const SCALE_FUNC = exports.SCALE_FUNC = {
|
|
311
|
+
[SCALE_TYPES.linear]: _d3Scale.scaleLinear,
|
|
312
|
+
[SCALE_TYPES.quantize]: _d3Scale.scaleQuantize,
|
|
313
|
+
[SCALE_TYPES.quantile]: _d3Scale.scaleQuantile,
|
|
314
|
+
[SCALE_TYPES.ordinal]: _d3Scale.scaleOrdinal,
|
|
315
|
+
[SCALE_TYPES.sqrt]: _d3Scale.scaleSqrt,
|
|
316
|
+
[SCALE_TYPES.log]: _d3Scale.scaleLog,
|
|
317
|
+
[SCALE_TYPES.point]: _d3Scale.scalePoint,
|
|
318
|
+
[SCALE_TYPES.custom]: _d3Scale.scaleThreshold,
|
|
319
|
+
[SCALE_TYPES.identity]: _customScales.scaleIdentity
|
|
320
|
+
};
|
|
321
|
+
const ALL_FIELD_TYPES = exports.ALL_FIELD_TYPES = (0, _keymirror.default)({
|
|
322
|
+
boolean: null,
|
|
304
323
|
date: null,
|
|
305
324
|
geojson: null,
|
|
306
325
|
integer: null,
|
|
@@ -311,12 +330,12 @@ var ALL_FIELD_TYPES = exports.ALL_FIELD_TYPES = (0, _keymirror["default"])({
|
|
|
311
330
|
});
|
|
312
331
|
|
|
313
332
|
// Data Table
|
|
314
|
-
|
|
333
|
+
const SORT_ORDER = exports.SORT_ORDER = (0, _keymirror.default)({
|
|
315
334
|
ASCENDING: null,
|
|
316
335
|
DESCENDING: null,
|
|
317
336
|
UNSORT: null
|
|
318
337
|
});
|
|
319
|
-
|
|
338
|
+
const TABLE_OPTION = exports.TABLE_OPTION = (0, _keymirror.default)({
|
|
320
339
|
SORT_ASC: null,
|
|
321
340
|
SORT_DES: null,
|
|
322
341
|
UNSORT: null,
|
|
@@ -324,84 +343,84 @@ var TABLE_OPTION = exports.TABLE_OPTION = (0, _keymirror["default"])({
|
|
|
324
343
|
UNPIN: null,
|
|
325
344
|
COPY: null
|
|
326
345
|
});
|
|
327
|
-
|
|
346
|
+
const TABLE_OPTION_LIST = exports.TABLE_OPTION_LIST = [{
|
|
328
347
|
value: TABLE_OPTION.SORT_ASC,
|
|
329
348
|
display: 'Sort Ascending',
|
|
330
349
|
icon: _icons.ArrowUp,
|
|
331
|
-
condition:
|
|
332
|
-
return props.sortMode !== SORT_ORDER.ASCENDING;
|
|
333
|
-
}
|
|
350
|
+
condition: props => props.sortMode !== SORT_ORDER.ASCENDING
|
|
334
351
|
}, {
|
|
335
352
|
value: TABLE_OPTION.SORT_DES,
|
|
336
353
|
display: 'Sort Descending',
|
|
337
354
|
icon: _icons.ArrowDown,
|
|
338
|
-
condition:
|
|
339
|
-
return props.sortMode !== SORT_ORDER.DESCENDING;
|
|
340
|
-
}
|
|
355
|
+
condition: props => props.sortMode !== SORT_ORDER.DESCENDING
|
|
341
356
|
}, {
|
|
342
357
|
value: TABLE_OPTION.UNSORT,
|
|
343
358
|
display: 'Unsort Column',
|
|
344
359
|
icon: _icons.Cancel,
|
|
345
|
-
condition:
|
|
346
|
-
return props.isSorted;
|
|
347
|
-
}
|
|
360
|
+
condition: props => props.isSorted
|
|
348
361
|
}, {
|
|
349
362
|
value: TABLE_OPTION.PIN,
|
|
350
363
|
display: 'Pin Column',
|
|
351
364
|
icon: _icons.Pin,
|
|
352
|
-
condition:
|
|
353
|
-
return !props.isPinned;
|
|
354
|
-
}
|
|
365
|
+
condition: props => !props.isPinned
|
|
355
366
|
}, {
|
|
356
367
|
value: TABLE_OPTION.UNPIN,
|
|
357
368
|
display: 'Unpin Column',
|
|
358
369
|
icon: _icons.Cancel,
|
|
359
|
-
condition:
|
|
360
|
-
return props.isPinned;
|
|
361
|
-
}
|
|
370
|
+
condition: props => props.isPinned
|
|
362
371
|
}, {
|
|
363
372
|
value: TABLE_OPTION.COPY,
|
|
364
373
|
display: 'Copy Column',
|
|
365
374
|
icon: _icons.Clipboard
|
|
366
375
|
}];
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
|
|
376
|
+
const ORANGE = '248, 194, 28';
|
|
377
|
+
const PINK = '231, 189, 194';
|
|
378
|
+
const PURPLE = '160, 106, 206';
|
|
379
|
+
const BLUE = '140, 210, 205';
|
|
380
|
+
const BLUE2 = '106, 160, 206';
|
|
381
|
+
const BLUE3 = '0, 172, 237';
|
|
382
|
+
const GREEN = '106, 160, 56';
|
|
383
|
+
const RED = '237, 88, 106';
|
|
384
|
+
const FILED_TYPE_DISPLAY = exports.FILED_TYPE_DISPLAY = {
|
|
385
|
+
[ALL_FIELD_TYPES.boolean]: {
|
|
386
|
+
label: 'bool',
|
|
387
|
+
color: PINK
|
|
388
|
+
},
|
|
389
|
+
[ALL_FIELD_TYPES.date]: {
|
|
390
|
+
label: 'date',
|
|
391
|
+
color: PURPLE
|
|
392
|
+
},
|
|
393
|
+
[ALL_FIELD_TYPES.geojson]: {
|
|
394
|
+
label: 'geo',
|
|
395
|
+
color: BLUE2
|
|
396
|
+
},
|
|
397
|
+
[ALL_FIELD_TYPES.integer]: {
|
|
398
|
+
label: 'number',
|
|
399
|
+
color: ORANGE
|
|
400
|
+
},
|
|
401
|
+
[ALL_FIELD_TYPES.real]: {
|
|
402
|
+
label: 'number',
|
|
403
|
+
color: ORANGE
|
|
404
|
+
},
|
|
405
|
+
[ALL_FIELD_TYPES.string]: {
|
|
406
|
+
label: 'string',
|
|
407
|
+
color: BLUE
|
|
408
|
+
},
|
|
409
|
+
[ALL_FIELD_TYPES.timestamp]: {
|
|
410
|
+
label: 'time',
|
|
411
|
+
color: GREEN
|
|
412
|
+
},
|
|
413
|
+
// field pairs
|
|
414
|
+
[ALL_FIELD_TYPES.point]: {
|
|
415
|
+
label: 'point',
|
|
416
|
+
color: BLUE3
|
|
417
|
+
}
|
|
418
|
+
};
|
|
419
|
+
const FIELD_COLORS = exports.FIELD_COLORS = {
|
|
420
|
+
default: RED
|
|
402
421
|
};
|
|
403
|
-
|
|
404
|
-
|
|
422
|
+
const HIGHLIGH_COLOR_3D = exports.HIGHLIGH_COLOR_3D = [255, 255, 255, 60];
|
|
423
|
+
const CHANNEL_SCALES = exports.CHANNEL_SCALES = (0, _keymirror.default)({
|
|
405
424
|
color: null,
|
|
406
425
|
radius: null,
|
|
407
426
|
size: null,
|
|
@@ -410,7 +429,7 @@ var CHANNEL_SCALES = exports.CHANNEL_SCALES = (0, _keymirror["default"])({
|
|
|
410
429
|
sizeAggr: null,
|
|
411
430
|
identity: null
|
|
412
431
|
});
|
|
413
|
-
|
|
432
|
+
const AGGREGATION_TYPES = exports.AGGREGATION_TYPES = {
|
|
414
433
|
// default
|
|
415
434
|
count: 'count',
|
|
416
435
|
// linear
|
|
@@ -426,7 +445,7 @@ var AGGREGATION_TYPES = exports.AGGREGATION_TYPES = {
|
|
|
426
445
|
countUnique: 'count unique',
|
|
427
446
|
anyValue: 'any_value'
|
|
428
447
|
};
|
|
429
|
-
|
|
448
|
+
const FIELD_TYPES_AGGREGATORS = exports.FIELD_TYPES_AGGREGATORS = {
|
|
430
449
|
date: null,
|
|
431
450
|
geojson: null,
|
|
432
451
|
integer: [AGGREGATION_TYPES.count, AGGREGATION_TYPES.average, AGGREGATION_TYPES.maximum, AGGREGATION_TYPES.minimum, AGGREGATION_TYPES.stdev, AGGREGATION_TYPES.sum, AGGREGATION_TYPES.variance],
|
|
@@ -435,7 +454,7 @@ var FIELD_TYPES_AGGREGATORS = exports.FIELD_TYPES_AGGREGATORS = {
|
|
|
435
454
|
timestamp: null,
|
|
436
455
|
point: null
|
|
437
456
|
};
|
|
438
|
-
|
|
457
|
+
const FIELD_AGGREGATORS = exports.FIELD_AGGREGATORS = [{
|
|
439
458
|
id: AGGREGATION_TYPES.count,
|
|
440
459
|
displayName: 'COUNT'
|
|
441
460
|
}, {
|
|
@@ -463,98 +482,164 @@ var FIELD_AGGREGATORS = exports.FIELD_AGGREGATORS = [{
|
|
|
463
482
|
id: AGGREGATION_TYPES.anyValue,
|
|
464
483
|
displayName: 'ANY VALUE'
|
|
465
484
|
}];
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
485
|
+
const linearFieldScaleFunctions = exports.linearFieldScaleFunctions = {
|
|
486
|
+
[CHANNEL_SCALES.color]: [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom],
|
|
487
|
+
[CHANNEL_SCALES.radius]: [SCALE_TYPES.sqrt],
|
|
488
|
+
[CHANNEL_SCALES.size]: [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log],
|
|
489
|
+
[CHANNEL_SCALES.customMarker]: [SCALE_TYPES.ordinal],
|
|
490
|
+
[CHANNEL_SCALES.identity]: []
|
|
491
|
+
};
|
|
492
|
+
const linearFieldAggrScaleFunctions = exports.linearFieldAggrScaleFunctions = {
|
|
493
|
+
[CHANNEL_SCALES.colorAggr]: {
|
|
494
|
+
[AGGREGATION_TYPES.count]: [SCALE_TYPES.custom],
|
|
495
|
+
[AGGREGATION_TYPES.average]: [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom],
|
|
496
|
+
[AGGREGATION_TYPES.maximum]: [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom],
|
|
497
|
+
[AGGREGATION_TYPES.minimum]: [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom],
|
|
498
|
+
[AGGREGATION_TYPES.median]: [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom],
|
|
499
|
+
[AGGREGATION_TYPES.stdev]: [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom],
|
|
500
|
+
[AGGREGATION_TYPES.sum]: [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom],
|
|
501
|
+
[AGGREGATION_TYPES.variance]: [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom]
|
|
502
|
+
},
|
|
503
|
+
[CHANNEL_SCALES.sizeAggr]: {
|
|
504
|
+
[AGGREGATION_TYPES.count]: [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log],
|
|
505
|
+
[AGGREGATION_TYPES.average]: [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log],
|
|
506
|
+
[AGGREGATION_TYPES.maximum]: [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log],
|
|
507
|
+
[AGGREGATION_TYPES.minimum]: [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log],
|
|
508
|
+
[AGGREGATION_TYPES.median]: [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log],
|
|
509
|
+
[AGGREGATION_TYPES.stdev]: [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log],
|
|
510
|
+
[AGGREGATION_TYPES.sum]: [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log],
|
|
511
|
+
[AGGREGATION_TYPES.variance]: [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
const ordinalFieldScaleFunctions = exports.ordinalFieldScaleFunctions = {
|
|
515
|
+
[CHANNEL_SCALES.color]: [SCALE_TYPES.ordinal],
|
|
516
|
+
[CHANNEL_SCALES.radius]: [SCALE_TYPES.point],
|
|
517
|
+
[CHANNEL_SCALES.size]: [SCALE_TYPES.point],
|
|
518
|
+
[CHANNEL_SCALES.customMarker]: [SCALE_TYPES.ordinal],
|
|
519
|
+
[CHANNEL_SCALES.identity]: []
|
|
520
|
+
};
|
|
521
|
+
const ordinalFieldAggrScaleFunctions = exports.ordinalFieldAggrScaleFunctions = {
|
|
522
|
+
// [CHANNEL_SCALES.colorAggr]: [SCALE_TYPES.ordinal, SCALE_TYPES.linear],
|
|
523
|
+
[CHANNEL_SCALES.colorAggr]: {
|
|
524
|
+
[AGGREGATION_TYPES.mode]: [SCALE_TYPES.ordinal],
|
|
525
|
+
[AGGREGATION_TYPES.anyValue]: [SCALE_TYPES.ordinal],
|
|
526
|
+
[AGGREGATION_TYPES.countUnique]: [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom]
|
|
527
|
+
},
|
|
528
|
+
[CHANNEL_SCALES.sizeAggr]: {
|
|
529
|
+
[AGGREGATION_TYPES.mode]: [SCALE_TYPES.ordinal],
|
|
530
|
+
[AGGREGATION_TYPES.anyValue]: [SCALE_TYPES.ordinal]
|
|
531
|
+
}
|
|
532
|
+
};
|
|
533
|
+
const notSupportedScaleOpts = exports.notSupportedScaleOpts = {
|
|
534
|
+
[CHANNEL_SCALES.color]: [],
|
|
535
|
+
[CHANNEL_SCALES.radius]: [],
|
|
536
|
+
[CHANNEL_SCALES.size]: [],
|
|
537
|
+
[CHANNEL_SCALES.customMarker]: [],
|
|
538
|
+
[CHANNEL_SCALES.identity]: []
|
|
539
|
+
};
|
|
540
|
+
const notSupportAggrOpts = exports.notSupportAggrOpts = {
|
|
541
|
+
[CHANNEL_SCALES.colorAggr]: {},
|
|
542
|
+
[CHANNEL_SCALES.sizeAggr]: {}
|
|
543
|
+
};
|
|
472
544
|
|
|
473
545
|
/**
|
|
474
546
|
* Default aggregation are based on ocunt
|
|
475
547
|
*/
|
|
476
|
-
|
|
548
|
+
const DEFAULT_AGGREGATION = exports.DEFAULT_AGGREGATION = {
|
|
549
|
+
[CHANNEL_SCALES.colorAggr]: {
|
|
550
|
+
[AGGREGATION_TYPES.count]: [SCALE_TYPES.quantize, SCALE_TYPES.quantile, SCALE_TYPES.custom]
|
|
551
|
+
},
|
|
552
|
+
[CHANNEL_SCALES.sizeAggr]: {
|
|
553
|
+
[AGGREGATION_TYPES.count]: [SCALE_TYPES.linear, SCALE_TYPES.sqrt, SCALE_TYPES.log]
|
|
554
|
+
}
|
|
555
|
+
};
|
|
477
556
|
|
|
478
557
|
/**
|
|
479
558
|
* Define what type of scale operation is allowed on each type of fields
|
|
480
559
|
*/
|
|
481
|
-
|
|
560
|
+
const FIELD_OPTS = exports.FIELD_OPTS = {
|
|
482
561
|
string: {
|
|
483
562
|
type: 'categorical',
|
|
484
|
-
scale:
|
|
563
|
+
scale: {
|
|
564
|
+
...ordinalFieldScaleFunctions,
|
|
565
|
+
...ordinalFieldAggrScaleFunctions
|
|
566
|
+
},
|
|
485
567
|
format: {
|
|
486
|
-
legend:
|
|
487
|
-
return d;
|
|
488
|
-
},
|
|
568
|
+
legend: d => d,
|
|
489
569
|
tooltip: []
|
|
490
570
|
}
|
|
491
571
|
},
|
|
492
572
|
real: {
|
|
493
573
|
type: 'numerical',
|
|
494
|
-
scale:
|
|
574
|
+
scale: {
|
|
575
|
+
...linearFieldScaleFunctions,
|
|
576
|
+
...linearFieldAggrScaleFunctions
|
|
577
|
+
},
|
|
495
578
|
format: {
|
|
496
|
-
legend:
|
|
497
|
-
return d;
|
|
498
|
-
},
|
|
579
|
+
legend: d => d,
|
|
499
580
|
tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
|
|
500
581
|
}
|
|
501
582
|
},
|
|
502
583
|
timestamp: {
|
|
503
584
|
type: 'time',
|
|
504
|
-
scale:
|
|
585
|
+
scale: {
|
|
586
|
+
...linearFieldScaleFunctions,
|
|
587
|
+
...notSupportAggrOpts
|
|
588
|
+
},
|
|
505
589
|
format: {
|
|
506
|
-
legend:
|
|
507
|
-
return d;
|
|
508
|
-
},
|
|
590
|
+
legend: d => d,
|
|
509
591
|
tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE_TIME]
|
|
510
592
|
}
|
|
511
593
|
},
|
|
512
594
|
integer: {
|
|
513
595
|
type: 'numerical',
|
|
514
|
-
scale:
|
|
596
|
+
scale: {
|
|
597
|
+
...linearFieldScaleFunctions,
|
|
598
|
+
...linearFieldAggrScaleFunctions
|
|
599
|
+
},
|
|
515
600
|
format: {
|
|
516
|
-
legend:
|
|
517
|
-
return d;
|
|
518
|
-
},
|
|
601
|
+
legend: d => d,
|
|
519
602
|
tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DECIMAL, _tooltip.TOOLTIP_FORMAT_TYPES.PERCENTAGE]
|
|
520
603
|
}
|
|
521
604
|
},
|
|
522
|
-
|
|
605
|
+
boolean: {
|
|
523
606
|
type: 'boolean',
|
|
524
|
-
scale:
|
|
607
|
+
scale: {
|
|
608
|
+
...ordinalFieldScaleFunctions,
|
|
609
|
+
...ordinalFieldAggrScaleFunctions
|
|
610
|
+
},
|
|
525
611
|
format: {
|
|
526
|
-
legend:
|
|
527
|
-
return d;
|
|
528
|
-
},
|
|
612
|
+
legend: d => d,
|
|
529
613
|
tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.BOOLEAN]
|
|
530
614
|
}
|
|
531
615
|
},
|
|
532
616
|
date: {
|
|
533
|
-
scale:
|
|
617
|
+
scale: {
|
|
618
|
+
...ordinalFieldScaleFunctions,
|
|
619
|
+
...ordinalFieldAggrScaleFunctions
|
|
620
|
+
},
|
|
534
621
|
format: {
|
|
535
|
-
legend:
|
|
536
|
-
return d;
|
|
537
|
-
},
|
|
622
|
+
legend: d => d,
|
|
538
623
|
tooltip: [_tooltip.TOOLTIP_FORMAT_TYPES.NONE, _tooltip.TOOLTIP_FORMAT_TYPES.DATE]
|
|
539
624
|
}
|
|
540
625
|
},
|
|
541
626
|
geojson: {
|
|
542
627
|
type: 'geometry',
|
|
543
|
-
scale:
|
|
628
|
+
scale: {
|
|
629
|
+
...notSupportedScaleOpts,
|
|
630
|
+
...notSupportAggrOpts
|
|
631
|
+
},
|
|
544
632
|
format: {
|
|
545
|
-
legend:
|
|
546
|
-
return '...';
|
|
547
|
-
},
|
|
633
|
+
legend: d => '...',
|
|
548
634
|
tooltip: []
|
|
549
635
|
}
|
|
550
636
|
}
|
|
551
637
|
};
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
var DEFAULT_LAYER_COLOR = exports.DEFAULT_LAYER_COLOR = {
|
|
638
|
+
const CHANNEL_SCALE_SUPPORTED_FIELDS = exports.CHANNEL_SCALE_SUPPORTED_FIELDS = Object.keys(CHANNEL_SCALES).reduce((accu, key) => ({
|
|
639
|
+
...accu,
|
|
640
|
+
[key]: Object.keys(FIELD_OPTS).filter(ft => Object.keys(FIELD_OPTS[ft].scale[key]).length)
|
|
641
|
+
}), {});
|
|
642
|
+
const DEFAULT_LAYER_COLOR = exports.DEFAULT_LAYER_COLOR = {
|
|
558
643
|
tripArc: '#9226C6',
|
|
559
644
|
begintrip_lat: '#1E96BE',
|
|
560
645
|
dropoff_lat: '#FF991F',
|
|
@@ -562,10 +647,10 @@ var DEFAULT_LAYER_COLOR = exports.DEFAULT_LAYER_COLOR = {
|
|
|
562
647
|
};
|
|
563
648
|
|
|
564
649
|
// let user pass in default tooltip fields
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
650
|
+
const DEFAULT_TOOLTIP_FIELDS = exports.DEFAULT_TOOLTIP_FIELDS = [];
|
|
651
|
+
const NO_VALUE_COLOR = exports.NO_VALUE_COLOR = [0, 0, 0, 0];
|
|
652
|
+
const UNKNOWN_COLOR = exports.UNKNOWN_COLOR = [134, 141, 145];
|
|
653
|
+
const LAYER_BLENDINGS = exports.LAYER_BLENDINGS = {
|
|
569
654
|
additive: {
|
|
570
655
|
label: 'layerBlending.additive',
|
|
571
656
|
blendFunc: ['SRC_ALPHA', 'DST_ALPHA'],
|
|
@@ -584,92 +669,80 @@ var LAYER_BLENDINGS = exports.LAYER_BLENDINGS = {
|
|
|
584
669
|
blendEquation: ['FUNC_SUBTRACT', 'FUNC_ADD']
|
|
585
670
|
}
|
|
586
671
|
};
|
|
587
|
-
|
|
588
|
-
|
|
672
|
+
const MAX_DEFAULT_TOOLTIPS = exports.MAX_DEFAULT_TOOLTIPS = 5;
|
|
673
|
+
const RESOLUTIONS = exports.RESOLUTIONS = (0, _keymirror.default)({
|
|
589
674
|
ONE_X: null,
|
|
590
675
|
TWO_X: null
|
|
591
676
|
});
|
|
592
|
-
|
|
677
|
+
const EXPORT_IMG_RATIOS = exports.EXPORT_IMG_RATIOS = (0, _keymirror.default)({
|
|
593
678
|
SCREEN: null,
|
|
594
679
|
FOUR_BY_THREE: null,
|
|
595
680
|
SIXTEEN_BY_NINE: null,
|
|
596
681
|
CUSTOM: null
|
|
597
682
|
});
|
|
598
|
-
|
|
683
|
+
const ScreenRatioOption = exports.ScreenRatioOption = {
|
|
599
684
|
id: EXPORT_IMG_RATIOS.SCREEN,
|
|
600
685
|
label: 'modal.exportImage.ratioOriginalScreen',
|
|
601
|
-
getSize:
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
};
|
|
606
|
-
}
|
|
686
|
+
getSize: (screenW, screenH) => ({
|
|
687
|
+
width: screenW,
|
|
688
|
+
height: screenH
|
|
689
|
+
})
|
|
607
690
|
};
|
|
608
|
-
|
|
691
|
+
const CustomRatioOption = exports.CustomRatioOption = {
|
|
609
692
|
id: EXPORT_IMG_RATIOS.CUSTOM,
|
|
610
693
|
hidden: true,
|
|
611
694
|
label: 'modal.exportImage.ratioCustom',
|
|
612
|
-
getSize:
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
};
|
|
617
|
-
}
|
|
695
|
+
getSize: (mapW, mapH) => ({
|
|
696
|
+
width: mapW,
|
|
697
|
+
height: mapH
|
|
698
|
+
})
|
|
618
699
|
};
|
|
619
|
-
|
|
700
|
+
const FourByThreeRatioOption = exports.FourByThreeRatioOption = {
|
|
620
701
|
id: EXPORT_IMG_RATIOS.FOUR_BY_THREE,
|
|
621
702
|
label: 'modal.exportImage.ratio4_3',
|
|
622
|
-
getSize:
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
};
|
|
627
|
-
}
|
|
703
|
+
getSize: (screenW, screenH) => ({
|
|
704
|
+
width: screenW,
|
|
705
|
+
height: Math.round(screenW * 0.75)
|
|
706
|
+
})
|
|
628
707
|
};
|
|
629
|
-
|
|
708
|
+
const SixteenByNineRatioOption = exports.SixteenByNineRatioOption = {
|
|
630
709
|
id: EXPORT_IMG_RATIOS.SIXTEEN_BY_NINE,
|
|
631
710
|
label: 'modal.exportImage.ratio16_9',
|
|
632
|
-
getSize:
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
};
|
|
637
|
-
}
|
|
711
|
+
getSize: (screenW, screenH) => ({
|
|
712
|
+
width: screenW,
|
|
713
|
+
height: Math.round(screenW * 0.5625)
|
|
714
|
+
})
|
|
638
715
|
};
|
|
639
|
-
|
|
640
|
-
|
|
716
|
+
const EXPORT_IMG_RATIO_OPTIONS = exports.EXPORT_IMG_RATIO_OPTIONS = [ScreenRatioOption, CustomRatioOption, FourByThreeRatioOption, SixteenByNineRatioOption];
|
|
717
|
+
const OneXResolutionOption = exports.OneXResolutionOption = {
|
|
641
718
|
id: RESOLUTIONS.ONE_X,
|
|
642
719
|
label: '1x',
|
|
643
720
|
available: true,
|
|
644
721
|
scale: 1,
|
|
645
|
-
getSize:
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
};
|
|
650
|
-
}
|
|
722
|
+
getSize: (screenW, screenH) => ({
|
|
723
|
+
width: screenW,
|
|
724
|
+
height: screenH
|
|
725
|
+
})
|
|
651
726
|
};
|
|
652
|
-
|
|
727
|
+
const TwoXResolutionOption = exports.TwoXResolutionOption = {
|
|
653
728
|
id: RESOLUTIONS.TWO_X,
|
|
654
729
|
label: '2x',
|
|
655
730
|
available: true,
|
|
656
731
|
scale: 2,
|
|
657
|
-
getSize:
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
};
|
|
662
|
-
}
|
|
732
|
+
getSize: (screenW, screenH) => ({
|
|
733
|
+
width: screenW * 2,
|
|
734
|
+
height: screenH * 2
|
|
735
|
+
})
|
|
663
736
|
};
|
|
664
|
-
|
|
665
|
-
|
|
737
|
+
const EXPORT_IMG_RESOLUTION_OPTIONS = exports.EXPORT_IMG_RESOLUTION_OPTIONS = [OneXResolutionOption, TwoXResolutionOption];
|
|
738
|
+
const EXPORT_DATA_TYPE = exports.EXPORT_DATA_TYPE = (0, _keymirror.default)({
|
|
666
739
|
CSV: null
|
|
667
740
|
// SHAPEFILE: null,
|
|
668
741
|
// JSON: null,
|
|
669
742
|
// GEOJSON: null,
|
|
670
743
|
// TOPOJSON: null
|
|
671
744
|
});
|
|
672
|
-
|
|
745
|
+
const EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE_OPTIONS = [{
|
|
673
746
|
id: EXPORT_DATA_TYPE.CSV,
|
|
674
747
|
label: EXPORT_DATA_TYPE.CSV.toLowerCase(),
|
|
675
748
|
available: true
|
|
@@ -697,50 +770,46 @@ var EXPORT_DATA_TYPE_OPTIONS = exports.EXPORT_DATA_TYPE_OPTIONS = [{
|
|
|
697
770
|
];
|
|
698
771
|
|
|
699
772
|
// Export map types
|
|
700
|
-
|
|
773
|
+
const EXPORT_MAP_FORMATS = exports.EXPORT_MAP_FORMATS = (0, _keymirror.default)({
|
|
701
774
|
HTML: null,
|
|
702
775
|
JSON: null
|
|
703
776
|
});
|
|
704
|
-
|
|
777
|
+
const EXPORT_HTML_MAP_MODES = exports.EXPORT_HTML_MAP_MODES = (0, _keymirror.default)({
|
|
705
778
|
READ: null,
|
|
706
779
|
EDIT: null
|
|
707
780
|
});
|
|
708
781
|
|
|
709
782
|
// Export map options
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
});
|
|
725
|
-
var DEFAULT_UUID_COUNT = exports.DEFAULT_UUID_COUNT = 6;
|
|
726
|
-
var DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_NOTIFICATION_MESSAGE = 'MESSAGE_NOT_PROVIDED';
|
|
727
|
-
var DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TYPES = (0, _keymirror["default"])({
|
|
783
|
+
const EXPORT_MAP_FORMAT_OPTIONS = exports.EXPORT_MAP_FORMAT_OPTIONS = Object.entries(EXPORT_MAP_FORMATS).map(entry => ({
|
|
784
|
+
id: entry[0],
|
|
785
|
+
label: entry[1].toLowerCase(),
|
|
786
|
+
available: true
|
|
787
|
+
}));
|
|
788
|
+
const EXPORT_HTML_MAP_MODE_OPTIONS = exports.EXPORT_HTML_MAP_MODE_OPTIONS = Object.entries(EXPORT_HTML_MAP_MODES).map(entry => ({
|
|
789
|
+
id: entry[0],
|
|
790
|
+
label: `modal.exportMap.html.${entry[1].toLowerCase()}`,
|
|
791
|
+
available: true,
|
|
792
|
+
url: (0, _utils.getHTMLMapModeTileUrl)(entry[1])
|
|
793
|
+
}));
|
|
794
|
+
const DEFAULT_UUID_COUNT = exports.DEFAULT_UUID_COUNT = 6;
|
|
795
|
+
const DEFAULT_NOTIFICATION_MESSAGE = exports.DEFAULT_NOTIFICATION_MESSAGE = 'MESSAGE_NOT_PROVIDED';
|
|
796
|
+
const DEFAULT_NOTIFICATION_TYPES = exports.DEFAULT_NOTIFICATION_TYPES = (0, _keymirror.default)({
|
|
728
797
|
info: null,
|
|
729
798
|
error: null,
|
|
730
799
|
warning: null,
|
|
731
800
|
success: null
|
|
732
801
|
});
|
|
733
|
-
|
|
802
|
+
const DEFAULT_NOTIFICATION_TOPICS = exports.DEFAULT_NOTIFICATION_TOPICS = (0, _keymirror.default)({
|
|
734
803
|
global: null,
|
|
735
804
|
file: null
|
|
736
805
|
});
|
|
737
806
|
|
|
738
807
|
// Minimum time between identical notifications about deck.gl errors
|
|
739
|
-
|
|
808
|
+
const THROTTLE_NOTIFICATION_TIME = exports.THROTTLE_NOTIFICATION_TIME = 2500;
|
|
740
809
|
|
|
741
810
|
// Animation
|
|
742
|
-
|
|
743
|
-
|
|
811
|
+
const BASE_SPEED = exports.BASE_SPEED = 600;
|
|
812
|
+
const FPS = exports.FPS = 60;
|
|
744
813
|
|
|
745
814
|
/**
|
|
746
815
|
* 4 Animation Window Types
|
|
@@ -764,59 +833,59 @@ var FPS = exports.FPS = 60;
|
|
|
764
833
|
* Current time is a point. An array of sorted time steps need to be provided.
|
|
765
834
|
* animation controller calls next animation at a interval when the point jumps to the next step
|
|
766
835
|
*/
|
|
767
|
-
|
|
836
|
+
const ANIMATION_WINDOW = exports.ANIMATION_WINDOW = (0, _keymirror.default)({
|
|
768
837
|
free: null,
|
|
769
838
|
incremental: null,
|
|
770
839
|
point: null,
|
|
771
840
|
interval: null
|
|
772
841
|
});
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
842
|
+
const DEFAULT_TIME_FORMAT = exports.DEFAULT_TIME_FORMAT = 'MM/DD/YY HH:mm:ssa';
|
|
843
|
+
const SPEED_CONTROL_RANGE = exports.SPEED_CONTROL_RANGE = [0, 10];
|
|
844
|
+
const SPEED_CONTROL_STEP = exports.SPEED_CONTROL_STEP = 0.001;
|
|
776
845
|
|
|
777
846
|
// Geocoder
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
847
|
+
const GEOCODER_DATASET_NAME = exports.GEOCODER_DATASET_NAME = 'geocoder_dataset';
|
|
848
|
+
const GEOCODER_LAYER_ID = exports.GEOCODER_LAYER_ID = 'geocoder_layer';
|
|
849
|
+
const GEOCODER_GEO_OFFSET = exports.GEOCODER_GEO_OFFSET = 0.05;
|
|
850
|
+
const GEOCODER_ICON_COLOR = exports.GEOCODER_ICON_COLOR = [255, 0, 0];
|
|
851
|
+
const GEOCODER_ICON_SIZE = exports.GEOCODER_ICON_SIZE = 80;
|
|
783
852
|
|
|
784
853
|
// We could use directly react-map-gl-draw EditorMode but this would
|
|
785
854
|
// create a direct dependency with react-map-gl-draw
|
|
786
855
|
// Created this map to be independent from react-map-gl-draw
|
|
787
|
-
|
|
856
|
+
const EDITOR_MODES = exports.EDITOR_MODES = {
|
|
788
857
|
READ_ONLY: _reactMapGlDraw.EditorModes.READ_ONLY,
|
|
789
858
|
DRAW_POLYGON: _reactMapGlDraw.EditorModes.DRAW_POLYGON,
|
|
790
859
|
DRAW_RECTANGLE: _reactMapGlDraw.EditorModes.DRAW_RECTANGLE,
|
|
791
860
|
EDIT: _reactMapGlDraw.EditorModes.EDIT_VERTEX
|
|
792
861
|
};
|
|
793
|
-
|
|
862
|
+
const EDITOR_AVAILABLE_LAYERS = exports.EDITOR_AVAILABLE_LAYERS = [_types.LAYER_TYPES.point, _types.LAYER_TYPES.hexagon, _types.LAYER_TYPES.arc, _types.LAYER_TYPES.line, _types.LAYER_TYPES.hexagonId];
|
|
794
863
|
// GPU Filtering
|
|
795
864
|
/**
|
|
796
865
|
* Max number of filter value buffers that deck.gl provides
|
|
797
866
|
*/
|
|
798
|
-
|
|
799
|
-
|
|
867
|
+
const MAX_GPU_FILTERS = exports.MAX_GPU_FILTERS = 4;
|
|
868
|
+
const MAP_THUMBNAIL_DIMENSION = exports.MAP_THUMBNAIL_DIMENSION = {
|
|
800
869
|
width: 300,
|
|
801
870
|
height: 200
|
|
802
871
|
};
|
|
803
|
-
|
|
872
|
+
const MAP_INFO_CHARACTER = exports.MAP_INFO_CHARACTER = {
|
|
804
873
|
title: 100,
|
|
805
874
|
description: 100
|
|
806
875
|
};
|
|
807
876
|
|
|
808
877
|
// Load data
|
|
809
|
-
|
|
878
|
+
const LOADING_METHODS = exports.LOADING_METHODS = (0, _keymirror.default)({
|
|
810
879
|
upload: null,
|
|
811
880
|
storage: null
|
|
812
881
|
});
|
|
813
|
-
|
|
882
|
+
const DATASET_FORMATS = exports.DATASET_FORMATS = (0, _keymirror.default)({
|
|
814
883
|
row: null,
|
|
815
884
|
geojson: null,
|
|
816
885
|
csv: null,
|
|
817
886
|
keplergl: null
|
|
818
887
|
});
|
|
819
|
-
|
|
888
|
+
const MAP_CONTROLS = exports.MAP_CONTROLS = (0, _keymirror.default)({
|
|
820
889
|
visibleLayers: null,
|
|
821
890
|
mapLegend: null,
|
|
822
891
|
toggle3d: null,
|
|
@@ -824,9 +893,9 @@ var MAP_CONTROLS = exports.MAP_CONTROLS = (0, _keymirror["default"])({
|
|
|
824
893
|
mapDraw: null,
|
|
825
894
|
mapLocale: null
|
|
826
895
|
});
|
|
827
|
-
|
|
828
|
-
|
|
896
|
+
const MASK_LAYER_ID = exports.MASK_LAYER_ID = 'mask_layer';
|
|
897
|
+
const ZOOM_LEVEL_LIMITS = exports.ZOOM_LEVEL_LIMITS = {
|
|
829
898
|
min: 0,
|
|
830
899
|
max: 21
|
|
831
900
|
};
|
|
832
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3RNYXBHbERyYXciLCJfZDNTY2FsZSIsIl9pY29ucyIsIl91dGlscyIsIl9jdXN0b21TY2FsZXMiLCJfdG9vbHRpcCIsIl90eXBlcyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiQUNUSU9OX1BSRUZJWCIsImV4cG9ydHMiLCJDTE9VREZST05UIiwiSUNPTl9QUkVGSVgiLCJjb25jYXQiLCJERUZBVUxUX01BUEJPWF9BUElfVVJMIiwiREFUQV9UQUJMRV9JRCIsIkRFTEVURV9EQVRBX0lEIiwiQUREX0RBVEFfSUQiLCJFWFBPUlRfSU1BR0VfSUQiLCJFWFBPUlRfREFUQV9JRCIsIkFERF9NQVBfU1RZTEVfSUQiLCJFWFBPUlRfTUFQX0lEIiwiU0FWRV9NQVBfSUQiLCJPVkVSV1JJVEVfTUFQX0lEIiwiU0hBUkVfTUFQX0lEIiwiS0VQTEVSX0dMX05BTUUiLCJLRVBMRVJfR0xfVkVSU0lPTiIsIktFUExFUl9HTF9XRUJTSVRFIiwiRElNRU5TSU9OUyIsInNpZGVQYW5lbCIsIndpZHRoIiwibWFyZ2luIiwidG9wIiwibGVmdCIsImJvdHRvbSIsInJpZ2h0IiwiaGVhZGVySGVpZ2h0IiwibWFwQ29udHJvbCIsInBhZGRpbmciLCJtYXBMZWdlbmQiLCJwaW5uZWQiLCJUSEVNRSIsImtleU1pcnJvciIsImxpZ2h0IiwiZGFyayIsImJhc2UiLCJTSURFQkFSX1BBTkVMUyIsImlkIiwibGFiZWwiLCJpY29uQ29tcG9uZW50IiwiTGF5ZXJzIiwib25DbGljayIsIkZpbHRlckZ1bm5lbCIsIkN1cnNvckNsaWNrIiwiU2V0dGluZ3MiLCJQQU5FTFMiLCJERUZBVUxUX0xBWUVSX0dST1VQUyIsInNsdWciLCJfcmVmIiwibWF0Y2giLCJkZWZhdWx0VmlzaWJpbGl0eSIsIl9yZWYyIiwiX3JlZjMiLCJfcmVmNCIsIl9yZWY1IiwiX3JlZjYiLCJERUZBVUxUX01BUF9TVFlMRVMiLCJ1cmwiLCJpY29uIiwibGF5ZXJHcm91cHMiLCJHRU9KU09OX0ZJRUxEUyIsImdlb2pzb24iLCJJQ09OX0ZJRUxEUyIsIlRSSVBfUE9JTlRfRklFTERTIiwiVFJJUF9BUkNfRklFTERTIiwibGF0MCIsImxuZzAiLCJsYXQxIiwibG5nMSIsIkZJTFRFUl9UWVBFUyIsInJhbmdlIiwic2VsZWN0IiwiaW5wdXQiLCJ0aW1lUmFuZ2UiLCJtdWx0aVNlbGVjdCIsInBvbHlnb24iLCJTQ0FMRV9UWVBFUyIsIm9yZGluYWwiLCJxdWFudGlsZSIsInF1YW50aXplIiwibGluZWFyIiwic3FydCIsImxvZyIsInBvaW50IiwiY3VzdG9tIiwibG9nYXJpdGhtaWMiLCJpZGVudGl0eSIsIlNDQUxFX0ZVTkMiLCJzY2FsZUxpbmVhciIsInNjYWxlUXVhbnRpemUiLCJzY2FsZVF1YW50aWxlIiwic2NhbGVPcmRpbmFsIiwic2NhbGVTcXJ0Iiwic2NhbGVMb2ciLCJzY2FsZVBvaW50Iiwic2NhbGVUaHJlc2hvbGQiLCJzY2FsZUlkZW50aXR5IiwiQUxMX0ZJRUxEX1RZUEVTIiwiZGF0ZSIsImludGVnZXIiLCJyZWFsIiwic3RyaW5nIiwidGltZXN0YW1wIiwiU09SVF9PUkRFUiIsIkFTQ0VORElORyIsIkRFU0NFTkRJTkciLCJVTlNPUlQiLCJUQUJMRV9PUFRJT04iLCJTT1JUX0FTQyIsIlNPUlRfREVTIiwiUElOIiwiVU5QSU4iLCJDT1BZIiwiVEFCTEVfT1BUSU9OX0xJU1QiLCJ2YWx1ZSIsImRpc3BsYXkiLCJBcnJvd1VwIiwiY29uZGl0aW9uIiwicHJvcHMiLCJzb3J0TW9kZSIsIkFycm93RG93biIsIkNhbmNlbCIsImlzU29ydGVkIiwiUGluIiwiaXNQaW5uZWQiLCJDbGlwYm9hcmQiLCJPUkFOR0UiLCJQSU5LIiwiUFVSUExFIiwiQkxVRSIsIkJMVUUyIiwiQkxVRTMiLCJHUkVFTiIsIlJFRCIsIkZJTEVEX1RZUEVfRElTUExBWSIsImNvbG9yIiwiRklFTERfQ09MT1JTIiwiSElHSExJR0hfQ09MT1JfM0QiLCJDSEFOTkVMX1NDQUxFUyIsInJhZGl1cyIsInNpemUiLCJjdXN0b21NYXJrZXIiLCJjb2xvckFnZ3IiLCJzaXplQWdnciIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiY291bnQiLCJhdmVyYWdlIiwibWF4aW11bSIsIm1pbmltdW0iLCJtZWRpYW4iLCJzdGRldiIsInN1bSIsInZhcmlhbmNlIiwibW9kZSIsImNvdW50VW5pcXVlIiwiYW55VmFsdWUiLCJGSUVMRF9UWVBFU19BR0dSRUdBVE9SUyIsIkZJRUxEX0FHR1JFR0FUT1JTIiwiZGlzcGxheU5hbWUiLCJsaW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zIiwibGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJvcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyIsIm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyIsIm5vdFN1cHBvcnRlZFNjYWxlT3B0cyIsIm5vdFN1cHBvcnRBZ2dyT3B0cyIsIkRFRkFVTFRfQUdHUkVHQVRJT04iLCJGSUVMRF9PUFRTIiwidHlwZSIsInNjYWxlIiwiZm9ybWF0IiwibGVnZW5kIiwiZCIsInRvb2x0aXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIk5PTkUiLCJERUNJTUFMIiwiUEVSQ0VOVEFHRSIsIkRBVEUiLCJEQVRFX1RJTUUiLCJCT09MRUFOIiwiQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTIiwicmVkdWNlIiwiYWNjdSIsImtleSIsImZ0IiwiREVGQVVMVF9MQVlFUl9DT0xPUiIsInRyaXBBcmMiLCJiZWdpbnRyaXBfbGF0IiwiZHJvcG9mZl9sYXQiLCJyZXF1ZXN0X2xhdCIsIkRFRkFVTFRfVE9PTFRJUF9GSUVMRFMiLCJOT19WQUxVRV9DT0xPUiIsIlVOS05PV05fQ09MT1IiLCJMQVlFUl9CTEVORElOR1MiLCJhZGRpdGl2ZSIsImJsZW5kRnVuYyIsImJsZW5kRXF1YXRpb24iLCJub3JtYWwiLCJzdWJ0cmFjdGl2ZSIsIk1BWF9ERUZBVUxUX1RPT0xUSVBTIiwiUkVTT0xVVElPTlMiLCJPTkVfWCIsIlRXT19YIiwiRVhQT1JUX0lNR19SQVRJT1MiLCJTQ1JFRU4iLCJGT1VSX0JZX1RIUkVFIiwiU0lYVEVFTl9CWV9OSU5FIiwiQ1VTVE9NIiwiU2NyZWVuUmF0aW9PcHRpb24iLCJnZXRTaXplIiwic2NyZWVuVyIsInNjcmVlbkgiLCJoZWlnaHQiLCJDdXN0b21SYXRpb09wdGlvbiIsImhpZGRlbiIsIm1hcFciLCJtYXBIIiwiRm91ckJ5VGhyZWVSYXRpb09wdGlvbiIsIk1hdGgiLCJyb3VuZCIsIlNpeHRlZW5CeU5pbmVSYXRpb09wdGlvbiIsIkVYUE9SVF9JTUdfUkFUSU9fT1BUSU9OUyIsIk9uZVhSZXNvbHV0aW9uT3B0aW9uIiwiYXZhaWxhYmxlIiwiVHdvWFJlc29sdXRpb25PcHRpb24iLCJFWFBPUlRfSU1HX1JFU09MVVRJT05fT1BUSU9OUyIsIkVYUE9SVF9EQVRBX1RZUEUiLCJDU1YiLCJFWFBPUlRfREFUQV9UWVBFX09QVElPTlMiLCJ0b0xvd2VyQ2FzZSIsIkVYUE9SVF9NQVBfRk9STUFUUyIsIkhUTUwiLCJKU09OIiwiRVhQT1JUX0hUTUxfTUFQX01PREVTIiwiUkVBRCIsIkVESVQiLCJFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TIiwiZW50cmllcyIsIm1hcCIsImVudHJ5IiwiRVhQT1JUX0hUTUxfTUFQX01PREVfT1BUSU9OUyIsImdldEhUTUxNYXBNb2RlVGlsZVVybCIsIkRFRkFVTFRfVVVJRF9DT1VOVCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UiLCJERUZBVUxUX05PVElGSUNBVElPTl9UWVBFUyIsImluZm8iLCJlcnJvciIsIndhcm5pbmciLCJzdWNjZXNzIiwiREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTIiwiZ2xvYmFsIiwiZmlsZSIsIlRIUk9UVExFX05PVElGSUNBVElPTl9USU1FIiwiQkFTRV9TUEVFRCIsIkZQUyIsIkFOSU1BVElPTl9XSU5ET1ciLCJmcmVlIiwiaW5jcmVtZW50YWwiLCJpbnRlcnZhbCIsIkRFRkFVTFRfVElNRV9GT1JNQVQiLCJTUEVFRF9DT05UUk9MX1JBTkdFIiwiU1BFRURfQ09OVFJPTF9TVEVQIiwiR0VPQ09ERVJfREFUQVNFVF9OQU1FIiwiR0VPQ09ERVJfTEFZRVJfSUQiLCJHRU9DT0RFUl9HRU9fT0ZGU0VUIiwiR0VPQ09ERVJfSUNPTl9DT0xPUiIsIkdFT0NPREVSX0lDT05fU0laRSIsIkVESVRPUl9NT0RFUyIsIlJFQURfT05MWSIsIkVkaXRvck1vZGVzIiwiRFJBV19QT0xZR09OIiwiRFJBV19SRUNUQU5HTEUiLCJFRElUX1ZFUlRFWCIsIkVESVRPUl9BVkFJTEFCTEVfTEFZRVJTIiwiTEFZRVJfVFlQRVMiLCJoZXhhZ29uIiwiYXJjIiwibGluZSIsImhleGFnb25JZCIsIk1BWF9HUFVfRklMVEVSUyIsIk1BUF9USFVNQk5BSUxfRElNRU5TSU9OIiwiTUFQX0lORk9fQ0hBUkFDVEVSIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsIkxPQURJTkdfTUVUSE9EUyIsInVwbG9hZCIsInN0b3JhZ2UiLCJEQVRBU0VUX0ZPUk1BVFMiLCJyb3ciLCJjc3YiLCJrZXBsZXJnbCIsIk1BUF9DT05UUk9MUyIsInZpc2libGVMYXllcnMiLCJ0b2dnbGUzZCIsInNwbGl0TWFwIiwibWFwRHJhdyIsIm1hcExvY2FsZSIsIk1BU0tfTEFZRVJfSUQiLCJaT09NX0xFVkVMX0xJTUlUUyIsIm1pbiIsIm1heCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdGFudHMvZGVmYXVsdC1zZXR0aW5ncy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQga2V5TWlycm9yIGZyb20gJ2tleW1pcnJvcic7XG5pbXBvcnQge0VkaXRvck1vZGVzfSBmcm9tICdyZWFjdC1tYXAtZ2wtZHJhdyc7XG5cbmltcG9ydCB7Q29sb3J9IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHtcbiAgc2NhbGVMaW5lYXIsXG4gIHNjYWxlUXVhbnRpemUsXG4gIHNjYWxlUXVhbnRpbGUsXG4gIHNjYWxlT3JkaW5hbCxcbiAgc2NhbGVTcXJ0LFxuICBzY2FsZUxvZyxcbiAgc2NhbGVQb2ludCxcbiAgc2NhbGVUaHJlc2hvbGRcbn0gZnJvbSAnZDMtc2NhbGUnO1xuaW1wb3J0IHtcbiAgTGF5ZXJzLFxuICBGaWx0ZXJGdW5uZWwsXG4gIFNldHRpbmdzLFxuICBDdXJzb3JDbGljayxcbiAgUGluLFxuICBBcnJvd0Rvd24sXG4gIEFycm93VXAsXG4gIENsaXBib2FyZCxcbiAgQ2FuY2VsXG59IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCB7Z2V0SFRNTE1hcE1vZGVUaWxlVXJsfSBmcm9tICd1dGlscy91dGlscyc7XG5pbXBvcnQge3NjYWxlSWRlbnRpdHl9IGZyb20gJ3V0aWxzL2N1c3RvbS1zY2FsZXMnO1xuaW1wb3J0IHtUT09MVElQX0ZPUk1BVF9UWVBFU30gZnJvbSAnLi90b29sdGlwJztcbmltcG9ydCB7TEFZRVJfVFlQRVN9IGZyb20gJ2xheWVycy90eXBlcyc7XG5pbXBvcnQge1JHQkFDb2xvcn0gZnJvbSAncmVkdWNlcnMnO1xuXG5leHBvcnQgY29uc3QgQUNUSU9OX1BSRUZJWCA9ICdAQGtlcGxlci5nbC8nO1xuZXhwb3J0IGNvbnN0IENMT1VERlJPTlQgPSAnaHR0cHM6Ly9kMWEzZjRzcGF6enJwNC5jbG91ZGZyb250Lm5ldC9rZXBsZXIuZ2wnO1xuZXhwb3J0IGNvbnN0IElDT05fUFJFRklYID0gYCR7Q0xPVURGUk9OVH0vZ2VvZHVkZWA7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBCT1hfQVBJX1VSTCA9ICdodHRwczovL2FwaS5tYXBib3guY29tJztcblxuLy8gTW9kYWwgSWRzXG4vKipcbiAqIE1vZGFsIGlkOiBkYXRhIHRhYmxlXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBEQVRBX1RBQkxFX0lEID0gJ2RhdGFUYWJsZSc7XG4vKipcbiAqIE1vZGFsIGlkOiBkZWxldGUgZGF0YXNldCBjb25maXJtIGRpYWxvZ1xuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREVMRVRFX0RBVEFfSUQgPSAnZGVsZXRlRGF0YSc7XG4vKipcbiAqIE1vZGFsIGlkOiBhZGQgZGF0YSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgQUREX0RBVEFfSUQgPSAnYWRkRGF0YSc7XG4vKipcbiAqIE1vZGFsIGlkOiBleHBvcnQgaW1hZ2UgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUFHRV9JRCA9ICdleHBvcnRJbWFnZSc7XG4vKipcbiAqIE1vZGFsIGlkOiBleHBvcnQgZGF0YSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX0RBVEFfSUQgPSAnZXhwb3J0RGF0YSc7XG4vKipcbiAqIE1vZGFsIGlkOiBhZGQgY3VzdG9tIG1hcCBzdHlsZSBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgQUREX01BUF9TVFlMRV9JRCA9ICdhZGRNYXBTdHlsZSc7XG4vKipcbiAqIE1vZGFsIGlkOiBleHBvcnQgbWFwIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0lEID0gJ2V4cG9ydE1hcCc7XG4vKipcbiAqIE1vZGFsIGlkOiBzYXZlIG1hcCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgU0FWRV9NQVBfSUQgPSAnc2F2ZU1hcCc7XG4vKipcbiAqIE1vZGFsIGlkOiBjb25maXJtIHRvIG92ZXJ3cml0ZSBzYXZlZCBtYXBcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IE9WRVJXUklURV9NQVBfSUQgPSAnb3ZlcndyaXRlTWFwJztcbi8qKlxuICogTW9kYWwgaWQ6IHNoYXJlIG1hcCB1cmwgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IFNIQVJFX01BUF9JRCA9ICdzaGFyZU1hcCc7XG5cbmV4cG9ydCBjb25zdCBLRVBMRVJfR0xfTkFNRSA9ICdrZXBsZXIuZ2wnO1xuXG4vLyBfX1BBQ0tBR0VfVkVSU0lPTl9fIGlzIGF1dG9tYXRpY2FsbHkgaW5qZWN0ZWQgYnkgQmFiZWwvV2VicGFjayBkdXJpbmcgdGhlIGJ1aWxkaW5nIHByb2Nlc3Ncbi8vIFNpbmNlIHdlIGFyZSBpbmplY3RpbmcgdGhpcyBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3Mgd2l0aCBiYWJlbFxuLy8gd2hpbGUgZGV2ZWxvcGluZyBWRVJTSU9OIGlzIG5vdCBkZWZpbmVkLCB3ZSBjYXB0dXJlIHRoZSBleGNlcHRpb24gYW5kIHJldHVyblxuLy8gYW4gZW1wdHkgc3RyaW5nIHdoaWNoIHdpbGwgYWxsb3cgdXMgdG8gcmV0cmlldmUgdGhlIGxhdGVzdCB1bWQgdmVyc2lvblxuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9WRVJTSU9OID0gJ19fUEFDS0FHRV9WRVJTSU9OX18nO1xuZXhwb3J0IGNvbnN0IEtFUExFUl9HTF9XRUJTSVRFID0gJ2h0dHA6Ly9rZXBsZXIuZ2wvJztcblxuZXhwb3J0IGNvbnN0IERJTUVOU0lPTlMgPSB7XG4gIHNpZGVQYW5lbDoge1xuICAgIHdpZHRoOiAzMDAsXG4gICAgbWFyZ2luOiB7dG9wOiAyMCwgbGVmdDogMjAsIGJvdHRvbTogMzAsIHJpZ2h0OiAyMH0sXG4gICAgaGVhZGVySGVpZ2h0OiA5NlxuICB9LFxuICBtYXBDb250cm9sOiB7XG4gICAgd2lkdGg6IDE4NCxcbiAgICBwYWRkaW5nOiAxMixcbiAgICBtYXBMZWdlbmQ6IHtcbiAgICAgIHBpbm5lZDoge1xuICAgICAgICBib3R0b206IDIyLFxuICAgICAgICByaWdodDogMTJcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogVGhlbWUgbmFtZSB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gYEtlcGxlckdsYCBgcHJvcC50aGVtZWAuXG4gKiBBdmFpbGFibGUgdGhlbWVzIGFyZSBgVEhFTUUubGlnaHRgIGFuZCBgVEhFTUUuZGFya2AuIERlZmF1bHQgdGhlbWUgaXMgYFRIRU1FLmRhcmtgXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtvYmplY3R9XG4gKiBAcHVibGljXG4gKiBAZXhhbXBsZVxuICogYGBganNcbiAqIGNvbnN0IE1hcCA9ICgpID0+IDxLZXBsZXJHbCB0aGVtZT17VEhFTUUubGlnaHR9IGlkPVwibWFwXCIvPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBUSEVNRSA9IGtleU1pcnJvcih7XG4gIGxpZ2h0OiBudWxsLFxuICBkYXJrOiBudWxsLFxuICBiYXNlOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IFNJREVCQVJfUEFORUxTID0gW1xuICB7XG4gICAgaWQ6ICdsYXllcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5sYXllcicsXG4gICAgaWNvbkNvbXBvbmVudDogTGF5ZXJzLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnZmlsdGVyJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmZpbHRlcicsXG4gICAgaWNvbkNvbXBvbmVudDogRmlsdGVyRnVubmVsLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnaW50ZXJhY3Rpb24nLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMuaW50ZXJhY3Rpb24nLFxuICAgIGljb25Db21wb25lbnQ6IEN1cnNvckNsaWNrLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWFwJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmJhc2VtYXAnLFxuICAgIGljb25Db21wb25lbnQ6IFNldHRpbmdzLFxuICAgIG9uQ2xpY2s6IG51bGxcbiAgfVxuXTtcblxuLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IGNvbnN0IFBBTkVMUyA9IFNJREVCQVJfUEFORUxTO1xuXG4vLyBNQVAgU1RZTEVTXG5cbnR5cGUgREVGQVVMVF9MQVlFUl9HUk9VUCA9IHtcbiAgc2x1Zzogc3RyaW5nO1xuICBmaWx0ZXI6ICh2YWx1ZSkgPT4gYm9vbGVhbjtcbiAgZGVmYXVsdFZpc2liaWxpdHk6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9HUk9VUFM6IERFRkFVTFRfTEFZRVJfR1JPVVBbXSA9IFtcbiAge1xuICAgIHNsdWc6ICdsYWJlbCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShsYWJlbHxwbGFjZS18cG9pLSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWVcbiAgfSxcbiAge1xuICAgIHNsdWc6ICdyb2FkJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHJvYWR8cmFpbHdheXx0dW5uZWx8c3RyZWV0fGJyaWRnZSkpKD8hLipsYWJlbCkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2JvcmRlcicsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goL2JvcmRlcnxib3VuZGFyaWVzLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnYnVpbGRpbmcnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC9idWlsZGluZy8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnd2F0ZXInLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0od2F0ZXJ8c3RyZWFtfGZlcnJ5KSkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2xhbmQnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0ocGFya3N8bGFuZGNvdmVyfGluZHVzdHJpYWx8c2FuZHxoaWxsc2hhZGUpKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAnM2QgYnVpbGRpbmcnLFxuICAgIGZpbHRlcjogKCkgPT4gZmFsc2UsXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IGZhbHNlXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX01BUF9TVFlMRVMgPSBbXG4gIHtcbiAgICBpZDogJ2RhcmsnLFxuICAgIGxhYmVsOiAnRGFyaycsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2Nqb3FiYmY2bDlrMzAyc2w5NnR5dmthMDknLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX0RBUktfVjIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFNcbiAgfSxcbiAge1xuICAgIGlkOiAnbGlnaHQnLFxuICAgIGxhYmVsOiAnTGlnaHQnLFxuICAgIHVybDogJ21hcGJveDovL3N0eWxlcy91YmVyZGF0YS9jam9xYjlqMzM5azFmMnNsOXQ1aWM1Ym40JyxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9MSUdIVF9WMi5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQU1xuICB9LFxuICB7XG4gICAgaWQ6ICdtdXRlZCcsXG4gICAgbGFiZWw6ICdNdXRlZCBMaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2NqZnlsMDNrcDF0dWwyc21mNXYydGJkZDQnLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX01VVEVEX0xJR0hULnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTXG4gIH0sXG4gIHtcbiAgICBpZDogJ211dGVkX25pZ2h0JyxcbiAgICBsYWJlbDogJ011dGVkIE5pZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pmeGhsaWttYWoxYjJzb3l6ZXZueXdncycsXG4gICAgaWNvbjogYCR7SUNPTl9QUkVGSVh9L1VCRVJfTVVURURfTklHSFQucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFNcbiAgfSxcbiAge1xuICAgIGlkOiAnc2F0ZWxsaXRlJyxcbiAgICBsYWJlbDogJ1NhdGVsbGl0ZScsXG4gICAgdXJsOiBgbWFwYm94Oi8vc3R5bGVzL21hcGJveC9zYXRlbGxpdGUtdjlgLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX1NBVEVMTElURS5wbmdgXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBHRU9KU09OX0ZJRUxEUyA9IHtcbiAgZ2VvanNvbjogWydfZ2VvanNvbicsICdhbGxfcG9pbnRzJywgJ2dlb2pzb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IElDT05fRklFTERTID0ge1xuICBpY29uOiBbJ2ljb24nXVxufTtcblxuZXhwb3J0IGNvbnN0IFRSSVBfUE9JTlRfRklFTERTOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXG4gIFsnbGF0JywgJ2xuZyddLFxuICBbJ2xhdCcsICdsb24nXSxcbiAgWydsYXRpdHVkZScsICdsb25naXR1ZGUnXVxuXTtcblxuZXhwb3J0IGNvbnN0IFRSSVBfQVJDX0ZJRUxEUyA9IHtcbiAgbGF0MDogJ2JlZ2ludHJpcCcsXG4gIGxuZzA6ICdiZWdpbnRyaXAnLFxuICBsYXQxOiAnZHJvcG9mZicsXG4gIGxuZzE6ICdkcm9wb2ZmJ1xufTtcblxuZXhwb3J0IGNvbnN0IEZJTFRFUl9UWVBFUyA9IGtleU1pcnJvcih7XG4gIHJhbmdlOiBudWxsLFxuICBzZWxlY3Q6IG51bGwsXG4gIGlucHV0OiBudWxsLFxuICB0aW1lUmFuZ2U6IG51bGwsXG4gIG11bHRpU2VsZWN0OiBudWxsLFxuICBwb2x5Z29uOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IFNDQUxFX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgb3JkaW5hbDogbnVsbCxcbiAgcXVhbnRpbGU6IG51bGwsXG4gIHF1YW50aXplOiBudWxsLFxuICBsaW5lYXI6IG51bGwsXG4gIHNxcnQ6IG51bGwsXG4gIGxvZzogbnVsbCxcblxuICAvLyBvcmRpbmFsIGRvbWFpbiB0byBsaW5lYXIgcmFuZ2VcbiAgcG9pbnQ6IG51bGwsXG4gIGN1c3RvbTogbnVsbCxcbiAgLy8gVUktb25seSB0eXBlLCByZXNvbHZpbmcgYXMgY3VzdG9tXG4gIGxvZ2FyaXRobWljOiBudWxsLFxuICBpZGVudGl0eTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBTQ0FMRV9GVU5DID0ge1xuICBbU0NBTEVfVFlQRVMubGluZWFyXTogc2NhbGVMaW5lYXIsXG4gIFtTQ0FMRV9UWVBFUy5xdWFudGl6ZV06IHNjYWxlUXVhbnRpemUsXG4gIFtTQ0FMRV9UWVBFUy5xdWFudGlsZV06IHNjYWxlUXVhbnRpbGUsXG4gIFtTQ0FMRV9UWVBFUy5vcmRpbmFsXTogc2NhbGVPcmRpbmFsLFxuICBbU0NBTEVfVFlQRVMuc3FydF06IHNjYWxlU3FydCxcbiAgW1NDQUxFX1RZUEVTLmxvZ106IHNjYWxlTG9nLFxuICBbU0NBTEVfVFlQRVMucG9pbnRdOiBzY2FsZVBvaW50LFxuICBbU0NBTEVfVFlQRVMuY3VzdG9tXTogc2NhbGVUaHJlc2hvbGQsXG4gIFtTQ0FMRV9UWVBFUy5pZGVudGl0eV06IHNjYWxlSWRlbnRpdHlcbn07XG5cbmV4cG9ydCBjb25zdCBBTExfRklFTERfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBib29sZWFuOiBudWxsLFxuICBkYXRlOiBudWxsLFxuICBnZW9qc29uOiBudWxsLFxuICBpbnRlZ2VyOiBudWxsLFxuICByZWFsOiBudWxsLFxuICBzdHJpbmc6IG51bGwsXG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgcG9pbnQ6IG51bGxcbn0pO1xuXG4vLyBEYXRhIFRhYmxlXG5leHBvcnQgY29uc3QgU09SVF9PUkRFUiA9IGtleU1pcnJvcih7XG4gIEFTQ0VORElORzogbnVsbCxcbiAgREVTQ0VORElORzogbnVsbCxcbiAgVU5TT1JUOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IFRBQkxFX09QVElPTiA9IGtleU1pcnJvcih7XG4gIFNPUlRfQVNDOiBudWxsLFxuICBTT1JUX0RFUzogbnVsbCxcbiAgVU5TT1JUOiBudWxsLFxuICBQSU46IG51bGwsXG4gIFVOUElOOiBudWxsLFxuICBDT1BZOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IFRBQkxFX09QVElPTl9MSVNUID0gW1xuICB7XG4gICAgdmFsdWU6IFRBQkxFX09QVElPTi5TT1JUX0FTQyxcbiAgICBkaXNwbGF5OiAnU29ydCBBc2NlbmRpbmcnLFxuICAgIGljb246IEFycm93VXAsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5zb3J0TW9kZSAhPT0gU09SVF9PUkRFUi5BU0NFTkRJTkdcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uU09SVF9ERVMsXG4gICAgZGlzcGxheTogJ1NvcnQgRGVzY2VuZGluZycsXG4gICAgaWNvbjogQXJyb3dEb3duLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuREVTQ0VORElOR1xuICB9LFxuICB7XG4gICAgdmFsdWU6IFRBQkxFX09QVElPTi5VTlNPUlQsXG4gICAgZGlzcGxheTogJ1Vuc29ydCBDb2x1bW4nLFxuICAgIGljb246IENhbmNlbCxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzU29ydGVkXG4gIH0sXG4gIHt2YWx1ZTogVEFCTEVfT1BUSU9OLlBJTiwgZGlzcGxheTogJ1BpbiBDb2x1bW4nLCBpY29uOiBQaW4sIGNvbmRpdGlvbjogcHJvcHMgPT4gIXByb3BzLmlzUGlubmVkfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5QSU4sXG4gICAgZGlzcGxheTogJ1VucGluIENvbHVtbicsXG4gICAgaWNvbjogQ2FuY2VsLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuaXNQaW5uZWRcbiAgfSxcbiAge3ZhbHVlOiBUQUJMRV9PUFRJT04uQ09QWSwgZGlzcGxheTogJ0NvcHkgQ29sdW1uJywgaWNvbjogQ2xpcGJvYXJkfVxuXTtcblxuY29uc3QgT1JBTkdFID0gJzI0OCwgMTk0LCAyOCc7XG5jb25zdCBQSU5LID0gJzIzMSwgMTg5LCAxOTQnO1xuY29uc3QgUFVSUExFID0gJzE2MCwgMTA2LCAyMDYnO1xuY29uc3QgQkxVRSA9ICcxNDAsIDIxMCwgMjA1JztcbmNvbnN0IEJMVUUyID0gJzEwNiwgMTYwLCAyMDYnO1xuY29uc3QgQkxVRTMgPSAnMCwgMTcyLCAyMzcnO1xuY29uc3QgR1JFRU4gPSAnMTA2LCAxNjAsIDU2JztcbmNvbnN0IFJFRCA9ICcyMzcsIDg4LCAxMDYnO1xuXG5leHBvcnQgY29uc3QgRklMRURfVFlQRV9ESVNQTEFZID0ge1xuICBbQUxMX0ZJRUxEX1RZUEVTLmJvb2xlYW5dOiB7XG4gICAgbGFiZWw6ICdib29sJyxcbiAgICBjb2xvcjogUElOS1xuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmRhdGVdOiB7XG4gICAgbGFiZWw6ICdkYXRlJyxcbiAgICBjb2xvcjogUFVSUExFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuZ2VvanNvbl06IHtcbiAgICBsYWJlbDogJ2dlbycsXG4gICAgY29sb3I6IEJMVUUyXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuaW50ZWdlcl06IHtcbiAgICBsYWJlbDogJ251bWJlcicsXG4gICAgY29sb3I6IE9SQU5HRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnJlYWxdOiB7XG4gICAgbGFiZWw6ICdudW1iZXInLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5zdHJpbmddOiB7XG4gICAgbGFiZWw6ICdzdHJpbmcnLFxuICAgIGNvbG9yOiBCTFVFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMudGltZXN0YW1wXToge1xuICAgIGxhYmVsOiAndGltZScsXG4gICAgY29sb3I6IEdSRUVOXG4gIH0sXG4gIC8vIGZpZWxkIHBhaXJzXG4gIFtBTExfRklFTERfVFlQRVMucG9pbnRdOiB7XG4gICAgbGFiZWw6ICdwb2ludCcsXG4gICAgY29sb3I6IEJMVUUzXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9DT0xPUlMgPSB7XG4gIGRlZmF1bHQ6IFJFRFxufTtcbmV4cG9ydCBjb25zdCBISUdITElHSF9DT0xPUl8zRDogUkdCQUNvbG9yID0gWzI1NSwgMjU1LCAyNTUsIDYwXTtcbmV4cG9ydCBjb25zdCBDSEFOTkVMX1NDQUxFUyA9IGtleU1pcnJvcih7XG4gIGNvbG9yOiBudWxsLFxuICByYWRpdXM6IG51bGwsXG4gIHNpemU6IG51bGwsXG4gIGN1c3RvbU1hcmtlcjogbnVsbCxcbiAgY29sb3JBZ2dyOiBudWxsLFxuICBzaXplQWdncjogbnVsbCxcbiAgaWRlbnRpdHk6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgQUdHUkVHQVRJT05fVFlQRVM6IHtcbiAgLy8gZGVmYXVsdFxuICBjb3VudDogJ2NvdW50JztcbiAgLy8gbGluZWFyXG4gIGF2ZXJhZ2U6ICdhdmVyYWdlJztcbiAgbWF4aW11bTogJ21heGltdW0nO1xuICBtaW5pbXVtOiAnbWluaW11bSc7XG4gIG1lZGlhbjogJ21lZGlhbic7XG4gIHN0ZGV2OiAnc3RkZXYnO1xuICBzdW06ICdzdW0nO1xuICB2YXJpYW5jZTogJ3ZhcmlhbmNlJztcbiAgLy8gb3JkaW5hbFxuICBtb2RlOiAnbW9kZSc7XG4gIGNvdW50VW5pcXVlOiAnY291bnQgdW5pcXVlJztcbiAgYW55VmFsdWU6ICdhbnlfdmFsdWUnXG59ID0ge1xuICAvLyBkZWZhdWx0XG4gIGNvdW50OiAnY291bnQnLFxuICAvLyBsaW5lYXJcbiAgYXZlcmFnZTogJ2F2ZXJhZ2UnLFxuICBtYXhpbXVtOiAnbWF4aW11bScsXG4gIG1pbmltdW06ICdtaW5pbXVtJyxcbiAgbWVkaWFuOiAnbWVkaWFuJyxcbiAgc3RkZXY6ICdzdGRldicsXG4gIHN1bTogJ3N1bScsXG4gIHZhcmlhbmNlOiAndmFyaWFuY2UnLFxuICAvLyBvcmRpbmFsXG4gIG1vZGU6ICdtb2RlJyxcbiAgY291bnRVbmlxdWU6ICdjb3VudCB1bmlxdWUnLFxuICBhbnlWYWx1ZTogJ2FueV92YWx1ZSdcbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9UWVBFU19BR0dSRUdBVE9SUyA9IHtcbiAgZGF0ZTogbnVsbCxcbiAgZ2VvanNvbjogbnVsbCxcbiAgaW50ZWdlcjogW1xuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmNvdW50LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZVxuICBdLFxuICByZWFsOiBbXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuY291bnQsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuc3RkZXYsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMuc3VtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlXG4gIF0sXG4gIHN0cmluZzogW0FHR1JFR0FUSU9OX1RZUEVTLm1vZGUsIEFHR1JFR0FUSU9OX1RZUEVTLmFueVZhbHVlXSxcbiAgdGltZXN0YW1wOiBudWxsLFxuICBwb2ludDogbnVsbFxufTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX0FHR1JFR0FUT1JTID0gW1xuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLmNvdW50LFxuICAgIGRpc3BsYXlOYW1lOiAnQ09VTlQnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZSxcbiAgICBkaXNwbGF5TmFtZTogJ0FWRydcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtLFxuICAgIGRpc3BsYXlOYW1lOiAnTUFYJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLm1pbmltdW0sXG4gICAgZGlzcGxheU5hbWU6ICdNSU4nXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMuc3RkZXYsXG4gICAgZGlzcGxheU5hbWU6ICdTVERFVidcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5zdW0sXG4gICAgZGlzcGxheU5hbWU6ICdTVU0nXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2UsXG4gICAgZGlzcGxheU5hbWU6ICdWQVJJQU5DRSdcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5tb2RlLFxuICAgIGRpc3BsYXlOYW1lOiAnTU9ERSdcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5hbnlWYWx1ZSxcbiAgICBkaXNwbGF5TmFtZTogJ0FOWSBWQUxVRSdcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IGxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvcl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbU0NBTEVfVFlQRVMuc3FydF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmN1c3RvbU1hcmtlcl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmlkZW50aXR5XTogW11cbn07XG5cbmV4cG9ydCBjb25zdCBsaW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBbU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1heGltdW1dOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWVkaWFuXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3RkZXZdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdW1dOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV1cbiAgfSxcblxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50XTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuYXZlcmFnZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1heGltdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWVkaWFuXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3RkZXZdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5zdW1dOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbU0NBTEVfVFlQRVMucG9pbnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZV06IFtTQ0FMRV9UWVBFUy5wb2ludF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5jdXN0b21NYXJrZXJdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5pZGVudGl0eV06IFtdXG59O1xuXG5leHBvcnQgY29uc3Qgb3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zID0ge1xuICAvLyBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXTogW1NDQUxFX1RZUEVTLm9yZGluYWwsIFNDQUxFX1RZUEVTLmxpbmVhcl0sXG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1vZGVdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmFueVZhbHVlXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudFVuaXF1ZV06IFtcbiAgICAgIFNDQUxFX1RZUEVTLnF1YW50aXplLFxuICAgICAgU0NBTEVfVFlQRVMucXVhbnRpbGUsXG4gICAgICBTQ0FMRV9UWVBFUy5jdXN0b21cbiAgICBdXG4gIH0sXG5cbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hbnlWYWx1ZV06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXVxuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgbm90U3VwcG9ydGVkU2NhbGVPcHRzID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnJhZGl1c106IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZV06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY3VzdG9tTWFya2VyXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5pZGVudGl0eV06IFtdXG59O1xuXG5leHBvcnQgY29uc3Qgbm90U3VwcG9ydEFnZ3JPcHRzID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge30sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHt9XG59O1xuXG4vKipcbiAqIERlZmF1bHQgYWdncmVnYXRpb24gYXJlIGJhc2VkIG9uIG9jdW50XG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FHR1JFR0FUSU9OID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV1cbiAgfSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ11cbiAgfVxufTtcblxuLyoqXG4gKiBEZWZpbmUgd2hhdCB0eXBlIG9mIHNjYWxlIG9wZXJhdGlvbiBpcyBhbGxvd2VkIG9uIGVhY2ggdHlwZSBvZiBmaWVsZHNcbiAqL1xuZXhwb3J0IGNvbnN0IEZJRUxEX09QVFMgPSB7XG4gIHN0cmluZzoge1xuICAgIHR5cGU6ICdjYXRlZ29yaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW11cbiAgICB9XG4gIH0sXG4gIHJlYWw6IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICB0aW1lc3RhbXA6IHtcbiAgICB0eXBlOiAndGltZScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5ub3RTdXBwb3J0QWdnck9wdHNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVfVElNRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgaW50ZWdlcjoge1xuICAgIHR5cGU6ICdudW1lcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ubGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnNcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgbGVnZW5kOiBkID0+IGQsXG4gICAgICB0b29sdGlwOiBbXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRFQ0lNQUwsXG4gICAgICAgIFRPT0xUSVBfRk9STUFUX1RZUEVTLlBFUkNFTlRBR0VcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIGJvb2xlYW46IHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1RPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsIFRPT0xUSVBfRk9STUFUX1RZUEVTLkJPT0xFQU5dXG4gICAgfVxuICB9LFxuICBkYXRlOiB7XG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm9yZGluYWxGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ub3JkaW5hbEZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1RPT0xUSVBfRk9STUFUX1RZUEVTLk5PTkUsIFRPT0xUSVBfRk9STUFUX1RZUEVTLkRBVEVdXG4gICAgfVxuICB9LFxuICBnZW9qc29uOiB7XG4gICAgdHlwZTogJ2dlb21ldHJ5JyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubm90U3VwcG9ydGVkU2NhbGVPcHRzLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiAnLi4uJyxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTID0gT2JqZWN0LmtleXMoQ0hBTk5FTF9TQ0FMRVMpLnJlZHVjZShcbiAgKGFjY3UsIGtleSkgPT4gKHtcbiAgICAuLi5hY2N1LFxuICAgIFtrZXldOiBPYmplY3Qua2V5cyhGSUVMRF9PUFRTKS5maWx0ZXIoZnQgPT4gT2JqZWN0LmtleXMoRklFTERfT1BUU1tmdF0uc2NhbGVba2V5XSkubGVuZ3RoKVxuICB9KSxcbiAge31cbik7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0xBWUVSX0NPTE9SID0ge1xuICB0cmlwQXJjOiAnIzkyMjZDNicsXG4gIGJlZ2ludHJpcF9sYXQ6ICcjMUU5NkJFJyxcbiAgZHJvcG9mZl9sYXQ6ICcjRkY5OTFGJyxcbiAgcmVxdWVzdF9sYXQ6ICcjNTJBMzUzJ1xufTtcblxuLy8gbGV0IHVzZXIgcGFzcyBpbiBkZWZhdWx0IHRvb2x0aXAgZmllbGRzXG5leHBvcnQgY29uc3QgREVGQVVMVF9UT09MVElQX0ZJRUxEUzogYW55W10gPSBbXTtcblxuZXhwb3J0IGNvbnN0IE5PX1ZBTFVFX0NPTE9SOiBDb2xvciA9IFswLCAwLCAwLCAwXTtcbmV4cG9ydCBjb25zdCBVTktOT1dOX0NPTE9SOiBDb2xvciA9IFsxMzQsIDE0MSwgMTQ1XTtcblxuZXhwb3J0IGNvbnN0IExBWUVSX0JMRU5ESU5HUyA9IHtcbiAgYWRkaXRpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuYWRkaXRpdmUnLFxuICAgIGJsZW5kRnVuYzogWydTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogJ0ZVTkNfQUREJ1xuICB9LFxuICBub3JtYWw6IHtcbiAgICAvLyByZWZlcmVuY2UgdG9cbiAgICAvLyBodHRwczovL2xpbW51LmNvbS93ZWJnbC1ibGVuZGluZy15b3VyZS1wcm9iYWJseS13cm9uZy9cbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcubm9ybWFsJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnLCAnT05FJywgJ09ORV9NSU5VU19TUkNfQUxQSEEnXSxcbiAgICBibGVuZEVxdWF0aW9uOiBbJ0ZVTkNfQUREJywgJ0ZVTkNfQUREJ11cbiAgfSxcbiAgc3VidHJhY3RpdmU6IHtcbiAgICBsYWJlbDogJ2xheWVyQmxlbmRpbmcuc3VidHJhY3RpdmUnLFxuICAgIGJsZW5kRnVuYzogWydPTkUnLCAnT05FX01JTlVTX0RTVF9DT0xPUicsICdTUkNfQUxQSEEnLCAnRFNUX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX1NVQlRSQUNUJywgJ0ZVTkNfQUREJ11cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE1BWF9ERUZBVUxUX1RPT0xUSVBTID0gNTtcblxuZXhwb3J0IGNvbnN0IFJFU09MVVRJT05TID0ga2V5TWlycm9yKHtcbiAgT05FX1g6IG51bGwsXG4gIFRXT19YOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkFUSU9TID0ga2V5TWlycm9yKHtcbiAgU0NSRUVOOiBudWxsLFxuICBGT1VSX0JZX1RIUkVFOiBudWxsLFxuICBTSVhURUVOX0JZX05JTkU6IG51bGwsXG4gIENVU1RPTTogbnVsbFxufSk7XG5cbmV4cG9ydCB0eXBlIEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBrZXlvZiB0eXBlb2YgRVhQT1JUX0lNR19SQVRJT1M7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGhpZGRlbj86IGJvb2xlYW47XG4gIGdldFNpemU6IChzY3JlZW5XOiBudW1iZXIsIHNjcmVlbkg6IG51bWJlcikgPT4ge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfTtcbn07XG5cbmV4cG9ydCBjb25zdCBTY3JlZW5SYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLlNDUkVFTixcbiAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpb09yaWdpbmFsU2NyZWVuJyxcbiAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7d2lkdGg6IHNjcmVlblcsIGhlaWdodDogc2NyZWVuSH0pXG59O1xuZXhwb3J0IGNvbnN0IEN1c3RvbVJhdGlvT3B0aW9uOiBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDogRVhQT1JUX0lNR19SQVRJT1MuQ1VTVE9NLFxuICBoaWRkZW46IHRydWUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW9DdXN0b20nLFxuICBnZXRTaXplOiAobWFwVywgbWFwSCkgPT4gKHt3aWR0aDogbWFwVywgaGVpZ2h0OiBtYXBIfSlcbn07XG5leHBvcnQgY29uc3QgRm91ckJ5VGhyZWVSYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkZPVVJfQllfVEhSRUUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW80XzMnLFxuICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICB3aWR0aDogc2NyZWVuVyxcbiAgICBoZWlnaHQ6IE1hdGgucm91bmQoc2NyZWVuVyAqIDAuNzUpXG4gIH0pXG59O1xuZXhwb3J0IGNvbnN0IFNpeHRlZW5CeU5pbmVSYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLlNJWFRFRU5fQllfTklORSxcbiAgbGFiZWw6ICdtb2RhbC5leHBvcnRJbWFnZS5yYXRpbzE2XzknLFxuICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICB3aWR0aDogc2NyZWVuVyxcbiAgICBoZWlnaHQ6IE1hdGgucm91bmQoc2NyZWVuVyAqIDAuNTYyNSlcbiAgfSlcbn07XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JBVElPX09QVElPTlM6IFJlYWRvbmx5QXJyYXk8SW1hZ2VSYXRpb09wdGlvbj4gPSBbXG4gIFNjcmVlblJhdGlvT3B0aW9uLFxuICBDdXN0b21SYXRpb09wdGlvbixcbiAgRm91ckJ5VGhyZWVSYXRpb09wdGlvbixcbiAgU2l4dGVlbkJ5TmluZVJhdGlvT3B0aW9uXG5dO1xuXG5leHBvcnQgdHlwZSBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBrZXlvZiB0eXBlb2YgUkVTT0xVVElPTlM7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGF2YWlsYWJsZTogYm9vbGVhbjtcbiAgc2NhbGU6IG51bWJlcjtcbiAgZ2V0U2l6ZTogKHNjcmVlblc6IG51bWJlciwgc2NyZWVuSDogbnVtYmVyKSA9PiB7d2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXJ9O1xufTtcblxuZXhwb3J0IGNvbnN0IE9uZVhSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5PTkVfWCxcbiAgbGFiZWw6ICcxeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDEsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XLFxuICAgIGhlaWdodDogc2NyZWVuSFxuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IFR3b1hSZXNvbHV0aW9uT3B0aW9uOiBJbWFnZVJlc29sdXRpb25PcHRpb24gPSB7XG4gIGlkOiBSRVNPTFVUSU9OUy5UV09fWCxcbiAgbGFiZWw6ICcyeCcsXG4gIGF2YWlsYWJsZTogdHJ1ZSxcbiAgc2NhbGU6IDIsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe1xuICAgIHdpZHRoOiBzY3JlZW5XICogMixcbiAgICBoZWlnaHQ6IHNjcmVlbkggKiAyXG4gIH0pXG59O1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlM6IFJlYWRvbmx5QXJyYXk8SW1hZ2VSZXNvbHV0aW9uT3B0aW9uPiA9IFtcbiAgT25lWFJlc29sdXRpb25PcHRpb24sXG4gIFR3b1hSZXNvbHV0aW9uT3B0aW9uXG5dO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0RBVEFfVFlQRSA9IGtleU1pcnJvcih7XG4gIENTVjogbnVsbFxuICAvLyBTSEFQRUZJTEU6IG51bGwsXG4gIC8vIEpTT046IG51bGwsXG4gIC8vIEdFT0pTT046IG51bGwsXG4gIC8vIFRPUE9KU09OOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEVfT1BUSU9OUyA9IFtcbiAge1xuICAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkNTVixcbiAgICBsYWJlbDogRVhQT1JUX0RBVEFfVFlQRS5DU1YudG9Mb3dlckNhc2UoKSxcbiAgICBhdmFpbGFibGU6IHRydWVcbiAgfVxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuU0hBUEVGSUxFLFxuICAvLyAgIGxhYmVsOiAnc2hhcGVmaWxlJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5KU09OLFxuICAvLyAgIGxhYmVsOiAnanNvbicsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuR0VPSlNPTixcbiAgLy8gICBsYWJlbDogJ2dlb2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLlRPUE9KU09OLFxuICAvLyAgIGxhYmVsOiAndG9wb2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfVxuXTtcblxuLy8gRXhwb3J0IG1hcCB0eXBlc1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfRk9STUFUUyA9IGtleU1pcnJvcih7XG4gIEhUTUw6IG51bGwsXG4gIEpTT046IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0hUTUxfTUFQX01PREVTID0ga2V5TWlycm9yKHtcbiAgUkVBRDogbnVsbCxcbiAgRURJVDogbnVsbFxufSk7XG5cbi8vIEV4cG9ydCBtYXAgb3B0aW9uc1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9NQVBfRk9STUFUX09QVElPTlMgPSBPYmplY3QuZW50cmllcyhFWFBPUlRfTUFQX0ZPUk1BVFMpLm1hcChcbiAgKGVudHJ5OiBbc3RyaW5nLCBhbnldKSA9PiAoe1xuICAgIGlkOiBlbnRyeVswXSxcbiAgICBsYWJlbDogZW50cnlbMV0udG9Mb3dlckNhc2UoKSxcbiAgICBhdmFpbGFibGU6IHRydWVcbiAgfSlcbik7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSFRNTF9NQVBfTU9ERV9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX0hUTUxfTUFQX01PREVTKS5tYXAoXG4gIChlbnRyeTogW3N0cmluZywgYW55XSkgPT4gKHtcbiAgICBpZDogZW50cnlbMF0sXG4gICAgbGFiZWw6IGBtb2RhbC5leHBvcnRNYXAuaHRtbC4ke2VudHJ5WzFdLnRvTG93ZXJDYXNlKCl9YCxcbiAgICBhdmFpbGFibGU6IHRydWUsXG4gICAgdXJsOiBnZXRIVE1MTWFwTW9kZVRpbGVVcmwoZW50cnlbMV0pXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9VVUlEX0NPVU5UID0gNjtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX01FU1NBR0UgPSAnTUVTU0FHRV9OT1RfUFJPVklERUQnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICBpbmZvOiBudWxsLFxuICBlcnJvcjogbnVsbCxcbiAgd2FybmluZzogbnVsbCxcbiAgc3VjY2VzczogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9UT1BJQ1MgPSBrZXlNaXJyb3Ioe1xuICBnbG9iYWw6IG51bGwsXG4gIGZpbGU6IG51bGxcbn0pO1xuXG4vLyBNaW5pbXVtIHRpbWUgYmV0d2VlbiBpZGVudGljYWwgbm90aWZpY2F0aW9ucyBhYm91dCBkZWNrLmdsIGVycm9yc1xuZXhwb3J0IGNvbnN0IFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FID0gMjUwMDtcblxuLy8gQW5pbWF0aW9uXG5leHBvcnQgY29uc3QgQkFTRV9TUEVFRCA9IDYwMDtcbmV4cG9ydCBjb25zdCBGUFMgPSA2MDtcblxuLyoqXG4gKiA0IEFuaW1hdGlvbiBXaW5kb3cgVHlwZXNcbiAqIDEuIGZyZWVcbiAqICB8LT4gIHwtPlxuICogQ3VycmVudCB0aW1lIGlzIGEgZml4ZWQgcmFuZ2UsIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGZyYW1lcyBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHdpbmRvd1xuICogVGhlIGluY3JlbWVudCBpZCBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiAyLiBpbmNyZW1lbnRhbFxuICogfCAgICB8LT5cbiAqIFNhbWUgYXMgZnJlZSwgY3VycmVudCB0aW1lIGlzIGEgZ3Jvd2luZyByYW5nZSwgb25seSB0aGUgbWF4IHZhbHVlIG9mIHJhbmdlIGluY3JlbWVudCBkdXJpbmcgYW5pbWF0aW9uLlxuICogVGhlIGluY3JlbWVudCBpcyBhbHNvIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDMuIHBvaW50XG4gKiBvIC0+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LCBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBmcmFtZSBjb250aW51b3VzbHkgdG8gYW5pbWF0aW9uIGEgbW92aW5nIHBvaW50XG4gKiBUaGUgaW5jcmVtZW50IGlzIGJhc2VkIG9uIGRvbWFpbiAvIEJBU0VfU1BFRUQgKiBTUEVFRFxuICpcbiAqIDQuIGludGVydmFsXG4gKiBvIH4+IG9cbiAqIEN1cnJlbnQgdGltZSBpcyBhIHBvaW50LiBBbiBhcnJheSBvZiBzb3J0ZWQgdGltZSBzdGVwcyBuZWVkIHRvIGJlIHByb3ZpZGVkLlxuICogYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gYXQgYSBpbnRlcnZhbCB3aGVuIHRoZSBwb2ludCBqdW1wcyB0byB0aGUgbmV4dCBzdGVwXG4gKi9cbmV4cG9ydCBjb25zdCBBTklNQVRJT05fV0lORE9XID0ga2V5TWlycm9yKHtcbiAgZnJlZTogbnVsbCxcbiAgaW5jcmVtZW50YWw6IG51bGwsXG4gIHBvaW50OiBudWxsLFxuICBpbnRlcnZhbDogbnVsbFxufSk7XG5leHBvcnQgY29uc3QgREVGQVVMVF9USU1FX0ZPUk1BVCA9ICdNTS9ERC9ZWSBISDptbTpzc2EnO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfUkFOR0U6IFtudW1iZXIsIG51bWJlcl0gPSBbMCwgMTBdO1xuZXhwb3J0IGNvbnN0IFNQRUVEX0NPTlRST0xfU1RFUCA9IDAuMDAxO1xuXG4vLyBHZW9jb2RlclxuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0RBVEFTRVRfTkFNRSA9ICdnZW9jb2Rlcl9kYXRhc2V0JztcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9MQVlFUl9JRCA9ICdnZW9jb2Rlcl9sYXllcic7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfR0VPX09GRlNFVCA9IDAuMDU7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9DT0xPUjogW251bWJlciwgbnVtYmVyLCBudW1iZXJdID0gWzI1NSwgMCwgMF07XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfSUNPTl9TSVpFID0gODA7XG5cbi8vIFdlIGNvdWxkIHVzZSBkaXJlY3RseSByZWFjdC1tYXAtZ2wtZHJhdyBFZGl0b3JNb2RlIGJ1dCB0aGlzIHdvdWxkXG4vLyBjcmVhdGUgYSBkaXJlY3QgZGVwZW5kZW5jeSB3aXRoIHJlYWN0LW1hcC1nbC1kcmF3XG4vLyBDcmVhdGVkIHRoaXMgbWFwIHRvIGJlIGluZGVwZW5kZW50IGZyb20gcmVhY3QtbWFwLWdsLWRyYXdcbmV4cG9ydCBjb25zdCBFRElUT1JfTU9ERVMgPSB7XG4gIFJFQURfT05MWTogRWRpdG9yTW9kZXMuUkVBRF9PTkxZLFxuICBEUkFXX1BPTFlHT046IEVkaXRvck1vZGVzLkRSQVdfUE9MWUdPTixcbiAgRFJBV19SRUNUQU5HTEU6IEVkaXRvck1vZGVzLkRSQVdfUkVDVEFOR0xFLFxuICBFRElUOiBFZGl0b3JNb2Rlcy5FRElUX1ZFUlRFWFxufTtcblxuZXhwb3J0IGNvbnN0IEVESVRPUl9BVkFJTEFCTEVfTEFZRVJTOiBzdHJpbmdbXSA9IFtcbiAgTEFZRVJfVFlQRVMucG9pbnQsXG4gIExBWUVSX1RZUEVTLmhleGFnb24sXG4gIExBWUVSX1RZUEVTLmFyYyxcbiAgTEFZRVJfVFlQRVMubGluZSxcbiAgTEFZRVJfVFlQRVMuaGV4YWdvbklkXG5dO1xuLy8gR1BVIEZpbHRlcmluZ1xuLyoqXG4gKiBNYXggbnVtYmVyIG9mIGZpbHRlciB2YWx1ZSBidWZmZXJzIHRoYXQgZGVjay5nbCBwcm92aWRlc1xuICovXG5leHBvcnQgY29uc3QgTUFYX0dQVV9GSUxURVJTID0gNDtcbmV4cG9ydCBjb25zdCBNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiA9IHtcbiAgd2lkdGg6IDMwMCxcbiAgaGVpZ2h0OiAyMDBcbn07XG5cbmV4cG9ydCBjb25zdCBNQVBfSU5GT19DSEFSQUNURVIgPSB7XG4gIHRpdGxlOiAxMDAsXG4gIGRlc2NyaXB0aW9uOiAxMDBcbn07XG5cbi8vIExvYWQgZGF0YVxuZXhwb3J0IGNvbnN0IExPQURJTkdfTUVUSE9EUyA9IGtleU1pcnJvcih7XG4gIHVwbG9hZDogbnVsbCxcbiAgc3RvcmFnZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBEQVRBU0VUX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICByb3c6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGNzdjogbnVsbCxcbiAga2VwbGVyZ2w6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFQX0NPTlRST0xTID0ga2V5TWlycm9yKHtcbiAgdmlzaWJsZUxheWVyczogbnVsbCxcbiAgbWFwTGVnZW5kOiBudWxsLFxuICB0b2dnbGUzZDogbnVsbCxcbiAgc3BsaXRNYXA6IG51bGwsXG4gIG1hcERyYXc6IG51bGwsXG4gIG1hcExvY2FsZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBNQVNLX0xBWUVSX0lEID0gJ21hc2tfbGF5ZXInO1xuXG5leHBvcnQgY29uc3QgWk9PTV9MRVZFTF9MSU1JVFMgPSB7XG4gIG1pbjogMCxcbiAgbWF4OiAyMVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFvQkEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBVUEsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBV0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sTUFBQSxHQUFBUCxPQUFBO0FBQXlDLFNBQUFRLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFB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QUFXLENBQUNHO0FBQ3BCLENBQUM7QUFFTSxJQUFNQyx1QkFBaUMsR0FBQWpSLE9BQUEsQ0FBQWlSLHVCQUFBLEdBQUcsQ0FDL0NDLGtCQUFXLENBQUMvTCxLQUFLLEVBQ2pCK0wsa0JBQVcsQ0FBQ0MsT0FBTyxFQUNuQkQsa0JBQVcsQ0FBQ0UsR0FBRyxFQUNmRixrQkFBVyxDQUFDRyxJQUFJLEVBQ2hCSCxrQkFBVyxDQUFDSSxTQUFTLENBQ3RCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDTyxJQUFNQyxlQUFlLEdBQUF2UixPQUFBLENBQUF1UixlQUFBLEdBQUcsQ0FBQztBQUN6QixJQUFNQyx1QkFBdUIsR0FBQXhSLE9BQUEsQ0FBQXdSLHVCQUFBLEdBQUc7RUFDckNwUSxLQUFLLEVBQUUsR0FBRztFQUNWZ00sTUFBTSxFQUFFO0FBQ1YsQ0FBQztBQUVNLElBQU1xRSxrQkFBa0IsR0FBQXpSLE9BQUEsQ0FBQXlSLGtCQUFBLEdBQUc7RUFDaENDLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLFdBQVcsRUFBRTtBQUNmLENBQUM7O0FBRUQ7QUFDTyxJQUFNQyxlQUFlLEdBQUE1UixPQUFBLENBQUE0UixlQUFBLEdBQUcsSUFBQTVQLHFCQUFTLEVBQUM7RUFDdkM2UCxNQUFNLEVBQUUsSUFBSTtFQUNaQyxPQUFPLEVBQUU7QUFDWCxDQUFDLENBQUM7QUFFSyxJQUFNQyxlQUFlLEdBQUEvUixPQUFBLENBQUErUixlQUFBLEdBQUcsSUFBQS9QLHFCQUFTLEVBQUM7RUFDdkNnUSxHQUFHLEVBQUUsSUFBSTtFQUNUbk8sT0FBTyxFQUFFLElBQUk7RUFDYm9PLEdBQUcsRUFBRSxJQUFJO0VBQ1RDLFFBQVEsRUFBRTtBQUNaLENBQUMsQ0FBQztBQUVLLElBQU1DLFlBQVksR0FBQW5TLE9BQUEsQ0FBQW1TLFlBQUEsR0FBRyxJQUFBblEscUJBQVMsRUFBQztFQUNwQ29RLGFBQWEsRUFBRSxJQUFJO0VBQ25CdlEsU0FBUyxFQUFFLElBQUk7RUFDZndRLFFBQVEsRUFBRSxJQUFJO0VBQ2RDLFFBQVEsRUFBRSxJQUFJO0VBQ2RDLE9BQU8sRUFBRSxJQUFJO0VBQ2JDLFNBQVMsRUFBRTtBQUNiLENBQUMsQ0FBQztBQUVLLElBQU1DLGFBQWEsR0FBQXpTLE9BQUEsQ0FBQXlTLGFBQUEsR0FBRyxZQUFZO0FBRWxDLElBQU1DLGlCQUFpQixHQUFBMVMsT0FBQSxDQUFBMFMsaUJBQUEsR0FBRztFQUMvQkMsR0FBRyxFQUFFLENBQUM7RUFDTkMsR0FBRyxFQUFFO0FBQ1AsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
901
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfa2V5bWlycm9yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3RNYXBHbERyYXciLCJfZDNTY2FsZSIsIl9pY29ucyIsIl91dGlscyIsIl9jdXN0b21TY2FsZXMiLCJfdG9vbHRpcCIsIl90eXBlcyIsIkFDVElPTl9QUkVGSVgiLCJleHBvcnRzIiwiQ0xPVURGUk9OVCIsIklDT05fUFJFRklYIiwiREVGQVVMVF9NQVBCT1hfQVBJX1VSTCIsIkRBVEFfVEFCTEVfSUQiLCJERUxFVEVfREFUQV9JRCIsIkFERF9EQVRBX0lEIiwiRVhQT1JUX0lNQUdFX0lEIiwiRVhQT1JUX0RBVEFfSUQiLCJBRERfTUFQX1NUWUxFX0lEIiwiRVhQT1JUX01BUF9JRCIsIlNBVkVfTUFQX0lEIiwiT1ZFUldSSVRFX01BUF9JRCIsIlNIQVJFX01BUF9JRCIsIktFUExFUl9HTF9OQU1FIiwiS0VQTEVSX0dMX1ZFUlNJT04iLCJLRVBMRVJfR0xfV0VCU0lURSIsIkRJTUVOU0lPTlMiLCJzaWRlUGFuZWwiLCJ3aWR0aCIsIm1hcmdpbiIsInRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCIsImhlYWRlckhlaWdodCIsIm1hcENvbnRyb2wiLCJwYWRkaW5nIiwibWFwTGVnZW5kIiwicGlubmVkIiwiVEhFTUUiLCJrZXlNaXJyb3IiLCJsaWdodCIsImRhcmsiLCJiYXNlIiwiU0lERUJBUl9QQU5FTFMiLCJpZCIsImxhYmVsIiwiaWNvbkNvbXBvbmVudCIsIkxheWVycyIsIm9uQ2xpY2siLCJGaWx0ZXJGdW5uZWwiLCJDdXJzb3JDbGljayIsIlNldHRpbmdzIiwiUEFORUxTIiwiREVGQVVMVF9MQVlFUl9HUk9VUFMiLCJzbHVnIiwiZmlsdGVyIiwiX3JlZiIsIm1hdGNoIiwiZGVmYXVsdFZpc2liaWxpdHkiLCJfcmVmMiIsIl9yZWYzIiwiX3JlZjQiLCJfcmVmNSIsIl9yZWY2IiwiREVGQVVMVF9NQVBfU1RZTEVTIiwidXJsIiwiaWNvbiIsImxheWVyR3JvdXBzIiwiR0VPSlNPTl9GSUVMRFMiLCJnZW9qc29uIiwiSUNPTl9GSUVMRFMiLCJUUklQX1BPSU5UX0ZJRUxEUyIsIlRSSVBfQVJDX0ZJRUxEUyIsImxhdDAiLCJsbmcwIiwibGF0MSIsImxuZzEiLCJGSUxURVJfVFlQRVMiLCJyYW5nZSIsInNlbGVjdCIsImlucHV0IiwidGltZVJhbmdlIiwibXVsdGlTZWxlY3QiLCJwb2x5Z29uIiwiU0NBTEVfVFlQRVMiLCJvcmRpbmFsIiwicXVhbnRpbGUiLCJxdWFudGl6ZSIsImxpbmVhciIsInNxcnQiLCJsb2ciLCJwb2ludCIsImN1c3RvbSIsImxvZ2FyaXRobWljIiwiaWRlbnRpdHkiLCJTQ0FMRV9GVU5DIiwic2NhbGVMaW5lYXIiLCJzY2FsZVF1YW50aXplIiwic2NhbGVRdWFudGlsZSIsInNjYWxlT3JkaW5hbCIsInNjYWxlU3FydCIsInNjYWxlTG9nIiwic2NhbGVQb2ludCIsInNjYWxlVGhyZXNob2xkIiwic2NhbGVJZGVudGl0eSIsIkFMTF9GSUVMRF9UWVBFUyIsImJvb2xlYW4iLCJkYXRlIiwiaW50ZWdlciIsInJlYWwiLCJzdHJpbmciLCJ0aW1lc3RhbXAiLCJTT1JUX09SREVSIiwiQVNDRU5ESU5HIiwiREVTQ0VORElORyIsIlVOU09SVCIsIlRBQkxFX09QVElPTiIsIlNPUlRfQVNDIiwiU09SVF9ERVMiLCJQSU4iLCJVTlBJTiIsIkNPUFkiLCJUQUJMRV9PUFRJT05fTElTVCIsInZhbHVlIiwiZGlzcGxheSIsIkFycm93VXAiLCJjb25kaXRpb24iLCJwcm9wcyIsInNvcnRNb2RlIiwiQXJyb3dEb3duIiwiQ2FuY2VsIiwiaXNTb3J0ZWQiLCJQaW4iLCJpc1Bpbm5lZCIsIkNsaXBib2FyZCIsIk9SQU5HRSIsIlBJTksiLCJQVVJQTEUiLCJCTFVFIiwiQkxVRTIiLCJCTFVFMyIsIkdSRUVOIiwiUkVEIiwiRklMRURfVFlQRV9ESVNQTEFZIiwiY29sb3IiLCJGSUVMRF9DT0xPUlMiLCJkZWZhdWx0IiwiSElHSExJR0hfQ09MT1JfM0QiLCJDSEFOTkVMX1NDQUxFUyIsInJhZGl1cyIsInNpemUiLCJjdXN0b21NYXJrZXIiLCJjb2xvckFnZ3IiLCJzaXplQWdnciIsIkFHR1JFR0FUSU9OX1RZUEVTIiwiY291bnQiLCJhdmVyYWdlIiwibWF4aW11bSIsIm1pbmltdW0iLCJtZWRpYW4iLCJzdGRldiIsInN1bSIsInZhcmlhbmNlIiwibW9kZSIsImNvdW50VW5pcXVlIiwiYW55VmFsdWUiLCJGSUVMRF9UWVBFU19BR0dSRUdBVE9SUyIsIkZJRUxEX0FHR1JFR0FUT1JTIiwiZGlzcGxheU5hbWUiLCJsaW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zIiwibGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMiLCJvcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyIsIm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyIsIm5vdFN1cHBvcnRlZFNjYWxlT3B0cyIsIm5vdFN1cHBvcnRBZ2dyT3B0cyIsIkRFRkFVTFRfQUdHUkVHQVRJT04iLCJGSUVMRF9PUFRTIiwidHlwZSIsInNjYWxlIiwiZm9ybWF0IiwibGVnZW5kIiwiZCIsInRvb2x0aXAiLCJUT09MVElQX0ZPUk1BVF9UWVBFUyIsIk5PTkUiLCJERUNJTUFMIiwiUEVSQ0VOVEFHRSIsIkRBVEUiLCJEQVRFX1RJTUUiLCJCT09MRUFOIiwiQ0hBTk5FTF9TQ0FMRV9TVVBQT1JURURfRklFTERTIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImFjY3UiLCJrZXkiLCJmdCIsImxlbmd0aCIsIkRFRkFVTFRfTEFZRVJfQ09MT1IiLCJ0cmlwQXJjIiwiYmVnaW50cmlwX2xhdCIsImRyb3BvZmZfbGF0IiwicmVxdWVzdF9sYXQiLCJERUZBVUxUX1RPT0xUSVBfRklFTERTIiwiTk9fVkFMVUVfQ09MT1IiLCJVTktOT1dOX0NPTE9SIiwiTEFZRVJfQkxFTkRJTkdTIiwiYWRkaXRpdmUiLCJibGVuZEZ1bmMiLCJibGVuZEVxdWF0aW9uIiwibm9ybWFsIiwic3VidHJhY3RpdmUiLCJNQVhfREVGQVVMVF9UT09MVElQUyIsIlJFU09MVVRJT05TIiwiT05FX1giLCJUV09fWCIsIkVYUE9SVF9JTUdfUkFUSU9TIiwiU0NSRUVOIiwiRk9VUl9CWV9USFJFRSIsIlNJWFRFRU5fQllfTklORSIsIkNVU1RPTSIsIlNjcmVlblJhdGlvT3B0aW9uIiwiZ2V0U2l6ZSIsInNjcmVlblciLCJzY3JlZW5IIiwiaGVpZ2h0IiwiQ3VzdG9tUmF0aW9PcHRpb24iLCJoaWRkZW4iLCJtYXBXIiwibWFwSCIsIkZvdXJCeVRocmVlUmF0aW9PcHRpb24iLCJNYXRoIiwicm91bmQiLCJTaXh0ZWVuQnlOaW5lUmF0aW9PcHRpb24iLCJFWFBPUlRfSU1HX1JBVElPX09QVElPTlMiLCJPbmVYUmVzb2x1dGlvbk9wdGlvbiIsImF2YWlsYWJsZSIsIlR3b1hSZXNvbHV0aW9uT3B0aW9uIiwiRVhQT1JUX0lNR19SRVNPTFVUSU9OX09QVElPTlMiLCJFWFBPUlRfREFUQV9UWVBFIiwiQ1NWIiwiRVhQT1JUX0RBVEFfVFlQRV9PUFRJT05TIiwidG9Mb3dlckNhc2UiLCJFWFBPUlRfTUFQX0ZPUk1BVFMiLCJIVE1MIiwiSlNPTiIsIkVYUE9SVF9IVE1MX01BUF9NT0RFUyIsIlJFQUQiLCJFRElUIiwiRVhQT1JUX01BUF9GT1JNQVRfT1BUSU9OUyIsImVudHJpZXMiLCJtYXAiLCJlbnRyeSIsIkVYUE9SVF9IVE1MX01BUF9NT0RFX09QVElPTlMiLCJnZXRIVE1MTWFwTW9kZVRpbGVVcmwiLCJERUZBVUxUX1VVSURfQ09VTlQiLCJERUZBVUxUX05PVElGSUNBVElPTl9NRVNTQUdFIiwiREVGQVVMVF9OT1RJRklDQVRJT05fVFlQRVMiLCJpbmZvIiwiZXJyb3IiLCJ3YXJuaW5nIiwic3VjY2VzcyIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1RPUElDUyIsImdsb2JhbCIsImZpbGUiLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsIkJBU0VfU1BFRUQiLCJGUFMiLCJBTklNQVRJT05fV0lORE9XIiwiZnJlZSIsImluY3JlbWVudGFsIiwiaW50ZXJ2YWwiLCJERUZBVUxUX1RJTUVfRk9STUFUIiwiU1BFRURfQ09OVFJPTF9SQU5HRSIsIlNQRUVEX0NPTlRST0xfU1RFUCIsIkdFT0NPREVSX0RBVEFTRVRfTkFNRSIsIkdFT0NPREVSX0xBWUVSX0lEIiwiR0VPQ09ERVJfR0VPX09GRlNFVCIsIkdFT0NPREVSX0lDT05fQ09MT1IiLCJHRU9DT0RFUl9JQ09OX1NJWkUiLCJFRElUT1JfTU9ERVMiLCJSRUFEX09OTFkiLCJFZGl0b3JNb2RlcyIsIkRSQVdfUE9MWUdPTiIsIkRSQVdfUkVDVEFOR0xFIiwiRURJVF9WRVJURVgiLCJFRElUT1JfQVZBSUxBQkxFX0xBWUVSUyIsIkxBWUVSX1RZUEVTIiwiaGV4YWdvbiIsImFyYyIsImxpbmUiLCJoZXhhZ29uSWQiLCJNQVhfR1BVX0ZJTFRFUlMiLCJNQVBfVEhVTUJOQUlMX0RJTUVOU0lPTiIsIk1BUF9JTkZPX0NIQVJBQ1RFUiIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJMT0FESU5HX01FVEhPRFMiLCJ1cGxvYWQiLCJzdG9yYWdlIiwiREFUQVNFVF9GT1JNQVRTIiwicm93IiwiY3N2Iiwia2VwbGVyZ2wiLCJNQVBfQ09OVFJPTFMiLCJ2aXNpYmxlTGF5ZXJzIiwidG9nZ2xlM2QiLCJzcGxpdE1hcCIsIm1hcERyYXciLCJtYXBMb2NhbGUiLCJNQVNLX0xBWUVSX0lEIiwiWk9PTV9MRVZFTF9MSU1JVFMiLCJtaW4iLCJtYXgiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IGtleU1pcnJvciBmcm9tICdrZXltaXJyb3InO1xuaW1wb3J0IHtFZGl0b3JNb2Rlc30gZnJvbSAncmVhY3QtbWFwLWdsLWRyYXcnO1xuXG5pbXBvcnQge0NvbG9yfSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7XG4gIHNjYWxlTGluZWFyLFxuICBzY2FsZVF1YW50aXplLFxuICBzY2FsZVF1YW50aWxlLFxuICBzY2FsZU9yZGluYWwsXG4gIHNjYWxlU3FydCxcbiAgc2NhbGVMb2csXG4gIHNjYWxlUG9pbnQsXG4gIHNjYWxlVGhyZXNob2xkXG59IGZyb20gJ2QzLXNjYWxlJztcbmltcG9ydCB7XG4gIExheWVycyxcbiAgRmlsdGVyRnVubmVsLFxuICBTZXR0aW5ncyxcbiAgQ3Vyc29yQ2xpY2ssXG4gIFBpbixcbiAgQXJyb3dEb3duLFxuICBBcnJvd1VwLFxuICBDbGlwYm9hcmQsXG4gIENhbmNlbFxufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQge2dldEhUTUxNYXBNb2RlVGlsZVVybH0gZnJvbSAndXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtzY2FsZUlkZW50aXR5fSBmcm9tICd1dGlscy9jdXN0b20tc2NhbGVzJztcbmltcG9ydCB7VE9PTFRJUF9GT1JNQVRfVFlQRVN9IGZyb20gJy4vdG9vbHRpcCc7XG5pbXBvcnQge0xBWUVSX1RZUEVTfSBmcm9tICdsYXllcnMvdHlwZXMnO1xuaW1wb3J0IHtSR0JBQ29sb3J9IGZyb20gJ3JlZHVjZXJzJztcblxuZXhwb3J0IGNvbnN0IEFDVElPTl9QUkVGSVggPSAnQEBrZXBsZXIuZ2wvJztcbmV4cG9ydCBjb25zdCBDTE9VREZST05UID0gJ2h0dHBzOi8vZDFhM2Y0c3BhenpycDQuY2xvdWRmcm9udC5uZXQva2VwbGVyLmdsJztcbmV4cG9ydCBjb25zdCBJQ09OX1BSRUZJWCA9IGAke0NMT1VERlJPTlR9L2dlb2R1ZGVgO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTUFQQk9YX0FQSV9VUkwgPSAnaHR0cHM6Ly9hcGkubWFwYm94LmNvbSc7XG5cbi8vIE1vZGFsIElkc1xuLyoqXG4gKiBNb2RhbCBpZDogZGF0YSB0YWJsZVxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgREFUQV9UQUJMRV9JRCA9ICdkYXRhVGFibGUnO1xuLyoqXG4gKiBNb2RhbCBpZDogZGVsZXRlIGRhdGFzZXQgY29uZmlybSBkaWFsb2dcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IERFTEVURV9EQVRBX0lEID0gJ2RlbGV0ZURhdGEnO1xuLyoqXG4gKiBNb2RhbCBpZDogYWRkIGRhdGEgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEFERF9EQVRBX0lEID0gJ2FkZERhdGEnO1xuLyoqXG4gKiBNb2RhbCBpZDogZXhwb3J0IGltYWdlIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1BR0VfSUQgPSAnZXhwb3J0SW1hZ2UnO1xuLyoqXG4gKiBNb2RhbCBpZDogZXhwb3J0IGRhdGEgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX0lEID0gJ2V4cG9ydERhdGEnO1xuLyoqXG4gKiBNb2RhbCBpZDogYWRkIGN1c3RvbSBtYXAgc3R5bGUgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IEFERF9NQVBfU1RZTEVfSUQgPSAnYWRkTWFwU3R5bGUnO1xuLyoqXG4gKiBNb2RhbCBpZDogZXhwb3J0IG1hcCBtb2RhbFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgRVhQT1JUX01BUF9JRCA9ICdleHBvcnRNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogc2F2ZSBtYXAgbW9kYWxcbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IFNBVkVfTUFQX0lEID0gJ3NhdmVNYXAnO1xuLyoqXG4gKiBNb2RhbCBpZDogY29uZmlybSB0byBvdmVyd3JpdGUgc2F2ZWQgbWFwXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBPVkVSV1JJVEVfTUFQX0lEID0gJ292ZXJ3cml0ZU1hcCc7XG4vKipcbiAqIE1vZGFsIGlkOiBzaGFyZSBtYXAgdXJsIG1vZGFsXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtzdHJpbmd9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBTSEFSRV9NQVBfSUQgPSAnc2hhcmVNYXAnO1xuXG5leHBvcnQgY29uc3QgS0VQTEVSX0dMX05BTUUgPSAna2VwbGVyLmdsJztcblxuLy8gX19QQUNLQUdFX1ZFUlNJT05fXyBpcyBhdXRvbWF0aWNhbGx5IGluamVjdGVkIGJ5IEJhYmVsL1dlYnBhY2sgZHVyaW5nIHRoZSBidWlsZGluZyBwcm9jZXNzXG4vLyBTaW5jZSB3ZSBhcmUgaW5qZWN0aW5nIHRoaXMgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzIHdpdGggYmFiZWxcbi8vIHdoaWxlIGRldmVsb3BpbmcgVkVSU0lPTiBpcyBub3QgZGVmaW5lZCwgd2UgY2FwdHVyZSB0aGUgZXhjZXB0aW9uIGFuZCByZXR1cm5cbi8vIGFuIGVtcHR5IHN0cmluZyB3aGljaCB3aWxsIGFsbG93IHVzIHRvIHJldHJpZXZlIHRoZSBsYXRlc3QgdW1kIHZlcnNpb25cbmV4cG9ydCBjb25zdCBLRVBMRVJfR0xfVkVSU0lPTiA9ICdfX1BBQ0tBR0VfVkVSU0lPTl9fJztcbmV4cG9ydCBjb25zdCBLRVBMRVJfR0xfV0VCU0lURSA9ICdodHRwOi8va2VwbGVyLmdsLyc7XG5cbmV4cG9ydCBjb25zdCBESU1FTlNJT05TID0ge1xuICBzaWRlUGFuZWw6IHtcbiAgICB3aWR0aDogMzAwLFxuICAgIG1hcmdpbjoge3RvcDogMjAsIGxlZnQ6IDIwLCBib3R0b206IDMwLCByaWdodDogMjB9LFxuICAgIGhlYWRlckhlaWdodDogOTZcbiAgfSxcbiAgbWFwQ29udHJvbDoge1xuICAgIHdpZHRoOiAxODQsXG4gICAgcGFkZGluZzogMTIsXG4gICAgbWFwTGVnZW5kOiB7XG4gICAgICBwaW5uZWQ6IHtcbiAgICAgICAgYm90dG9tOiAyMixcbiAgICAgICAgcmlnaHQ6IDEyXG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIFRoZW1lIG5hbWUgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIGBLZXBsZXJHbGAgYHByb3AudGhlbWVgLlxuICogQXZhaWxhYmxlIHRoZW1lcyBhcmUgYFRIRU1FLmxpZ2h0YCBhbmQgYFRIRU1FLmRhcmtgLiBEZWZhdWx0IHRoZW1lIGlzIGBUSEVNRS5kYXJrYFxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7b2JqZWN0fVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBjb25zdCBNYXAgPSAoKSA9PiA8S2VwbGVyR2wgdGhlbWU9e1RIRU1FLmxpZ2h0fSBpZD1cIm1hcFwiLz5cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgVEhFTUUgPSBrZXlNaXJyb3Ioe1xuICBsaWdodDogbnVsbCxcbiAgZGFyazogbnVsbCxcbiAgYmFzZTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBTSURFQkFSX1BBTkVMUyA9IFtcbiAge1xuICAgIGlkOiAnbGF5ZXInLFxuICAgIGxhYmVsOiAnc2lkZWJhci5wYW5lbHMubGF5ZXInLFxuICAgIGljb25Db21wb25lbnQ6IExheWVycyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ZpbHRlcicsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5maWx0ZXInLFxuICAgIGljb25Db21wb25lbnQ6IEZpbHRlckZ1bm5lbCxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2ludGVyYWN0aW9uJyxcbiAgICBsYWJlbDogJ3NpZGViYXIucGFuZWxzLmludGVyYWN0aW9uJyxcbiAgICBpY29uQ29tcG9uZW50OiBDdXJzb3JDbGljayxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH0sXG4gIHtcbiAgICBpZDogJ21hcCcsXG4gICAgbGFiZWw6ICdzaWRlYmFyLnBhbmVscy5iYXNlbWFwJyxcbiAgICBpY29uQ29tcG9uZW50OiBTZXR0aW5ncyxcbiAgICBvbkNsaWNrOiBudWxsXG4gIH1cbl07XG5cbi8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbmV4cG9ydCBjb25zdCBQQU5FTFMgPSBTSURFQkFSX1BBTkVMUztcblxuLy8gTUFQIFNUWUxFU1xuXG50eXBlIERFRkFVTFRfTEFZRVJfR1JPVVAgPSB7XG4gIHNsdWc6IHN0cmluZztcbiAgZmlsdGVyOiAodmFsdWUpID0+IGJvb2xlYW47XG4gIGRlZmF1bHRWaXNpYmlsaXR5OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTEFZRVJfR1JPVVBTOiBERUZBVUxUX0xBWUVSX0dST1VQW10gPSBbXG4gIHtcbiAgICBzbHVnOiAnbGFiZWwnLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC8oPz0obGFiZWx8cGxhY2UtfHBvaS0pKS8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiB0cnVlXG4gIH0sXG4gIHtcbiAgICBzbHVnOiAncm9hZCcsXG4gICAgZmlsdGVyOiAoe2lkfSkgPT4gaWQubWF0Y2goLyg/PShyb2FkfHJhaWx3YXl8dHVubmVsfHN0cmVldHxicmlkZ2UpKSg/IS4qbGFiZWwpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWVcbiAgfSxcbiAge1xuICAgIHNsdWc6ICdib3JkZXInLFxuICAgIGZpbHRlcjogKHtpZH0pID0+IGlkLm1hdGNoKC9ib3JkZXJ8Ym91bmRhcmllcy8pLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ2J1aWxkaW5nJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvYnVpbGRpbmcvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJ3dhdGVyJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHdhdGVyfHN0cmVhbXxmZXJyeSkpLyksXG4gICAgZGVmYXVsdFZpc2liaWxpdHk6IHRydWVcbiAgfSxcbiAge1xuICAgIHNsdWc6ICdsYW5kJyxcbiAgICBmaWx0ZXI6ICh7aWR9KSA9PiBpZC5tYXRjaCgvKD89KHBhcmtzfGxhbmRjb3ZlcnxpbmR1c3RyaWFsfHNhbmR8aGlsbHNoYWRlKSkvKSxcbiAgICBkZWZhdWx0VmlzaWJpbGl0eTogdHJ1ZVxuICB9LFxuICB7XG4gICAgc2x1ZzogJzNkIGJ1aWxkaW5nJyxcbiAgICBmaWx0ZXI6ICgpID0+IGZhbHNlLFxuICAgIGRlZmF1bHRWaXNpYmlsaXR5OiBmYWxzZVxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NQVBfU1RZTEVTID0gW1xuICB7XG4gICAgaWQ6ICdkYXJrJyxcbiAgICBsYWJlbDogJ0RhcmsnLFxuICAgIHVybDogJ21hcGJveDovL3N0eWxlcy91YmVyZGF0YS9jam9xYmJmNmw5azMwMnNsOTZ0eXZrYTA5JyxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9EQVJLX1YyLnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTXG4gIH0sXG4gIHtcbiAgICBpZDogJ2xpZ2h0JyxcbiAgICBsYWJlbDogJ0xpZ2h0JyxcbiAgICB1cmw6ICdtYXBib3g6Ly9zdHlsZXMvdWJlcmRhdGEvY2pvcWI5ajMzOWsxZjJzbDl0NWljNWJuNCcsXG4gICAgaWNvbjogYCR7SUNPTl9QUkVGSVh9L1VCRVJfTElHSFRfVjIucG5nYCxcbiAgICBsYXllckdyb3VwczogREVGQVVMVF9MQVlFUl9HUk9VUFNcbiAgfSxcbiAge1xuICAgIGlkOiAnbXV0ZWQnLFxuICAgIGxhYmVsOiAnTXV0ZWQgTGlnaHQnLFxuICAgIHVybDogJ21hcGJveDovL3N0eWxlcy91YmVyZGF0YS9jamZ5bDAza3AxdHVsMnNtZjV2MnRiZGQ0JyxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9NVVRFRF9MSUdIVC5wbmdgLFxuICAgIGxheWVyR3JvdXBzOiBERUZBVUxUX0xBWUVSX0dST1VQU1xuICB9LFxuICB7XG4gICAgaWQ6ICdtdXRlZF9uaWdodCcsXG4gICAgbGFiZWw6ICdNdXRlZCBOaWdodCcsXG4gICAgdXJsOiAnbWFwYm94Oi8vc3R5bGVzL3ViZXJkYXRhL2NqZnhobGlrbWFqMWIyc295emV2bnl3Z3MnLFxuICAgIGljb246IGAke0lDT05fUFJFRklYfS9VQkVSX01VVEVEX05JR0hULnBuZ2AsXG4gICAgbGF5ZXJHcm91cHM6IERFRkFVTFRfTEFZRVJfR1JPVVBTXG4gIH0sXG4gIHtcbiAgICBpZDogJ3NhdGVsbGl0ZScsXG4gICAgbGFiZWw6ICdTYXRlbGxpdGUnLFxuICAgIHVybDogYG1hcGJveDovL3N0eWxlcy9tYXBib3gvc2F0ZWxsaXRlLXY5YCxcbiAgICBpY29uOiBgJHtJQ09OX1BSRUZJWH0vVUJFUl9TQVRFTExJVEUucG5nYFxuICB9XG5dO1xuXG5leHBvcnQgY29uc3QgR0VPSlNPTl9GSUVMRFMgPSB7XG4gIGdlb2pzb246IFsnX2dlb2pzb24nLCAnYWxsX3BvaW50cycsICdnZW9qc29uJ11cbn07XG5cbmV4cG9ydCBjb25zdCBJQ09OX0ZJRUxEUyA9IHtcbiAgaWNvbjogWydpY29uJ11cbn07XG5cbmV4cG9ydCBjb25zdCBUUklQX1BPSU5UX0ZJRUxEUzogW3N0cmluZywgc3RyaW5nXVtdID0gW1xuICBbJ2xhdCcsICdsbmcnXSxcbiAgWydsYXQnLCAnbG9uJ10sXG4gIFsnbGF0aXR1ZGUnLCAnbG9uZ2l0dWRlJ11cbl07XG5cbmV4cG9ydCBjb25zdCBUUklQX0FSQ19GSUVMRFMgPSB7XG4gIGxhdDA6ICdiZWdpbnRyaXAnLFxuICBsbmcwOiAnYmVnaW50cmlwJyxcbiAgbGF0MTogJ2Ryb3BvZmYnLFxuICBsbmcxOiAnZHJvcG9mZidcbn07XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfVFlQRVMgPSBrZXlNaXJyb3Ioe1xuICByYW5nZTogbnVsbCxcbiAgc2VsZWN0OiBudWxsLFxuICBpbnB1dDogbnVsbCxcbiAgdGltZVJhbmdlOiBudWxsLFxuICBtdWx0aVNlbGVjdDogbnVsbCxcbiAgcG9seWdvbjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBTQ0FMRV9UWVBFUyA9IGtleU1pcnJvcih7XG4gIG9yZGluYWw6IG51bGwsXG4gIHF1YW50aWxlOiBudWxsLFxuICBxdWFudGl6ZTogbnVsbCxcbiAgbGluZWFyOiBudWxsLFxuICBzcXJ0OiBudWxsLFxuICBsb2c6IG51bGwsXG5cbiAgLy8gb3JkaW5hbCBkb21haW4gdG8gbGluZWFyIHJhbmdlXG4gIHBvaW50OiBudWxsLFxuICBjdXN0b206IG51bGwsXG4gIC8vIFVJLW9ubHkgdHlwZSwgcmVzb2x2aW5nIGFzIGN1c3RvbVxuICBsb2dhcml0aG1pYzogbnVsbCxcbiAgaWRlbnRpdHk6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgU0NBTEVfRlVOQyA9IHtcbiAgW1NDQUxFX1RZUEVTLmxpbmVhcl06IHNjYWxlTGluZWFyLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpemVdOiBzY2FsZVF1YW50aXplLFxuICBbU0NBTEVfVFlQRVMucXVhbnRpbGVdOiBzY2FsZVF1YW50aWxlLFxuICBbU0NBTEVfVFlQRVMub3JkaW5hbF06IHNjYWxlT3JkaW5hbCxcbiAgW1NDQUxFX1RZUEVTLnNxcnRdOiBzY2FsZVNxcnQsXG4gIFtTQ0FMRV9UWVBFUy5sb2ddOiBzY2FsZUxvZyxcbiAgW1NDQUxFX1RZUEVTLnBvaW50XTogc2NhbGVQb2ludCxcbiAgW1NDQUxFX1RZUEVTLmN1c3RvbV06IHNjYWxlVGhyZXNob2xkLFxuICBbU0NBTEVfVFlQRVMuaWRlbnRpdHldOiBzY2FsZUlkZW50aXR5XG59O1xuXG5leHBvcnQgY29uc3QgQUxMX0ZJRUxEX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgYm9vbGVhbjogbnVsbCxcbiAgZGF0ZTogbnVsbCxcbiAgZ2VvanNvbjogbnVsbCxcbiAgaW50ZWdlcjogbnVsbCxcbiAgcmVhbDogbnVsbCxcbiAgc3RyaW5nOiBudWxsLFxuICB0aW1lc3RhbXA6IG51bGwsXG4gIHBvaW50OiBudWxsXG59KTtcblxuLy8gRGF0YSBUYWJsZVxuZXhwb3J0IGNvbnN0IFNPUlRfT1JERVIgPSBrZXlNaXJyb3Ioe1xuICBBU0NFTkRJTkc6IG51bGwsXG4gIERFU0NFTkRJTkc6IG51bGwsXG4gIFVOU09SVDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT04gPSBrZXlNaXJyb3Ioe1xuICBTT1JUX0FTQzogbnVsbCxcbiAgU09SVF9ERVM6IG51bGwsXG4gIFVOU09SVDogbnVsbCxcbiAgUElOOiBudWxsLFxuICBVTlBJTjogbnVsbCxcbiAgQ09QWTogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBUQUJMRV9PUFRJT05fTElTVCA9IFtcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uU09SVF9BU0MsXG4gICAgZGlzcGxheTogJ1NvcnQgQXNjZW5kaW5nJyxcbiAgICBpY29uOiBBcnJvd1VwLFxuICAgIGNvbmRpdGlvbjogcHJvcHMgPT4gcHJvcHMuc29ydE1vZGUgIT09IFNPUlRfT1JERVIuQVNDRU5ESU5HXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlNPUlRfREVTLFxuICAgIGRpc3BsYXk6ICdTb3J0IERlc2NlbmRpbmcnLFxuICAgIGljb246IEFycm93RG93bixcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLnNvcnRNb2RlICE9PSBTT1JUX09SREVSLkRFU0NFTkRJTkdcbiAgfSxcbiAge1xuICAgIHZhbHVlOiBUQUJMRV9PUFRJT04uVU5TT1JULFxuICAgIGRpc3BsYXk6ICdVbnNvcnQgQ29sdW1uJyxcbiAgICBpY29uOiBDYW5jZWwsXG4gICAgY29uZGl0aW9uOiBwcm9wcyA9PiBwcm9wcy5pc1NvcnRlZFxuICB9LFxuICB7dmFsdWU6IFRBQkxFX09QVElPTi5QSU4sIGRpc3BsYXk6ICdQaW4gQ29sdW1uJywgaWNvbjogUGluLCBjb25kaXRpb246IHByb3BzID0+ICFwcm9wcy5pc1Bpbm5lZH0sXG4gIHtcbiAgICB2YWx1ZTogVEFCTEVfT1BUSU9OLlVOUElOLFxuICAgIGRpc3BsYXk6ICdVbnBpbiBDb2x1bW4nLFxuICAgIGljb246IENhbmNlbCxcbiAgICBjb25kaXRpb246IHByb3BzID0+IHByb3BzLmlzUGlubmVkXG4gIH0sXG4gIHt2YWx1ZTogVEFCTEVfT1BUSU9OLkNPUFksIGRpc3BsYXk6ICdDb3B5IENvbHVtbicsIGljb246IENsaXBib2FyZH1cbl07XG5cbmNvbnN0IE9SQU5HRSA9ICcyNDgsIDE5NCwgMjgnO1xuY29uc3QgUElOSyA9ICcyMzEsIDE4OSwgMTk0JztcbmNvbnN0IFBVUlBMRSA9ICcxNjAsIDEwNiwgMjA2JztcbmNvbnN0IEJMVUUgPSAnMTQwLCAyMTAsIDIwNSc7XG5jb25zdCBCTFVFMiA9ICcxMDYsIDE2MCwgMjA2JztcbmNvbnN0IEJMVUUzID0gJzAsIDE3MiwgMjM3JztcbmNvbnN0IEdSRUVOID0gJzEwNiwgMTYwLCA1Nic7XG5jb25zdCBSRUQgPSAnMjM3LCA4OCwgMTA2JztcblxuZXhwb3J0IGNvbnN0IEZJTEVEX1RZUEVfRElTUExBWSA9IHtcbiAgW0FMTF9GSUVMRF9UWVBFUy5ib29sZWFuXToge1xuICAgIGxhYmVsOiAnYm9vbCcsXG4gICAgY29sb3I6IFBJTktcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5kYXRlXToge1xuICAgIGxhYmVsOiAnZGF0ZScsXG4gICAgY29sb3I6IFBVUlBMRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmdlb2pzb25dOiB7XG4gICAgbGFiZWw6ICdnZW8nLFxuICAgIGNvbG9yOiBCTFVFMlxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLmludGVnZXJdOiB7XG4gICAgbGFiZWw6ICdudW1iZXInLFxuICAgIGNvbG9yOiBPUkFOR0VcbiAgfSxcbiAgW0FMTF9GSUVMRF9UWVBFUy5yZWFsXToge1xuICAgIGxhYmVsOiAnbnVtYmVyJyxcbiAgICBjb2xvcjogT1JBTkdFXG4gIH0sXG4gIFtBTExfRklFTERfVFlQRVMuc3RyaW5nXToge1xuICAgIGxhYmVsOiAnc3RyaW5nJyxcbiAgICBjb2xvcjogQkxVRVxuICB9LFxuICBbQUxMX0ZJRUxEX1RZUEVTLnRpbWVzdGFtcF06IHtcbiAgICBsYWJlbDogJ3RpbWUnLFxuICAgIGNvbG9yOiBHUkVFTlxuICB9LFxuICAvLyBmaWVsZCBwYWlyc1xuICBbQUxMX0ZJRUxEX1RZUEVTLnBvaW50XToge1xuICAgIGxhYmVsOiAncG9pbnQnLFxuICAgIGNvbG9yOiBCTFVFM1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfQ09MT1JTID0ge1xuICBkZWZhdWx0OiBSRURcbn07XG5leHBvcnQgY29uc3QgSElHSExJR0hfQ09MT1JfM0Q6IFJHQkFDb2xvciA9IFsyNTUsIDI1NSwgMjU1LCA2MF07XG5leHBvcnQgY29uc3QgQ0hBTk5FTF9TQ0FMRVMgPSBrZXlNaXJyb3Ioe1xuICBjb2xvcjogbnVsbCxcbiAgcmFkaXVzOiBudWxsLFxuICBzaXplOiBudWxsLFxuICBjdXN0b21NYXJrZXI6IG51bGwsXG4gIGNvbG9yQWdncjogbnVsbCxcbiAgc2l6ZUFnZ3I6IG51bGwsXG4gIGlkZW50aXR5OiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEFHR1JFR0FUSU9OX1RZUEVTOiB7XG4gIC8vIGRlZmF1bHRcbiAgY291bnQ6ICdjb3VudCc7XG4gIC8vIGxpbmVhclxuICBhdmVyYWdlOiAnYXZlcmFnZSc7XG4gIG1heGltdW06ICdtYXhpbXVtJztcbiAgbWluaW11bTogJ21pbmltdW0nO1xuICBtZWRpYW46ICdtZWRpYW4nO1xuICBzdGRldjogJ3N0ZGV2JztcbiAgc3VtOiAnc3VtJztcbiAgdmFyaWFuY2U6ICd2YXJpYW5jZSc7XG4gIC8vIG9yZGluYWxcbiAgbW9kZTogJ21vZGUnO1xuICBjb3VudFVuaXF1ZTogJ2NvdW50IHVuaXF1ZSc7XG4gIGFueVZhbHVlOiAnYW55X3ZhbHVlJ1xufSA9IHtcbiAgLy8gZGVmYXVsdFxuICBjb3VudDogJ2NvdW50JyxcbiAgLy8gbGluZWFyXG4gIGF2ZXJhZ2U6ICdhdmVyYWdlJyxcbiAgbWF4aW11bTogJ21heGltdW0nLFxuICBtaW5pbXVtOiAnbWluaW11bScsXG4gIG1lZGlhbjogJ21lZGlhbicsXG4gIHN0ZGV2OiAnc3RkZXYnLFxuICBzdW06ICdzdW0nLFxuICB2YXJpYW5jZTogJ3ZhcmlhbmNlJyxcbiAgLy8gb3JkaW5hbFxuICBtb2RlOiAnbW9kZScsXG4gIGNvdW50VW5pcXVlOiAnY291bnQgdW5pcXVlJyxcbiAgYW55VmFsdWU6ICdhbnlfdmFsdWUnXG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfVFlQRVNfQUdHUkVHQVRPUlMgPSB7XG4gIGRhdGU6IG51bGwsXG4gIGdlb2pzb246IG51bGwsXG4gIGludGVnZXI6IFtcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5jb3VudCxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5hdmVyYWdlLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWluaW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdGRldixcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5zdW0sXG4gICAgQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VcbiAgXSxcbiAgcmVhbDogW1xuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmNvdW50LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIEFHR1JFR0FUSU9OX1RZUEVTLnN1bSxcbiAgICBBR0dSRUdBVElPTl9UWVBFUy52YXJpYW5jZVxuICBdLFxuICBzdHJpbmc6IFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlLCBBR0dSRUdBVElPTl9UWVBFUy5hbnlWYWx1ZV0sXG4gIHRpbWVzdGFtcDogbnVsbCxcbiAgcG9pbnQ6IG51bGxcbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9BR0dSRUdBVE9SUyA9IFtcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5jb3VudCxcbiAgICBkaXNwbGF5TmFtZTogJ0NPVU5UJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2UsXG4gICAgZGlzcGxheU5hbWU6ICdBVkcnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMubWF4aW11bSxcbiAgICBkaXNwbGF5TmFtZTogJ01BWCdcbiAgfSxcbiAge1xuICAgIGlkOiBBR0dSRUdBVElPTl9UWVBFUy5taW5pbXVtLFxuICAgIGRpc3BsYXlOYW1lOiAnTUlOJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2LFxuICAgIGRpc3BsYXlOYW1lOiAnU1RERVYnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMuc3VtLFxuICAgIGRpc3BsYXlOYW1lOiAnU1VNJ1xuICB9LFxuICB7XG4gICAgaWQ6IEFHR1JFR0FUSU9OX1RZUEVTLnZhcmlhbmNlLFxuICAgIGRpc3BsYXlOYW1lOiAnVkFSSUFOQ0UnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMubW9kZSxcbiAgICBkaXNwbGF5TmFtZTogJ01PREUnXG4gIH0sXG4gIHtcbiAgICBpZDogQUdHUkVHQVRJT05fVFlQRVMuYW55VmFsdWUsXG4gICAgZGlzcGxheU5hbWU6ICdBTlkgVkFMVUUnXG4gIH1cbl07XG5cbmV4cG9ydCBjb25zdCBsaW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zID0ge1xuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW1NDQUxFX1RZUEVTLnNxcnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gIFtDSEFOTkVMX1NDQUxFUy5jdXN0b21NYXJrZXJdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF0sXG4gIFtDSEFOTkVMX1NDQUxFUy5pZGVudGl0eV06IFtdXG59O1xuXG5leHBvcnQgY29uc3QgbGluZWFyRmllbGRBZ2dyU2NhbGVGdW5jdGlvbnMgPSB7XG4gIFtDSEFOTkVMX1NDQUxFUy5jb2xvckFnZ3JdOiB7XG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmNvdW50XTogW1NDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2VdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWluaW11bV06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbl06IFtTQ0FMRV9UWVBFUy5xdWFudGl6ZSwgU0NBTEVfVFlQRVMucXVhbnRpbGUsIFNDQUxFX1RZUEVTLmN1c3RvbV0sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2XTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3VtXTogW1NDQUxFX1RZUEVTLnF1YW50aXplLCBTQ0FMRV9UWVBFUy5xdWFudGlsZSwgU0NBTEVfVFlQRVMuY3VzdG9tXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dXG4gIH0sXG5cbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5jb3VudF06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2VdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tYXhpbXVtXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubWluaW11bV06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLm1lZGlhbl06IFtTQ0FMRV9UWVBFUy5saW5lYXIsIFNDQUxFX1RZUEVTLnNxcnQsIFNDQUxFX1RZUEVTLmxvZ10sXG4gICAgW0FHR1JFR0FUSU9OX1RZUEVTLnN0ZGV2XTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuc3VtXTogW1NDQUxFX1RZUEVTLmxpbmVhciwgU0NBTEVfVFlQRVMuc3FydCwgU0NBTEVfVFlQRVMubG9nXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMudmFyaWFuY2VdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBvcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICBbQ0hBTk5FTF9TQ0FMRVMucmFkaXVzXTogW1NDQUxFX1RZUEVTLnBvaW50XSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbU0NBTEVfVFlQRVMucG9pbnRdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY3VzdG9tTWFya2VyXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHldOiBbXVxufTtcblxuZXhwb3J0IGNvbnN0IG9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9ucyA9IHtcbiAgLy8gW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsLCBTQ0FMRV9UWVBFUy5saW5lYXJdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuY29sb3JBZ2dyXToge1xuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5tb2RlXTogW1NDQUxFX1RZUEVTLm9yZGluYWxdLFxuICAgIFtBR0dSRUdBVElPTl9UWVBFUy5hbnlWYWx1ZV06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRVbmlxdWVdOiBbXG4gICAgICBTQ0FMRV9UWVBFUy5xdWFudGl6ZSxcbiAgICAgIFNDQUxFX1RZUEVTLnF1YW50aWxlLFxuICAgICAgU0NBTEVfVFlQRVMuY3VzdG9tXG4gICAgXVxuICB9LFxuXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMubW9kZV06IFtTQ0FMRV9UWVBFUy5vcmRpbmFsXSxcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuYW55VmFsdWVdOiBbU0NBTEVfVFlQRVMub3JkaW5hbF1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRlZFNjYWxlT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yXTogW10sXG4gIFtDSEFOTkVMX1NDQUxFUy5yYWRpdXNdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLnNpemVdOiBbXSxcbiAgW0NIQU5ORUxfU0NBTEVTLmN1c3RvbU1hcmtlcl06IFtdLFxuICBbQ0hBTk5FTF9TQ0FMRVMuaWRlbnRpdHldOiBbXVxufTtcblxuZXhwb3J0IGNvbnN0IG5vdFN1cHBvcnRBZ2dyT3B0cyA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHt9LFxuICBbQ0hBTk5FTF9TQ0FMRVMuc2l6ZUFnZ3JdOiB7fVxufTtcblxuLyoqXG4gKiBEZWZhdWx0IGFnZ3JlZ2F0aW9uIGFyZSBiYXNlZCBvbiBvY3VudFxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9BR0dSRUdBVElPTiA9IHtcbiAgW0NIQU5ORUxfU0NBTEVTLmNvbG9yQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBbU0NBTEVfVFlQRVMucXVhbnRpemUsIFNDQUxFX1RZUEVTLnF1YW50aWxlLCBTQ0FMRV9UWVBFUy5jdXN0b21dXG4gIH0sXG4gIFtDSEFOTkVMX1NDQUxFUy5zaXplQWdncl06IHtcbiAgICBbQUdHUkVHQVRJT05fVFlQRVMuY291bnRdOiBbU0NBTEVfVFlQRVMubGluZWFyLCBTQ0FMRV9UWVBFUy5zcXJ0LCBTQ0FMRV9UWVBFUy5sb2ddXG4gIH1cbn07XG5cbi8qKlxuICogRGVmaW5lIHdoYXQgdHlwZSBvZiBzY2FsZSBvcGVyYXRpb24gaXMgYWxsb3dlZCBvbiBlYWNoIHR5cGUgb2YgZmllbGRzXG4gKi9cbmV4cG9ydCBjb25zdCBGSUVMRF9PUFRTID0ge1xuICBzdHJpbmc6IHtcbiAgICB0eXBlOiAnY2F0ZWdvcmljYWwnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtdXG4gICAgfVxuICB9LFxuICByZWFsOiB7XG4gICAgdHlwZTogJ251bWVyaWNhbCcsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLmxpbmVhckZpZWxkU2NhbGVGdW5jdGlvbnMsXG4gICAgICAuLi5saW5lYXJGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuTk9ORSxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuREVDSU1BTCxcbiAgICAgICAgVE9PTFRJUF9GT1JNQVRfVFlQRVMuUEVSQ0VOVEFHRVxuICAgICAgXVxuICAgIH1cbiAgfSxcbiAgdGltZXN0YW1wOiB7XG4gICAgdHlwZTogJ3RpbWUnLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5saW5lYXJGaWVsZFNjYWxlRnVuY3Rpb25zLFxuICAgICAgLi4ubm90U3VwcG9ydEFnZ3JPcHRzXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFX1RJTUVcbiAgICAgIF1cbiAgICB9XG4gIH0sXG4gIGludGVnZXI6IHtcbiAgICB0eXBlOiAnbnVtZXJpY2FsJyxcbiAgICBzY2FsZToge1xuICAgICAgLi4ubGluZWFyRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLmxpbmVhckZpZWxkQWdnclNjYWxlRnVuY3Rpb25zXG4gICAgfSxcbiAgICBmb3JtYXQ6IHtcbiAgICAgIGxlZ2VuZDogZCA9PiBkLFxuICAgICAgdG9vbHRpcDogW1xuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5ERUNJTUFMLFxuICAgICAgICBUT09MVElQX0ZPUk1BVF9UWVBFUy5QRVJDRU5UQUdFXG4gICAgICBdXG4gICAgfVxuICB9LFxuICBib29sZWFuOiB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5CT09MRUFOXVxuICAgIH1cbiAgfSxcbiAgZGF0ZToge1xuICAgIHNjYWxlOiB7XG4gICAgICAuLi5vcmRpbmFsRmllbGRTY2FsZUZ1bmN0aW9ucyxcbiAgICAgIC4uLm9yZGluYWxGaWVsZEFnZ3JTY2FsZUZ1bmN0aW9uc1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gZCxcbiAgICAgIHRvb2x0aXA6IFtUT09MVElQX0ZPUk1BVF9UWVBFUy5OT05FLCBUT09MVElQX0ZPUk1BVF9UWVBFUy5EQVRFXVxuICAgIH1cbiAgfSxcbiAgZ2VvanNvbjoge1xuICAgIHR5cGU6ICdnZW9tZXRyeScsXG4gICAgc2NhbGU6IHtcbiAgICAgIC4uLm5vdFN1cHBvcnRlZFNjYWxlT3B0cyxcbiAgICAgIC4uLm5vdFN1cHBvcnRBZ2dyT3B0c1xuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICBsZWdlbmQ6IGQgPT4gJy4uLicsXG4gICAgICB0b29sdGlwOiBbXVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IENIQU5ORUxfU0NBTEVfU1VQUE9SVEVEX0ZJRUxEUyA9IE9iamVjdC5rZXlzKENIQU5ORUxfU0NBTEVTKS5yZWR1Y2UoXG4gIChhY2N1LCBrZXkpID0+ICh7XG4gICAgLi4uYWNjdSxcbiAgICBba2V5XTogT2JqZWN0LmtleXMoRklFTERfT1BUUykuZmlsdGVyKGZ0ID0+IE9iamVjdC5rZXlzKEZJRUxEX09QVFNbZnRdLnNjYWxlW2tleV0pLmxlbmd0aClcbiAgfSksXG4gIHt9XG4pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlFUl9DT0xPUiA9IHtcbiAgdHJpcEFyYzogJyM5MjI2QzYnLFxuICBiZWdpbnRyaXBfbGF0OiAnIzFFOTZCRScsXG4gIGRyb3BvZmZfbGF0OiAnI0ZGOTkxRicsXG4gIHJlcXVlc3RfbGF0OiAnIzUyQTM1Mydcbn07XG5cbi8vIGxldCB1c2VyIHBhc3MgaW4gZGVmYXVsdCB0b29sdGlwIGZpZWxkc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVE9PTFRJUF9GSUVMRFM6IGFueVtdID0gW107XG5cbmV4cG9ydCBjb25zdCBOT19WQUxVRV9DT0xPUjogQ29sb3IgPSBbMCwgMCwgMCwgMF07XG5leHBvcnQgY29uc3QgVU5LTk9XTl9DT0xPUjogQ29sb3IgPSBbMTM0LCAxNDEsIDE0NV07XG5cbmV4cG9ydCBjb25zdCBMQVlFUl9CTEVORElOR1MgPSB7XG4gIGFkZGl0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLmFkZGl0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246ICdGVU5DX0FERCdcbiAgfSxcbiAgbm9ybWFsOiB7XG4gICAgLy8gcmVmZXJlbmNlIHRvXG4gICAgLy8gaHR0cHM6Ly9saW1udS5jb20vd2ViZ2wtYmxlbmRpbmcteW91cmUtcHJvYmFibHktd3JvbmcvXG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLm5vcm1hbCcsXG4gICAgYmxlbmRGdW5jOiBbJ1NSQ19BTFBIQScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJywgJ09ORScsICdPTkVfTUlOVVNfU1JDX0FMUEhBJ10sXG4gICAgYmxlbmRFcXVhdGlvbjogWydGVU5DX0FERCcsICdGVU5DX0FERCddXG4gIH0sXG4gIHN1YnRyYWN0aXZlOiB7XG4gICAgbGFiZWw6ICdsYXllckJsZW5kaW5nLnN1YnRyYWN0aXZlJyxcbiAgICBibGVuZEZ1bmM6IFsnT05FJywgJ09ORV9NSU5VU19EU1RfQ09MT1InLCAnU1JDX0FMUEhBJywgJ0RTVF9BTFBIQSddLFxuICAgIGJsZW5kRXF1YXRpb246IFsnRlVOQ19TVUJUUkFDVCcsICdGVU5DX0FERCddXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBNQVhfREVGQVVMVF9UT09MVElQUyA9IDU7XG5cbmV4cG9ydCBjb25zdCBSRVNPTFVUSU9OUyA9IGtleU1pcnJvcih7XG4gIE9ORV9YOiBudWxsLFxuICBUV09fWDogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfSU1HX1JBVElPUyA9IGtleU1pcnJvcih7XG4gIFNDUkVFTjogbnVsbCxcbiAgRk9VUl9CWV9USFJFRTogbnVsbCxcbiAgU0lYVEVFTl9CWV9OSU5FOiBudWxsLFxuICBDVVNUT006IG51bGxcbn0pO1xuXG5leHBvcnQgdHlwZSBJbWFnZVJhdGlvT3B0aW9uID0ge1xuICBpZDoga2V5b2YgdHlwZW9mIEVYUE9SVF9JTUdfUkFUSU9TO1xuICBsYWJlbDogc3RyaW5nO1xuICBoaWRkZW4/OiBib29sZWFuO1xuICBnZXRTaXplOiAoc2NyZWVuVzogbnVtYmVyLCBzY3JlZW5IOiBudW1iZXIpID0+IHt3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlcn07XG59O1xuXG5leHBvcnQgY29uc3QgU2NyZWVuUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5TQ1JFRU4sXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW9PcmlnaW5hbFNjcmVlbicsXG4gIGdldFNpemU6IChzY3JlZW5XLCBzY3JlZW5IKSA9PiAoe3dpZHRoOiBzY3JlZW5XLCBoZWlnaHQ6IHNjcmVlbkh9KVxufTtcbmV4cG9ydCBjb25zdCBDdXN0b21SYXRpb09wdGlvbjogSW1hZ2VSYXRpb09wdGlvbiA9IHtcbiAgaWQ6IEVYUE9SVF9JTUdfUkFUSU9TLkNVU1RPTSxcbiAgaGlkZGVuOiB0cnVlLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvQ3VzdG9tJyxcbiAgZ2V0U2l6ZTogKG1hcFcsIG1hcEgpID0+ICh7d2lkdGg6IG1hcFcsIGhlaWdodDogbWFwSH0pXG59O1xuZXhwb3J0IGNvbnN0IEZvdXJCeVRocmVlUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5GT1VSX0JZX1RIUkVFLFxuICBsYWJlbDogJ21vZGFsLmV4cG9ydEltYWdlLnJhdGlvNF8zJyxcbiAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7XG4gICAgd2lkdGg6IHNjcmVlblcsXG4gICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjc1KVxuICB9KVxufTtcbmV4cG9ydCBjb25zdCBTaXh0ZWVuQnlOaW5lUmF0aW9PcHRpb246IEltYWdlUmF0aW9PcHRpb24gPSB7XG4gIGlkOiBFWFBPUlRfSU1HX1JBVElPUy5TSVhURUVOX0JZX05JTkUsXG4gIGxhYmVsOiAnbW9kYWwuZXhwb3J0SW1hZ2UucmF0aW8xNl85JyxcbiAgZ2V0U2l6ZTogKHNjcmVlblcsIHNjcmVlbkgpID0+ICh7XG4gICAgd2lkdGg6IHNjcmVlblcsXG4gICAgaGVpZ2h0OiBNYXRoLnJvdW5kKHNjcmVlblcgKiAwLjU2MjUpXG4gIH0pXG59O1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0lNR19SQVRJT19PUFRJT05TOiBSZWFkb25seUFycmF5PEltYWdlUmF0aW9PcHRpb24+ID0gW1xuICBTY3JlZW5SYXRpb09wdGlvbixcbiAgQ3VzdG9tUmF0aW9PcHRpb24sXG4gIEZvdXJCeVRocmVlUmF0aW9PcHRpb24sXG4gIFNpeHRlZW5CeU5pbmVSYXRpb09wdGlvblxuXTtcblxuZXhwb3J0IHR5cGUgSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDoga2V5b2YgdHlwZW9mIFJFU09MVVRJT05TO1xuICBsYWJlbDogc3RyaW5nO1xuICBhdmFpbGFibGU6IGJvb2xlYW47XG4gIHNjYWxlOiBudW1iZXI7XG4gIGdldFNpemU6IChzY3JlZW5XOiBudW1iZXIsIHNjcmVlbkg6IG51bWJlcikgPT4ge3dpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyfTtcbn07XG5cbmV4cG9ydCBjb25zdCBPbmVYUmVzb2x1dGlvbk9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogUkVTT0xVVElPTlMuT05FX1gsXG4gIGxhYmVsOiAnMXgnLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIHNjYWxlOiAxLFxuICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICB3aWR0aDogc2NyZWVuVyxcbiAgICBoZWlnaHQ6IHNjcmVlbkhcbiAgfSlcbn07XG5cbmV4cG9ydCBjb25zdCBUd29YUmVzb2x1dGlvbk9wdGlvbjogSW1hZ2VSZXNvbHV0aW9uT3B0aW9uID0ge1xuICBpZDogUkVTT0xVVElPTlMuVFdPX1gsXG4gIGxhYmVsOiAnMngnLFxuICBhdmFpbGFibGU6IHRydWUsXG4gIHNjYWxlOiAyLFxuICBnZXRTaXplOiAoc2NyZWVuVywgc2NyZWVuSCkgPT4gKHtcbiAgICB3aWR0aDogc2NyZWVuVyAqIDIsXG4gICAgaGVpZ2h0OiBzY3JlZW5IICogMlxuICB9KVxufTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9JTUdfUkVTT0xVVElPTl9PUFRJT05TOiBSZWFkb25seUFycmF5PEltYWdlUmVzb2x1dGlvbk9wdGlvbj4gPSBbXG4gIE9uZVhSZXNvbHV0aW9uT3B0aW9uLFxuICBUd29YUmVzb2x1dGlvbk9wdGlvblxuXTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9EQVRBX1RZUEUgPSBrZXlNaXJyb3Ioe1xuICBDU1Y6IG51bGxcbiAgLy8gU0hBUEVGSUxFOiBudWxsLFxuICAvLyBKU09OOiBudWxsLFxuICAvLyBHRU9KU09OOiBudWxsLFxuICAvLyBUT1BPSlNPTjogbnVsbFxufSk7XG5cbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9UWVBFX09QVElPTlMgPSBbXG4gIHtcbiAgICBpZDogRVhQT1JUX0RBVEFfVFlQRS5DU1YsXG4gICAgbGFiZWw6IEVYUE9SVF9EQVRBX1RZUEUuQ1NWLnRvTG93ZXJDYXNlKCksXG4gICAgYXZhaWxhYmxlOiB0cnVlXG4gIH1cbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLlNIQVBFRklMRSxcbiAgLy8gICBsYWJlbDogJ3NoYXBlZmlsZScsXG4gIC8vICAgYXZhaWxhYmxlOiBmYWxzZVxuICAvLyB9LFxuICAvLyB7XG4gIC8vICAgaWQ6IEVYUE9SVF9EQVRBX1RZUEUuSlNPTixcbiAgLy8gICBsYWJlbDogJ2pzb24nLFxuICAvLyAgIGF2YWlsYWJsZTogZmFsc2VcbiAgLy8gfSxcbiAgLy8ge1xuICAvLyAgIGlkOiBFWFBPUlRfREFUQV9UWVBFLkdFT0pTT04sXG4gIC8vICAgbGFiZWw6ICdnZW9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH0sXG4gIC8vIHtcbiAgLy8gICBpZDogRVhQT1JUX0RBVEFfVFlQRS5UT1BPSlNPTixcbiAgLy8gICBsYWJlbDogJ3RvcG9qc29uJyxcbiAgLy8gICBhdmFpbGFibGU6IGZhbHNlXG4gIC8vIH1cbl07XG5cbi8vIEV4cG9ydCBtYXAgdHlwZXNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVFMgPSBrZXlNaXJyb3Ioe1xuICBIVE1MOiBudWxsLFxuICBKU09OOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IEVYUE9SVF9IVE1MX01BUF9NT0RFUyA9IGtleU1pcnJvcih7XG4gIFJFQUQ6IG51bGwsXG4gIEVESVQ6IG51bGxcbn0pO1xuXG4vLyBFeHBvcnQgbWFwIG9wdGlvbnNcbmV4cG9ydCBjb25zdCBFWFBPUlRfTUFQX0ZPUk1BVF9PUFRJT05TID0gT2JqZWN0LmVudHJpZXMoRVhQT1JUX01BUF9GT1JNQVRTKS5tYXAoXG4gIChlbnRyeTogW3N0cmluZywgYW55XSkgPT4gKHtcbiAgICBpZDogZW50cnlbMF0sXG4gICAgbGFiZWw6IGVudHJ5WzFdLnRvTG93ZXJDYXNlKCksXG4gICAgYXZhaWxhYmxlOiB0cnVlXG4gIH0pXG4pO1xuXG5leHBvcnQgY29uc3QgRVhQT1JUX0hUTUxfTUFQX01PREVfT1BUSU9OUyA9IE9iamVjdC5lbnRyaWVzKEVYUE9SVF9IVE1MX01BUF9NT0RFUykubWFwKFxuICAoZW50cnk6IFtzdHJpbmcsIGFueV0pID0+ICh7XG4gICAgaWQ6IGVudHJ5WzBdLFxuICAgIGxhYmVsOiBgbW9kYWwuZXhwb3J0TWFwLmh0bWwuJHtlbnRyeVsxXS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgYXZhaWxhYmxlOiB0cnVlLFxuICAgIHVybDogZ2V0SFRNTE1hcE1vZGVUaWxlVXJsKGVudHJ5WzFdKVxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVVJRF9DT1VOVCA9IDY7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9NRVNTQUdFID0gJ01FU1NBR0VfTk9UX1BST1ZJREVEJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9USUZJQ0FUSU9OX1RZUEVTID0ga2V5TWlycm9yKHtcbiAgaW5mbzogbnVsbCxcbiAgZXJyb3I6IG51bGwsXG4gIHdhcm5pbmc6IG51bGwsXG4gIHN1Y2Nlc3M6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fVE9QSUNTID0ga2V5TWlycm9yKHtcbiAgZ2xvYmFsOiBudWxsLFxuICBmaWxlOiBudWxsXG59KTtcblxuLy8gTWluaW11bSB0aW1lIGJldHdlZW4gaWRlbnRpY2FsIG5vdGlmaWNhdGlvbnMgYWJvdXQgZGVjay5nbCBlcnJvcnNcbmV4cG9ydCBjb25zdCBUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSA9IDI1MDA7XG5cbi8vIEFuaW1hdGlvblxuZXhwb3J0IGNvbnN0IEJBU0VfU1BFRUQgPSA2MDA7XG5leHBvcnQgY29uc3QgRlBTID0gNjA7XG5cbi8qKlxuICogNCBBbmltYXRpb24gV2luZG93IFR5cGVzXG4gKiAxLiBmcmVlXG4gKiAgfC0+ICB8LT5cbiAqIEN1cnJlbnQgdGltZSBpcyBhIGZpeGVkIHJhbmdlLCBhbmltYXRpb24gY29udHJvbGxlciBjYWxscyBuZXh0IGFuaW1hdGlvbiBmcmFtZXMgY29udGludW91c2x5IHRvIGFuaW1hdGlvbiBhIG1vdmluZyB3aW5kb3dcbiAqIFRoZSBpbmNyZW1lbnQgaWQgYmFzZWQgb24gZG9tYWluIC8gQkFTRV9TUEVFRCAqIFNQRUVEXG4gKlxuICogMi4gaW5jcmVtZW50YWxcbiAqIHwgICAgfC0+XG4gKiBTYW1lIGFzIGZyZWUsIGN1cnJlbnQgdGltZSBpcyBhIGdyb3dpbmcgcmFuZ2UsIG9ubHkgdGhlIG1heCB2YWx1ZSBvZiByYW5nZSBpbmNyZW1lbnQgZHVyaW5nIGFuaW1hdGlvbi5cbiAqIFRoZSBpbmNyZW1lbnQgaXMgYWxzbyBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiAzLiBwb2ludFxuICogbyAtPiBvXG4gKiBDdXJyZW50IHRpbWUgaXMgYSBwb2ludCwgYW5pbWF0aW9uIGNvbnRyb2xsZXIgY2FsbHMgbmV4dCBhbmltYXRpb24gZnJhbWUgY29udGludW91c2x5IHRvIGFuaW1hdGlvbiBhIG1vdmluZyBwb2ludFxuICogVGhlIGluY3JlbWVudCBpcyBiYXNlZCBvbiBkb21haW4gLyBCQVNFX1NQRUVEICogU1BFRURcbiAqXG4gKiA0LiBpbnRlcnZhbFxuICogbyB+PiBvXG4gKiBDdXJyZW50IHRpbWUgaXMgYSBwb2ludC4gQW4gYXJyYXkgb2Ygc29ydGVkIHRpbWUgc3RlcHMgbmVlZCB0byBiZSBwcm92aWRlZC5cbiAqIGFuaW1hdGlvbiBjb250cm9sbGVyIGNhbGxzIG5leHQgYW5pbWF0aW9uIGF0IGEgaW50ZXJ2YWwgd2hlbiB0aGUgcG9pbnQganVtcHMgdG8gdGhlIG5leHQgc3RlcFxuICovXG5leHBvcnQgY29uc3QgQU5JTUFUSU9OX1dJTkRPVyA9IGtleU1pcnJvcih7XG4gIGZyZWU6IG51bGwsXG4gIGluY3JlbWVudGFsOiBudWxsLFxuICBwb2ludDogbnVsbCxcbiAgaW50ZXJ2YWw6IG51bGxcbn0pO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVElNRV9GT1JNQVQgPSAnTU0vREQvWVkgSEg6bW06c3NhJztcbmV4cG9ydCBjb25zdCBTUEVFRF9DT05UUk9MX1JBTkdFOiBbbnVtYmVyLCBudW1iZXJdID0gWzAsIDEwXTtcbmV4cG9ydCBjb25zdCBTUEVFRF9DT05UUk9MX1NURVAgPSAwLjAwMTtcblxuLy8gR2VvY29kZXJcbmV4cG9ydCBjb25zdCBHRU9DT0RFUl9EQVRBU0VUX05BTUUgPSAnZ2VvY29kZXJfZGF0YXNldCc7XG5leHBvcnQgY29uc3QgR0VPQ09ERVJfTEFZRVJfSUQgPSAnZ2VvY29kZXJfbGF5ZXInO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0dFT19PRkZTRVQgPSAwLjA1O1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0lDT05fQ09MT1I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9IFsyNTUsIDAsIDBdO1xuZXhwb3J0IGNvbnN0IEdFT0NPREVSX0lDT05fU0laRSA9IDgwO1xuXG4vLyBXZSBjb3VsZCB1c2UgZGlyZWN0bHkgcmVhY3QtbWFwLWdsLWRyYXcgRWRpdG9yTW9kZSBidXQgdGhpcyB3b3VsZFxuLy8gY3JlYXRlIGEgZGlyZWN0IGRlcGVuZGVuY3kgd2l0aCByZWFjdC1tYXAtZ2wtZHJhd1xuLy8gQ3JlYXRlZCB0aGlzIG1hcCB0byBiZSBpbmRlcGVuZGVudCBmcm9tIHJlYWN0LW1hcC1nbC1kcmF3XG5leHBvcnQgY29uc3QgRURJVE9SX01PREVTID0ge1xuICBSRUFEX09OTFk6IEVkaXRvck1vZGVzLlJFQURfT05MWSxcbiAgRFJBV19QT0xZR09OOiBFZGl0b3JNb2Rlcy5EUkFXX1BPTFlHT04sXG4gIERSQVdfUkVDVEFOR0xFOiBFZGl0b3JNb2Rlcy5EUkFXX1JFQ1RBTkdMRSxcbiAgRURJVDogRWRpdG9yTW9kZXMuRURJVF9WRVJURVhcbn07XG5cbmV4cG9ydCBjb25zdCBFRElUT1JfQVZBSUxBQkxFX0xBWUVSUzogc3RyaW5nW10gPSBbXG4gIExBWUVSX1RZUEVTLnBvaW50LFxuICBMQVlFUl9UWVBFUy5oZXhhZ29uLFxuICBMQVlFUl9UWVBFUy5hcmMsXG4gIExBWUVSX1RZUEVTLmxpbmUsXG4gIExBWUVSX1RZUEVTLmhleGFnb25JZFxuXTtcbi8vIEdQVSBGaWx0ZXJpbmdcbi8qKlxuICogTWF4IG51bWJlciBvZiBmaWx0ZXIgdmFsdWUgYnVmZmVycyB0aGF0IGRlY2suZ2wgcHJvdmlkZXNcbiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9HUFVfRklMVEVSUyA9IDQ7XG5leHBvcnQgY29uc3QgTUFQX1RIVU1CTkFJTF9ESU1FTlNJT04gPSB7XG4gIHdpZHRoOiAzMDAsXG4gIGhlaWdodDogMjAwXG59O1xuXG5leHBvcnQgY29uc3QgTUFQX0lORk9fQ0hBUkFDVEVSID0ge1xuICB0aXRsZTogMTAwLFxuICBkZXNjcmlwdGlvbjogMTAwXG59O1xuXG4vLyBMb2FkIGRhdGFcbmV4cG9ydCBjb25zdCBMT0FESU5HX01FVEhPRFMgPSBrZXlNaXJyb3Ioe1xuICB1cGxvYWQ6IG51bGwsXG4gIHN0b3JhZ2U6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgREFUQVNFVF9GT1JNQVRTID0ga2V5TWlycm9yKHtcbiAgcm93OiBudWxsLFxuICBnZW9qc29uOiBudWxsLFxuICBjc3Y6IG51bGwsXG4gIGtlcGxlcmdsOiBudWxsXG59KTtcblxuZXhwb3J0IGNvbnN0IE1BUF9DT05UUk9MUyA9IGtleU1pcnJvcih7XG4gIHZpc2libGVMYXllcnM6IG51bGwsXG4gIG1hcExlZ2VuZDogbnVsbCxcbiAgdG9nZ2xlM2Q6IG51bGwsXG4gIHNwbGl0TWFwOiBudWxsLFxuICBtYXBEcmF3OiBudWxsLFxuICBtYXBMb2NhbGU6IG51bGxcbn0pO1xuXG5leHBvcnQgY29uc3QgTUFTS19MQVlFUl9JRCA9ICdtYXNrX2xheWVyJztcblxuZXhwb3J0IGNvbnN0IFpPT01fTEVWRUxfTElNSVRTID0ge1xuICBtaW46IDAsXG4gIG1heDogMjFcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFvQkEsSUFBQUEsVUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZUFBQSxHQUFBRCxPQUFBO0FBR0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBVUEsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBV0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sTUFBQSxHQUFBUCxPQUFBO0FBaERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWlDTyxNQUFNUSxhQUFhLEdBQUFDLE9BQUEsQ0FBQUQsYUFBQSxHQUFHLGNBQWM7QUFDcEMsTUFBTUUsVUFBVSxHQUFBRCxPQUFBLENBQUFDLFVBQUEsR0FBRyxpREFBaUQ7QUFDcEUsTUFBTUMsV0FBVyxHQUFBRixPQUFBLENBQUFFLFdBQUEsR0FBRyxHQUFHRCxVQUFVLFVBQVU7QUFDM0MsTUFBTUUsc0JBQXNCLEdBQUFI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
|