@elderbyte/ngx-starter 18.15.2 → 19.0.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/fesm2022/elderbyte-ngx-starter.mjs +1097 -1125
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/forms/elder-form-field-control-base.directive.d.ts +1 -1
- package/lib/common/forms/elder-from-field-base.d.ts +1 -1
- package/lib/common/forms/elder-from-field-customizable-base.d.ts +1 -1
- package/lib/common/forms/elder-from-field-entity-base.d.ts +1 -1
- package/lib/common/forms/elder-from-field-multi-entity-base.d.ts +1 -1
- package/lib/common/forms/form-field-base.component.d.ts +1 -1
- package/lib/common/forms/multi-model-base.component.d.ts +1 -1
- package/lib/common/forms/template-composite-control.d.ts +1 -1
- package/lib/common/forms/value-accessor-base.d.ts +1 -1
- package/lib/common/reactive-map.d.ts +1 -1
- package/lib/components/data-view/base/elder-data-view-base.d.ts +1 -1
- package/lib/components/forms/directives/base/elder-class-hostbinding-base.d.ts +1 -1
- package/lib/components/iframes/typed-event-message.d.ts +1 -1
- package/lib/components/panels/elder-panel.module.d.ts +5 -7
- package/lib/components/select/elder-select-base.d.ts +1 -1
- package/lib/components/select/multi/elder-multi-select-base.d.ts +1 -1
- package/lib/components/select/multi/elder-multi-select-form-field.d.ts +1 -1
- package/lib/components/select/single/elder-select-form-field.d.ts +1 -1
- package/package.json +6 -8
- package/src/lib/components/errors/exception-detail/elder-exception-detail.component.scss +2 -3
- package/src/lib/components/panels/flat/_elder-panel-theme.scss +5 -1
- package/esm2022/elderbyte-ngx-starter.mjs +0 -5
- package/esm2022/lib/common/arrays.mjs +0 -29
- package/esm2022/lib/common/async/public_api.mjs +0 -2
- package/esm2022/lib/common/async/refreshing-entity.mjs +0 -88
- package/esm2022/lib/common/csv/csv-serializer.mjs +0 -55
- package/esm2022/lib/common/csv/csv-spec.mjs +0 -99
- package/esm2022/lib/common/csv/public_api.mjs +0 -3
- package/esm2022/lib/common/data/continuable-listing.mjs +0 -10
- package/esm2022/lib/common/data/data-context/data-context-active-page.mjs +0 -131
- package/esm2022/lib/common/data/data-context/data-context-auto-starter.mjs +0 -78
- package/esm2022/lib/common/data/data-context/data-context-base.mjs +0 -339
- package/esm2022/lib/common/data/data-context/data-context-builder.mjs +0 -245
- package/esm2022/lib/common/data/data-context/data-context-continuable-base.mjs +0 -67
- package/esm2022/lib/common/data/data-context/data-context-continuable-paged.mjs +0 -142
- package/esm2022/lib/common/data/data-context/data-context-continuable-token.mjs +0 -146
- package/esm2022/lib/common/data/data-context/data-context-life-cycle-binding.mjs +0 -32
- package/esm2022/lib/common/data/data-context/data-context-simple.mjs +0 -61
- package/esm2022/lib/common/data/data-context/data-context-source-event-binding.mjs +0 -63
- package/esm2022/lib/common/data/data-context/data-context-status.mjs +0 -46
- package/esm2022/lib/common/data/data-context/data-context.mjs +0 -30
- package/esm2022/lib/common/data/data-context/indexed-entities.mjs +0 -153
- package/esm2022/lib/common/data/data-context/mat-table-data-context-binding.mjs +0 -145
- package/esm2022/lib/common/data/data-context/public_api.mjs +0 -15
- package/esm2022/lib/common/data/datasource/data-source-adapter.mjs +0 -59
- package/esm2022/lib/common/data/datasource/data-source-base.mjs +0 -38
- package/esm2022/lib/common/data/datasource/data-source-change-event.mjs +0 -34
- package/esm2022/lib/common/data/datasource/data-source-processor.mjs +0 -198
- package/esm2022/lib/common/data/datasource/data-source.mjs +0 -23
- package/esm2022/lib/common/data/datasource/entity-id-util.mjs +0 -11
- package/esm2022/lib/common/data/datasource/fetcher/delegate-data-source.mjs +0 -127
- package/esm2022/lib/common/data/datasource/local/local-list-data-source.mjs +0 -153
- package/esm2022/lib/common/data/datasource/local/local-paged-data-source.mjs +0 -75
- package/esm2022/lib/common/data/datasource/patch/deep-partial-patcher.mjs +0 -58
- package/esm2022/lib/common/data/datasource/public_api.mjs +0 -10
- package/esm2022/lib/common/data/datasource/rest/public_api.mjs +0 -2
- package/esm2022/lib/common/data/datasource/rest/rest-client.mjs +0 -290
- package/esm2022/lib/common/data/entity-set-patch.mjs +0 -161
- package/esm2022/lib/common/data/field-comparator.mjs +0 -108
- package/esm2022/lib/common/data/filters/filter-commons.mjs +0 -12
- package/esm2022/lib/common/data/filters/filter-context.mjs +0 -135
- package/esm2022/lib/common/data/filters/filter-value.mjs +0 -2
- package/esm2022/lib/common/data/filters/filter.mjs +0 -104
- package/esm2022/lib/common/data/http-params-builder.mjs +0 -116
- package/esm2022/lib/common/data/page.mjs +0 -58
- package/esm2022/lib/common/data/public_api.mjs +0 -12
- package/esm2022/lib/common/data/required-filter-evaluator.mjs +0 -71
- package/esm2022/lib/common/data/sort-context.mjs +0 -73
- package/esm2022/lib/common/data/sort.mjs +0 -11
- package/esm2022/lib/common/data/token-chunk-request.mjs +0 -8
- package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +0 -84
- package/esm2022/lib/common/enums/public_api.mjs +0 -2
- package/esm2022/lib/common/errors/exception-detail.mjs +0 -2
- package/esm2022/lib/common/errors/public_api.mjs +0 -3
- package/esm2022/lib/common/errors/standard-error-detail.mjs +0 -2
- package/esm2022/lib/common/exceptions/public_api.mjs +0 -2
- package/esm2022/lib/common/exceptions/unreachable-case-error.mjs +0 -8
- package/esm2022/lib/common/format/bytes-format.mjs +0 -15
- package/esm2022/lib/common/format/bytes-per-second-format.mjs +0 -41
- package/esm2022/lib/common/format/curency-format-util.mjs +0 -43
- package/esm2022/lib/common/format/duration-format-util.mjs +0 -44
- package/esm2022/lib/common/format/iso-interval-format-util.mjs +0 -111
- package/esm2022/lib/common/format/public_api.mjs +0 -6
- package/esm2022/lib/common/forms/elder-entity-value-accessor.mjs +0 -22
- package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +0 -188
- package/esm2022/lib/common/forms/elder-from-field-base.mjs +0 -94
- package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +0 -52
- package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +0 -39
- package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +0 -47
- package/esm2022/lib/common/forms/elder-multi-entity-value-accessor.mjs +0 -22
- package/esm2022/lib/common/forms/form-field-base.component.mjs +0 -111
- package/esm2022/lib/common/forms/multi-model-base.component.mjs +0 -32
- package/esm2022/lib/common/forms/public_api.mjs +0 -12
- package/esm2022/lib/common/forms/template-composite-control.mjs +0 -136
- package/esm2022/lib/common/forms/value-accessor-base.mjs +0 -146
- package/esm2022/lib/common/forms/view-providers.mjs +0 -30
- package/esm2022/lib/common/http/http-client-builder.service.mjs +0 -14
- package/esm2022/lib/common/http/http-client-pristine.mjs +0 -21
- package/esm2022/lib/common/http/public_api.mjs +0 -5
- package/esm2022/lib/common/http/transfer/data-transfer-base.mjs +0 -77
- package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +0 -106
- package/esm2022/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +0 -60
- package/esm2022/lib/common/http/transfer/data-transfer-progress.mjs +0 -17
- package/esm2022/lib/common/http/transfer/data-transfer-state.mjs +0 -82
- package/esm2022/lib/common/http/transfer/data-transfer-status.mjs +0 -24
- package/esm2022/lib/common/http/transfer/data-transfer.mjs +0 -2
- package/esm2022/lib/common/http/transfer/http-data-transfer.mjs +0 -132
- package/esm2022/lib/common/http/transfer/public_api.mjs +0 -7
- package/esm2022/lib/common/http/upload/file-upload-client.mjs +0 -42
- package/esm2022/lib/common/i18n/entity/elder-multi-translate-loader.mjs +0 -53
- package/esm2022/lib/common/i18n/entity/impl/i18n-base.mjs +0 -6
- package/esm2022/lib/common/i18n/entity/impl/i18n-text.mjs +0 -16
- package/esm2022/lib/common/i18n/entity/impl/translated.mjs +0 -15
- package/esm2022/lib/common/i18n/entity/language-tag.mjs +0 -12
- package/esm2022/lib/common/i18n/entity/locale.mjs +0 -12
- package/esm2022/lib/common/i18n/entity/localisation-picker.mjs +0 -30
- package/esm2022/lib/common/i18n/entity/localized.mjs +0 -2
- package/esm2022/lib/common/i18n/entity/public_api.mjs +0 -10
- package/esm2022/lib/common/i18n/entity/translated-converter.mjs +0 -18
- package/esm2022/lib/common/i18n/entity/translated.mjs +0 -2
- package/esm2022/lib/common/i18n/public_api.mjs +0 -2
- package/esm2022/lib/common/json-map.mjs +0 -17
- package/esm2022/lib/common/objects.mjs +0 -43
- package/esm2022/lib/common/public_api.mjs +0 -23
- package/esm2022/lib/common/reactive-map.mjs +0 -69
- package/esm2022/lib/common/rxjs/operators/lazy-sample.mjs +0 -34
- package/esm2022/lib/common/rxjs/public_api.mjs +0 -2
- package/esm2022/lib/common/selection/public_api.mjs +0 -2
- package/esm2022/lib/common/selection/selection-model.mjs +0 -213
- package/esm2022/lib/common/sets.mjs +0 -45
- package/esm2022/lib/common/suggestion-provider.mjs +0 -12
- package/esm2022/lib/common/templates/template-slot-manager.mjs +0 -135
- package/esm2022/lib/common/theme-sizes.mjs +0 -2
- package/esm2022/lib/common/time/date-util.mjs +0 -91
- package/esm2022/lib/common/time/interval-coerce.mjs +0 -30
- package/esm2022/lib/common/time/interval.mjs +0 -442
- package/esm2022/lib/common/time/period-duration.mjs +0 -133
- package/esm2022/lib/common/time/public_api.mjs +0 -8
- package/esm2022/lib/common/time/temporal-plain-date-interval.mjs +0 -34
- package/esm2022/lib/common/time/temporal-util.mjs +0 -205
- package/esm2022/lib/common/time/time-util.mjs +0 -38
- package/esm2022/lib/common/url/elder-router.service.mjs +0 -54
- package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +0 -117
- package/esm2022/lib/common/url/public_api.mjs +0 -4
- package/esm2022/lib/common/url/url-query-params.mjs +0 -133
- package/esm2022/lib/common/utils/batcher.mjs +0 -35
- package/esm2022/lib/common/utils/collection-util.mjs +0 -111
- package/esm2022/lib/common/utils/filter-util.mjs +0 -133
- package/esm2022/lib/common/utils/focus-util.mjs +0 -23
- package/esm2022/lib/common/utils/input-utils.mjs +0 -6
- package/esm2022/lib/common/utils/next-number-util.mjs +0 -89
- package/esm2022/lib/common/utils/ng-zone-utils.mjs +0 -16
- package/esm2022/lib/common/utils/parse-util.mjs +0 -17
- package/esm2022/lib/common/utils/property-path-util.mjs +0 -28
- package/esm2022/lib/common/utils/public_api.mjs +0 -14
- package/esm2022/lib/common/utils/query-list-binding.mjs +0 -68
- package/esm2022/lib/common/utils/signal-input.mjs +0 -3
- package/esm2022/lib/common/utils/sort-util.mjs +0 -42
- package/esm2022/lib/common/utils/url-builder.mjs +0 -275
- package/esm2022/lib/common/utils/uuid-util.mjs +0 -28
- package/esm2022/lib/common/utils/value-wrapper.mjs +0 -19
- package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +0 -15
- package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +0 -20
- package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +0 -50
- package/esm2022/lib/components/auditing/elder-audit.module.mjs +0 -40
- package/esm2022/lib/components/auditing/i-audited-entity.mjs +0 -3
- package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +0 -162
- package/esm2022/lib/components/badge/elder-badge.directive.mjs +0 -124
- package/esm2022/lib/components/badge/elder-badge.module.mjs +0 -58
- package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +0 -13
- package/esm2022/lib/components/button-group/elder-button-group.module.mjs +0 -21
- package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +0 -118
- package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +0 -18
- package/esm2022/lib/components/card-organizer/card-organizer-data.mjs +0 -93
- package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +0 -220
- package/esm2022/lib/components/card-organizer/card-stack.mjs +0 -176
- package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +0 -62
- package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +0 -17
- package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +0 -167
- package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +0 -71
- package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +0 -171
- package/esm2022/lib/components/chips/elder-chips.module.mjs +0 -45
- package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +0 -57
- package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +0 -61
- package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +0 -46
- package/esm2022/lib/components/connectivity/public_api.mjs +0 -3
- package/esm2022/lib/components/containers/elder-containers.module.mjs +0 -18
- package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +0 -24
- package/esm2022/lib/components/containers/public_api.mjs +0 -2
- package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +0 -77
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.mjs +0 -38
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +0 -38
- package/esm2022/lib/components/csv/elder-csv-stream-exporter.mjs +0 -114
- package/esm2022/lib/components/csv/elder-csv.module.mjs +0 -24
- package/esm2022/lib/components/currency/elder-currency.module.mjs +0 -18
- package/esm2022/lib/components/currency/elder-currency.pipe.mjs +0 -37
- package/esm2022/lib/components/currency/model/currency-code.mjs +0 -38
- package/esm2022/lib/components/currency/model/currency-unit-registry.mjs +0 -30
- package/esm2022/lib/components/currency/model/currency-unit.mjs +0 -10
- package/esm2022/lib/components/currency/model/currency.mjs +0 -15
- package/esm2022/lib/components/currency/public_api.mjs +0 -7
- package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +0 -91
- package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +0 -93
- package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +0 -102
- package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +0 -34
- package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +0 -57
- package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +0 -34
- package/esm2022/lib/components/data-view/base/data-view-options-provider-binding.mjs +0 -69
- package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +0 -265
- package/esm2022/lib/components/data-view/base/elder-data-view-options-provider.mjs +0 -44
- package/esm2022/lib/components/data-view/base/elder-data-view-options.mjs +0 -45
- package/esm2022/lib/components/data-view/base/elder-data-view.mjs +0 -3
- package/esm2022/lib/components/data-view/base/public_api.mjs +0 -6
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-context.mjs +0 -30
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-dc.directive.mjs +0 -55
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort.mjs +0 -68
- package/esm2022/lib/components/data-view/common/composite-sort/elder-composite-sort/elder-composite-sort.component.mjs +0 -101
- package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +0 -45
- package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +0 -125
- package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +0 -140
- package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +0 -100
- package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +0 -103
- package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +0 -36
- package/esm2022/lib/components/data-view/common/selection/master-selection-state.mjs +0 -10
- package/esm2022/lib/components/data-view/elder-data-view-interaction-mode.mjs +0 -2
- package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +0 -345
- package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +0 -91
- package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +0 -75
- package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +0 -50
- package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +0 -79
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail-mode.mjs +0 -2
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +0 -20
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +0 -119
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +0 -116
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +0 -89
- package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +0 -23
- package/esm2022/lib/components/data-view/master-detail/master-detail-activation-event.mjs +0 -12
- package/esm2022/lib/components/data-view/public_api.mjs +0 -7
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +0 -18
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +0 -104
- package/esm2022/lib/components/data-view/table/activation/activation-event-source.mjs +0 -7
- package/esm2022/lib/components/data-view/table/activation/elder-activation-context.mjs +0 -2
- package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +0 -114
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation-options.mjs +0 -2
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +0 -315
- package/esm2022/lib/components/data-view/table/activation/item-activation-event.mjs +0 -8
- package/esm2022/lib/components/data-view/table/activation/item-activation-options.mjs +0 -7
- package/esm2022/lib/components/data-view/table/activation/public_api.mjs +0 -8
- package/esm2022/lib/components/data-view/table/elder-center-cell.directive.mjs +0 -23
- package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +0 -30
- package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +0 -73
- package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +0 -21
- package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +0 -338
- package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +0 -18
- package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +0 -92
- package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +0 -26
- package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +0 -156
- package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +0 -23
- package/esm2022/lib/components/data-view/table/elder-table.module.mjs +0 -184
- package/esm2022/lib/components/data-view/table/model/elder-column-layout.mjs +0 -110
- package/esm2022/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +0 -85
- package/esm2022/lib/components/data-view/table/model/elder-table-model-provider.mjs +0 -40
- package/esm2022/lib/components/data-view/table/model/elder-table-model-query-group.mjs +0 -89
- package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +0 -167
- package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +0 -37
- package/esm2022/lib/components/dialogs/elder-dialog-config.mjs +0 -3
- package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +0 -87
- package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +0 -199
- package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +0 -57
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +0 -43
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +0 -47
- package/esm2022/lib/components/errors/elder-error.module.mjs +0 -39
- package/esm2022/lib/components/errors/error-util.mjs +0 -94
- package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +0 -77
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +0 -55
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +0 -35
- package/esm2022/lib/components/files/blob-url.mjs +0 -10
- package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +0 -224
- package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +0 -44
- package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +0 -84
- package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +0 -145
- package/esm2022/lib/components/files/elder-file-select-input.mjs +0 -119
- package/esm2022/lib/components/files/elder-file-select.directive.mjs +0 -167
- package/esm2022/lib/components/files/elder-file.module.mjs +0 -85
- package/esm2022/lib/components/files/file-select/file-select.component.mjs +0 -54
- package/esm2022/lib/components/files/file-system-api.mjs +0 -100
- package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +0 -80
- package/esm2022/lib/components/files/listing/file-entry.mjs +0 -92
- package/esm2022/lib/components/files/listing/file-listing-rx.mjs +0 -64
- package/esm2022/lib/components/files/listing/file-listing-system-handle.mjs +0 -35
- package/esm2022/lib/components/files/listing/file-listing-webkit.mjs +0 -76
- package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +0 -51
- package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +0 -34
- package/esm2022/lib/components/forms/directives/checkbox/elder-single-state-checkbox-controller.mjs +0 -97
- package/esm2022/lib/components/forms/directives/checkbox/elder-single-state-checkbox.directive.mjs +0 -50
- package/esm2022/lib/components/forms/directives/checkbox/elder-triple-state-checkbox-controller.mjs +0 -102
- package/esm2022/lib/components/forms/directives/checkbox/elder-triple-state-checkbox.directive.mjs +0 -50
- package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +0 -38
- package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +0 -43
- package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +0 -83
- package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +0 -84
- package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +0 -42
- package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +0 -35
- package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +0 -142
- package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +0 -67
- package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +0 -78
- package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +0 -112
- package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +0 -102
- package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +0 -37
- package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +0 -30
- package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +0 -161
- package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +0 -28
- package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +0 -88
- package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +0 -47
- package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +0 -48
- package/esm2022/lib/components/forms/directives/validation/strategies/fallback-validation-message-strategy.mjs +0 -6
- package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +0 -53
- package/esm2022/lib/components/forms/directives/validation/validation-message-strategy.mjs +0 -2
- package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +0 -36
- package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +0 -36
- package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +0 -112
- package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +0 -69
- package/esm2022/lib/components/forms/elder-forms.module.mjs +0 -22
- package/esm2022/lib/components/forms/public_api.mjs +0 -6
- package/esm2022/lib/components/forms/search/domain/context/search-context.mjs +0 -73
- package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +0 -42
- package/esm2022/lib/components/forms/search/domain/input/input-value.mjs +0 -2
- package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +0 -88
- package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +0 -2
- package/esm2022/lib/components/forms/search/domain/input/simple-search-input.mjs +0 -50
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +0 -92
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +0 -166
- package/esm2022/lib/components/forms/search/domain/url/search-query-params-parser.mjs +0 -81
- package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +0 -256
- package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +0 -258
- package/esm2022/lib/components/forms/search/elder-search.module.mjs +0 -115
- package/esm2022/lib/components/forms/search/filter/default-input-filter-converter.mjs +0 -45
- package/esm2022/lib/components/forms/search/filter/input-filter-converter.mjs +0 -2
- package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +0 -131
- package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +0 -24
- package/esm2022/lib/components/global-search/elder-global-search.component.mjs +0 -136
- package/esm2022/lib/components/global-search/elder-global-search.module.mjs +0 -47
- package/esm2022/lib/components/global-search/elder-global-search.service.mjs +0 -95
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +0 -90
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +0 -19
- package/esm2022/lib/components/graph/elder-progress-bar/sub-bar.mjs +0 -7
- package/esm2022/lib/components/graph/public_api.mjs +0 -2
- package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +0 -29
- package/esm2022/lib/components/headers/elder-header.module.mjs +0 -42
- package/esm2022/lib/components/http-support/elder-http-client.service.mjs +0 -63
- package/esm2022/lib/components/http-support/public_api.mjs +0 -2
- package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +0 -125
- package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +0 -157
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +0 -39
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +0 -30
- package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +0 -177
- package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +0 -31
- package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +0 -56
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +0 -40
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +0 -31
- package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +0 -74
- package/esm2022/lib/components/i18n/language/elder-language-config.mjs +0 -3
- package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +0 -70
- package/esm2022/lib/components/i18n/language/elder-language.module.mjs +0 -73
- package/esm2022/lib/components/i18n/language/elder-language.service.mjs +0 -120
- package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +0 -79
- package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +0 -53
- package/esm2022/lib/components/i18n/public_api.mjs +0 -4
- package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +0 -129
- package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +0 -141
- package/esm2022/lib/components/iframes/elder-iframe.module.mjs +0 -106
- package/esm2022/lib/components/iframes/iframe-close.directive.mjs +0 -41
- package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +0 -51
- package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +0 -144
- package/esm2022/lib/components/iframes/iframe-messages.mjs +0 -5
- package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +0 -80
- package/esm2022/lib/components/iframes/iframe.service.mjs +0 -54
- package/esm2022/lib/components/iframes/typed-event-message.mjs +0 -42
- package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +0 -65
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +0 -166
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +0 -20
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +0 -9
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +0 -233
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +0 -202
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +0 -120
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +0 -61
- package/esm2022/lib/components/input/autocomplete/many/word-position-finder.mjs +0 -58
- package/esm2022/lib/components/input/public_api.mjs +0 -2
- package/esm2022/lib/components/labels/elder-labels.module.mjs +0 -50
- package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +0 -239
- package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +0 -268
- package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +0 -92
- package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +0 -65
- package/esm2022/lib/components/measures/elder-measures.module.mjs +0 -130
- package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +0 -31
- package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +0 -43
- package/esm2022/lib/components/measures/elder-unit.service.mjs +0 -113
- package/esm2022/lib/components/measures/model/dimensions.mjs +0 -17
- package/esm2022/lib/components/measures/model/quantity.mjs +0 -12
- package/esm2022/lib/components/measures/model/unit-dimension.mjs +0 -14
- package/esm2022/lib/components/measures/model/unit-registry.mjs +0 -81
- package/esm2022/lib/components/measures/model/unit.mjs +0 -143
- package/esm2022/lib/components/measures/public_api.mjs +0 -8
- package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +0 -44
- package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +0 -173
- package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +0 -84
- package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +0 -73
- package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +0 -341
- package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +0 -184
- package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +0 -59
- package/esm2022/lib/components/navigation/bread-crumbs/path/path.mjs +0 -37
- package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +0 -60
- package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +0 -121
- package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +0 -174
- package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +0 -68
- package/esm2022/lib/components/navigation/public_api.mjs +0 -4
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +0 -48
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +0 -83
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +0 -68
- package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +0 -71
- package/esm2022/lib/components/navigation/toolbar/toolbar-column-position.mjs +0 -2
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +0 -39
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +0 -86
- package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +0 -44
- package/esm2022/lib/components/overlays/elder-overlay-ref.mjs +0 -41
- package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +0 -73
- package/esm2022/lib/components/overlays/elder-overlay.component.mjs +0 -232
- package/esm2022/lib/components/overlays/elder-overlay.module.mjs +0 -35
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.module.mjs +0 -20
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.service.mjs +0 -129
- package/esm2022/lib/components/page/exit-guard/page-exit-lock/page-exit-lock.component.mjs +0 -25
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.mjs +0 -29
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-overview/page-exit-lock-overview.component.mjs +0 -26
- package/esm2022/lib/components/page/public_api.mjs +0 -2
- package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +0 -12
- package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +0 -12
- package/esm2022/lib/components/panels/elder-panel.module.mjs +0 -60
- package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +0 -26
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +0 -70
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +0 -74
- package/esm2022/lib/components/public_api.mjs +0 -43
- package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +0 -63
- package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +0 -17
- package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +0 -95
- package/esm2022/lib/components/select/auto/elder-auto-select-first.service.mjs +0 -38
- package/esm2022/lib/components/select/auto/elder-auto-select-suggest-first.directive.mjs +0 -64
- package/esm2022/lib/components/select/auto/elder-select-first-util.mjs +0 -55
- package/esm2022/lib/components/select/elder-select-base.mjs +0 -333
- package/esm2022/lib/components/select/elder-select-chip.directive.mjs +0 -48
- package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +0 -139
- package/esm2022/lib/components/select/elder-select-value.directive.mjs +0 -18
- package/esm2022/lib/components/select/elder-select.module.mjs +0 -229
- package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +0 -74
- package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +0 -148
- package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +0 -51
- package/esm2022/lib/components/select/filter/include-exclude-model-filter-adapter.mjs +0 -61
- package/esm2022/lib/components/select/filter/include-exclude-selection-model.mjs +0 -160
- package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +0 -16
- package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +0 -386
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/chip-options-provider.mjs +0 -87
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +0 -263
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/select-option-chip-spec.mjs +0 -15
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +0 -274
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/select-chip-spec.mjs +0 -15
- package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +0 -86
- package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +0 -34
- package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +0 -146
- package/esm2022/lib/components/select/multi/public_api.mjs +0 -5
- package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +0 -89
- package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +0 -126
- package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +0 -58
- package/esm2022/lib/components/select/public_api.mjs +0 -5
- package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +0 -60
- package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +0 -444
- package/esm2022/lib/components/select/single/elder-select-form-field.mjs +0 -45
- package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +0 -148
- package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +0 -46
- package/esm2022/lib/components/shell/drawers/drawer-outlet-binding.mjs +0 -64
- package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +0 -119
- package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +0 -128
- package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +0 -47
- package/esm2022/lib/components/shell/elder-shell.module.mjs +0 -101
- package/esm2022/lib/components/shell/elder-shell.service.mjs +0 -142
- package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +0 -75
- package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +0 -238
- package/esm2022/lib/components/shell/shell-content-slot.mjs +0 -2
- package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +0 -137
- package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +0 -26
- package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +0 -257
- package/esm2022/lib/components/tabs/elder-tab.module.mjs +0 -21
- package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +0 -62
- package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +0 -73
- package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +0 -74
- package/esm2022/lib/components/theme/elder-theme.directive.mjs +0 -64
- package/esm2022/lib/components/theme/elder-theme.module.mjs +0 -68
- package/esm2022/lib/components/theme/elder-theme.service.mjs +0 -121
- package/esm2022/lib/components/theme/known-elder-themes.mjs +0 -6
- package/esm2022/lib/components/theme/public_api.mjs +0 -2
- package/esm2022/lib/components/theme/theme-spec.mjs +0 -11
- package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +0 -43
- package/esm2022/lib/components/time/date-formats/locale-date-formats.mjs +0 -28
- package/esm2022/lib/components/time/duration/duration-bucket.mjs +0 -68
- package/esm2022/lib/components/time/duration/duration-format.mjs +0 -271
- package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +0 -110
- package/esm2022/lib/components/time/duration/iso-duration-str.mjs +0 -2
- package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +0 -96
- package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +0 -98
- package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +0 -217
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.mjs +0 -21
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.mjs +0 -24
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-controller.mjs +0 -43
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-form-controller.mjs +0 -69
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-select-controller.mjs +0 -117
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-shift-controller.mjs +0 -44
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +0 -198
- package/esm2022/lib/components/time/elder-interval-picker/interval-picker-binding/elder-interval-picker-binding.directive.mjs +0 -41
- package/esm2022/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.mjs +0 -144
- package/esm2022/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.mjs +0 -93
- package/esm2022/lib/components/time/elder-interval-picker/model/anchor-state.mjs +0 -54
- package/esm2022/lib/components/time/elder-interval-picker/model/interval-state.mjs +0 -37
- package/esm2022/lib/components/time/elder-interval-picker/model/smart-shift-state.mjs +0 -10
- package/esm2022/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.mjs +0 -96
- package/esm2022/lib/components/time/elder-interval-picker/util/interval-picker-util.mjs +0 -194
- package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +0 -268
- package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +0 -85
- package/esm2022/lib/components/time/elder-time.module.mjs +0 -154
- package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +0 -118
- package/esm2022/lib/components/time/period/period-bucket.mjs +0 -31
- package/esm2022/lib/components/time/period/period-format.mjs +0 -89
- package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +0 -39
- package/esm2022/lib/components/time/public_api.mjs +0 -8
- package/esm2022/lib/components/toasts/elder-toast.module.mjs +0 -36
- package/esm2022/lib/components/toasts/elder-toast.service.mjs +0 -170
- package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +0 -80
- package/esm2022/lib/components/toasts/toast-type.mjs +0 -7
- package/esm2022/lib/components/toasts/toast.mjs +0 -2
- package/esm2022/lib/components/url-fragment/elder-url-fragment.mjs +0 -9
- package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +0 -52
- package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +0 -95
- package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +0 -64
- package/esm2022/lib/components/viewers/elder-viewers.module.mjs +0 -18
- package/esm2022/lib/features/event-source/fetch/public_api.mjs +0 -3
- package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.mjs +0 -219
- package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +0 -53
- package/esm2022/lib/features/event-source/public_api.mjs +0 -3
- package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +0 -56
- package/esm2022/lib/features/event-source/standard/public_api.mjs +0 -3
- package/esm2022/lib/features/event-source/standard/reactive-event-source.mjs +0 -199
- package/esm2022/lib/features/kafent/access-token-provider.mjs +0 -20
- package/esm2022/lib/features/kafent/kafent-config.mjs +0 -24
- package/esm2022/lib/features/kafent/kafent-event-stream.mjs +0 -25
- package/esm2022/lib/features/kafent/kafent-event.mjs +0 -3
- package/esm2022/lib/features/kafent/kafent-event.service.mjs +0 -115
- package/esm2022/lib/features/kafent/kafent-live-event-request.mjs +0 -2
- package/esm2022/lib/features/kafent/kafent.module.mjs +0 -58
- package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +0 -131
- package/esm2022/lib/features/kafent/sse/kafent-topic-sse.mjs +0 -97
- package/esm2022/lib/features/public_api.mjs +0 -3
- package/esm2022/lib/pipes/bytes.pipe.mjs +0 -27
- package/esm2022/lib/pipes/elder-pipes.module.mjs +0 -114
- package/esm2022/lib/pipes/elder-repeat.pipe.mjs +0 -24
- package/esm2022/lib/pipes/elder-round.pipe.mjs +0 -36
- package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +0 -21
- package/esm2022/lib/pipes/elder-truncate.pipe.mjs +0 -41
- package/esm2022/lib/pipes/iso-duration.pipe.mjs +0 -41
- package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +0 -49
- package/esm2022/lib/pipes/iso-interval.pipe.mjs +0 -62
- package/esm2022/lib/pipes/public_api.mjs +0 -2
- package/esm2022/lib/pipes/time-ago.pipe.mjs +0 -110
- package/esm2022/lib/pipes/time-duration.pipe.mjs +0 -101
- package/esm2022/lib/pipes/weight.pipe.mjs +0 -60
- package/esm2022/public_api.mjs +0 -8
- package/lib/components/panels/flat/elder-panel.component.d.ts +0 -15
- package/src/lib/components/panels/flat/elder-panel.component.scss +0 -3
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
2
|
-
import { DataSource } from '@angular/cdk/collections';
|
|
3
|
-
import { DataContextStatus } from './data-context-status';
|
|
4
|
-
import { BehaviorSubject, of, Subject, switchMap } from 'rxjs';
|
|
5
|
-
import { FilterContext } from '../filters/filter-context';
|
|
6
|
-
import { DataContextSnapshot } from './data-context';
|
|
7
|
-
import { catchError, debounceTime, filter, map, takeUntil } from 'rxjs/operators';
|
|
8
|
-
import { SortContext } from '../sort-context';
|
|
9
|
-
import { IndexedEntities } from './indexed-entities';
|
|
10
|
-
class ReloadRequest {
|
|
11
|
-
constructor(number, reason) {
|
|
12
|
-
this.number = number;
|
|
13
|
-
this.reason = reason;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
class AfterReload {
|
|
17
|
-
constructor(request, result) {
|
|
18
|
-
this.request = request;
|
|
19
|
-
this.result = result;
|
|
20
|
-
}
|
|
21
|
-
fulfills(minRequest) {
|
|
22
|
-
return this.request.number >= minRequest.number;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
export class DataContextBase extends DataSource {
|
|
26
|
-
/***************************************************************************
|
|
27
|
-
* *
|
|
28
|
-
* Fields *
|
|
29
|
-
* *
|
|
30
|
-
**************************************************************************/
|
|
31
|
-
static { this.DC_ID_COUNTER = 0; }
|
|
32
|
-
/***************************************************************************
|
|
33
|
-
* *
|
|
34
|
-
* Constructor *
|
|
35
|
-
* *
|
|
36
|
-
**************************************************************************/
|
|
37
|
-
constructor(dataSource, _indexFn, _localApply, _localSort) {
|
|
38
|
-
super();
|
|
39
|
-
this._indexFn = _indexFn;
|
|
40
|
-
this._localApply = _localApply;
|
|
41
|
-
this._localSort = _localSort;
|
|
42
|
-
this.baselog = LoggerFactory.getLogger('DataContextBase');
|
|
43
|
-
this._filter = new FilterContext();
|
|
44
|
-
this._sort = new SortContext();
|
|
45
|
-
this._total = new BehaviorSubject(undefined);
|
|
46
|
-
this._status = new BehaviorSubject(DataContextStatus.idle());
|
|
47
|
-
this._started = new BehaviorSubject(false);
|
|
48
|
-
this._closed = new BehaviorSubject(false);
|
|
49
|
-
this._customIndex = new Map();
|
|
50
|
-
this._reloadCounter = 0;
|
|
51
|
-
this._reloadQueue = new Subject();
|
|
52
|
-
this._reloaded = new Subject();
|
|
53
|
-
this.destroy$ = new Subject();
|
|
54
|
-
this.id = 'DataContext#' + ++DataContextBase.DC_ID_COUNTER;
|
|
55
|
-
this._dataSource = dataSource;
|
|
56
|
-
this._data = new IndexedEntities((e) => dataSource.getId(e), _localSort, this._sort);
|
|
57
|
-
this._loading = this._status.pipe(map((status) => status.loading));
|
|
58
|
-
this._filter.filters
|
|
59
|
-
.pipe(filter(() => this.started), takeUntil(this.destroy$))
|
|
60
|
-
.subscribe((filters) => this.onFiltersChanged(filters));
|
|
61
|
-
this._sort.sorts
|
|
62
|
-
.pipe(filter(() => this.started), takeUntil(this.destroy$))
|
|
63
|
-
.subscribe((sorts) => this.onSortsChanged(sorts));
|
|
64
|
-
this._reloadQueue
|
|
65
|
-
.pipe(takeUntil(this.destroy$), filter((request) => this.started), debounceTime(50), switchMap((request) => this.reloadNow(request).pipe(map((result) => new AfterReload(request, result)), catchError((err) => {
|
|
66
|
-
// Dont die on errors
|
|
67
|
-
this.baselog.error(this.id + ': Reload queue detected error, bad!', err);
|
|
68
|
-
return of(new AfterReload(request, err));
|
|
69
|
-
}))))
|
|
70
|
-
.subscribe((afterReload) => this._reloaded.next(afterReload));
|
|
71
|
-
}
|
|
72
|
-
/***************************************************************************
|
|
73
|
-
* *
|
|
74
|
-
* Public API Material DC *
|
|
75
|
-
* *
|
|
76
|
-
**************************************************************************/
|
|
77
|
-
connect(collectionViewer) {
|
|
78
|
-
return this.data;
|
|
79
|
-
}
|
|
80
|
-
disconnect(collectionViewer) {
|
|
81
|
-
// this.close(); Closing will destroy the DC
|
|
82
|
-
}
|
|
83
|
-
/***************************************************************************
|
|
84
|
-
* *
|
|
85
|
-
* Properties *
|
|
86
|
-
* *
|
|
87
|
-
**************************************************************************/
|
|
88
|
-
get dataSource() {
|
|
89
|
-
return this._dataSource;
|
|
90
|
-
}
|
|
91
|
-
get snapshot() {
|
|
92
|
-
return new DataContextSnapshot(this.dataSnapshot, this.isEmpty, this.loadingSnapshot, this.totalSnapshot, this.statusSnapshot);
|
|
93
|
-
}
|
|
94
|
-
get total() {
|
|
95
|
-
return this._total.asObservable();
|
|
96
|
-
}
|
|
97
|
-
get totalSnapshot() {
|
|
98
|
-
return this._total.getValue();
|
|
99
|
-
}
|
|
100
|
-
get sort() {
|
|
101
|
-
return this._sort;
|
|
102
|
-
}
|
|
103
|
-
get filter() {
|
|
104
|
-
return this._filter;
|
|
105
|
-
}
|
|
106
|
-
get loading() {
|
|
107
|
-
return this._loading;
|
|
108
|
-
}
|
|
109
|
-
get loadingSnapshot() {
|
|
110
|
-
return this.statusSnapshot?.loading;
|
|
111
|
-
}
|
|
112
|
-
get data() {
|
|
113
|
-
return this._data.entities$;
|
|
114
|
-
}
|
|
115
|
-
get dataSnapshot() {
|
|
116
|
-
return this._data.entitiesSnapshot;
|
|
117
|
-
}
|
|
118
|
-
get status() {
|
|
119
|
-
return this._status;
|
|
120
|
-
}
|
|
121
|
-
get statusSnapshot() {
|
|
122
|
-
return this._status.getValue();
|
|
123
|
-
}
|
|
124
|
-
get isEmpty() {
|
|
125
|
-
return this.dataSnapshot.length === 0;
|
|
126
|
-
}
|
|
127
|
-
get isStarted() {
|
|
128
|
-
return this.started;
|
|
129
|
-
}
|
|
130
|
-
get isStarted$() {
|
|
131
|
-
return this._started.asObservable();
|
|
132
|
-
}
|
|
133
|
-
get isClosed() {
|
|
134
|
-
return this._closed.getValue();
|
|
135
|
-
}
|
|
136
|
-
get started() {
|
|
137
|
-
return this._started.getValue();
|
|
138
|
-
}
|
|
139
|
-
set started(started) {
|
|
140
|
-
this._started.next(started);
|
|
141
|
-
}
|
|
142
|
-
/***************************************************************************
|
|
143
|
-
* *
|
|
144
|
-
* Public API *
|
|
145
|
-
* *
|
|
146
|
-
**************************************************************************/
|
|
147
|
-
start(sorts, filters) {
|
|
148
|
-
if (this.isClosed) {
|
|
149
|
-
throw new Error(this.id + ': Restarting a closed DataContext is not possible!'); // See unsubscribe$
|
|
150
|
-
}
|
|
151
|
-
this.started = false;
|
|
152
|
-
this._sort.replaceSorts(sorts || this.sort.sortsSnapshot);
|
|
153
|
-
this._filter.replaceFilters(filters || this.filter.filtersSnapshot);
|
|
154
|
-
this.baselog.debug(this.id + ': Start ...', {
|
|
155
|
-
dataSource: this.dataSource,
|
|
156
|
-
sort: this._sort.sortsSnapshot,
|
|
157
|
-
filter: this._filter.filtersSnapshot,
|
|
158
|
-
});
|
|
159
|
-
this.started = true;
|
|
160
|
-
return this.reload('START');
|
|
161
|
-
}
|
|
162
|
-
reload(reason) {
|
|
163
|
-
const request = new ReloadRequest(++this._reloadCounter, reason);
|
|
164
|
-
this.baselog.debug(this.id + ': Enqueuing reload request #' + request.number + ' [' + reason + ']');
|
|
165
|
-
this._reloadQueue.next(request);
|
|
166
|
-
return this._reloaded.pipe(filter((reload) => reload.fulfills(request)), map((reload) => reload.result));
|
|
167
|
-
}
|
|
168
|
-
findByIndex(key) {
|
|
169
|
-
if (!this._indexFn) {
|
|
170
|
-
throw new Error(this.id + ': findByIndex requires you to pass a index function!');
|
|
171
|
-
}
|
|
172
|
-
return this._customIndex.get(key);
|
|
173
|
-
}
|
|
174
|
-
findById(id) {
|
|
175
|
-
return this._data.getById(id);
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Closes this DataContext and cleans up all used resources.
|
|
179
|
-
*/
|
|
180
|
-
close() {
|
|
181
|
-
this.started = false;
|
|
182
|
-
this.destroy$.next();
|
|
183
|
-
this.destroy$.complete();
|
|
184
|
-
this._closed.next(true);
|
|
185
|
-
this._data.destroy();
|
|
186
|
-
this._total.complete();
|
|
187
|
-
this._status.complete();
|
|
188
|
-
this.clearAll();
|
|
189
|
-
this.baselog.debug(this.id + ': Has been closed and resources cleaned up!');
|
|
190
|
-
}
|
|
191
|
-
refresh() {
|
|
192
|
-
this._data.notify();
|
|
193
|
-
}
|
|
194
|
-
update(entities) {
|
|
195
|
-
this._data.updateSome(entities);
|
|
196
|
-
}
|
|
197
|
-
/***************************************************************************
|
|
198
|
-
* *
|
|
199
|
-
* Protected methods *
|
|
200
|
-
* *
|
|
201
|
-
**************************************************************************/
|
|
202
|
-
reloadNow(request) {
|
|
203
|
-
this.baselog.debug(this.id + ': reloadNow triggered. Request #' + request.number + ' ' + request.reason, {
|
|
204
|
-
filter: this._filter.filtersSnapshot,
|
|
205
|
-
sort: this._sort.sortsSnapshot,
|
|
206
|
-
dataSource: this.dataSource,
|
|
207
|
-
request: request,
|
|
208
|
-
});
|
|
209
|
-
return this.reloadInternal(); // TODO This should actually return the real (http) request
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Append the given rows to the existing ones.
|
|
213
|
-
*/
|
|
214
|
-
appendData(additionalData) {
|
|
215
|
-
additionalData = this.localApply(additionalData);
|
|
216
|
-
this.indexAll(additionalData);
|
|
217
|
-
this._data.append(additionalData);
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Insert the given rows at the given location.
|
|
221
|
-
*/
|
|
222
|
-
insertData(additionalData, offset) {
|
|
223
|
-
additionalData = this.localApply(additionalData);
|
|
224
|
-
this.indexAll(additionalData);
|
|
225
|
-
this._data.insert(additionalData, offset);
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Replaces the existing data with the new set.
|
|
229
|
-
* @param newData The new data set.
|
|
230
|
-
* @param alreadyIndexed The rows will be indexed unless they already have been.
|
|
231
|
-
*/
|
|
232
|
-
setData(newData, alreadyIndexed = false) {
|
|
233
|
-
newData = this.localApply(newData);
|
|
234
|
-
if (!alreadyIndexed) {
|
|
235
|
-
this.clearIndex();
|
|
236
|
-
this.indexAll(newData);
|
|
237
|
-
}
|
|
238
|
-
this._data.replaceAll(newData);
|
|
239
|
-
}
|
|
240
|
-
clearData() {
|
|
241
|
-
this.setData([]);
|
|
242
|
-
}
|
|
243
|
-
localApply(data) {
|
|
244
|
-
if (this._localApply) {
|
|
245
|
-
return this._localApply(data);
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
return data;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
setTotal(total) {
|
|
252
|
-
this._total.next(total);
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Clears the current data-context cached data.
|
|
256
|
-
* State such as current sorting and filtersSnapshot are kept.
|
|
257
|
-
*/
|
|
258
|
-
clearAll(silent = false) {
|
|
259
|
-
this.clearIndex();
|
|
260
|
-
if (!silent) {
|
|
261
|
-
this.setTotal(0);
|
|
262
|
-
this.clearData();
|
|
263
|
-
}
|
|
264
|
-
this.onIdle();
|
|
265
|
-
}
|
|
266
|
-
updateIndex() {
|
|
267
|
-
this.clearIndex();
|
|
268
|
-
this.indexAll(this.dataSnapshot);
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Indexes the given item by key if there is an index function defined.
|
|
272
|
-
*/
|
|
273
|
-
indexItem(item) {
|
|
274
|
-
const key = this.getItemKey(item);
|
|
275
|
-
if (key) {
|
|
276
|
-
this._customIndex.set(key, item);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Indexes all the given items by key if there is an index function defined.
|
|
281
|
-
*/
|
|
282
|
-
indexAll(items) {
|
|
283
|
-
if (this._indexFn) {
|
|
284
|
-
items.forEach((item) => this.indexItem(item));
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
getItemKey(item) {
|
|
288
|
-
if (this._indexFn) {
|
|
289
|
-
return this._indexFn(item);
|
|
290
|
-
}
|
|
291
|
-
return null;
|
|
292
|
-
}
|
|
293
|
-
getItemId(item) {
|
|
294
|
-
return this.dataSource.getId(item);
|
|
295
|
-
}
|
|
296
|
-
/***************************************************************************
|
|
297
|
-
* *
|
|
298
|
-
* Event handler *
|
|
299
|
-
* *
|
|
300
|
-
**************************************************************************/
|
|
301
|
-
/**
|
|
302
|
-
* Occurs when the sort has changed.
|
|
303
|
-
*/
|
|
304
|
-
onSortsChanged(sorts) {
|
|
305
|
-
if (!this._localSort) {
|
|
306
|
-
this.reload('Sort Changed');
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
this.setData(this.dataSnapshot, true);
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
/**
|
|
313
|
-
* Occurs when the filter has changed.
|
|
314
|
-
*/
|
|
315
|
-
onFiltersChanged(filters) {
|
|
316
|
-
this.reload('Filters Changed');
|
|
317
|
-
}
|
|
318
|
-
onError(err) {
|
|
319
|
-
this.onStatus(DataContextStatus.error(err));
|
|
320
|
-
}
|
|
321
|
-
onIdle() {
|
|
322
|
-
this.onStatus(DataContextStatus.idle());
|
|
323
|
-
}
|
|
324
|
-
onLoading() {
|
|
325
|
-
this.onStatus(DataContextStatus.loading());
|
|
326
|
-
}
|
|
327
|
-
onStatus(status) {
|
|
328
|
-
this._status.next(status);
|
|
329
|
-
}
|
|
330
|
-
/***************************************************************************
|
|
331
|
-
* *
|
|
332
|
-
* Private methods *
|
|
333
|
-
* *
|
|
334
|
-
**************************************************************************/
|
|
335
|
-
clearIndex() {
|
|
336
|
-
this._customIndex.clear();
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb250ZXh0LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21tb24vZGF0YS9kYXRhLWNvbnRleHQvZGF0YS1jb250ZXh0LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRzVELE9BQU8sRUFBb0IsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFnQixNQUFNLGdCQUFnQixDQUFBO0FBQ2xFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVwRCxNQUFNLGFBQWE7SUFDakIsWUFDa0IsTUFBYyxFQUNkLE1BQWU7UUFEZixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsV0FBTSxHQUFOLE1BQU0sQ0FBUztJQUM5QixDQUFDO0NBQ0w7QUFFRCxNQUFNLFdBQVc7SUFDZixZQUNrQixPQUFzQixFQUN0QixNQUFXO1FBRFgsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFLO0lBQzFCLENBQUM7SUFFRyxRQUFRLENBQUMsVUFBeUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFBO0lBQ2pELENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBZ0IsZUFDcEIsU0FBUSxVQUFhO0lBR3JCOzs7O2dGQUk0RTthQUU3RCxrQkFBYSxHQUFHLENBQUMsQUFBSixDQUFJO0lBK0JoQzs7OztnRkFJNEU7SUFFNUUsWUFDRSxVQUEwQixFQUNsQixRQUEwQixFQUMxQixXQUErQixFQUMvQixVQUE2QztRQUVyRCxLQUFLLEVBQUUsQ0FBQTtRQUpDLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUFtQztRQXZDdEMsWUFBTyxHQUFXLGFBQWEsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQVM1RCxZQUFPLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQTtRQUM3QixVQUFLLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQTtRQUt6QixXQUFNLEdBQUcsSUFBSSxlQUFlLENBQXFCLFNBQVMsQ0FBQyxDQUFBO1FBQzNELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBb0IsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUUxRSxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUE7UUFDOUMsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFBO1FBRTdDLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQTtRQUV6QyxtQkFBYyxHQUFHLENBQUMsQ0FBQTtRQUNULGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQWlCLENBQUE7UUFDM0MsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFlLENBQUE7UUFFcEMsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUE7UUFlL0MsSUFBSSxDQUFDLEVBQUUsR0FBRyxjQUFjLEdBQUcsRUFBRSxlQUFlLENBQUMsYUFBYSxDQUFBO1FBQzFELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFBO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUVwRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFFbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO2FBQ2pCLElBQUksQ0FDSCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUMxQixTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN6QjthQUNBLFNBQVMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7UUFFekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO2FBQ2IsSUFBSSxDQUNILE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3pCO2FBQ0EsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFFbkQsSUFBSSxDQUFDLFlBQVk7YUFDZCxJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFDeEIsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQ2pDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFDaEIsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzFCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQ2pELFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLHFCQUFxQjtZQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLHFDQUFxQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQ3hFLE9BQU8sRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQzFDLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FDRjthQUNBLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLE9BQU8sQ0FBQyxnQkFBa0M7UUFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFBO0lBQ2xCLENBQUM7SUFFTSxVQUFVLENBQUMsZ0JBQWtDO1FBQ2xELDRDQUE0QztJQUM5QyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFLElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDekIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksbUJBQW1CLENBQzVCLElBQUksQ0FBQyxZQUFZLEVBQ2pCLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLGFBQWEsRUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FDcEIsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDbkMsQ0FBQztJQUVELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0IsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQTtJQUNuQixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQTtJQUNyQyxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQTtJQUM3QixDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3JCLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUE7SUFDdkMsQ0FBQztJQUVELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDckIsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDckMsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDaEMsQ0FBQztJQUVELElBQWMsT0FBTztRQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDakMsQ0FBQztJQUVELElBQWMsT0FBTyxDQUFDLE9BQWdCO1FBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsS0FBSyxDQUFDLEtBQWMsRUFBRSxPQUFrQjtRQUM3QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsb0RBQW9ELENBQUMsQ0FBQSxDQUFDLG1CQUFtQjtRQUNyRyxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUE7UUFFcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxhQUFhLEVBQUU7WUFDMUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7WUFDOUIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZTtTQUNyQyxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtRQUVuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFlO1FBQzNCLE1BQU0sT0FBTyxHQUFHLElBQUksYUFBYSxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FDaEIsSUFBSSxDQUFDLEVBQUUsR0FBRyw4QkFBOEIsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUNoRixDQUFBO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDeEIsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQzVDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUMvQixDQUFBO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxHQUFRO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLHNEQUFzRCxDQUFDLENBQUE7UUFDbkYsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVNLFFBQVEsQ0FBQyxFQUFPO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFBO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUV2QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUV2QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLDZDQUE2QyxDQUFDLENBQUE7SUFDN0UsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ3JCLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBYTtRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXBFLFNBQVMsQ0FBQyxPQUFzQjtRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FDaEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxrQ0FBa0MsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUNwRjtZQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWU7WUFDcEMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtZQUM5QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FDRixDQUFBO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUEsQ0FBQywyREFBMkQ7SUFDMUYsQ0FBQztJQUVEOztPQUVHO0lBQ08sVUFBVSxDQUFDLGNBQW1CO1FBQ3RDLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ2hELElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDbkMsQ0FBQztJQUVEOztPQUVHO0lBQ08sVUFBVSxDQUFDLGNBQW1CLEVBQUUsTUFBYztRQUN0RCxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLE9BQU8sQ0FBQyxPQUFZLEVBQUUsY0FBYyxHQUFHLEtBQUs7UUFDcEQsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQTtZQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3hCLENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRVMsU0FBUztRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ2xCLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBUztRQUMxQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0IsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7SUFDSCxDQUFDO0lBRVMsUUFBUSxDQUFDLEtBQXlCO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDTyxRQUFRLENBQUMsTUFBTSxHQUFHLEtBQUs7UUFDL0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBRWpCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ2xCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDZixDQUFDO0lBRVMsV0FBVztRQUNuQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ08sU0FBUyxDQUFDLElBQU87UUFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNqQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDTyxRQUFRLENBQUMsS0FBVTtRQUMzQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFUyxVQUFVLENBQUMsSUFBTztRQUMxQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDNUIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVTLFNBQVMsQ0FBQyxJQUFPO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDcEMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RTs7T0FFRztJQUNPLGNBQWMsQ0FBQyxLQUFhO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ08sZ0JBQWdCLENBQUMsT0FBaUI7UUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ2hDLENBQUM7SUFFUyxPQUFPLENBQUMsR0FBUTtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFUyxNQUFNO1FBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7SUFFUyxTQUFTO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBRVMsUUFBUSxDQUFDLE1BQXlCO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNCLENBQUM7SUFpQkQ7Ozs7Z0ZBSTRFO0lBRXBFLFVBQVU7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUMzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9nZ2VyLCBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi9maWx0ZXJzL2ZpbHRlcidcbmltcG9ydCB7IFNvcnQgfSBmcm9tICcuLi9zb3J0J1xuaW1wb3J0IHsgQ29sbGVjdGlvblZpZXdlciwgRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucydcbmltcG9ydCB7IERhdGFDb250ZXh0U3RhdHVzIH0gZnJvbSAnLi9kYXRhLWNvbnRleHQtc3RhdHVzJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IEZpbHRlckNvbnRleHQgfSBmcm9tICcuLi9maWx0ZXJzL2ZpbHRlci1jb250ZXh0J1xuaW1wb3J0IHsgRGF0YUNvbnRleHRTbmFwc2hvdCwgSURhdGFDb250ZXh0IH0gZnJvbSAnLi9kYXRhLWNvbnRleHQnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7IFNvcnRDb250ZXh0IH0gZnJvbSAnLi4vc29ydC1jb250ZXh0J1xuaW1wb3J0IHsgSURhdGFTb3VyY2UgfSBmcm9tICcuLi9kYXRhc291cmNlL2RhdGEtc291cmNlJ1xuaW1wb3J0IHsgSW5kZXhlZEVudGl0aWVzIH0gZnJvbSAnLi9pbmRleGVkLWVudGl0aWVzJ1xuXG5jbGFzcyBSZWxvYWRSZXF1ZXN0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IG51bWJlcjogbnVtYmVyLFxuICAgIHB1YmxpYyByZWFkb25seSByZWFzb24/OiBzdHJpbmdcbiAgKSB7fVxufVxuXG5jbGFzcyBBZnRlclJlbG9hZCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSByZXF1ZXN0OiBSZWxvYWRSZXF1ZXN0LFxuICAgIHB1YmxpYyByZWFkb25seSByZXN1bHQ6IGFueVxuICApIHt9XG5cbiAgcHVibGljIGZ1bGZpbGxzKG1pblJlcXVlc3Q6IFJlbG9hZFJlcXVlc3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0Lm51bWJlciA+PSBtaW5SZXF1ZXN0Lm51bWJlclxuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEYXRhQ29udGV4dEJhc2U8VCwgVElkID0gYW55PlxuICBleHRlbmRzIERhdGFTb3VyY2U8VD5cbiAgaW1wbGVtZW50cyBJRGF0YUNvbnRleHQ8VD5cbntcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzdGF0aWMgRENfSURfQ09VTlRFUiA9IDBcblxuICBwcml2YXRlIHJlYWRvbmx5IGJhc2Vsb2c6IExvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdEYXRhQ29udGV4dEJhc2UnKVxuXG4gIC8qKlxuICAgKiBJRCBvZiB0aGlzIERhdGFDb250ZXh0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZ1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGFTb3VyY2U6IElEYXRhU291cmNlPFQ+XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyID0gbmV3IEZpbHRlckNvbnRleHQoKVxuICBwcml2YXRlIHJlYWRvbmx5IF9zb3J0ID0gbmV3IFNvcnRDb250ZXh0KClcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2FkaW5nOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YTogSW5kZXhlZEVudGl0aWVzPFQsIFRJZD5cbiAgcHJpdmF0ZSByZWFkb25seSBfdG90YWwgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGFDb250ZXh0U3RhdHVzPihEYXRhQ29udGV4dFN0YXR1cy5pZGxlKCkpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Nsb3NlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tSW5kZXggPSBuZXcgTWFwPGFueSwgVD4oKVxuXG4gIHByaXZhdGUgX3JlbG9hZENvdW50ZXIgPSAwXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlbG9hZFF1ZXVlID0gbmV3IFN1YmplY3Q8UmVsb2FkUmVxdWVzdD4oKVxuICBwcml2YXRlIHJlYWRvbmx5IF9yZWxvYWRlZCA9IG5ldyBTdWJqZWN0PEFmdGVyUmVsb2FkPigpXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBkYXRhU291cmNlOiBJRGF0YVNvdXJjZTxUPixcbiAgICBwcml2YXRlIF9pbmRleEZuOiAoaXRlbTogVCkgPT4gYW55LFxuICAgIHByaXZhdGUgX2xvY2FsQXBwbHk6IChkYXRhOiBUW10pID0+IFRbXSxcbiAgICBwcml2YXRlIF9sb2NhbFNvcnQ6IChkYXRhOiBUW10sIHNvcnRzOiBTb3J0W10pID0+IFRbXVxuICApIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5pZCA9ICdEYXRhQ29udGV4dCMnICsgKytEYXRhQ29udGV4dEJhc2UuRENfSURfQ09VTlRFUlxuICAgIHRoaXMuX2RhdGFTb3VyY2UgPSBkYXRhU291cmNlXG4gICAgdGhpcy5fZGF0YSA9IG5ldyBJbmRleGVkRW50aXRpZXMoKGUpID0+IGRhdGFTb3VyY2UuZ2V0SWQoZSksIF9sb2NhbFNvcnQsIHRoaXMuX3NvcnQpXG5cbiAgICB0aGlzLl9sb2FkaW5nID0gdGhpcy5fc3RhdHVzLnBpcGUobWFwKChzdGF0dXMpID0+IHN0YXR1cy5sb2FkaW5nKSlcblxuICAgIHRoaXMuX2ZpbHRlci5maWx0ZXJzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuc3RhcnRlZCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZmlsdGVycykgPT4gdGhpcy5vbkZpbHRlcnNDaGFuZ2VkKGZpbHRlcnMpKVxuXG4gICAgdGhpcy5fc29ydC5zb3J0c1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLnN0YXJ0ZWQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHNvcnRzKSA9PiB0aGlzLm9uU29ydHNDaGFuZ2VkKHNvcnRzKSlcblxuICAgIHRoaXMuX3JlbG9hZFF1ZXVlXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKHJlcXVlc3QpID0+IHRoaXMuc3RhcnRlZCksXG4gICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgIHN3aXRjaE1hcCgocmVxdWVzdCkgPT5cbiAgICAgICAgICB0aGlzLnJlbG9hZE5vdyhyZXF1ZXN0KS5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXN1bHQpID0+IG5ldyBBZnRlclJlbG9hZChyZXF1ZXN0LCByZXN1bHQpKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgICAvLyBEb250IGRpZSBvbiBlcnJvcnNcbiAgICAgICAgICAgICAgdGhpcy5iYXNlbG9nLmVycm9yKHRoaXMuaWQgKyAnOiBSZWxvYWQgcXVldWUgZGV0ZWN0ZWQgZXJyb3IsIGJhZCEnLCBlcnIpXG4gICAgICAgICAgICAgIHJldHVybiBvZihuZXcgQWZ0ZXJSZWxvYWQocmVxdWVzdCwgZXJyKSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChhZnRlclJlbG9hZCkgPT4gdGhpcy5fcmVsb2FkZWQubmV4dChhZnRlclJlbG9hZCkpXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSBNYXRlcmlhbCBEQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhXG4gIH1cblxuICBwdWJsaWMgZGlzY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogdm9pZCB7XG4gICAgLy8gdGhpcy5jbG9zZSgpOyBDbG9zaW5nIHdpbGwgZGVzdHJveSB0aGUgRENcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBnZXQgZGF0YVNvdXJjZSgpOiBJRGF0YVNvdXJjZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc25hcHNob3QoKTogRGF0YUNvbnRleHRTbmFwc2hvdDxUPiB7XG4gICAgcmV0dXJuIG5ldyBEYXRhQ29udGV4dFNuYXBzaG90KFxuICAgICAgdGhpcy5kYXRhU25hcHNob3QsXG4gICAgICB0aGlzLmlzRW1wdHksXG4gICAgICB0aGlzLmxvYWRpbmdTbmFwc2hvdCxcbiAgICAgIHRoaXMudG90YWxTbmFwc2hvdCxcbiAgICAgIHRoaXMuc3RhdHVzU25hcHNob3RcbiAgICApXG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvdGFsKCk6IE9ic2VydmFibGU8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsLmFzT2JzZXJ2YWJsZSgpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvdGFsU25hcHNob3QoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWwuZ2V0VmFsdWUoKVxuICB9XG5cbiAgcHVibGljIGdldCBzb3J0KCk6IFNvcnRDb250ZXh0IHtcbiAgICByZXR1cm4gdGhpcy5fc29ydFxuICB9XG5cbiAgcHVibGljIGdldCBmaWx0ZXIoKTogRmlsdGVyQ29udGV4dCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclxuICB9XG5cbiAgcHVibGljIGdldCBsb2FkaW5nKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nXG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRpbmdTbmFwc2hvdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNTbmFwc2hvdD8ubG9hZGluZ1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhKCk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGEuZW50aXRpZXMkXG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFTbmFwc2hvdCgpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhLmVudGl0aWVzU25hcHNob3RcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3RhdHVzKCk6IE9ic2VydmFibGU8RGF0YUNvbnRleHRTdGF0dXM+IHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzXG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXR1c1NuYXBzaG90KCk6IERhdGFDb250ZXh0U3RhdHVzIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdHVzLmdldFZhbHVlKClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU25hcHNob3QubGVuZ3RoID09PSAwXG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU3RhcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGFydGVkXG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU3RhcnRlZCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0ZWQuYXNPYnNlcnZhYmxlKClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNDbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Nsb3NlZC5nZXRWYWx1ZSgpXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHN0YXJ0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0ZWQuZ2V0VmFsdWUoKVxuICB9XG5cbiAgcHJvdGVjdGVkIHNldCBzdGFydGVkKHN0YXJ0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zdGFydGVkLm5leHQoc3RhcnRlZClcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzdGFydChzb3J0cz86IFNvcnRbXSwgZmlsdGVycz86IEZpbHRlcltdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy5pc0Nsb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuaWQgKyAnOiBSZXN0YXJ0aW5nIGEgY2xvc2VkIERhdGFDb250ZXh0IGlzIG5vdCBwb3NzaWJsZSEnKSAvLyBTZWUgdW5zdWJzY3JpYmUkXG4gICAgfVxuXG4gICAgdGhpcy5zdGFydGVkID0gZmFsc2VcblxuICAgIHRoaXMuX3NvcnQucmVwbGFjZVNvcnRzKHNvcnRzIHx8IHRoaXMuc29ydC5zb3J0c1NuYXBzaG90KVxuICAgIHRoaXMuX2ZpbHRlci5yZXBsYWNlRmlsdGVycyhmaWx0ZXJzIHx8IHRoaXMuZmlsdGVyLmZpbHRlcnNTbmFwc2hvdClcblxuICAgIHRoaXMuYmFzZWxvZy5kZWJ1Zyh0aGlzLmlkICsgJzogU3RhcnQgLi4uJywge1xuICAgICAgZGF0YVNvdXJjZTogdGhpcy5kYXRhU291cmNlLFxuICAgICAgc29ydDogdGhpcy5fc29ydC5zb3J0c1NuYXBzaG90LFxuICAgICAgZmlsdGVyOiB0aGlzLl9maWx0ZXIuZmlsdGVyc1NuYXBzaG90LFxuICAgIH0pXG5cbiAgICB0aGlzLnN0YXJ0ZWQgPSB0cnVlXG5cbiAgICByZXR1cm4gdGhpcy5yZWxvYWQoJ1NUQVJUJylcbiAgfVxuXG4gIHB1YmxpYyByZWxvYWQocmVhc29uPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gbmV3IFJlbG9hZFJlcXVlc3QoKyt0aGlzLl9yZWxvYWRDb3VudGVyLCByZWFzb24pXG4gICAgdGhpcy5iYXNlbG9nLmRlYnVnKFxuICAgICAgdGhpcy5pZCArICc6IEVucXVldWluZyByZWxvYWQgcmVxdWVzdCAjJyArIHJlcXVlc3QubnVtYmVyICsgJyBbJyArIHJlYXNvbiArICddJ1xuICAgIClcbiAgICB0aGlzLl9yZWxvYWRRdWV1ZS5uZXh0KHJlcXVlc3QpXG4gICAgcmV0dXJuIHRoaXMuX3JlbG9hZGVkLnBpcGUoXG4gICAgICBmaWx0ZXIoKHJlbG9hZCkgPT4gcmVsb2FkLmZ1bGZpbGxzKHJlcXVlc3QpKSxcbiAgICAgIG1hcCgocmVsb2FkKSA9PiByZWxvYWQucmVzdWx0KVxuICAgIClcbiAgfVxuXG4gIHB1YmxpYyBmaW5kQnlJbmRleChrZXk6IGFueSk6IFQgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5faW5kZXhGbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuaWQgKyAnOiBmaW5kQnlJbmRleCByZXF1aXJlcyB5b3UgdG8gcGFzcyBhIGluZGV4IGZ1bmN0aW9uIScpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jdXN0b21JbmRleC5nZXQoa2V5KVxuICB9XG5cbiAgcHVibGljIGZpbmRCeUlkKGlkOiBhbnkpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YS5nZXRCeUlkKGlkKVxuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGlzIERhdGFDb250ZXh0IGFuZCBjbGVhbnMgdXAgYWxsIHVzZWQgcmVzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhcnRlZCA9IGZhbHNlXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KClcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKClcbiAgICB0aGlzLl9jbG9zZWQubmV4dCh0cnVlKVxuXG4gICAgdGhpcy5fZGF0YS5kZXN0cm95KClcbiAgICB0aGlzLl90b3RhbC5jb21wbGV0ZSgpXG4gICAgdGhpcy5fc3RhdHVzLmNvbXBsZXRlKClcblxuICAgIHRoaXMuY2xlYXJBbGwoKVxuICAgIHRoaXMuYmFzZWxvZy5kZWJ1Zyh0aGlzLmlkICsgJzogSGFzIGJlZW4gY2xvc2VkIGFuZCByZXNvdXJjZXMgY2xlYW5lZCB1cCEnKVxuICB9XG5cbiAgcHVibGljIHJlZnJlc2goKTogdm9pZCB7XG4gICAgdGhpcy5fZGF0YS5ub3RpZnkoKVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZShlbnRpdGllczogVFtdKTogdm9pZCB7XG4gICAgdGhpcy5fZGF0YS51cGRhdGVTb21lKGVudGl0aWVzKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3RlY3RlZCBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWxvYWROb3cocmVxdWVzdDogUmVsb2FkUmVxdWVzdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5iYXNlbG9nLmRlYnVnKFxuICAgICAgdGhpcy5pZCArICc6IHJlbG9hZE5vdyB0cmlnZ2VyZWQuIFJlcXVlc3QgIycgKyByZXF1ZXN0Lm51bWJlciArICcgJyArIHJlcXVlc3QucmVhc29uLFxuICAgICAge1xuICAgICAgICBmaWx0ZXI6IHRoaXMuX2ZpbHRlci5maWx0ZXJzU25hcHNob3QsXG4gICAgICAgIHNvcnQ6IHRoaXMuX3NvcnQuc29ydHNTbmFwc2hvdCxcbiAgICAgICAgZGF0YVNvdXJjZTogdGhpcy5kYXRhU291cmNlLFxuICAgICAgICByZXF1ZXN0OiByZXF1ZXN0LFxuICAgICAgfVxuICAgIClcbiAgICByZXR1cm4gdGhpcy5yZWxvYWRJbnRlcm5hbCgpIC8vIFRPRE8gVGhpcyBzaG91bGQgYWN0dWFsbHkgcmV0dXJuIHRoZSByZWFsIChodHRwKSByZXF1ZXN0XG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kIHRoZSBnaXZlbiByb3dzIHRvIHRoZSBleGlzdGluZyBvbmVzLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFwcGVuZERhdGEoYWRkaXRpb25hbERhdGE6IFRbXSk6IHZvaWQge1xuICAgIGFkZGl0aW9uYWxEYXRhID0gdGhpcy5sb2NhbEFwcGx5KGFkZGl0aW9uYWxEYXRhKVxuICAgIHRoaXMuaW5kZXhBbGwoYWRkaXRpb25hbERhdGEpXG4gICAgdGhpcy5fZGF0YS5hcHBlbmQoYWRkaXRpb25hbERhdGEpXG4gIH1cblxuICAvKipcbiAgICogSW5zZXJ0IHRoZSBnaXZlbiByb3dzIGF0IHRoZSBnaXZlbiBsb2NhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBpbnNlcnREYXRhKGFkZGl0aW9uYWxEYXRhOiBUW10sIG9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgYWRkaXRpb25hbERhdGEgPSB0aGlzLmxvY2FsQXBwbHkoYWRkaXRpb25hbERhdGEpXG4gICAgdGhpcy5pbmRleEFsbChhZGRpdGlvbmFsRGF0YSlcbiAgICB0aGlzLl9kYXRhLmluc2VydChhZGRpdGlvbmFsRGF0YSwgb2Zmc2V0KVxuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIHRoZSBleGlzdGluZyBkYXRhIHdpdGggdGhlIG5ldyBzZXQuXG4gICAqIEBwYXJhbSBuZXdEYXRhIFRoZSBuZXcgZGF0YSBzZXQuXG4gICAqIEBwYXJhbSBhbHJlYWR5SW5kZXhlZCBUaGUgcm93cyB3aWxsIGJlIGluZGV4ZWQgdW5sZXNzIHRoZXkgYWxyZWFkeSBoYXZlIGJlZW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0RGF0YShuZXdEYXRhOiBUW10sIGFscmVhZHlJbmRleGVkID0gZmFsc2UpOiB2b2lkIHtcbiAgICBuZXdEYXRhID0gdGhpcy5sb2NhbEFwcGx5KG5ld0RhdGEpXG4gICAgaWYgKCFhbHJlYWR5SW5kZXhlZCkge1xuICAgICAgdGhpcy5jbGVhckluZGV4KClcbiAgICAgIHRoaXMuaW5kZXhBbGwobmV3RGF0YSlcbiAgICB9XG4gICAgdGhpcy5fZGF0YS5yZXBsYWNlQWxsKG5ld0RhdGEpXG4gIH1cblxuICBwcm90ZWN0ZWQgY2xlYXJEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGF0YShbXSlcbiAgfVxuXG4gIHByaXZhdGUgbG9jYWxBcHBseShkYXRhOiBUW10pOiBUW10ge1xuICAgIGlmICh0aGlzLl9sb2NhbEFwcGx5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fbG9jYWxBcHBseShkYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGF0YVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRUb3RhbCh0b3RhbDogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5fdG90YWwubmV4dCh0b3RhbClcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGN1cnJlbnQgZGF0YS1jb250ZXh0IGNhY2hlZCBkYXRhLlxuICAgKiBTdGF0ZSBzdWNoIGFzIGN1cnJlbnQgc29ydGluZyBhbmQgZmlsdGVyc1NuYXBzaG90IGFyZSBrZXB0LlxuICAgKi9cbiAgcHJvdGVjdGVkIGNsZWFyQWxsKHNpbGVudCA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhckluZGV4KClcblxuICAgIGlmICghc2lsZW50KSB7XG4gICAgICB0aGlzLnNldFRvdGFsKDApXG4gICAgICB0aGlzLmNsZWFyRGF0YSgpXG4gICAgfVxuXG4gICAgdGhpcy5vbklkbGUoKVxuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZUluZGV4KCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJJbmRleCgpXG4gICAgdGhpcy5pbmRleEFsbCh0aGlzLmRhdGFTbmFwc2hvdClcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRleGVzIHRoZSBnaXZlbiBpdGVtIGJ5IGtleSBpZiB0aGVyZSBpcyBhbiBpbmRleCBmdW5jdGlvbiBkZWZpbmVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGluZGV4SXRlbShpdGVtOiBUKTogdm9pZCB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5nZXRJdGVtS2V5KGl0ZW0pXG4gICAgaWYgKGtleSkge1xuICAgICAgdGhpcy5fY3VzdG9tSW5kZXguc2V0KGtleSwgaXRlbSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5kZXhlcyBhbGwgdGhlIGdpdmVuIGl0ZW1zIGJ5IGtleSBpZiB0aGVyZSBpcyBhbiBpbmRleCBmdW5jdGlvbiBkZWZpbmVkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGluZGV4QWxsKGl0ZW1zOiBUW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5kZXhGbikge1xuICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gdGhpcy5pbmRleEl0ZW0oaXRlbSkpXG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldEl0ZW1LZXkoaXRlbTogVCk6IGFueSB7XG4gICAgaWYgKHRoaXMuX2luZGV4Rm4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbmRleEZuKGl0ZW0pXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SXRlbUlkKGl0ZW06IFQpOiBUSWQge1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UuZ2V0SWQoaXRlbSlcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBFdmVudCBoYW5kbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBPY2N1cnMgd2hlbiB0aGUgc29ydCBoYXMgY2hhbmdlZC5cbiAgICovXG4gIHByb3RlY3RlZCBvblNvcnRzQ2hhbmdlZChzb3J0czogU29ydFtdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9sb2NhbFNvcnQpIHtcbiAgICAgIHRoaXMucmVsb2FkKCdTb3J0IENoYW5nZWQnKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldERhdGEodGhpcy5kYXRhU25hcHNob3QsIHRydWUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9jY3VycyB3aGVuIHRoZSBmaWx0ZXIgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgb25GaWx0ZXJzQ2hhbmdlZChmaWx0ZXJzOiBGaWx0ZXJbXSk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkKCdGaWx0ZXJzIENoYW5nZWQnKVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uRXJyb3IoZXJyOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uU3RhdHVzKERhdGFDb250ZXh0U3RhdHVzLmVycm9yKGVycikpXG4gIH1cblxuICBwcm90ZWN0ZWQgb25JZGxlKCk6IHZvaWQge1xuICAgIHRoaXMub25TdGF0dXMoRGF0YUNvbnRleHRTdGF0dXMuaWRsZSgpKVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uTG9hZGluZygpOiB2b2lkIHtcbiAgICB0aGlzLm9uU3RhdHVzKERhdGFDb250ZXh0U3RhdHVzLmxvYWRpbmcoKSlcbiAgfVxuXG4gIHByb3RlY3RlZCBvblN0YXR1cyhzdGF0dXM6IERhdGFDb250ZXh0U3RhdHVzKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdHVzLm5leHQoc3RhdHVzKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEFic3RyYWN0IG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QgYW5kXG4gICAqIHJlbG9hZCB0aGUgY3VycmVudGx5IGhlbGQgZGF0YS5cbiAgICogSWYgcG9zc2libGUsIHRoZSBjdXJyZW50IHZpZXcgc3RhdGUgc2hvdWxkIGJlIGtlcHQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSByZWxvYWQgam9iLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlbG9hZEludGVybmFsKCk6IE9ic2VydmFibGU8YW55PlxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgY2xlYXJJbmRleCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jdXN0b21JbmRleC5jbGVhcigpXG4gIH1cbn1cbiJdfQ==
|