@sumaris-net/ngx-components 18.0.10 → 18.1.0
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/doc/changelog.md +4 -0
- package/esm2022/src/app/admin/admin-routing.module.mjs +5 -5
- package/esm2022/src/app/admin/admin.module.mjs +5 -5
- package/esm2022/src/app/admin/services/person.service.mjs +4 -4
- package/esm2022/src/app/admin/services/validator/person.validator.mjs +4 -4
- package/esm2022/src/app/admin/users/users.mjs +4 -4
- package/esm2022/src/app/admin/users/users.module.mjs +5 -5
- package/esm2022/src/app/core/about/about.modal.mjs +4 -4
- package/esm2022/src/app/core/about/about.module.mjs +5 -5
- package/esm2022/src/app/core/account/account.module.mjs +5 -5
- package/esm2022/src/app/core/account/account.page.mjs +4 -4
- package/esm2022/src/app/core/account/new-token.form.mjs +4 -4
- package/esm2022/src/app/core/account/new-token.modal.mjs +4 -4
- package/esm2022/src/app/core/account/password/change-password.form.mjs +4 -4
- package/esm2022/src/app/core/account/password/change-password.module.mjs +5 -5
- package/esm2022/src/app/core/account/password/change-password.page.mjs +4 -4
- package/esm2022/src/app/core/account/token.table.mjs +4 -4
- package/esm2022/src/app/core/auth/auth.form.mjs +4 -4
- package/esm2022/src/app/core/auth/auth.modal.mjs +4 -4
- package/esm2022/src/app/core/auth/auth.module.mjs +5 -5
- package/esm2022/src/app/core/auth/reset-password.modal.mjs +4 -4
- package/esm2022/src/app/core/core.module.mjs +5 -5
- package/esm2022/src/app/core/core.testing.module.mjs +5 -5
- package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +5 -5
- package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +4 -4
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +4 -4
- package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +5 -5
- package/esm2022/src/app/core/form/entity/editor.class.mjs +4 -4
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +4 -4
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +4 -4
- package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +4 -4
- package/esm2022/src/app/core/form/entity/entity.module.mjs +5 -5
- package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +4 -4
- package/esm2022/src/app/core/form/form-container.class.mjs +4 -4
- package/esm2022/src/app/core/form/form.class.mjs +4 -4
- package/esm2022/src/app/core/form/form.module.mjs +5 -5
- package/esm2022/src/app/core/form/list/list.form.mjs +4 -4
- package/esm2022/src/app/core/form/list/list.module.mjs +5 -5
- package/esm2022/src/app/core/form/properties/properties.form.mjs +4 -4
- package/esm2022/src/app/core/form/properties/properties.module.mjs +5 -5
- package/esm2022/src/app/core/form/properties/properties.table.mjs +7 -7
- package/esm2022/src/app/core/form/properties/property.validator.mjs +4 -4
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +4 -4
- package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +5 -5
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +4 -4
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +5 -5
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +4 -4
- package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +5 -5
- package/esm2022/src/app/core/form/username/username.form.mjs +4 -4
- package/esm2022/src/app/core/form/username/username.module.mjs +5 -5
- package/esm2022/src/app/core/graphql/graphql.module.mjs +5 -5
- package/esm2022/src/app/core/graphql/graphql.service.mjs +4 -4
- package/esm2022/src/app/core/home/home.mjs +5 -5
- package/esm2022/src/app/core/home/home.module.mjs +5 -5
- package/esm2022/src/app/core/icon/icon.component.mjs +4 -4
- package/esm2022/src/app/core/icon/icon.module.mjs +5 -5
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +4 -4
- package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +5 -5
- package/esm2022/src/app/core/menu/menu.component.mjs +4 -4
- package/esm2022/src/app/core/menu/menu.module.mjs +5 -5
- package/esm2022/src/app/core/menu/menu.service.mjs +4 -4
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +4 -4
- package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +4 -4
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +4 -4
- package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +5 -5
- package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +4 -4
- package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +5 -5
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +4 -4
- package/esm2022/src/app/core/peer/select-peer.module.mjs +5 -5
- package/esm2022/src/app/core/register/register-confirm.page.mjs +4 -4
- package/esm2022/src/app/core/register/register.form.mjs +4 -4
- package/esm2022/src/app/core/register/register.modal.mjs +4 -4
- package/esm2022/src/app/core/register/register.module.mjs +5 -5
- package/esm2022/src/app/core/services/account.service.mjs +4 -4
- package/esm2022/src/app/core/services/auth-guard.service.mjs +4 -4
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +4 -4
- package/esm2022/src/app/core/services/base-graphql-service.class.mjs +4 -4
- package/esm2022/src/app/core/services/config.service.mjs +4 -4
- package/esm2022/src/app/core/services/crypto.service.mjs +4 -4
- package/esm2022/src/app/core/services/local-settings.service.mjs +4 -4
- package/esm2022/src/app/core/services/network.service.mjs +4 -4
- package/esm2022/src/app/core/services/pipes/account.pipes.mjs +9 -9
- package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +5 -5
- package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +5 -5
- package/esm2022/src/app/core/services/pipes/pipes.module.mjs +5 -5
- package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +4 -4
- package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +9 -9
- package/esm2022/src/app/core/services/platform.service.mjs +4 -4
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +4 -4
- package/esm2022/src/app/core/services/testing/referential.validator.mjs +4 -4
- package/esm2022/src/app/core/services/validator/account.validator.mjs +4 -4
- package/esm2022/src/app/core/services/validator/base.validator.class.mjs +4 -4
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +4 -4
- package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +4 -4
- package/esm2022/src/app/core/services/validator/user-token.validator.mjs +4 -4
- package/esm2022/src/app/core/settings/settings.module.mjs +5 -5
- package/esm2022/src/app/core/settings/settings.page.mjs +4 -4
- package/esm2022/src/app/core/table/async-table.class.mjs +4 -4
- package/esm2022/src/app/core/table/column/actions-column.component.mjs +4 -4
- package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +4 -4
- package/esm2022/src/app/core/table/column/row-field.component.mjs +4 -4
- package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +4 -4
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +4 -4
- package/esm2022/src/app/core/table/memory-table.class.mjs +4 -4
- package/esm2022/src/app/core/table/table-select-columns.component.mjs +4 -4
- package/esm2022/src/app/core/table/table.class.mjs +4 -4
- package/esm2022/src/app/core/table/table.module.mjs +5 -5
- package/esm2022/src/app/core/table/table.pipes.mjs +10 -10
- package/esm2022/src/app/core/table/testing/table-validator.service.mjs +4 -4
- package/esm2022/src/app/core/table/testing/table.testing.mjs +4 -4
- package/esm2022/src/app/core/table/testing/table.testing.module.mjs +5 -5
- package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +4 -4
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +4 -4
- package/esm2022/src/app/shared/audio/audio.mjs +4 -4
- package/esm2022/src/app/shared/audio/audio.testing.mjs +4 -4
- package/esm2022/src/app/shared/audio/audio.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/capacitor/keyboard.mjs +4 -4
- package/esm2022/src/app/shared/debug/debug.component.mjs +4 -4
- package/esm2022/src/app/shared/debug/debug.module.mjs +5 -5
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +4 -4
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +4 -4
- package/esm2022/src/app/shared/directives/directives.module.mjs +5 -5
- package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +4 -4
- package/esm2022/src/app/shared/directives/ng-var.directive.mjs +4 -4
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +4 -4
- package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +4 -4
- package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +5 -5
- package/esm2022/src/app/shared/file/file.service.mjs +4 -4
- package/esm2022/src/app/shared/form/field.component.mjs +4 -4
- package/esm2022/src/app/shared/form/loading-spinner.mjs +4 -4
- package/esm2022/src/app/shared/gesture/gesture-config.mjs +4 -4
- package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +4 -4
- package/esm2022/src/app/shared/help/help.modal.mjs +4 -4
- package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +4 -4
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +4 -4
- package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +5 -5
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +4 -4
- package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +5 -5
- package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +4 -4
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +4 -4
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/image/image.module.mjs +5 -5
- package/esm2022/src/app/shared/image/image.service.mjs +4 -4
- package/esm2022/src/app/shared/logging/logging-service.class.mjs +4 -4
- package/esm2022/src/app/shared/logging/logging-service.module.mjs +5 -5
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +4 -4
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +5 -5
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +4 -4
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +4 -4
- package/esm2022/src/app/shared/material/badge/badge.module.mjs +5 -5
- package/esm2022/src/app/shared/material/badge/badge.test.mjs +4 -4
- package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +5 -5
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +4 -4
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +4 -4
- package/esm2022/src/app/shared/material/chips/chips.module.mjs +5 -5
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +4 -4
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +4 -4
- package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +5 -5
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +4 -4
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +4 -4
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +4 -4
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +4 -4
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +4 -4
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +4 -4
- package/esm2022/src/app/shared/material/duration/duration.module.mjs +5 -5
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +4 -4
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +4 -4
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +4 -4
- package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +5 -5
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +4 -4
- package/esm2022/src/app/shared/material/material.module.mjs +5 -5
- package/esm2022/src/app/shared/material/material.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +4 -4
- package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +4 -4
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +4 -4
- package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +5 -5
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +4 -4
- package/esm2022/src/app/shared/material/testing/common.test.mjs +4 -4
- package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +4 -4
- package/esm2022/src/app/shared/material/text/text-form.component.mjs +4 -4
- package/esm2022/src/app/shared/material/text/text-form.module.mjs +5 -5
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +4 -4
- package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +5 -5
- package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +4 -4
- package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +4 -4
- package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +28 -28
- package/esm2022/src/app/shared/pipes/badge.pipes.mjs +4 -4
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +4 -4
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +5 -5
- package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +7 -7
- package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +5 -5
- package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +5 -5
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +5 -5
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +4 -4
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +22 -22
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +5 -5
- package/esm2022/src/app/shared/pipes/html.pipes.mjs +7 -7
- package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +10 -10
- package/esm2022/src/app/shared/pipes/maps.pipe.mjs +13 -13
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +4 -4
- package/esm2022/src/app/shared/pipes/math.pipes.mjs +13 -13
- package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +4 -4
- package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +5 -5
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +5 -5
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +15 -15
- package/esm2022/src/app/shared/pipes/selection.pipes.mjs +22 -22
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +31 -31
- package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +9 -9
- package/esm2022/src/app/shared/pipes/types.pipes.mjs +16 -16
- package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +5 -5
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +4 -4
- package/esm2022/src/app/shared/services/progress-bar.service.mjs +4 -4
- package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +4 -4
- package/esm2022/src/app/shared/services/startable-service.class.mjs +4 -4
- package/esm2022/src/app/shared/services/translate-context.service.mjs +4 -4
- package/esm2022/src/app/shared/shared-routing.module.mjs +8 -8
- package/esm2022/src/app/shared/shared.module.mjs +5 -5
- package/esm2022/src/app/shared/shared.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +4 -4
- package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +5 -5
- package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +5 -5
- package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/storage/storage.service.mjs +4 -4
- package/esm2022/src/app/shared/testing/maskito.test.mjs +4 -4
- package/esm2022/src/app/shared/testing/observable.test.mjs +4 -4
- package/esm2022/src/app/shared/testing/tests.page.mjs +4 -4
- package/esm2022/src/app/shared/toast/toast.testing.mjs +4 -4
- package/esm2022/src/app/shared/toast/toast.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +4 -4
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +4 -4
- package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +5 -5
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +4 -4
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +5 -5
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +4 -4
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +4 -4
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +4 -4
- package/esm2022/src/app/social/job/job.module.mjs +5 -5
- package/esm2022/src/app/social/job/progression/job-progression.component.mjs +4 -4
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +4 -4
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +4 -4
- package/esm2022/src/app/social/job/progression/job-progression.service.mjs +4 -4
- package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +4 -4
- package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +4 -4
- package/esm2022/src/app/social/job/testing/job.testing.module.mjs +5 -5
- package/esm2022/src/app/social/message/message.form.mjs +4 -4
- package/esm2022/src/app/social/message/message.modal.mjs +4 -4
- package/esm2022/src/app/social/message/message.module.mjs +5 -5
- package/esm2022/src/app/social/message/message.service.mjs +4 -4
- package/esm2022/src/app/social/social.module.mjs +5 -5
- package/esm2022/src/app/social/social.testing.module.mjs +5 -5
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +4 -4
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +4 -4
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +4 -4
- package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +5 -5
- package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +4 -4
- package/esm2022/src/app/social/user-event/user-event.module.mjs +5 -5
- package/esm2022/src/app/social/user-event/user-event.service.mjs +4 -4
- package/esm2022/src/environments/environment.loader.mjs +4 -4
- package/fesm2022/sumaris-net.ngx-components.mjs +1022 -1022
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +10 -11
- package/src/assets/manifest.json +1 -1
|
@@ -61,14 +61,14 @@ export class AuthGuardService {
|
|
|
61
61
|
modal.present();
|
|
62
62
|
}));
|
|
63
63
|
}
|
|
64
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
65
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
64
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AuthGuardService, deps: [{ token: i1.AccountService }, { token: i2.ModalController }, { token: i3.Router }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
65
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AuthGuardService, providedIn: 'root' });
|
|
66
66
|
}
|
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: AuthGuardService, decorators: [{
|
|
68
68
|
type: Injectable,
|
|
69
69
|
args: [{ providedIn: 'root' }]
|
|
70
70
|
}], ctorParameters: () => [{ type: i1.AccountService }, { type: i2.ModalController }, { type: i3.Router }, { type: undefined, decorators: [{
|
|
71
71
|
type: Inject,
|
|
72
72
|
args: [ENVIRONMENT]
|
|
73
73
|
}] }] });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2VzL2F1dGgtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUtuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUdsRCxNQUFNLE9BQU8sZ0JBQWdCO0lBSWpCO0lBQ0E7SUFDQTtJQUN1QjtJQU5oQixNQUFNLENBQVU7SUFFakMsWUFDVSxjQUE4QixFQUM5QixTQUEwQixFQUMxQixNQUFjLEVBQ1MsV0FBVztRQUhsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNTLGdCQUFXLEdBQVgsV0FBVyxDQUFBO1FBRTFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBNEIsRUFBRSxLQUEwQjtRQUNsRSw2Q0FBNkM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsT0FBTyxDQUNMLElBQUksQ0FBQyxjQUFjO2lCQUNoQixLQUFLLEVBQUU7Z0JBQ1IsVUFBVTtpQkFDVCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUErQixDQUFDLENBQzNFLENBQUM7UUFDSixDQUFDO1FBRUQsY0FBYztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkcsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNuQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ1QsSUFBSSxJQUFJLENBQUMsTUFBTTt3QkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLDhEQUE4RCxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3BILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZDLENBQUM7Z0JBQ0QsVUFBVTtnQkFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBK0IsQ0FBQztZQUNyRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUYsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLDhCQUE4QixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckksT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLElBQTZCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3RGLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixJQUFJLE9BQU8sQ0FBVSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQy9CLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUM3QixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNkLE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7WUFDSCxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNKLENBQUM7d0dBM0RVLGdCQUFnQixxR0FPakIsV0FBVzs0R0FQVixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBUTdCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4vYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7IEVOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50LmNsYXNzJztcbmltcG9ydCB7IEFwcEF1dGhNb2RhbCB9IGZyb20gJy4uL2F1dGgvYXV0aC5tb2RhbCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXV0aEd1YXJkU2VydmljZSBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVidWc6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtb2RhbEN0cmw6IE1vZGFsQ29udHJvbGxlcixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudFxuICApIHtcbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgY2FuQWN0aXZhdGUobmV4dDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgLy8gSWYgYWNjb3VudCBub3Qgc3RhcnRlZDogbG9vcCBhZnRlciBzdGFydGVkXG4gICAgaWYgKCF0aGlzLmFjY291bnRTZXJ2aWNlLnN0YXJ0ZWQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuYWNjb3VudFNlcnZpY2VcbiAgICAgICAgICAucmVhZHkoKVxuICAgICAgICAgIC8vIEl0ZXJhdGVcbiAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLmNhbkFjdGl2YXRlKG5leHQsIHN0YXRlKSBhcyBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPilcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgbG9naW5cbiAgICBpZiAoIXRoaXMuYWNjb3VudFNlcnZpY2UuaXNMb2dpbigpKSB7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thdXRoLWd1YXJkXSBOZWVkIGF1dGhlbnRpY2F0aW9uIGZvciBwYWdlIC8nICsgbmV4dC51cmwuam9pbignLycpKTtcbiAgICAgIHJldHVybiB0aGlzLmxvZ2luKG5leHQpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBpZiAoIXJlcykge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2F1dGgtZ3VhcmRdIEF1dGhlbnRpY2F0aW9uIGNhbmNlbGxlZC4gQ291bGQgbm90IGFjY2VzcyB0byAvJyArIG5leHQudXJsLmpvaW4oJy8nKSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyLnBhcnNlVXJsKCcvaG9tZScpO1xuICAgICAgICB9XG4gICAgICAgIC8vIEl0ZXJhdGVcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FuQWN0aXZhdGUobmV4dCwgc3RhdGUpIGFzIFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG5leHQuZGF0YSAmJiBuZXh0LmRhdGEucHJvZmlsZSAmJiAhdGhpcy5hY2NvdW50U2VydmljZS5oYXNNaW5Qcm9maWxlKG5leHQuZGF0YS5wcm9maWxlKSkge1xuICAgICAgaWYgKHRoaXMuX2RlYnVnKVxuICAgICAgICBjb25zb2xlLmRlYnVnKCdbYXV0aC1ndWFyZF0gTm90IGF1dGhvcml6ZWQgYWNjZXNzIHRvIC8nICsgbmV4dC51cmwuam9pbignLycpICsgJy4gTWlzc2luZyByZXF1aXJlZCBwcm9maWxlOiAnICsgbmV4dC5kYXRhLnByb2ZpbGUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1thdXRoLWd1YXJkXSBBdXRob3JpemVkIGFjY2VzcyB0byAvJyArIG5leHQudXJsLmpvaW4oJy8nKSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBsb2dpbihuZXh0PzogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLm1vZGFsQ3RybC5jcmVhdGUoeyBjb21wb25lbnQ6IEFwcEF1dGhNb2RhbCwgY29tcG9uZW50UHJvcHM6IHsgbmV4dCB9IH0pLnRoZW4oXG4gICAgICAobW9kYWwpID0+XG4gICAgICAgIG5ldyBQcm9taXNlPGJvb2xlYW4+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgbW9kYWwub25EaWREaXNtaXNzKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5hY2NvdW50U2VydmljZS5pc0xvZ2luKCkpIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgbW9kYWwucHJlc2VudCgpO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -464,10 +464,10 @@ export class BaseEntityService extends BaseGraphqlService {
|
|
|
464
464
|
getLoadQueryNames() {
|
|
465
465
|
return ['LoadAll', 'LoadAllWithTotal'];
|
|
466
466
|
}
|
|
467
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
468
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.
|
|
467
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: BaseEntityService, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
468
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: BaseEntityService, usesInheritance: true, ngImport: i0 });
|
|
469
469
|
}
|
|
470
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
470
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: BaseEntityService, decorators: [{
|
|
471
471
|
type: Directive
|
|
472
472
|
}], ctorParameters: () => [{ type: i1.GraphqlService }, { type: i2.PlatformService }, { type: undefined }, { type: undefined }, { type: undefined }] });
|
|
473
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbnRpdHktc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9iYXNlLWVudGl0eS1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFLdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFXbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLE9BQU8sRUFBaUMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFnQixpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBd0R2RSxXQUFXO0FBRVgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBZ0IsaUJBVXBCLFNBQVEsa0JBQTRCO0lBaUJ4QjtJQUNBO0lBQ0E7SUFDQTtJQWpCTyxTQUFTLENBQVM7SUFDbEIsWUFBWSxDQUFTO0lBRXJCLE9BQU8sQ0FBSTtJQUNYLFNBQVMsQ0FBYTtJQUN0QixhQUFhLENBQWE7SUFDMUIsU0FBUyxDQUE0QjtJQUNyQyxRQUFRLENBQW9CO0lBRTVCLGFBQWEsQ0FBVTtJQUN2QixvQkFBb0IsQ0FBZ0I7SUFDcEMsd0JBQXdCLENB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QixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRVMscUJBQXFCLENBQUMsTUFBUztRQUN2QyxrQ0FBa0M7SUFDcEMsQ0FBQztJQUVTLFFBQVEsQ0FBQyxNQUFTLEVBQUUsSUFBNEI7UUFDeEQsa0NBQWtDO1FBQ2xDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRVMsNEJBQTRCLENBQ3BDLElBQXdCO1FBRXhCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRTVELGlEQUFpRDtRQUNqRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsS0FBSyxpQkFBaUI7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUUxRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQUUsT0FBTyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0I7UUFFdkQsc0NBQXNDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsY0FBYztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRVMsaUJBQWlCO1FBQ3pCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN6QyxDQUFDO3VHQTNoQm1CLGlCQUFpQjsyRkFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUZ0QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVycm9yQ29kZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCB7IEZldGNoUG9saWN5LCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSwgTXV0YXRpb25VcGRhdGVyRm4gfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcblxuaW1wb3J0IHsgQmFzZUdyYXBocWxTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWdyYXBocWwtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge1xuICBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucyxcbiAgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLFxuICBFbnRpdHlTZXJ2aWNlTGlzdGVuQ2hhbmdlc09wdGlvbnMsXG4gIElFbnRpdGllc1NlcnZpY2UsXG4gIElFbnRpdHlTZXJ2aWNlLFxuICBMb2FkUmVzdWx0LFxufSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgR3JhcGhxbFNlcnZpY2UgfSBmcm9tICcuLi9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlBc09iamVjdE9wdGlvbnMsIEVudGl0eVV0aWxzIH0gZnJvbSAnLi9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgY2hhaW5Qcm9taXNlcyB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBpc0VtcHR5QXJyYXksIGlzTmlsLCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCByZW1vdmVFbmQsIHRvTnVtYmVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZldGNoUmVzdWx0IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvbGluay9jb3JlJztcbmltcG9ydCB7IEVudGl0eUZpbHRlciwgRW50aXR5RmlsdGVyVXRpbHMgfSBmcm9tICcuL21vZGVsL2ZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBEb2N1bWVudE5vZGUgfSBmcm9tICdncmFwaHFsJztcblxuZXhwb3J0IHR5cGUgTXV0YWJsZVdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9ICd1cGRhdGUtY2FjaGUnIHwgJ3JlZmV0Y2gtcXVlcmllcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVudGl0eUdyYXBocWxRdWVyaWVzIHtcbiAgbG9hZD86IGFueTtcbiAgbG9hZEFsbDogYW55O1xuICBsb2FkQWxsV2l0aFRvdGFsPzogYW55O1xuICBjb3VudEFsbD86IGFueTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMge1xuICBzYXZlPzogYW55O1xuICBkZWxldGU/OiBhbnk7XG4gIHNhdmVBbGw/OiBhbnk7XG4gIGRlbGV0ZUFsbD86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRW50aXR5R3JhcGhxbFN1YnNjcmlwdGlvbnMge1xuICBsaXN0ZW5DaGFuZ2VzPzogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBCYXNlRW50aXR5U2VydmljZU9wdGlvbnM8XG4gIFQgZXh0ZW5kcyBFbnRpdHk8YW55LCBJRD4sXG4gIElEID0gbnVtYmVyLFxuICBRIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxRdWVyaWVzID0gQmFzZUVudGl0eUdyYXBocWxRdWVyaWVzLFxuICBNIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMgPSBCYXNlRW50aXR5R3JhcGhxbE11dGF0aW9ucyxcbiAgUyBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsU3Vic2NyaXB0aW9ucyA9IEJhc2VFbnRpdHlHcmFwaHFsU3Vic2NyaXB0aW9ucyxcbj4ge1xuICBxdWVyaWVzOiBRO1xuICBtdXRhdGlvbnM/OiBQYXJ0aWFsPE0+O1xuICBzdWJzY3JpcHRpb25zPzogUGFydGlhbDxTPjtcblxuICBlcXVhbHM/OiAoZTE6IFQsIGUyOiBUKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgJ2VxdWFscycgaW5zdGVhZFxuICAgKi9cbiAgZXF1YWxzRm4/OiAoZTE6IFQsIGUyOiBUKSA9PiBib29sZWFuO1xuXG4gIGlzTmV3PzogKGU6IFQpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSAnaXNOZXcnIGluc3RlYWRcbiAgICovXG4gIGlzTmV3Rm4/OiAoZTogVCkgPT4gYm9vbGVhbjtcbiAgZGVmYXVsdFNvcnRCeT86IGtleW9mIFQ7XG4gIGRlZmF1bHRTb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbjtcbiAgd2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5PzogTXV0YWJsZVdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlTYXZlT3B0aW9ucyB7XG4gIHJlZmV0Y2hRdWVyaWVzPzogKChyZXN1bHQ6IEZldGNoUmVzdWx0PHsgZGF0YTogYW55IH0+KSA9PiBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSkgfCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZTtcbiAgYXdhaXRSZWZldGNoUXVlcmllcz86IGJvb2xlYW47XG4gIHVwZGF0ZT86IE11dGF0aW9uVXBkYXRlckZuPHsgZGF0YTogYW55IH0+O1xufVxuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRW50aXR5U2VydmljZTxcbiAgICBUIGV4dGVuZHMgRW50aXR5PFQsIElEPixcbiAgICBGIGV4dGVuZHMgRW50aXR5RmlsdGVyPEYsIFQsIElEPixcbiAgICBJRCA9IG51bWJlcixcbiAgICBXTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgICBMTyBleHRlbmRzIEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zID0gRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMsXG4gICAgUSBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyA9IEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyxcbiAgICBNIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMgPSBCYXNlRW50aXR5R3JhcGhxbE11dGF0aW9ucyxcbiAgICBTIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxTdWJzY3JpcHRpb25zID0gQmFzZUVudGl0eUdyYXBocWxTdWJzY3JpcHRpb25zLFxuICA+XG4gIGV4dGVuZHMgQmFzZUdyYXBocWxTZXJ2aWNlPFQsIEYsIElEPlxuICBpbXBsZW1lbnRzIElFbnRpdGllc1NlcnZpY2U8VCwgRiwgV08+LCBJRW50aXR5U2VydmljZTxULCBJRCwgTE8+XG57XG4gIHByb3RlY3RlZCByZWFkb25seSBfdHlwZW5hbWU6IHN0cmluZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9sb2dUeXBlTmFtZTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyaWVzOiBRO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbXV0YXRpb25zOiBQYXJ0aWFsPE0+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogUGFydGlhbDxTPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9lcXVhbHNGbjogKGUxOiBULCBlMjogVCkgPT4gYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pc05ld0ZuOiAoZTogVCkgPT4gYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFNvcnRCeToga2V5b2YgVDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRTb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5OiBNdXRhYmxlV2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGRhdGFUeXBlOiBuZXcgKCkgPT4gVCxcbiAgICBwcm90ZWN0ZWQgZmlsdGVyVHlwZTogbmV3ICgpID0+IEYsXG4gICAgb3B0aW9uczogQmFzZUVudGl0eVNlcnZpY2VPcHRpb25zPFQsIElELCBRLCBNLCBTPlxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBlbnZpcm9ubWVudCk7XG4gICAgdGhpcy5xdWVyaWVzID0gb3B0aW9ucy5xdWVyaWVzO1xuICAgIHRoaXMubXV0YXRpb25zID0gb3B0aW9ucy5tdXRhdGlvbnMgfHwgPFBhcnRpYWw8TT4+e307XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gb3B0aW9ucy5zdWJzY3JpcHRpb25zIHx8IDxQYXJ0aWFsPFM+Pnt9O1xuICAgIHRoaXMuX2VxdWFsc0ZuID0gb3B0aW9ucy5lcXVhbHMgfHwgb3B0aW9ucy5lcXVhbHNGbjtcbiAgICB0aGlzLl9pc05ld0ZuID0gb3B0aW9ucy5pc05ldyB8fCBvcHRpb25zLmlzTmV3Rm47XG4gICAgdGhpcy5kZWZhdWx0U29ydEJ5ID0gb3B0aW9ucy5kZWZhdWx0U29ydEJ5IHx8ICdpZCc7XG4gICAgdGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbiA9IG9wdGlvbnMuZGVmYXVsdFNvcnREaXJlY3Rpb24gfHwgJ2FzYyc7XG4gICAgdGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPSBvcHRpb25zLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSB8fCAndXBkYXRlLWNhY2hlJztcblxuICAgIGNvbnN0IG9iaiA9IG5ldyBkYXRhVHlwZSgpO1xuICAgIHRoaXMuX3R5cGVuYW1lID0gb2JqLl9fdHlwZW5hbWUgfHwgJ1Vua25vd25WTyc7XG4gICAgdGhpcy5fbG9nVHlwZU5hbWUgPSByZW1vdmVFbmQodGhpcy5fdHlwZW5hbWUsICdWTycpO1xuXG4gICAgLy8gRm9yIERFViBvbmx5XG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIHdhdGNoKGlkOiBudW1iZXIsIG9wdHM/OiBXTyk6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgV2F0Y2hpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fS4uLmApO1xuXG4gICAgY29uc3QgdmFyaWFibGVzOiBhbnkgPSBvcHRzPy52YXJpYWJsZXMgfHwgeyBpZCB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSAob3B0cyAmJiBvcHRzLnF1ZXJ5KSB8fCB0aGlzLnF1ZXJpZXMubG9hZDtcbiAgICByZXR1cm4gdGhpcy5ncmFwaHFsXG4gICAgICAud2F0Y2hRdWVyeTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICB2YXJpYWJsZXMsXG4gICAgICAgIGZldGNoUG9saWN5OiAob3B0cyAmJiAob3B0cy5mZXRjaFBvbGljeSBhcyBGZXRjaFBvbGljeSkpIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZXJyb3I6IHsgY29kZTogRXJyb3JDb2Rlcy5MT0FEX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdSRUZFUkVOVElBTC5FUlJPUi5MT0FEX0RBVEFfRVJST1InIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gKCFvcHRzIHx8IG9wdHMudG9FbnRpdHkgIT09IGZhbHNlID8gZGF0YSAmJiB0aGlzLmZyb21PYmplY3QoZGF0YSkgOiAoZGF0YSBhcyBUKSkpKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoaWQ6IElELCBvcHRzPzogTE8pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYExvYWRpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fS4uLmApO1xuXG4gICAgY29uc3QgdmFyaWFibGVzOiBhbnkgPSBvcHRzPy52YXJpYWJsZXMgfHwgeyBpZCB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSBvcHRzPy5xdWVyeSB8fCB0aGlzLnF1ZXJpZXMubG9hZDtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIGZldGNoUG9saWN5OiAob3B0cyAmJiAob3B0cy5mZXRjaFBvbGljeSBhcyBGZXRjaFBvbGljeSkpIHx8IHVuZGVmaW5lZCxcbiAgICAgIGVycm9yOiB7IGNvZGU6IEVycm9yQ29kZXMuTE9BRF9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnUkVGRVJFTlRJQUwuRVJST1IuTE9BRF9EQVRBX0VSUk9SJyB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ29udmVydCB0byBlbnRpdHlcbiAgICByZXR1cm4gIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UgPyBkYXRhICYmIHRoaXMuZnJvbU9iamVjdChkYXRhKSA6IChkYXRhIGFzIFQpO1xuICB9XG5cbiAgd2F0Y2hBbGwob2Zmc2V0OiBudW1iZXIsIHNpemU6IG51bWJlciwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbiwgZGF0YUZpbHRlcj86IEYsIG9wdHM/OiBXTyk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxUPj4ge1xuICAgIGRhdGFGaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGRhdGFGaWx0ZXIpO1xuXG4gICAgY29uc3QgdmFyaWFibGVzOiBhbnkgPSB7XG4gICAgICAuLi4ob3B0cz8udmFyaWFibGVzIHx8IHt9KSxcbiAgICAgIG9mZnNldDogb2Zmc2V0IHx8IDAsXG4gICAgICBzaXplOiBzaXplIHx8IDEwMCxcbiAgICAgIHNvcnRCeTogc29ydEJ5IHx8IHRoaXMuZGVmYXVsdFNvcnRCeSxcbiAgICAgIHNvcnREaXJlY3Rpb246IHNvcnREaXJlY3Rpb24gfHwgdGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbixcbiAgICAgIGZpbHRlcjogZGF0YUZpbHRlciAmJiBkYXRhRmlsdGVyLmFzUG9kT2JqZWN0KCksXG4gICAgfTtcblxuICAgIGxldCBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgV2F0Y2hpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0uLi5gLCB2YXJpYWJsZXMpO1xuXG4gICAgY29uc3Qgd2l0aFRvdGFsID0gKCFvcHRzIHx8IG9wdHMud2l0aFRvdGFsICE9PSBmYWxzZSkgJiYgdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwgJiYgdHJ1ZTtcbiAgICBjb25zdCBxdWVyeSA9XG4gICAgICAob3B0cyAmJiBvcHRzLnF1ZXJ5KSB8fCAvLyB1c2UgZ2l2ZW4gcXVlcnlcbiAgICAgIC8vIE9yIGdldCBsb2FkQWxsIG9yIGxvYWRBbGxXaXRoVG90YWwgcXVlcnlcbiAgICAgICh3aXRoVG90YWwgPyB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhUb3RhbCA6IHRoaXMucXVlcmllcy5sb2FkQWxsKTtcbiAgICByZXR1cm4gdGhpcy5tdXRhYmxlV2F0Y2hRdWVyeTxMb2FkUmVzdWx0PGFueT4+KHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgLy8gRm9yY2UgY2FjaGVkIG11dGFibGUgcXVlcnlcbiAgICAgIHF1ZXJ5TmFtZTogd2l0aFRvdGFsID8gJ0xvYWRBbGxXaXRoVG90YWwnIDogJ0xvYWRBbGwnLFxuICAgICAgYXJyYXlGaWVsZE5hbWU6ICdkYXRhJyxcbiAgICAgIHRvdGFsRmllbGROYW1lOiB3aXRoVG90YWwgPyAndG90YWwnIDogdW5kZWZpbmVkLFxuICAgICAgaW5zZXJ0RmlsdGVyRm46IGRhdGFGaWx0ZXIgJiYgZGF0YUZpbHRlci5hc0ZpbHRlckZuKCksXG4gICAgICBlcnJvcjogeyBjb2RlOiBFcnJvckNvZGVzLkxPQURfREFUQV9FUlJPUiwgbWVzc2FnZTogJ1JFRkVSRU5USUFMLkVSUk9SLkxPQURfREFUQV9FUlJPUicgfSxcbiAgICAgIGZldGNoUG9saWN5OiAob3B0cyAmJiBvcHRzLmZldGNoUG9saWN5KSB8fCB1bmRlZmluZWQsXG4gICAgfSkucGlwZShcbiAgICAgIG1hcCgoeyBkYXRhLCB0b3RhbCB9KSA9PiB7XG4gICAgICAgIC8vIENvbnZlcnQgdG8gZW50aXR5IChpZiBuZWVkKVxuICAgICAgICBjb25zdCBlbnRpdGllcyA9ICFvcHRzIHx8IG9wdHMudG9FbnRpdHkgIT09IGZhbHNlID8gKGRhdGEgfHwgW10pLm1hcCgoanNvbikgPT4gdGhpcy5mcm9tT2JqZWN0KGpzb24pKSA6ICgoZGF0YSB8fCBbXSkgYXMgVFtdKTtcblxuICAgICAgICBpZiAobm93KSB7XG4gICAgICAgICAgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgJHt0aGlzLl9sb2dUeXBlTmFtZX0gbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGVudGl0aWVzKTtcbiAgICAgICAgICBub3cgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGRhdGE6IGVudGl0aWVzLCB0b3RhbCB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZEFsbChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBzaXplOiBudW1iZXIsXG4gICAgc29ydEJ5Pzoga2V5b2YgVCB8IHN0cmluZyxcbiAgICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbixcbiAgICBmaWx0ZXI/OiBQYXJ0aWFsPEY+LFxuICAgIG9wdHM/OiBMTyAmIHtcbiAgICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICB9XG4gICk6IFByb21pc2U8TG9hZFJlc3VsdDxUPj4ge1xuICAgIGNvbnN0IGRlYnVnID0gdGhpcy5fZGVidWcgJiYgKCFvcHRzIHx8IG9wdHMuZGVidWcgIT09IGZhbHNlKTtcblxuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlczogYW55ID0ge1xuICAgICAgLi4uKG9wdHM/LnZhcmlhYmxlcyB8fCB7fSksXG4gICAgICBvZmZzZXQ6IG9mZnNldCB8fCAwLFxuICAgICAgc2l6ZTogc2l6ZSB8fCAxMDAsXG4gICAgICBzb3J0Qnk6IHNvcnRCeSB8fCAnaWQnLFxuICAgICAgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiB8fCAnYXNjJyxcbiAgICAgIGZpbHRlcjogZmlsdGVyICYmIGZpbHRlci5hc1BvZE9iamVjdCgpLFxuICAgIH07XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmIChkZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgTG9hZGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfS4uLmAsIHZhcmlhYmxlcyk7XG5cbiAgICBjb25zdCB3aXRoVG90YWwgPSAoIW9wdHMgfHwgb3B0cy53aXRoVG90YWwgIT09IGZhbHNlKSAmJiB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhUb3RhbCAmJiB0cnVlO1xuICAgIC8vIHVzZSBnaXZlbiBxdWVyeVxuICAgIGNvbnN0IHF1ZXJ5ID1cbiAgICAgIG9wdHM/LnF1ZXJ5IHx8XG4gICAgICAvLyBPciBnZXQgbG9hZEFsbCBvciBsb2FkQWxsV2l0aFRvdGFsIHF1ZXJ5XG4gICAgICAod2l0aFRvdGFsID8gdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCk7XG4gICAgY29uc3QgeyBkYXRhLCB0b3RhbCB9ID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PExvYWRSZXN1bHQ8YW55Pj4oe1xuICAgICAgcXVlcnksXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjogeyBjb2RlOiBFcnJvckNvZGVzLkxPQURfREFUQV9FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkxPQURfREFUQV9FUlJPUicgfSxcbiAgICAgIGZldGNoUG9saWN5OiAob3B0cyAmJiBvcHRzLmZldGNoUG9saWN5KSB8fCAnbmV0d29yay1vbmx5JyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVudGl0aWVzID0gIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UgPyAoZGF0YSB8fCBbXSkubWFwKChqc29uKSA9PiB0aGlzLmZyb21PYmplY3QoanNvbikpIDogKChkYXRhIHx8IFtdKSBhcyBUW10pO1xuICAgIGlmIChkZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgJHt0aGlzLl9sb2dUeXBlTmFtZX0gaXRlbXMgbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuXG4gICAgY29uc3QgcmVzdWx0OiBMb2FkUmVzdWx0PFQ+ID0ge1xuICAgICAgZGF0YTogZW50aXRpZXMsXG4gICAgICB0b3RhbDogdG90YWwgfHwgZW50aXRpZXMubGVuZ3RoLFxuICAgIH07XG5cbiAgICAvLyBBZGQgZmV0Y2ggbW9yZSBjYXBhYmlsaXR5LCBpZiB0b3RhbCB3YXMgZmV0Y2hlZFxuICAgIGlmICh3aXRoVG90YWwpIHtcbiAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSAob2Zmc2V0IHx8IDApICsgZW50aXRpZXMubGVuZ3RoO1xuICAgICAgaWYgKG5leHRPZmZzZXQgPCByZXN1bHQudG90YWwpIHtcbiAgICAgICAgcmVzdWx0LmZldGNoTW9yZSA9ICgpID0+IHRoaXMubG9hZEFsbChuZXh0T2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIGZpbHRlciwgb3B0cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIGNvdW50QWxsKGZpbHRlcj86IFBhcnRpYWw8Rj4sIG9wdHM/OiBMTykge1xuICAgIC8vIElmIG5vIGNvdW50QWxsIHF1ZXJ5XG4gICAgaWYgKCF0aGlzLnF1ZXJpZXMuY291bnRBbGwgJiYgIW9wdHM/LnF1ZXJ5KSB7XG4gICAgICAvLyBGYWlsIGlmIG5vIGxvYWRBbGwgKGNhbm5vdCBjb3VudClcbiAgICAgIGlmICghdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwpIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG5cbiAgICAgIC8vIFVzZSBsb2FkQWxsIHF1ZXJ5LCB3aXRoIHNpemUgPSAwO1xuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxvYWRBbGwoMCwgMSwgbnVsbCwgbnVsbCwgZmlsdGVyLCA8TE8gJiB7IHdpdGhUb3RhbDogYm9vbGVhbiB9Pnsgd2l0aFRvdGFsOiB0cnVlIH0pKT8udG90YWwgfHwgMDtcbiAgICB9XG5cbiAgICBmaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGZpbHRlcik7XG5cbiAgICBjb25zdCB2YXJpYWJsZXM6IGFueSA9IHtcbiAgICAgIC4uLihvcHRzPy52YXJpYWJsZXMgfHwge30pLFxuICAgICAgZmlsdGVyOiBmaWx0ZXIgJiYgZmlsdGVyLmFzUG9kT2JqZWN0KCksXG4gICAgfTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gb3B0cz8ucXVlcnkgfHwgdGhpcy5xdWVyaWVzLmNvdW50QWxsO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IHRvdGFsOiBudW1iZXIgfT4oe1xuICAgICAgcXVlcnksXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjogeyBjb2RlOiBFcnJvckNvZGVzLkxPQURfREFUQV9FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkNPVU5UX0RBVEFfRVJST1InIH0sXG4gICAgICBmZXRjaFBvbGljeTogKG9wdHMgJiYgb3B0cy5mZXRjaFBvbGljeSkgfHwgJ25ldHdvcmstb25seScsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcy50b3RhbDtcbiAgfVxuXG4gIGNhblVzZXJXcml0ZShkYXRhOiBULCBvcHRzPzogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZGF0YTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVBbGwoZW50aXRpZXM6IFRbXSwgb3B0cz86IEVudGl0eVNhdmVPcHRpb25zKTogUHJvbWlzZTxUW10+IHtcbiAgICBpZiAoaXNFbXB0eUFycmF5KGVudGl0aWVzKSkgcmV0dXJuIGVudGl0aWVzOyAvLyBOb3RoaW5nIHRvIHNhdmU6IHNraXBcblxuICAgIGlmICghdGhpcy5tdXRhdGlvbnMuc2F2ZUFsbCkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucy5zYXZlKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgICAgLy8gU2F2ZSBvbmUgYnkgb25lXG4gICAgICByZXR1cm4gY2hhaW5Qcm9taXNlcygoZW50aXRpZXMgfHwgW10pLm1hcCgoZW50aXR5KSA9PiAoKSA9PiB0aGlzLnNhdmUoZW50aXR5LCBvcHRzKSkpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0VudGl0aWVzOiBUW10gPSBbXTtcbiAgICBjb25zdCBqc29uID0gZW50aXRpZXMubWFwKChlbnRpdHkpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzTmV3KGVudGl0eSkpIG5ld0VudGl0aWVzLnB1c2goZW50aXR5KTtcbiAgICAgIHRoaXMuZmlsbERlZmF1bHRQcm9wZXJ0aWVzKGVudGl0eSk7XG4gICAgICByZXR1cm4gdGhpcy5hc09iamVjdChlbnRpdHkpO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFNhdmluZyBhbGwgJHt0aGlzLl9sb2dUeXBlTmFtZX0uLi5gLCBqc29uKTtcblxuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8TG9hZFJlc3VsdDxhbnk+Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuc2F2ZUFsbCxcbiAgICAgIHJlZmV0Y2hRdWVyaWVzOiB0aGlzLmdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24ob3B0cyksXG4gICAgICBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBvcHRzICYmIG9wdHMuYXdhaXRSZWZldGNoUXVlcmllcyxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBkYXRhOiBqc29uLFxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IEVycm9yQ29kZXMuU0FWRV9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuU0FWRV9EQVRBX0VSUk9SJyB9LFxuICAgICAgdXBkYXRlOiAoY2FjaGUsIHsgZGF0YSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHNhdmVkRW50aXRpZXMgPSBkYXRhICYmIGRhdGEuZGF0YTtcbiAgICAgICAgaWYgKHNhdmVkRW50aXRpZXMpIHtcbiAgICAgICAgICAvLyBVcGRhdGUgZW50aXRpZXMgKGlkIGFuZCB1cGRhdGUgZGF0ZSlcbiAgICAgICAgICBlbnRpdGllcy5mb3JFYWNoKChlbnRpdHkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNhdmVkRW50aXR5ID0gc2F2ZWRFbnRpdGllcy5maW5kKChlKSA9PiB0aGlzLmVxdWFscyhlbnRpdHksIGUpKTtcbiAgICAgICAgICAgIHRoaXMuY29weUlkQW5kVXBkYXRlRGF0ZShzYXZlZEVudGl0eSwgZW50aXR5KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGUsIHdpdGggbmV3IGVudGl0aWVzXG4gICAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShuZXdFbnRpdGllcykgJiYgdGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhjYWNoZSwge1xuICAgICAgICAgICAgICBxdWVyaWVzOiB0aGlzLmdldExvYWRRdWVyaWVzKCksXG4gICAgICAgICAgICAgIGRhdGE6IG5ld0VudGl0aWVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy51cGRhdGUpIHtcbiAgICAgICAgICBvcHRzLnVwZGF0ZShjYWNoZSwgeyBkYXRhIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1R5cGVOYW1lfSBzYXZlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgLCBlbnRpdGllcyk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVudGl0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgYSByZWZlcmVudGlhbCBlbnRpdHlcbiAgICpcbiAgICogQHBhcmFtIGVudGl0eVxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgc2F2ZShlbnRpdHk6IFQsIG9wdHM/OiBFbnRpdHlTYXZlT3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIGlmICghdGhpcy5tdXRhdGlvbnMuc2F2ZSkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucy5zYXZlQWxsKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuc2F2ZUFsbChbZW50aXR5XSwgb3B0cyk7XG4gICAgICByZXR1cm4gZGF0YSAmJiBkYXRhWzBdO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmV3RW50aXR5ID0gdGhpcy5pc05ldyhlbnRpdHkpO1xuXG4gICAgLy8gRmlsbCBkZWZhdWx0IHByb3BlcnRpZXNcbiAgICB0aGlzLmZpbGxEZWZhdWx0UHJvcGVydGllcyhlbnRpdHkpO1xuXG4gICAgLy8gVHJhbnNmb3JtIGludG8ganNvblxuICAgIGNvbnN0IGpzb24gPSB0aGlzLmFzT2JqZWN0KGVudGl0eSk7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgU2F2aW5nICR7dGhpcy5fbG9nVHlwZU5hbWV9Li4uYCwganNvbik7XG5cbiAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPHsgZGF0YTogYW55IH0+KHtcbiAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5zYXZlLFxuICAgICAgcmVmZXRjaFF1ZXJpZXM6IHRoaXMuZ2V0UmVmZXRjaFF1ZXJpZXNGb3JNdXRhdGlvbihvcHRzKSxcbiAgICAgIGF3YWl0UmVmZXRjaFF1ZXJpZXM6IG9wdHMgJiYgb3B0cy5hd2FpdFJlZmV0Y2hRdWVyaWVzLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGRhdGE6IGpzb24sXG4gICAgICB9LFxuICAgICAgZXJyb3I6IHsgY29kZTogRXJyb3JDb2Rlcy5TQVZFX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5TQVZFX0RBVEFfRVJST1InIH0sXG4gICAgICB1cGRhdGU6IChjYWNoZSwgeyBkYXRhIH0pID0+IHtcbiAgICAgICAgLy8gVXBkYXRlIGVudGl0eVxuICAgICAgICBjb25zdCBzYXZlZEVudGl0eSA9IGRhdGEgJiYgZGF0YS5kYXRhO1xuICAgICAgICB0aGlzLmNvcHlJZEFuZFVwZGF0ZURhdGUoc2F2ZWRFbnRpdHksIGVudGl0eSk7XG5cbiAgICAgICAgLy8gSW5zZXJ0IGludG8gdGhlIGNhY2hlXG4gICAgICAgIGlmIChpc05ld0VudGl0eSAmJiB0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9PT0gJ3VwZGF0ZS1jYWNoZScpIHtcbiAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhjYWNoZSwge1xuICAgICAgICAgICAgcXVlcmllczogdGhpcy5nZXRMb2FkUXVlcmllcygpLFxuICAgICAgICAgICAgZGF0YTogc2F2ZWRFbnRpdHksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cyAmJiBvcHRzLnVwZGF0ZSkge1xuICAgICAgICAgIG9wdHMudXBkYXRlKGNhY2hlLCB7IGRhdGEgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7ZW50aXR5Ll9fdHlwZW5hbWV9IHNhdmVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGVudGl0eSk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgcmVmZXJlbnRpYWwgZW50aXRpZXNcbiAgICovXG4gIGFzeW5jIGRlbGV0ZUFsbChcbiAgICBlbnRpdGllczogVFtdLFxuICAgIG9wdHM/OlxuICAgICAgfCBQYXJ0aWFsPHtcbiAgICAgICAgICB1cGRhdGU6IE11dGF0aW9uVXBkYXRlckZuPGFueT47XG4gICAgICAgIH0+XG4gICAgICB8IGFueVxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghdGhpcy5tdXRhdGlvbnMuZGVsZXRlQWxsKSB7XG4gICAgICBpZiAoIXRoaXMubXV0YXRpb25zLmRlbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgIC8vIERlbGV0ZSBvbmUgYnkgb25lXG4gICAgICByZXR1cm4gY2hhaW5Qcm9taXNlcygoZW50aXRpZXMgfHwgW10pLm1hcCgoZW50aXR5KSA9PiAoKSA9PiB0aGlzLmRlbGV0ZShlbnRpdHksIG9wdHMpKSk7XG4gICAgfVxuXG4gICAgLy8gRmlsdGVyIHNhdmVkIGVudGl0aWVzXG4gICAgZW50aXRpZXMgPSBlbnRpdGllcyAmJiBlbnRpdGllcy5maWx0ZXIoKGUpID0+IGlzTm90TmlsKGUuaWQpKTtcblxuICAgIC8vIE5vdGhpbmcgdG8gc2F2ZTogc2tpcFxuICAgIGlmIChpc0VtcHR5QXJyYXkoZW50aXRpZXMpKSByZXR1cm47XG5cbiAgICBjb25zdCBpZHMgPSBlbnRpdGllcy5tYXAoKHQpID0+IHQuaWQpO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBEZWxldGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfS4uLmAsIGlkcyk7XG5cbiAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPGFueT4oe1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLmRlbGV0ZUFsbCxcbiAgICAgIHJlZmV0Y2hRdWVyaWVzOiB0aGlzLmdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24ob3B0cyksXG4gICAgICBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBvcHRzICYmIG9wdHMuYXdhaXRSZWZldGNoUXVlcmllcyxcbiAgICAgIHZhcmlhYmxlczogeyBpZHMgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IEVycm9yQ29kZXMuREVMRVRFX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5ERUxFVEVfREFUQV9FUlJPUicgfSxcbiAgICAgIHVwZGF0ZTogKGNhY2hlLCByZXMpID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gY2FjaGVcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID09PSAndXBkYXRlLWNhY2hlJykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbU11dGFibGVDYWNoZWRRdWVyaWVzQnlJZHMoY2FjaGUsIHtcbiAgICAgICAgICAgIHF1ZXJpZXM6IHRoaXMuZ2V0TG9hZFF1ZXJpZXMoKSxcbiAgICAgICAgICAgIGlkcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUoY2FjaGUsIHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7dGhpcy5fbG9nVHlwZU5hbWV9IGRlbGV0ZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIHJlZmVyZW50aWFsIGVudGl0eVxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKGVudGl0eTogVCwgb3B0cz86IEVudGl0eVNhdmVPcHRpb25zIHwgYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMubXV0YXRpb25zLmRlbGV0ZSkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucy5kZWxldGVBbGwpIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5kZWxldGVBbGwoW2VudGl0eV0sIG9wdHMpO1xuICAgICAgcmV0dXJuIGRhdGEgJiYgZGF0YVswXTtcbiAgICB9XG5cbiAgICAvLyBOb3RoaW5nIHRvIHNhdmU6IHNraXBcbiAgICBpZiAoIWVudGl0eSB8fCBpc05pbChlbnRpdHkuaWQpKSByZXR1cm47XG5cbiAgICBjb25zdCBpZCA9IGVudGl0eS5pZDtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgRGVsZXRpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fS4uLmApO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTxhbnk+KHtcbiAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5kZWxldGUsXG4gICAgICByZWZldGNoUXVlcmllczogdGhpcy5nZXRSZWZldGNoUXVlcmllc0Zvck11dGF0aW9uKG9wdHMpLFxuICAgICAgYXdhaXRSZWZldGNoUXVlcmllczogb3B0cyAmJiBvcHRzLmF3YWl0UmVmZXRjaFF1ZXJpZXMsXG4gICAgICB2YXJpYWJsZXM6IHsgaWQgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IEVycm9yQ29kZXMuREVMRVRFX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5ERUxFVEVfREFUQV9FUlJPUicgfSxcbiAgICAgIHVwZGF0ZTogKHByb3h5LCByZXMpID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gY2FjaGVcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID09PSAndXBkYXRlLWNhY2hlJykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbU11dGFibGVDYWNoZWRRdWVyaWVzQnlJZHMocHJveHksIHtcbiAgICAgICAgICAgIHF1ZXJpZXM6IHRoaXMuZ2V0TG9hZFF1ZXJpZXMoKSxcbiAgICAgICAgICAgIGlkczogW2lkXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUocHJveHksIHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7dGhpcy5fbG9nVHlwZU5hbWV9IGRlbGV0ZWQgaW4gJHtuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIG5vdy5nZXRUaW1lKCl9bXNgKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBsaXN0ZW5DaGFuZ2VzKGlkOiBJRCwgb3B0cz86IEVudGl0eVNlcnZpY2VMaXN0ZW5DaGFuZ2VzT3B0aW9ucyk6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmIChpc05pbChpZCkpIHRocm93IEVycm9yKFwiTWlzc2luZyBhcmd1bWVudCAnaWQnIFwiKTtcbiAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9ucy5saXN0ZW5DaGFuZ2VzKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfS5saXN0ZW5DaGFuZ2VzKCkgbm90IGltcGxlbWVudGVkIHlldC4gV2lsbCBlbXB0eSBvYnNlcnZhYmxlYCk7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YXJpYWJsZXMgPSBvcHRzPy52YXJpYWJsZXMgfHwge1xuICAgICAgaWQsXG4gICAgICBpbnRlcnZhbDogdG9OdW1iZXIob3B0cyAmJiBvcHRzLmludGVydmFsLCAwKSwgLy8gbm8gdGltZXIgYnkgZGVmYXVsdFxuICAgIH07XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBbV1NdIExpc3RlbmluZyBmb3IgY2hhbmdlcyBvbiAke3RoaXMuX2xvZ1R5cGVOYW1lfSB7JHtpZH19Li4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5ncmFwaHFsXG4gICAgICAuc3Vic2NyaWJlPHsgZGF0YTogYW55IH0+KHtcbiAgICAgICAgcXVlcnk6IG9wdHM/LnF1ZXJ5IHx8IHRoaXMuc3Vic2NyaXB0aW9ucy5saXN0ZW5DaGFuZ2VzLFxuICAgICAgICBmZXRjaFBvbGljeTogb3B0cz8uZmV0Y2hQb2xpY3kgfHwgJ25vLWNhY2hlJyxcbiAgICAgICAgdmFyaWFibGVzLFxuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIGNvZGU6IEVycm9yQ29kZXMuU1VCU0NSSUJFX0RBVEFfRVJST1IsXG4gICAgICAgICAgbWVzc2FnZTogJ0VSUk9SLlNVQlNDUklCRV9EQVRBX0VSUk9SJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh7IGRhdGEgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVudGl0eSA9ICFvcHRzIHx8IG9wdHMudG9FbnRpdHkgIT09IGZhbHNlID8gZGF0YSAmJiB0aGlzLmZyb21PYmplY3QoZGF0YSkgOiBkYXRhO1xuICAgICAgICAgIC8vaWYgKGVudGl0eSAmJiB0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgW1dTXSBSZWNlaXZlZCBjaGFuZ2VzIG9uICR7dGhpcy5fbG9nVHlwZU5hbWV9IHske2lkfX1gLCBlbnRpdHkpO1xuXG4gICAgICAgICAgLy8gVE9ETzogbWlzc2luZyA9IGRlbGV0ZWQgP1xuICAgICAgICAgIGlmICghZW50aXR5KSBjb25zb2xlLndhcm4odGhpcy5fbG9nUHJlZml4ICsgYFtXU10gUmVjZWl2ZWQgZGVsZXRpb24gb24gJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fSAtIFRPRE8gY2hlY2sgaW1wbGVtZW50YXRpb25gKTtcblxuICAgICAgICAgIHJldHVybiBlbnRpdHk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgY29weUlkQW5kVXBkYXRlRGF0ZShzb3VyY2U6IFQsIHRhcmdldDogVCkge1xuICAgIGlmICghc291cmNlKSByZXR1cm47XG5cbiAgICAvLyBVcGRhdGUgKGlkIGFuZCB1cGRhdGVEYXRlKVxuICAgIEVudGl0eVV0aWxzLmNvcHlJZEFuZFVwZGF0ZURhdGUoc291cmNlLCB0YXJnZXQpO1xuICB9XG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSk6IFQge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gc291cmNlO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyB0aGlzLmRhdGFUeXBlKCk7XG4gICAgdGFyZ2V0LmZyb21PYmplY3Qoc291cmNlKTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgYXNGaWx0ZXIoc291cmNlOiBhbnkpOiBGIHtcbiAgICByZXR1cm4gRW50aXR5RmlsdGVyVXRpbHMuZnJvbU9iamVjdChzb3VyY2UsIHRoaXMuZmlsdGVyVHlwZSk7XG4gIH1cblxuICBlcXVhbHMoZDE6IFQsIGQyOiBUKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2VxdWFsc0ZuKSByZXR1cm4gdGhpcy5fZXF1YWxzRm4oZDEsIGQyKTtcbiAgICByZXR1cm4gZDEgJiYgZDEuZXF1YWxzID8gZDEuZXF1YWxzKGQyKSA6IEVudGl0eVV0aWxzLmVxdWFscyhkMSwgZDIsICdpZCcpO1xuICB9XG5cbiAgaXNOZXcoZGF0YTogVCkge1xuICAgIGlmICh0aGlzLl9pc05ld0ZuKSByZXR1cm4gdGhpcy5faXNOZXdGbihkYXRhKTtcbiAgICByZXR1cm4gRW50aXR5VXRpbHMuaXNFbXB0eShkYXRhLCAnaWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZXF1YWxzKCkgaW5zdGVhZFxuICAgKi9cbiAgZXF1YWxzRm4oZDE6IFQsIGQyOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuZXF1YWxzKGQxLCBkMik7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGlzTmV3KCkgaW5zdGVhZFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKi9cbiAgaXNOZXdGbihkYXRhOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNOZXcoZGF0YSk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgZnVuY3Rpb25zIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpIHtcbiAgICAvLyBObyBsaW1pdCBmb3IgdXBkYXRhYmxlIHdhdGNoIHF1ZXJpZXMsIGlmIGRlc2t0b3BcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0ubW9iaWxlKSB7XG4gICAgICB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQgPSAtMTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZmlsbERlZmF1bHRQcm9wZXJ0aWVzKHNvdXJjZTogVCkge1xuICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXNcbiAgfVxuXG4gIHByb3RlY3RlZCBhc09iamVjdChzb3VyY2U6IFQsIG9wdHM/OiBFbnRpdHlBc09iamVjdE9wdGlvbnMpOiBhbnkge1xuICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXNcbiAgICByZXR1cm4gc291cmNlLmFzT2JqZWN0KG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24oXG4gICAgb3B0cz86IEVudGl0eVNhdmVPcHRpb25zXG4gICk6ICgocmVzdWx0OiBGZXRjaFJlc3VsdDx7IGRhdGE6IGFueSB9PikgPT4gSW50ZXJuYWxSZWZldGNoUXVlcmllc0luY2x1ZGUpIHwgSW50ZXJuYWxSZWZldGNoUXVlcmllc0luY2x1ZGUge1xuICAgIGlmIChvcHRzICYmIG9wdHMucmVmZXRjaFF1ZXJpZXMpIHJldHVybiBvcHRzLnJlZmV0Y2hRdWVyaWVzO1xuXG4gICAgLy8gU2tpcCBpZiB1cGRhdGUgcG9saWN5IG5vdCB1c2VkIHJlZmVjdGggcXVlcmllc1xuICAgIGlmICh0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSAhPT0gJ3JlZmV0Y2gtcXVlcmllcycpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5nZXRMb2FkUXVlcmllcygpO1xuICAgIGlmICghcXVlcmllcy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7IC8vIFNraXAgaWYgZW1wdHlcblxuICAgIC8vIEZpbmQgdGhlIHJlZmV0Y2ggcXVlcmllcyBkZWZpbml0aW9uXG4gICAgcmV0dXJuIHRoaXMuZmluZFJlZmV0Y2hRdWVyaWVzKHsgcXVlcmllcyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMb2FkUXVlcmllcygpOiBEb2N1bWVudE5vZGVbXSB7XG4gICAgcmV0dXJuIFt0aGlzLnF1ZXJpZXMubG9hZEFsbCwgdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWxdLmZpbHRlcihpc05vdE5pbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TG9hZFF1ZXJ5TmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ0xvYWRBbGwnLCAnTG9hZEFsbFdpdGhUb3RhbCddO1xuICB9XG59XG4iXX0=
|
|
473
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lbnRpdHktc2VydmljZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9iYXNlLWVudGl0eS1zZXJ2aWNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFLdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFXbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2hFLE9BQU8sRUFBaUMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFnQixpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBd0R2RSxXQUFXO0FBRVgsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBZ0IsaUJBVXBCLFNBQVEsa0JBQTRCO0lBaUJ4QjtJQUNBO0lBQ0E7SUFDQTtJQWpCTyxTQUFTLENBQVM7SUFDbEIsWUFBWSxDQUFTO0lBRXJCLE9BQU8sQ0FBSTtJQUNYLFNBQVMsQ0FBYTtJQUN0QixhQUFhLENBQWE7SUFDMUIsU0FBUyxDQUE0QjtJQUNyQyxRQUFRLENBQW9CO0lBRTVCLGFBQWEsQ0FBVTtJQUN2QixvQkFBb0IsQ0FBZ0I7SUFDcEMsd0JBQXdCLENB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QixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0lBRVMscUJBQXFCLENBQUMsTUFBUztRQUN2QyxrQ0FBa0M7SUFDcEMsQ0FBQztJQUVTLFFBQVEsQ0FBQyxNQUFTLEVBQUUsSUFBNEI7UUFDeEQsa0NBQWtDO1FBQ2xDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRVMsNEJBQTRCLENBQ3BDLElBQXdCO1FBRXhCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRTVELGlEQUFpRDtRQUNqRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsS0FBSyxpQkFBaUI7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUUxRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQUUsT0FBTyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0I7UUFFdkQsc0NBQXNDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRVMsY0FBYztRQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRVMsaUJBQWlCO1FBQ3pCLE9BQU8sQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUN6QyxDQUFDO3dHQTNoQm1CLGlCQUFpQjs0RkFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUZ0QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVycm9yQ29kZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCB7IEZldGNoUG9saWN5LCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSwgTXV0YXRpb25VcGRhdGVyRm4gfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7IFNvcnREaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcblxuaW1wb3J0IHsgQmFzZUdyYXBocWxTZXJ2aWNlIH0gZnJvbSAnLi9iYXNlLWdyYXBocWwtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge1xuICBFbnRpdGllc1NlcnZpY2VMb2FkT3B0aW9ucyxcbiAgRW50aXRpZXNTZXJ2aWNlV2F0Y2hPcHRpb25zLFxuICBFbnRpdHlTZXJ2aWNlTGlzdGVuQ2hhbmdlc09wdGlvbnMsXG4gIElFbnRpdGllc1NlcnZpY2UsXG4gIElFbnRpdHlTZXJ2aWNlLFxuICBMb2FkUmVzdWx0LFxufSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvZW50aXR5LXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHsgR3JhcGhxbFNlcnZpY2UgfSBmcm9tICcuLi9ncmFwaHFsL2dyYXBocWwuc2VydmljZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybVNlcnZpY2UgfSBmcm9tICcuL3BsYXRmb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgZW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQnO1xuaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlBc09iamVjdE9wdGlvbnMsIEVudGl0eVV0aWxzIH0gZnJvbSAnLi9tb2RlbC9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgY2hhaW5Qcm9taXNlcyB9IGZyb20gJy4uLy4uL3NoYXJlZC9vYnNlcnZhYmxlcyc7XG5pbXBvcnQgeyBpc0VtcHR5QXJyYXksIGlzTmlsLCBpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsLCByZW1vdmVFbmQsIHRvTnVtYmVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZldGNoUmVzdWx0IH0gZnJvbSAnQGFwb2xsby9jbGllbnQvbGluay9jb3JlJztcbmltcG9ydCB7IEVudGl0eUZpbHRlciwgRW50aXR5RmlsdGVyVXRpbHMgfSBmcm9tICcuL21vZGVsL2ZpbHRlci5tb2RlbCc7XG5pbXBvcnQgeyBEb2N1bWVudE5vZGUgfSBmcm9tICdncmFwaHFsJztcblxuZXhwb3J0IHR5cGUgTXV0YWJsZVdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9ICd1cGRhdGUtY2FjaGUnIHwgJ3JlZmV0Y2gtcXVlcmllcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVudGl0eUdyYXBocWxRdWVyaWVzIHtcbiAgbG9hZD86IGFueTtcbiAgbG9hZEFsbDogYW55O1xuICBsb2FkQWxsV2l0aFRvdGFsPzogYW55O1xuICBjb3VudEFsbD86IGFueTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMge1xuICBzYXZlPzogYW55O1xuICBkZWxldGU/OiBhbnk7XG4gIHNhdmVBbGw/OiBhbnk7XG4gIGRlbGV0ZUFsbD86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRW50aXR5R3JhcGhxbFN1YnNjcmlwdGlvbnMge1xuICBsaXN0ZW5DaGFuZ2VzPzogYW55O1xufVxuZXhwb3J0IGludGVyZmFjZSBCYXNlRW50aXR5U2VydmljZU9wdGlvbnM8XG4gIFQgZXh0ZW5kcyBFbnRpdHk8YW55LCBJRD4sXG4gIElEID0gbnVtYmVyLFxuICBRIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxRdWVyaWVzID0gQmFzZUVudGl0eUdyYXBocWxRdWVyaWVzLFxuICBNIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMgPSBCYXNlRW50aXR5R3JhcGhxbE11dGF0aW9ucyxcbiAgUyBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsU3Vic2NyaXB0aW9ucyA9IEJhc2VFbnRpdHlHcmFwaHFsU3Vic2NyaXB0aW9ucyxcbj4ge1xuICBxdWVyaWVzOiBRO1xuICBtdXRhdGlvbnM/OiBQYXJ0aWFsPE0+O1xuICBzdWJzY3JpcHRpb25zPzogUGFydGlhbDxTPjtcblxuICBlcXVhbHM/OiAoZTE6IFQsIGUyOiBUKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgJ2VxdWFscycgaW5zdGVhZFxuICAgKi9cbiAgZXF1YWxzRm4/OiAoZTE6IFQsIGUyOiBUKSA9PiBib29sZWFuO1xuXG4gIGlzTmV3PzogKGU6IFQpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFVzZSAnaXNOZXcnIGluc3RlYWRcbiAgICovXG4gIGlzTmV3Rm4/OiAoZTogVCkgPT4gYm9vbGVhbjtcbiAgZGVmYXVsdFNvcnRCeT86IGtleW9mIFQ7XG4gIGRlZmF1bHRTb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbjtcbiAgd2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5PzogTXV0YWJsZVdhdGNoUXVlcmllc1VwZGF0ZVBvbGljeTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlTYXZlT3B0aW9ucyB7XG4gIHJlZmV0Y2hRdWVyaWVzPzogKChyZXN1bHQ6IEZldGNoUmVzdWx0PHsgZGF0YTogYW55IH0+KSA9PiBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSkgfCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZTtcbiAgYXdhaXRSZWZldGNoUXVlcmllcz86IGJvb2xlYW47XG4gIHVwZGF0ZT86IE11dGF0aW9uVXBkYXRlckZuPHsgZGF0YTogYW55IH0+O1xufVxuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRW50aXR5U2VydmljZTxcbiAgICBUIGV4dGVuZHMgRW50aXR5PFQsIElEPixcbiAgICBGIGV4dGVuZHMgRW50aXR5RmlsdGVyPEYsIFQsIElEPixcbiAgICBJRCA9IG51bWJlcixcbiAgICBXTyBleHRlbmRzIEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyA9IEVudGl0aWVzU2VydmljZVdhdGNoT3B0aW9ucyxcbiAgICBMTyBleHRlbmRzIEVudGl0aWVzU2VydmljZUxvYWRPcHRpb25zID0gRW50aXRpZXNTZXJ2aWNlTG9hZE9wdGlvbnMsXG4gICAgUSBleHRlbmRzIEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyA9IEJhc2VFbnRpdHlHcmFwaHFsUXVlcmllcyxcbiAgICBNIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxNdXRhdGlvbnMgPSBCYXNlRW50aXR5R3JhcGhxbE11dGF0aW9ucyxcbiAgICBTIGV4dGVuZHMgQmFzZUVudGl0eUdyYXBocWxTdWJzY3JpcHRpb25zID0gQmFzZUVudGl0eUdyYXBocWxTdWJzY3JpcHRpb25zLFxuICA+XG4gIGV4dGVuZHMgQmFzZUdyYXBocWxTZXJ2aWNlPFQsIEYsIElEPlxuICBpbXBsZW1lbnRzIElFbnRpdGllc1NlcnZpY2U8VCwgRiwgV08+LCBJRW50aXR5U2VydmljZTxULCBJRCwgTE8+XG57XG4gIHByb3RlY3RlZCByZWFkb25seSBfdHlwZW5hbWU6IHN0cmluZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9sb2dUeXBlTmFtZTogc3RyaW5nO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWVyaWVzOiBRO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbXV0YXRpb25zOiBQYXJ0aWFsPE0+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogUGFydGlhbDxTPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9lcXVhbHNGbjogKGUxOiBULCBlMjogVCkgPT4gYm9vbGVhbjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pc05ld0ZuOiAoZTogVCkgPT4gYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGVmYXVsdFNvcnRCeToga2V5b2YgVDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRlZmF1bHRTb3J0RGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5OiBNdXRhYmxlV2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHBsYXRmb3JtOiBQbGF0Zm9ybVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGRhdGFUeXBlOiBuZXcgKCkgPT4gVCxcbiAgICBwcm90ZWN0ZWQgZmlsdGVyVHlwZTogbmV3ICgpID0+IEYsXG4gICAgb3B0aW9uczogQmFzZUVudGl0eVNlcnZpY2VPcHRpb25zPFQsIElELCBRLCBNLCBTPlxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBlbnZpcm9ubWVudCk7XG4gICAgdGhpcy5xdWVyaWVzID0gb3B0aW9ucy5xdWVyaWVzO1xuICAgIHRoaXMubXV0YXRpb25zID0gb3B0aW9ucy5tdXRhdGlvbnMgfHwgPFBhcnRpYWw8TT4+e307XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gb3B0aW9ucy5zdWJzY3JpcHRpb25zIHx8IDxQYXJ0aWFsPFM+Pnt9O1xuICAgIHRoaXMuX2VxdWFsc0ZuID0gb3B0aW9ucy5lcXVhbHMgfHwgb3B0aW9ucy5lcXVhbHNGbjtcbiAgICB0aGlzLl9pc05ld0ZuID0gb3B0aW9ucy5pc05ldyB8fCBvcHRpb25zLmlzTmV3Rm47XG4gICAgdGhpcy5kZWZhdWx0U29ydEJ5ID0gb3B0aW9ucy5kZWZhdWx0U29ydEJ5IHx8ICdpZCc7XG4gICAgdGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbiA9IG9wdGlvbnMuZGVmYXVsdFNvcnREaXJlY3Rpb24gfHwgJ2FzYyc7XG4gICAgdGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPSBvcHRpb25zLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSB8fCAndXBkYXRlLWNhY2hlJztcblxuICAgIGNvbnN0IG9iaiA9IG5ldyBkYXRhVHlwZSgpO1xuICAgIHRoaXMuX3R5cGVuYW1lID0gb2JqLl9fdHlwZW5hbWUgfHwgJ1Vua25vd25WTyc7XG4gICAgdGhpcy5fbG9nVHlwZU5hbWUgPSByZW1vdmVFbmQodGhpcy5fdHlwZW5hbWUsICdWTycpO1xuXG4gICAgLy8gRm9yIERFViBvbmx5XG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgfVxuXG4gIHdhdGNoKGlkOiBudW1iZXIsIG9wdHM/OiBXTyk6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgV2F0Y2hpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fS4uLmApO1xuXG4gICAgY29uc3QgdmFyaWFibGVzOiBhbnkgPSBvcHRzPy52YXJpYWJsZXMgfHwgeyBpZCB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSAob3B0cyAmJiBvcHRzLnF1ZXJ5KSB8fCB0aGlzLnF1ZXJpZXMubG9hZDtcbiAgICByZXR1cm4gdGhpcy5ncmFwaHFsXG4gICAgICAud2F0Y2hRdWVyeTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICAgIHF1ZXJ5LFxuICAgICAgICB2YXJpYWJsZXMsXG4gICAgICAgIGZldGNoUG9saWN5OiAob3B0cyAmJiAob3B0cy5mZXRjaFBvbGljeSBhcyBGZXRjaFBvbGljeSkpIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZXJyb3I6IHsgY29kZTogRXJyb3JDb2Rlcy5MT0FEX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdSRUZFUkVOVElBTC5FUlJPUi5MT0FEX0RBVEFfRVJST1InIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gKCFvcHRzIHx8IG9wdHMudG9FbnRpdHkgIT09IGZhbHNlID8gZGF0YSAmJiB0aGlzLmZyb21PYmplY3QoZGF0YSkgOiAoZGF0YSBhcyBUKSkpKTtcbiAgfVxuXG4gIGFzeW5jIGxvYWQoaWQ6IElELCBvcHRzPzogTE8pOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYExvYWRpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fS4uLmApO1xuXG4gICAgY29uc3QgdmFyaWFibGVzOiBhbnkgPSBvcHRzPy52YXJpYWJsZXMgfHwgeyBpZCB9O1xuXG4gICAgY29uc3QgcXVlcnkgPSBvcHRzPy5xdWVyeSB8fCB0aGlzLnF1ZXJpZXMubG9hZDtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIGZldGNoUG9saWN5OiAob3B0cyAmJiAob3B0cy5mZXRjaFBvbGljeSBhcyBGZXRjaFBvbGljeSkpIHx8IHVuZGVmaW5lZCxcbiAgICAgIGVycm9yOiB7IGNvZGU6IEVycm9yQ29kZXMuTE9BRF9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnUkVGRVJFTlRJQUwuRVJST1IuTE9BRF9EQVRBX0VSUk9SJyB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ29udmVydCB0byBlbnRpdHlcbiAgICByZXR1cm4gIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UgPyBkYXRhICYmIHRoaXMuZnJvbU9iamVjdChkYXRhKSA6IChkYXRhIGFzIFQpO1xuICB9XG5cbiAgd2F0Y2hBbGwob2Zmc2V0OiBudW1iZXIsIHNpemU6IG51bWJlciwgc29ydEJ5Pzogc3RyaW5nLCBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbiwgZGF0YUZpbHRlcj86IEYsIG9wdHM/OiBXTyk6IE9ic2VydmFibGU8TG9hZFJlc3VsdDxUPj4ge1xuICAgIGRhdGFGaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGRhdGFGaWx0ZXIpO1xuXG4gICAgY29uc3QgdmFyaWFibGVzOiBhbnkgPSB7XG4gICAgICAuLi4ob3B0cz8udmFyaWFibGVzIHx8IHt9KSxcbiAgICAgIG9mZnNldDogb2Zmc2V0IHx8IDAsXG4gICAgICBzaXplOiBzaXplIHx8IDEwMCxcbiAgICAgIHNvcnRCeTogc29ydEJ5IHx8IHRoaXMuZGVmYXVsdFNvcnRCeSxcbiAgICAgIHNvcnREaXJlY3Rpb246IHNvcnREaXJlY3Rpb24gfHwgdGhpcy5kZWZhdWx0U29ydERpcmVjdGlvbixcbiAgICAgIGZpbHRlcjogZGF0YUZpbHRlciAmJiBkYXRhRmlsdGVyLmFzUG9kT2JqZWN0KCksXG4gICAgfTtcblxuICAgIGxldCBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgV2F0Y2hpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0uLi5gLCB2YXJpYWJsZXMpO1xuXG4gICAgY29uc3Qgd2l0aFRvdGFsID0gKCFvcHRzIHx8IG9wdHMud2l0aFRvdGFsICE9PSBmYWxzZSkgJiYgdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwgJiYgdHJ1ZTtcbiAgICBjb25zdCBxdWVyeSA9XG4gICAgICAob3B0cyAmJiBvcHRzLnF1ZXJ5KSB8fCAvLyB1c2UgZ2l2ZW4gcXVlcnlcbiAgICAgIC8vIE9yIGdldCBsb2FkQWxsIG9yIGxvYWRBbGxXaXRoVG90YWwgcXVlcnlcbiAgICAgICh3aXRoVG90YWwgPyB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhUb3RhbCA6IHRoaXMucXVlcmllcy5sb2FkQWxsKTtcbiAgICByZXR1cm4gdGhpcy5tdXRhYmxlV2F0Y2hRdWVyeTxMb2FkUmVzdWx0PGFueT4+KHtcbiAgICAgIHF1ZXJ5LFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgLy8gRm9yY2UgY2FjaGVkIG11dGFibGUgcXVlcnlcbiAgICAgIHF1ZXJ5TmFtZTogd2l0aFRvdGFsID8gJ0xvYWRBbGxXaXRoVG90YWwnIDogJ0xvYWRBbGwnLFxuICAgICAgYXJyYXlGaWVsZE5hbWU6ICdkYXRhJyxcbiAgICAgIHRvdGFsRmllbGROYW1lOiB3aXRoVG90YWwgPyAndG90YWwnIDogdW5kZWZpbmVkLFxuICAgICAgaW5zZXJ0RmlsdGVyRm46IGRhdGFGaWx0ZXIgJiYgZGF0YUZpbHRlci5hc0ZpbHRlckZuKCksXG4gICAgICBlcnJvcjogeyBjb2RlOiBFcnJvckNvZGVzLkxPQURfREFUQV9FUlJPUiwgbWVzc2FnZTogJ1JFRkVSRU5USUFMLkVSUk9SLkxPQURfREFUQV9FUlJPUicgfSxcbiAgICAgIGZldGNoUG9saWN5OiAob3B0cyAmJiBvcHRzLmZldGNoUG9saWN5KSB8fCB1bmRlZmluZWQsXG4gICAgfSkucGlwZShcbiAgICAgIG1hcCgoeyBkYXRhLCB0b3RhbCB9KSA9PiB7XG4gICAgICAgIC8vIENvbnZlcnQgdG8gZW50aXR5IChpZiBuZWVkKVxuICAgICAgICBjb25zdCBlbnRpdGllcyA9ICFvcHRzIHx8IG9wdHMudG9FbnRpdHkgIT09IGZhbHNlID8gKGRhdGEgfHwgW10pLm1hcCgoanNvbikgPT4gdGhpcy5mcm9tT2JqZWN0KGpzb24pKSA6ICgoZGF0YSB8fCBbXSkgYXMgVFtdKTtcblxuICAgICAgICBpZiAobm93KSB7XG4gICAgICAgICAgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgJHt0aGlzLl9sb2dUeXBlTmFtZX0gbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGVudGl0aWVzKTtcbiAgICAgICAgICBub3cgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGRhdGE6IGVudGl0aWVzLCB0b3RhbCB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgbG9hZEFsbChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBzaXplOiBudW1iZXIsXG4gICAgc29ydEJ5Pzoga2V5b2YgVCB8IHN0cmluZyxcbiAgICBzb3J0RGlyZWN0aW9uPzogU29ydERpcmVjdGlvbixcbiAgICBmaWx0ZXI/OiBQYXJ0aWFsPEY+LFxuICAgIG9wdHM/OiBMTyAmIHtcbiAgICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICB9XG4gICk6IFByb21pc2U8TG9hZFJlc3VsdDxUPj4ge1xuICAgIGNvbnN0IGRlYnVnID0gdGhpcy5fZGVidWcgJiYgKCFvcHRzIHx8IG9wdHMuZGVidWcgIT09IGZhbHNlKTtcblxuICAgIGZpbHRlciA9IHRoaXMuYXNGaWx0ZXIoZmlsdGVyKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlczogYW55ID0ge1xuICAgICAgLi4uKG9wdHM/LnZhcmlhYmxlcyB8fCB7fSksXG4gICAgICBvZmZzZXQ6IG9mZnNldCB8fCAwLFxuICAgICAgc2l6ZTogc2l6ZSB8fCAxMDAsXG4gICAgICBzb3J0Qnk6IHNvcnRCeSB8fCAnaWQnLFxuICAgICAgc29ydERpcmVjdGlvbjogc29ydERpcmVjdGlvbiB8fCAnYXNjJyxcbiAgICAgIGZpbHRlcjogZmlsdGVyICYmIGZpbHRlci5hc1BvZE9iamVjdCgpLFxuICAgIH07XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmIChkZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgTG9hZGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfS4uLmAsIHZhcmlhYmxlcyk7XG5cbiAgICBjb25zdCB3aXRoVG90YWwgPSAoIW9wdHMgfHwgb3B0cy53aXRoVG90YWwgIT09IGZhbHNlKSAmJiB0aGlzLnF1ZXJpZXMubG9hZEFsbFdpdGhUb3RhbCAmJiB0cnVlO1xuICAgIC8vIHVzZSBnaXZlbiBxdWVyeVxuICAgIGNvbnN0IHF1ZXJ5ID1cbiAgICAgIG9wdHM/LnF1ZXJ5IHx8XG4gICAgICAvLyBPciBnZXQgbG9hZEFsbCBvciBsb2FkQWxsV2l0aFRvdGFsIHF1ZXJ5XG4gICAgICAod2l0aFRvdGFsID8gdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwgOiB0aGlzLnF1ZXJpZXMubG9hZEFsbCk7XG4gICAgY29uc3QgeyBkYXRhLCB0b3RhbCB9ID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PExvYWRSZXN1bHQ8YW55Pj4oe1xuICAgICAgcXVlcnksXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjogeyBjb2RlOiBFcnJvckNvZGVzLkxPQURfREFUQV9FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkxPQURfREFUQV9FUlJPUicgfSxcbiAgICAgIGZldGNoUG9saWN5OiAob3B0cyAmJiBvcHRzLmZldGNoUG9saWN5KSB8fCAnbmV0d29yay1vbmx5JyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVudGl0aWVzID0gIW9wdHMgfHwgb3B0cy50b0VudGl0eSAhPT0gZmFsc2UgPyAoZGF0YSB8fCBbXSkubWFwKChqc29uKSA9PiB0aGlzLmZyb21PYmplY3QoanNvbikpIDogKChkYXRhIHx8IFtdKSBhcyBUW10pO1xuICAgIGlmIChkZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgJHt0aGlzLl9sb2dUeXBlTmFtZX0gaXRlbXMgbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuXG4gICAgY29uc3QgcmVzdWx0OiBMb2FkUmVzdWx0PFQ+ID0ge1xuICAgICAgZGF0YTogZW50aXRpZXMsXG4gICAgICB0b3RhbDogdG90YWwgfHwgZW50aXRpZXMubGVuZ3RoLFxuICAgIH07XG5cbiAgICAvLyBBZGQgZmV0Y2ggbW9yZSBjYXBhYmlsaXR5LCBpZiB0b3RhbCB3YXMgZmV0Y2hlZFxuICAgIGlmICh3aXRoVG90YWwpIHtcbiAgICAgIGNvbnN0IG5leHRPZmZzZXQgPSAob2Zmc2V0IHx8IDApICsgZW50aXRpZXMubGVuZ3RoO1xuICAgICAgaWYgKG5leHRPZmZzZXQgPCByZXN1bHQudG90YWwpIHtcbiAgICAgICAgcmVzdWx0LmZldGNoTW9yZSA9ICgpID0+IHRoaXMubG9hZEFsbChuZXh0T2Zmc2V0LCBzaXplLCBzb3J0QnksIHNvcnREaXJlY3Rpb24sIGZpbHRlciwgb3B0cyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFzeW5jIGNvdW50QWxsKGZpbHRlcj86IFBhcnRpYWw8Rj4sIG9wdHM/OiBMTykge1xuICAgIC8vIElmIG5vIGNvdW50QWxsIHF1ZXJ5XG4gICAgaWYgKCF0aGlzLnF1ZXJpZXMuY291bnRBbGwgJiYgIW9wdHM/LnF1ZXJ5KSB7XG4gICAgICAvLyBGYWlsIGlmIG5vIGxvYWRBbGwgKGNhbm5vdCBjb3VudClcbiAgICAgIGlmICghdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWwpIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG5cbiAgICAgIC8vIFVzZSBsb2FkQWxsIHF1ZXJ5LCB3aXRoIHNpemUgPSAwO1xuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmxvYWRBbGwoMCwgMSwgbnVsbCwgbnVsbCwgZmlsdGVyLCA8TE8gJiB7IHdpdGhUb3RhbDogYm9vbGVhbiB9Pnsgd2l0aFRvdGFsOiB0cnVlIH0pKT8udG90YWwgfHwgMDtcbiAgICB9XG5cbiAgICBmaWx0ZXIgPSB0aGlzLmFzRmlsdGVyKGZpbHRlcik7XG5cbiAgICBjb25zdCB2YXJpYWJsZXM6IGFueSA9IHtcbiAgICAgIC4uLihvcHRzPy52YXJpYWJsZXMgfHwge30pLFxuICAgICAgZmlsdGVyOiBmaWx0ZXIgJiYgZmlsdGVyLmFzUG9kT2JqZWN0KCksXG4gICAgfTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gb3B0cz8ucXVlcnkgfHwgdGhpcy5xdWVyaWVzLmNvdW50QWxsO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IHRvdGFsOiBudW1iZXIgfT4oe1xuICAgICAgcXVlcnksXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjogeyBjb2RlOiBFcnJvckNvZGVzLkxPQURfREFUQV9FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkNPVU5UX0RBVEFfRVJST1InIH0sXG4gICAgICBmZXRjaFBvbGljeTogKG9wdHMgJiYgb3B0cy5mZXRjaFBvbGljeSkgfHwgJ25ldHdvcmstb25seScsXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcy50b3RhbDtcbiAgfVxuXG4gIGNhblVzZXJXcml0ZShkYXRhOiBULCBvcHRzPzogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZGF0YTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVBbGwoZW50aXRpZXM6IFRbXSwgb3B0cz86IEVudGl0eVNhdmVPcHRpb25zKTogUHJvbWlzZTxUW10+IHtcbiAgICBpZiAoaXNFbXB0eUFycmF5KGVudGl0aWVzKSkgcmV0dXJuIGVudGl0aWVzOyAvLyBOb3RoaW5nIHRvIHNhdmU6IHNraXBcblxuICAgIGlmICghdGhpcy5tdXRhdGlvbnMuc2F2ZUFsbCkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucy5zYXZlKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgICAgLy8gU2F2ZSBvbmUgYnkgb25lXG4gICAgICByZXR1cm4gY2hhaW5Qcm9taXNlcygoZW50aXRpZXMgfHwgW10pLm1hcCgoZW50aXR5KSA9PiAoKSA9PiB0aGlzLnNhdmUoZW50aXR5LCBvcHRzKSkpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0VudGl0aWVzOiBUW10gPSBbXTtcbiAgICBjb25zdCBqc29uID0gZW50aXRpZXMubWFwKChlbnRpdHkpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzTmV3KGVudGl0eSkpIG5ld0VudGl0aWVzLnB1c2goZW50aXR5KTtcbiAgICAgIHRoaXMuZmlsbERlZmF1bHRQcm9wZXJ0aWVzKGVudGl0eSk7XG4gICAgICByZXR1cm4gdGhpcy5hc09iamVjdChlbnRpdHkpO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFNhdmluZyBhbGwgJHt0aGlzLl9sb2dUeXBlTmFtZX0uLi5gLCBqc29uKTtcblxuICAgIGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8TG9hZFJlc3VsdDxhbnk+Pih7XG4gICAgICBtdXRhdGlvbjogdGhpcy5tdXRhdGlvbnMuc2F2ZUFsbCxcbiAgICAgIHJlZmV0Y2hRdWVyaWVzOiB0aGlzLmdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24ob3B0cyksXG4gICAgICBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBvcHRzICYmIG9wdHMuYXdhaXRSZWZldGNoUXVlcmllcyxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBkYXRhOiBqc29uLFxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IEVycm9yQ29kZXMuU0FWRV9EQVRBX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuU0FWRV9EQVRBX0VSUk9SJyB9LFxuICAgICAgdXBkYXRlOiAoY2FjaGUsIHsgZGF0YSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHNhdmVkRW50aXRpZXMgPSBkYXRhICYmIGRhdGEuZGF0YTtcbiAgICAgICAgaWYgKHNhdmVkRW50aXRpZXMpIHtcbiAgICAgICAgICAvLyBVcGRhdGUgZW50aXRpZXMgKGlkIGFuZCB1cGRhdGUgZGF0ZSlcbiAgICAgICAgICBlbnRpdGllcy5mb3JFYWNoKChlbnRpdHkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNhdmVkRW50aXR5ID0gc2F2ZWRFbnRpdGllcy5maW5kKChlKSA9PiB0aGlzLmVxdWFscyhlbnRpdHksIGUpKTtcbiAgICAgICAgICAgIHRoaXMuY29weUlkQW5kVXBkYXRlRGF0ZShzYXZlZEVudGl0eSwgZW50aXR5KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgY2FjaGUsIHdpdGggbmV3IGVudGl0aWVzXG4gICAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShuZXdFbnRpdGllcykgJiYgdGhpcy53YXRjaFF1ZXJpZXNVcGRhdGVQb2xpY3kgPT09ICd1cGRhdGUtY2FjaGUnKSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhjYWNoZSwge1xuICAgICAgICAgICAgICBxdWVyaWVzOiB0aGlzLmdldExvYWRRdWVyaWVzKCksXG4gICAgICAgICAgICAgIGRhdGE6IG5ld0VudGl0aWVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdHMgJiYgb3B0cy51cGRhdGUpIHtcbiAgICAgICAgICBvcHRzLnVwZGF0ZShjYWNoZSwgeyBkYXRhIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1R5cGVOYW1lfSBzYXZlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgLCBlbnRpdGllcyk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVudGl0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgYSByZWZlcmVudGlhbCBlbnRpdHlcbiAgICpcbiAgICogQHBhcmFtIGVudGl0eVxuICAgKiBAcGFyYW0gb3B0c1xuICAgKi9cbiAgYXN5bmMgc2F2ZShlbnRpdHk6IFQsIG9wdHM/OiBFbnRpdHlTYXZlT3B0aW9ucyk6IFByb21pc2U8VD4ge1xuICAgIGlmICghdGhpcy5tdXRhdGlvbnMuc2F2ZSkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucy5zYXZlQWxsKSB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuc2F2ZUFsbChbZW50aXR5XSwgb3B0cyk7XG4gICAgICByZXR1cm4gZGF0YSAmJiBkYXRhWzBdO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmV3RW50aXR5ID0gdGhpcy5pc05ldyhlbnRpdHkpO1xuXG4gICAgLy8gRmlsbCBkZWZhdWx0IHByb3BlcnRpZXNcbiAgICB0aGlzLmZpbGxEZWZhdWx0UHJvcGVydGllcyhlbnRpdHkpO1xuXG4gICAgLy8gVHJhbnNmb3JtIGludG8ganNvblxuICAgIGNvbnN0IGpzb24gPSB0aGlzLmFzT2JqZWN0KGVudGl0eSk7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgU2F2aW5nICR7dGhpcy5fbG9nVHlwZU5hbWV9Li4uYCwganNvbik7XG5cbiAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPHsgZGF0YTogYW55IH0+KHtcbiAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5zYXZlLFxuICAgICAgcmVmZXRjaFF1ZXJpZXM6IHRoaXMuZ2V0UmVmZXRjaFF1ZXJpZXNGb3JNdXRhdGlvbihvcHRzKSxcbiAgICAgIGF3YWl0UmVmZXRjaFF1ZXJpZXM6IG9wdHMgJiYgb3B0cy5hd2FpdFJlZmV0Y2hRdWVyaWVzLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGRhdGE6IGpzb24sXG4gICAgICB9LFxuICAgICAgZXJyb3I6IHsgY29kZTogRXJyb3JDb2Rlcy5TQVZFX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5TQVZFX0RBVEFfRVJST1InIH0sXG4gICAgICB1cGRhdGU6IChjYWNoZSwgeyBkYXRhIH0pID0+IHtcbiAgICAgICAgLy8gVXBkYXRlIGVudGl0eVxuICAgICAgICBjb25zdCBzYXZlZEVudGl0eSA9IGRhdGEgJiYgZGF0YS5kYXRhO1xuICAgICAgICB0aGlzLmNvcHlJZEFuZFVwZGF0ZURhdGUoc2F2ZWRFbnRpdHksIGVudGl0eSk7XG5cbiAgICAgICAgLy8gSW5zZXJ0IGludG8gdGhlIGNhY2hlXG4gICAgICAgIGlmIChpc05ld0VudGl0eSAmJiB0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSA9PT0gJ3VwZGF0ZS1jYWNoZScpIHtcbiAgICAgICAgICB0aGlzLmluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhjYWNoZSwge1xuICAgICAgICAgICAgcXVlcmllczogdGhpcy5nZXRMb2FkUXVlcmllcygpLFxuICAgICAgICAgICAgZGF0YTogc2F2ZWRFbnRpdHksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cyAmJiBvcHRzLnVwZGF0ZSkge1xuICAgICAgICAgIG9wdHMudXBkYXRlKGNhY2hlLCB7IGRhdGEgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7ZW50aXR5Ll9fdHlwZW5hbWV9IHNhdmVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2AsIGVudGl0eSk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgcmVmZXJlbnRpYWwgZW50aXRpZXNcbiAgICovXG4gIGFzeW5jIGRlbGV0ZUFsbChcbiAgICBlbnRpdGllczogVFtdLFxuICAgIG9wdHM/OlxuICAgICAgfCBQYXJ0aWFsPHtcbiAgICAgICAgICB1cGRhdGU6IE11dGF0aW9uVXBkYXRlckZuPGFueT47XG4gICAgICAgIH0+XG4gICAgICB8IGFueVxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGlmICghdGhpcy5tdXRhdGlvbnMuZGVsZXRlQWxsKSB7XG4gICAgICBpZiAoIXRoaXMubXV0YXRpb25zLmRlbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbiAgICAgIC8vIERlbGV0ZSBvbmUgYnkgb25lXG4gICAgICByZXR1cm4gY2hhaW5Qcm9taXNlcygoZW50aXRpZXMgfHwgW10pLm1hcCgoZW50aXR5KSA9PiAoKSA9PiB0aGlzLmRlbGV0ZShlbnRpdHksIG9wdHMpKSk7XG4gICAgfVxuXG4gICAgLy8gRmlsdGVyIHNhdmVkIGVudGl0aWVzXG4gICAgZW50aXRpZXMgPSBlbnRpdGllcyAmJiBlbnRpdGllcy5maWx0ZXIoKGUpID0+IGlzTm90TmlsKGUuaWQpKTtcblxuICAgIC8vIE5vdGhpbmcgdG8gc2F2ZTogc2tpcFxuICAgIGlmIChpc0VtcHR5QXJyYXkoZW50aXRpZXMpKSByZXR1cm47XG5cbiAgICBjb25zdCBpZHMgPSBlbnRpdGllcy5tYXAoKHQpID0+IHQuaWQpO1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBEZWxldGluZyAke3RoaXMuX2xvZ1R5cGVOYW1lfS4uLmAsIGlkcyk7XG5cbiAgICBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPGFueT4oe1xuICAgICAgbXV0YXRpb246IHRoaXMubXV0YXRpb25zLmRlbGV0ZUFsbCxcbiAgICAgIHJlZmV0Y2hRdWVyaWVzOiB0aGlzLmdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24ob3B0cyksXG4gICAgICBhd2FpdFJlZmV0Y2hRdWVyaWVzOiBvcHRzICYmIG9wdHMuYXdhaXRSZWZldGNoUXVlcmllcyxcbiAgICAgIHZhcmlhYmxlczogeyBpZHMgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IEVycm9yQ29kZXMuREVMRVRFX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5ERUxFVEVfREFUQV9FUlJPUicgfSxcbiAgICAgIHVwZGF0ZTogKGNhY2hlLCByZXMpID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gY2FjaGVcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID09PSAndXBkYXRlLWNhY2hlJykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbU11dGFibGVDYWNoZWRRdWVyaWVzQnlJZHMoY2FjaGUsIHtcbiAgICAgICAgICAgIHF1ZXJpZXM6IHRoaXMuZ2V0TG9hZFF1ZXJpZXMoKSxcbiAgICAgICAgICAgIGlkcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUoY2FjaGUsIHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7dGhpcy5fbG9nVHlwZU5hbWV9IGRlbGV0ZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIHJlZmVyZW50aWFsIGVudGl0eVxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKGVudGl0eTogVCwgb3B0cz86IEVudGl0eVNhdmVPcHRpb25zIHwgYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMubXV0YXRpb25zLmRlbGV0ZSkge1xuICAgICAgaWYgKCF0aGlzLm11dGF0aW9ucy5kZWxldGVBbGwpIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5kZWxldGVBbGwoW2VudGl0eV0sIG9wdHMpO1xuICAgICAgcmV0dXJuIGRhdGEgJiYgZGF0YVswXTtcbiAgICB9XG5cbiAgICAvLyBOb3RoaW5nIHRvIHNhdmU6IHNraXBcbiAgICBpZiAoIWVudGl0eSB8fCBpc05pbChlbnRpdHkuaWQpKSByZXR1cm47XG5cbiAgICBjb25zdCBpZCA9IGVudGl0eS5pZDtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgRGVsZXRpbmcgJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fS4uLmApO1xuXG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsLm11dGF0ZTxhbnk+KHtcbiAgICAgIG11dGF0aW9uOiB0aGlzLm11dGF0aW9ucy5kZWxldGUsXG4gICAgICByZWZldGNoUXVlcmllczogdGhpcy5nZXRSZWZldGNoUXVlcmllc0Zvck11dGF0aW9uKG9wdHMpLFxuICAgICAgYXdhaXRSZWZldGNoUXVlcmllczogb3B0cyAmJiBvcHRzLmF3YWl0UmVmZXRjaFF1ZXJpZXMsXG4gICAgICB2YXJpYWJsZXM6IHsgaWQgfSxcbiAgICAgIGVycm9yOiB7IGNvZGU6IEVycm9yQ29kZXMuREVMRVRFX0RBVEFfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5ERUxFVEVfREFUQV9FUlJPUicgfSxcbiAgICAgIHVwZGF0ZTogKHByb3h5LCByZXMpID0+IHtcbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gY2FjaGVcbiAgICAgICAgaWYgKHRoaXMud2F0Y2hRdWVyaWVzVXBkYXRlUG9saWN5ID09PSAndXBkYXRlLWNhY2hlJykge1xuICAgICAgICAgIHRoaXMucmVtb3ZlRnJvbU11dGFibGVDYWNoZWRRdWVyaWVzQnlJZHMocHJveHksIHtcbiAgICAgICAgICAgIHF1ZXJpZXM6IHRoaXMuZ2V0TG9hZFF1ZXJpZXMoKSxcbiAgICAgICAgICAgIGlkczogW2lkXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzICYmIG9wdHMudXBkYXRlKSB7XG4gICAgICAgICAgb3B0cy51cGRhdGUocHJveHksIHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYCR7dGhpcy5fbG9nVHlwZU5hbWV9IGRlbGV0ZWQgaW4gJHtuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIG5vdy5nZXRUaW1lKCl9bXNgKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBsaXN0ZW5DaGFuZ2VzKGlkOiBJRCwgb3B0cz86IEVudGl0eVNlcnZpY2VMaXN0ZW5DaGFuZ2VzT3B0aW9ucyk6IE9ic2VydmFibGU8VD4ge1xuICAgIGlmIChpc05pbChpZCkpIHRocm93IEVycm9yKFwiTWlzc2luZyBhcmd1bWVudCAnaWQnIFwiKTtcbiAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9ucy5saXN0ZW5DaGFuZ2VzKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfS5saXN0ZW5DaGFuZ2VzKCkgbm90IGltcGxlbWVudGVkIHlldC4gV2lsbCBlbXB0eSBvYnNlcnZhYmxlYCk7XG4gICAgICByZXR1cm4gb2YoKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YXJpYWJsZXMgPSBvcHRzPy52YXJpYWJsZXMgfHwge1xuICAgICAgaWQsXG4gICAgICBpbnRlcnZhbDogdG9OdW1iZXIob3B0cyAmJiBvcHRzLmludGVydmFsLCAwKSwgLy8gbm8gdGltZXIgYnkgZGVmYXVsdFxuICAgIH07XG4gICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKHRoaXMuX2xvZ1ByZWZpeCArIGBbV1NdIExpc3RlbmluZyBmb3IgY2hhbmdlcyBvbiAke3RoaXMuX2xvZ1R5cGVOYW1lfSB7JHtpZH19Li4uYCk7XG5cbiAgICByZXR1cm4gdGhpcy5ncmFwaHFsXG4gICAgICAuc3Vic2NyaWJlPHsgZGF0YTogYW55IH0+KHtcbiAgICAgICAgcXVlcnk6IG9wdHM/LnF1ZXJ5IHx8IHRoaXMuc3Vic2NyaXB0aW9ucy5saXN0ZW5DaGFuZ2VzLFxuICAgICAgICBmZXRjaFBvbGljeTogb3B0cz8uZmV0Y2hQb2xpY3kgfHwgJ25vLWNhY2hlJyxcbiAgICAgICAgdmFyaWFibGVzLFxuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIGNvZGU6IEVycm9yQ29kZXMuU1VCU0NSSUJFX0RBVEFfRVJST1IsXG4gICAgICAgICAgbWVzc2FnZTogJ0VSUk9SLlNVQlNDUklCRV9EQVRBX0VSUk9SJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh7IGRhdGEgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVudGl0eSA9ICFvcHRzIHx8IG9wdHMudG9FbnRpdHkgIT09IGZhbHNlID8gZGF0YSAmJiB0aGlzLmZyb21PYmplY3QoZGF0YSkgOiBkYXRhO1xuICAgICAgICAgIC8vaWYgKGVudGl0eSAmJiB0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgW1dTXSBSZWNlaXZlZCBjaGFuZ2VzIG9uICR7dGhpcy5fbG9nVHlwZU5hbWV9IHske2lkfX1gLCBlbnRpdHkpO1xuXG4gICAgICAgICAgLy8gVE9ETzogbWlzc2luZyA9IGRlbGV0ZWQgP1xuICAgICAgICAgIGlmICghZW50aXR5KSBjb25zb2xlLndhcm4odGhpcy5fbG9nUHJlZml4ICsgYFtXU10gUmVjZWl2ZWQgZGVsZXRpb24gb24gJHt0aGlzLl9sb2dUeXBlTmFtZX0geyR7aWR9fSAtIFRPRE8gY2hlY2sgaW1wbGVtZW50YXRpb25gKTtcblxuICAgICAgICAgIHJldHVybiBlbnRpdHk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgY29weUlkQW5kVXBkYXRlRGF0ZShzb3VyY2U6IFQsIHRhcmdldDogVCkge1xuICAgIGlmICghc291cmNlKSByZXR1cm47XG5cbiAgICAvLyBVcGRhdGUgKGlkIGFuZCB1cGRhdGVEYXRlKVxuICAgIEVudGl0eVV0aWxzLmNvcHlJZEFuZFVwZGF0ZURhdGUoc291cmNlLCB0YXJnZXQpO1xuICB9XG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSk6IFQge1xuICAgIGlmICghc291cmNlKSByZXR1cm4gc291cmNlO1xuICAgIGNvbnN0IHRhcmdldCA9IG5ldyB0aGlzLmRhdGFUeXBlKCk7XG4gICAgdGFyZ2V0LmZyb21PYmplY3Qoc291cmNlKTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgYXNGaWx0ZXIoc291cmNlOiBhbnkpOiBGIHtcbiAgICByZXR1cm4gRW50aXR5RmlsdGVyVXRpbHMuZnJvbU9iamVjdChzb3VyY2UsIHRoaXMuZmlsdGVyVHlwZSk7XG4gIH1cblxuICBlcXVhbHMoZDE6IFQsIGQyOiBUKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX2VxdWFsc0ZuKSByZXR1cm4gdGhpcy5fZXF1YWxzRm4oZDEsIGQyKTtcbiAgICByZXR1cm4gZDEgJiYgZDEuZXF1YWxzID8gZDEuZXF1YWxzKGQyKSA6IEVudGl0eVV0aWxzLmVxdWFscyhkMSwgZDIsICdpZCcpO1xuICB9XG5cbiAgaXNOZXcoZGF0YTogVCkge1xuICAgIGlmICh0aGlzLl9pc05ld0ZuKSByZXR1cm4gdGhpcy5faXNOZXdGbihkYXRhKTtcbiAgICByZXR1cm4gRW50aXR5VXRpbHMuaXNFbXB0eShkYXRhLCAnaWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgZXF1YWxzKCkgaW5zdGVhZFxuICAgKi9cbiAgZXF1YWxzRm4oZDE6IFQsIGQyOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuZXF1YWxzKGQxLCBkMik7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGlzTmV3KCkgaW5zdGVhZFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKi9cbiAgaXNOZXdGbihkYXRhOiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNOZXcoZGF0YSk7XG4gIH1cblxuICAvKiAtLSBwcm90ZWN0ZWQgZnVuY3Rpb25zIC0tICovXG5cbiAgcHJvdGVjdGVkIGFzeW5jIG5nT25TdGFydCgpIHtcbiAgICAvLyBObyBsaW1pdCBmb3IgdXBkYXRhYmxlIHdhdGNoIHF1ZXJpZXMsIGlmIGRlc2t0b3BcbiAgICBpZiAoIXRoaXMucGxhdGZvcm0ubW9iaWxlKSB7XG4gICAgICB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQgPSAtMTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZmlsbERlZmF1bHRQcm9wZXJ0aWVzKHNvdXJjZTogVCkge1xuICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXNcbiAgfVxuXG4gIHByb3RlY3RlZCBhc09iamVjdChzb3VyY2U6IFQsIG9wdHM/OiBFbnRpdHlBc09iamVjdE9wdGlvbnMpOiBhbnkge1xuICAgIC8vIENhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXNcbiAgICByZXR1cm4gc291cmNlLmFzT2JqZWN0KG9wdHMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFJlZmV0Y2hRdWVyaWVzRm9yTXV0YXRpb24oXG4gICAgb3B0cz86IEVudGl0eVNhdmVPcHRpb25zXG4gICk6ICgocmVzdWx0OiBGZXRjaFJlc3VsdDx7IGRhdGE6IGFueSB9PikgPT4gSW50ZXJuYWxSZWZldGNoUXVlcmllc0luY2x1ZGUpIHwgSW50ZXJuYWxSZWZldGNoUXVlcmllc0luY2x1ZGUge1xuICAgIGlmIChvcHRzICYmIG9wdHMucmVmZXRjaFF1ZXJpZXMpIHJldHVybiBvcHRzLnJlZmV0Y2hRdWVyaWVzO1xuXG4gICAgLy8gU2tpcCBpZiB1cGRhdGUgcG9saWN5IG5vdCB1c2VkIHJlZmVjdGggcXVlcmllc1xuICAgIGlmICh0aGlzLndhdGNoUXVlcmllc1VwZGF0ZVBvbGljeSAhPT0gJ3JlZmV0Y2gtcXVlcmllcycpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5nZXRMb2FkUXVlcmllcygpO1xuICAgIGlmICghcXVlcmllcy5sZW5ndGgpIHJldHVybiB1bmRlZmluZWQ7IC8vIFNraXAgaWYgZW1wdHlcblxuICAgIC8vIEZpbmQgdGhlIHJlZmV0Y2ggcXVlcmllcyBkZWZpbml0aW9uXG4gICAgcmV0dXJuIHRoaXMuZmluZFJlZmV0Y2hRdWVyaWVzKHsgcXVlcmllcyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMb2FkUXVlcmllcygpOiBEb2N1bWVudE5vZGVbXSB7XG4gICAgcmV0dXJuIFt0aGlzLnF1ZXJpZXMubG9hZEFsbCwgdGhpcy5xdWVyaWVzLmxvYWRBbGxXaXRoVG90YWxdLmZpbHRlcihpc05vdE5pbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TG9hZFF1ZXJ5TmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ0xvYWRBbGwnLCAnTG9hZEFsbFdpdGhUb3RhbCddO1xuICB9XG59XG4iXX0=
|
|
@@ -219,12 +219,12 @@ export class BaseGraphqlService extends StartableService {
|
|
|
219
219
|
ngOnStart() {
|
|
220
220
|
return Promise.resolve(null);
|
|
221
221
|
}
|
|
222
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
223
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.
|
|
222
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: BaseGraphqlService, deps: [{ token: i1.GraphqlService }, { token: BaseGraphqlServiceOptions, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
223
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: BaseGraphqlService, usesInheritance: true, ngImport: i0 });
|
|
224
224
|
}
|
|
225
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
225
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: BaseGraphqlService, decorators: [{
|
|
226
226
|
type: Directive
|
|
227
227
|
}], ctorParameters: () => [{ type: i1.GraphqlService }, { type: BaseGraphqlServiceOptions, decorators: [{
|
|
228
228
|
type: Optional
|
|
229
229
|
}] }] });
|
|
230
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUE4Q3hDLE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsVUFBVSxDQUFXO0NBQ3RCO0FBR0Qsa0VBQWtFO0FBQ2xFLDZEQUE2RDtBQUM3RCxNQUFNLE9BQWdCLGtCQUF5RCxTQUFRLGdCQUFtQjtJQVc1RjtJQVZGLFVBQVUsQ0FBUztJQUNuQixvQkFBb0IsR0FBd0MsRUFBRSxDQUFDO0lBRXpFLHdDQUF3QztJQUN4QyxtREFBbUQ7SUFDbkQsaUNBQWlDO0lBQ2pDLDZHQUE2RztJQUNuRyw0QkFBNEIsR0FBRyxDQUFDLENBQUM7SUFFM0MsWUFDWSxPQUF1QixFQUNyQixPQUFtQztRQUUvQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFITCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUtqQyxlQUFlO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFD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Q0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLENBQUM7UUFDN0csQ0FBQztRQUVELHFDQUFxQztRQUNyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxJQUFvQztRQUMvRCxPQUFPLENBQ0wsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQztZQUNoQyx3RkFBd0Y7YUFDdkYsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVTLFNBQVM7UUFDakIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7dUdBeFBtQixrQkFBa0I7MkZBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFIdkMsU0FBUzs7MEJBZUwsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBocWxTZXJ2aWNlLCBNdXRhdGVRdWVyeU9wdGlvbnMsIFdhdGNoUXVlcnlPcHRpb25zIH0gZnJvbSAnLi4vZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGZXRjaFJlc3VsdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2xpbmsvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlVdGlscyB9IGZyb20gJy4vbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEFwb2xsb0NhY2hlLCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCwgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVyeVJlZiB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IFB1cmVRdWVyeU9wdGlvbnMgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgU3RhcnRhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJ0BncmFwaHFsLXR5cGVkLWRvY3VtZW50LW5vZGUvY29yZSc7XG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQgeyBFbXB0eU9iamVjdCB9IGZyb20gJy4uL2dyYXBocWwvZ3JhcGhxbC51dGlscyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlWYXJpYWJsZXM8RiA9IGFueT4gZXh0ZW5kcyBQYXJ0aWFsPFBhZ2U+IHtcbiAgZmlsdGVyPzogRjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE11dGF0ZVF1ZXJ5V2l0aENhY2hlVXBkYXRlT3B0aW9uczxUID0gYW55LCBWID0gRW1wdHlPYmplY3Q+IGV4dGVuZHMgTXV0YXRlUXVlcnlPcHRpb25zPFQsIFY+IHtcbiAgY2FjaGVJbnNlcnQ/OiB7XG4gICAgcXVlcnk6IGFueTtcbiAgICBmZXRjaERhdGE6ICh2YXJpYWJsZXM6IFYsIG11dGF0aW9uUmVzdWx0OiBGZXRjaFJlc3VsdDxUPikgPT4gYW55O1xuICB9W107XG5cbiAgY2FjaGVSZW1vdmU/OiB7XG4gICAgcXVlcnk6IGFueTtcbiAgICBmZXRjaElkczogKHZhcmlhYmxlczogVikgPT4gbnVtYmVyIHwgbnVtYmVyW107XG4gIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdXRhYmxlV2F0Y2hRdWVyeU9wdGlvbnM8RCwgVCA9IGFueSwgViA9IEVtcHR5T2JqZWN0PiBleHRlbmRzIFdhdGNoUXVlcnlPcHRpb25zPFY+IHtcbiAgcXVlcnlOYW1lOiBzdHJpbmc7XG4gIGFycmF5RmllbGROYW1lOiBrZXlvZiBEO1xuICB0b3RhbEZpZWxkTmFtZT86IGtleW9mIEQ7XG4gIGluc2VydEZpbHRlckZuPzogKGRhdGE6IFQpID0+IGJvb2xlYW47XG4gIHNvcnRGbj86IChhOiBULCBiOiBUKSA9PiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YWJsZVdhdGNoUXVlcnlEZXNjcmlwdGlvbjxURGF0YSwgVEVudGl0eUNsYXNzID0gYW55LCBUVmFyaWFibGVzID0gRW1wdHlPYmplY3Q+IGV4dGVuZHMgUHVyZVF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzLCBURGF0YT4ge1xuICBpZD86IHN0cmluZztcbiAgcXVlcnk6IERvY3VtZW50Tm9kZSB8IFR5cGVkRG9jdW1lbnROb2RlPFREYXRhLCBUVmFyaWFibGVzPjtcbiAgcXVlcnlSZWY6IFF1ZXJ5UmVmPFREYXRhLCBUVmFyaWFibGVzPjtcbiAgdmFyaWFibGVzOiBUVmFyaWFibGVzO1xuICBhcnJheUZpZWxkTmFtZToga2V5b2YgVERhdGE7XG4gIHRvdGFsRmllbGROYW1lPzoga2V5b2YgVERhdGE7XG4gIGluc2VydEZpbHRlckZuPzogKGRhdGE6IFRFbnRpdHlDbGFzcykgPT4gYm9vbGVhbjtcbiAgc29ydEZuPzogKGE6IFRFbnRpdHlDbGFzcywgYjogVEVudGl0eUNsYXNzKSA9PiBudW1iZXI7XG4gIGNvdW50ZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMge1xuICBxdWVyeT86IERvY3VtZW50Tm9kZTtcbiAgcXVlcmllcz86IERvY3VtZW50Tm9kZVtdO1xuICBxdWVyeU5hbWU/OiBzdHJpbmc7XG4gIHF1ZXJ5TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnMge1xuICBwcm9kdWN0aW9uPzogYm9vbGVhbjtcbn1cblxuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlR3JhcGhxbFNlcnZpY2U8VCA9IGFueSwgRiA9IGFueSwgSUQgPSBhbnksIFMgPSB2b2lkPiBleHRlbmRzIFN0YXJ0YWJsZVNlcnZpY2U8Uz4ge1xuICBwcm90ZWN0ZWQgX2xvZ1ByZWZpeDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX211dGFibGVXYXRjaFF1ZXJpZXM6IE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248YW55PltdID0gW107XG5cbiAgLy8gTWF4IHVwZGF0ZWQgcXVlcmllcywgZm9yIHRoaXMgZW50aXR5LlxuICAvLyAtIENhbiBiZSBvdmVycmlkZSBieSBzdWJjbGFzc2VzIChpbiBjb25zdHJ1Y3RvcilcbiAgLy8gLSBVc2UgdmFsdWUgLTEgZm9yIG5vIG1heCBzaXplXG4gIC8vIC0gRGVmYXVsdCB2YWx1ZSB0byAzLCBiZWNhdXNlIGl0IHVzdWFsbHkgZW5vdWdoIChlLmcuIE9wZXJhdGlvblNlcnZpY2UgYW5kIExhbmRpbmdTZXJ2aWNlIG5lZWQgYXQgbGVhc3QgMilcbiAgcHJvdGVjdGVkIF9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQgPSAzO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgb3B0aW9ucz86IEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCk7XG5cbiAgICAvLyBmb3IgREVWIG9ubHlcbiAgICB0aGlzLl9kZWJ1ZyA9IHRvQm9vbGVhbihvcHRpb25zICYmICFvcHRpb25zLnByb2R1Y3Rpb24sICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uKTtcbiAgICB0aGlzLl9sb2dQcmVmaXggPSBgW2Jhc2UtZ3JhcGhxbC1zZXJ2aWNlXSBgO1xuICB9XG5cbiAgbXV0YWJsZVdhdGNoUXVlcnk8RCwgViA9IEVtcHR5T2JqZWN0PihvcHRzOiBNdXRhYmxlV2F0Y2hRdWVyeU9wdGlvbnM8RCwgVCwgVj4pOiBPYnNlcnZhYmxlPEQ+IHtcbiAgICBvcHRzLmZldGNoUG9saWN5ID0gb3B0cy5mZXRjaFBvbGljeSB8fCB0aGlzLmdyYXBocWwuZGVmYXVsdEZldGNoUG9saWN5O1xuXG4gICAgLy8gU3RhbmRhcmQgcXVlcnkgKG5vIGNhY2hlKVxuICAgIGlmIChvcHRzLmZldGNoUG9saWN5ID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncmFwaHFsLndhdGNoUXVlcnkob3B0cyk7XG4gICAgfVxuXG4gICAgLy8gTm8gYXJyYXlGaWVsZE5hbWVcbiAgICBpZiAoIW9wdHMuYXJyYXlGaWVsZE5hbWUpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArIFwizIBNaXNzaW5nICdvcHRzLmFycmF5RmllbGROYW1lJyA6IHVuYWJsZSB0byBjcmVhdGUgYSBtdXRhYmxlIHdhdGNoIHF1ZXJ5XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC53YXRjaFF1ZXJ5KG9wdHMpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgcXVlcnkgaWRcbiAgICBjb25zdCBxdWVyeUlkID0gdGhpcy5jb21wdXRlTXV0YWJsZVdhdGNoUXVlcnlJZChvcHRzKTtcbiAgICBjb25zdCBleGFjdE1hdGNoUXVlcmllcyA9IHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuZmlsdGVyKChxKSA9PiBxLmlkID09PSBxdWVyeUlkKTtcblxuICAgIGxldCBtdXRhYmxlUXVlcnk6IE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248RCwgVCwgVj47XG4gICAgbGV0IHF1ZXJ5UmVmOiBRdWVyeVJlZjxELCBWPjtcblxuICAgIGlmIChleGFjdE1hdGNoUXVlcmllcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIG11dGFibGVRdWVyeSA9IGV4YWN0TWF0Y2hRdWVyaWVzWzBdIGFzIE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248RCwgVCwgVj47XG4gICAgICBtdXRhYmxlUXVlcnkuY291bnRlciArPSAxO1xuICAgICAgcXVlcnlSZWYgPSBtdXRhYmxlUXVlcnkucXVlcnlSZWY7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYEZpbmQgc2FtZSBtdXRhYmxlIHdhdGNoIHF1ZXJ5IChzYW1lIHZhcmlhYmxlcykgeyR7cXVlcnlJZH19LiBTa2lwIHJlZ2lzdGVyYCk7XG5cbiAgICAgIC8vIFJlZmV0Y2ggaWYgbmVlZCBkYXRhIGZyb20gbmV0d29ya1xuICAgICAgaWYgKG9wdHMuZmV0Y2hQb2xpY3kgPT09ICduZXR3b3JrLW9ubHknIHx8IG9wdHMuZmV0Y2hQb2xpY3kgPT09ICdjYWNoZS1hbmQtbmV0d29yaycpIHtcbiAgICAgICAgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArICcgTXV0YWJsZSBxdWVyeSBhbHJlYWR5IGV4aXN0cywgYW5kIGZldGNoUG9saWN5PScgKyBvcHRzLmZldGNoUG9saWN5ICsgJy4gRm9yY2UgcmVmZXRjaCBxdWVyeS4uLicpO1xuICAgICAgICBxdWVyeVJlZi5yZWZldGNoKG11dGFibGVRdWVyeS52YXJpYWJsZXMpO1xuICAgICAgfVxuICAgICAgLy9pZiAobXV0YWJsZVF1ZXJ5LmNvdW50ZXIgPiAzKSB7XG4gICAgICAvLyAgY29uc29sZS53YXJuKHRoaXMuX2RlYnVnUHJlZml4ICsgJ1RPRE86IGNsZWFuIHByZXZpb3VzIHF1ZXJpZXMgd2l0aCBuYW1lOiAnICsgcXVlcnlOYW1lKTtcbiAgICAgIC8vfVxuICAgIH0gZWxzZSB7XG4gICAgICBxdWVyeVJlZiA9IHRoaXMuZ3JhcGhxbC53YXRjaFF1ZXJ5UmVmPEQsIFY+KG9wdHMpO1xuICAgICAgdGhpcy5yZWdpc3Rlck5ld011dGFibGVXYXRjaFF1ZXJ5KHtcbiAgICAgICAgaWQ6IHF1ZXJ5SWQsXG4gICAgICAgIHF1ZXJ5OiBvcHRzLnF1ZXJ5LFxuICAgICAgICBxdWVyeVJlZixcbiAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgYXJyYXlGaWVsZE5hbWU6IG9wdHMuYXJyYXlGaWVsZE5hbWUsXG4gICAgICAgIHRvdGFsRmllbGROYW1lOiBvcHRzLnRvdGFsRmllbGROYW1lLFxuICAgICAgICBpbnNlcnRGaWx0ZXJGbjogb3B0cy5pbnNlcnRGaWx0ZXJGbixcbiAgICAgICAgc29ydEZuOiBvcHRzLnNvcnRGbixcbiAgICAgICAgY291bnRlcjogMSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdyYXBocWwucXVlcnlSZWZWYWx1ZXNDaGFuZ2VzKHF1ZXJ5UmVmLCBvcHRzKS5waXBlKFxuICAgICAgLy8gRklYTUU6IGZpbmQgd2h5IHNvbWV0aW1lcyBkYXRhIGlzIGFuIG9iamVjdCwgYW5kIG5vdCBhbmQgYXJyYXlcbiAgICAgIGZpbHRlcigocmVzKSA9PiBBcnJheS5pc0FycmF5KHJlc1tvcHRzLmFycmF5RmllbGROYW1lXSkpXG4gICAgKTtcbiAgfVxuXG4gIGluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhcbiAgICBjYWNoZTogQXBvbGxvQ2FjaGU8YW55PixcbiAgICBvcHRzOiBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMgJiB7XG4gICAgICBkYXRhOiBUW10gfCBUO1xuICAgIH1cbiAgKSB7XG4gICAgY29uc3QgcXVlcmllcyA9IHRoaXMuZmluZE11dGFibGVXYXRjaFF1ZXJpZXMob3B0cyk7XG4gICAgaWYgKCFxdWVyaWVzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgcXVlcmllcy5mb3JFYWNoKChxdWVyeSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0cy5kYXRhKSkge1xuICAgICAgICAvLyBGaWx0ZXIgdmFsdWVzLCBpZiBhIGZpbHRlciBmdW5jdGlvbiBleGlzdHNcbiAgICAgICAgY29uc3QgZGF0YSA9IHF1ZXJ5Lmluc2VydEZpbHRlckZuID8gb3B0cy5kYXRhLmZpbHRlcigoZCkgPT4gcXVlcnkuaW5zZXJ0RmlsdGVyRm4oZCkpIDogb3B0cy5kYXRhO1xuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRhdGEpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbYmFzZS1kYXRhLXNlcnZpY2VdIEluc2VydGluZyBkYXRhIGludG8gd2F0Y2hpbmcgcXVlcnk6IGAsIHF1ZXJ5LmlkKTtcbiAgICAgICAgICB0aGlzLmdyYXBocWwuYWRkTWFueVRvUXVlcnlDYWNoZShjYWNoZSwge1xuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LnF1ZXJ5LFxuICAgICAgICAgICAgdmFyaWFibGVzOiBxdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgdG90YWxGaWVsZE5hbWU6IHF1ZXJ5LnRvdGFsRmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICAgIHNvcnRGbjogcXVlcnkuc29ydEZuLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRmlsdGVyIHZhbHVlLCBpZiBhIGZpbHRlciBmdW5jdGlvbiBleGlzdHNcbiAgICAgIGVsc2UgaWYgKCFxdWVyeS5pbnNlcnRGaWx0ZXJGbiB8fCBxdWVyeS5pbnNlcnRGaWx0ZXJGbihvcHRzLmRhdGEpKSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2Jhc2UtZGF0YS1zZXJ2aWNlXSBJbnNlcnRpbmcgZGF0YSBpbnRvIHdhdGNoaW5nIHF1ZXJ5OiBgLCBxdWVyeS5pZCk7XG4gICAgICAgIHRoaXMuZ3JhcGhxbC5pbnNlcnRJbnRvUXVlcnlDYWNoZShjYWNoZSwge1xuICAgICAgICAgIHF1ZXJ5OiBxdWVyeS5xdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHF1ZXJ5LnZhcmlhYmxlcyxcbiAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgIHRvdGFsRmllbGROYW1lOiBxdWVyeS50b3RhbEZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgc29ydEZuOiBxdWVyeS5zb3J0Rm4sXG4gICAgICAgICAgZGF0YTogb3B0cy5kYXRhLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZUZyb21NdXRhYmxlQ2FjaGVkUXVlcmllc0J5SWRzKFxuICAgIGNhY2hlOiBBcG9sbG9DYWNoZTxhbnk+LFxuICAgIG9wdHM6IEZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzT3B0aW9ucyAmIHtcbiAgICAgIGlkczogSUQgfCBJRFtdO1xuICAgIH1cbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5maW5kTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzKTtcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zb2xlLmRlYnVnKGBbYmFzZS1kYXRhLXNlcnZpY2VdIFJlbW92aW5nIGRhdGEgZnJvbSB3YXRjaGluZyBxdWVyaWVzOiBgLCBxdWVyaWVzKTtcbiAgICByZXR1cm4gKFxuICAgICAgcXVlcmllc1xuICAgICAgICAubWFwKChxdWVyeSkgPT4ge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdHMuaWRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC5yZW1vdmVGcm9tQ2FjaGVkUXVlcnlCeUlkcyhjYWNoZSwge1xuICAgICAgICAgICAgICBxdWVyeTogcXVlcnkucXVlcnksXG4gICAgICAgICAgICAgIHZhcmlhYmxlczogcXVlcnkudmFyaWFibGVzLFxuICAgICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICB0b3RhbEZpZWxkTmFtZTogcXVlcnkudG90YWxGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICBpZHM6IG9wdHMuaWRzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyYXBocWwucmVtb3ZlRnJvbUNhY2hlZFF1ZXJ5QnlJZChjYWNoZSwge1xuICAgICAgICAgICAgICBxdWVyeTogcXVlcnkucXVlcnksXG4gICAgICAgICAgICAgIHZhcmlhYmxlczogcXVlcnkudmFyaWFibGVzLFxuICAgICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICB0b3RhbEZpZWxkTmFtZTogcXVlcnkudG90YWxGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICBpZHM6IG9wdHMuaWRzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC8vIFN1bVxuICAgICAgICAucmVkdWNlKChyZXMsIGNvdW50KSA9PiByZXMgKyBjb3VudCwgMClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVmZXRjaE11dGFibGVXYXRjaFF1ZXJpZXMob3B0czogRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zICYgeyB2YXJpYWJsZXM/OiBhbnkgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFJldHJpZXZlIHF1ZXJpZXMgdG8gcmVmZXRjaFxuICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLmZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHMpO1xuXG4gICAgLy8gU2tpcCBpZiBub3RoaW5nIHRvIHJlZmV0Y2hcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHF1ZXJpZXMubWFwKChxdWVyeSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgUmVmZXRjaGluZyBtdXRhYmxlIHdhdGNoIHF1ZXJ5IHske3F1ZXJ5LmlkfX1gKTtcbiAgICAgICAgICByZXR1cm4gcXVlcnkucXVlcnlSZWYucmVmZXRjaCh7IC4uLnF1ZXJ5LnZhcmlhYmxlcywgLi4ub3B0cy52YXJpYWJsZXMgfSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcih0aGlzLl9sb2dQcmVmaXggKyAnRXJyb3Igd2hpbGUgcmVmZXRjaGluZyBtdXRhYmxlIHdhdGNoIHF1ZXJpZXMnLCBlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGNvbXB1dGVNdXRhYmxlV2F0Y2hRdWVyeUlkPEQsIFQsIFYgPSBFbXB0eU9iamVjdD4ob3B0czogTXV0YWJsZVdhdGNoUXVlcnlPcHRpb25zPEQsIFQsIFY+KSB7XG4gICAgY29uc3QgcXVlcnlOYW1lID0gb3B0cy5xdWVyeU5hbWUgfHwgQ3J5cHRvU2VydmljZS5zaGEyNTYoSlNPTi5zdHJpbmdpZnkob3B0cy5xdWVyeSkpLnN1YnN0cmluZygwLCA4KTtcbiAgICBjb25zdCB2YXJpYWJsZXNLZXkgPSAob3B0cy52YXJpYWJsZXMgJiYgQ3J5cHRvU2VydmljZS5zaGEyNTYoSlNPTi5zdHJpbmdpZnkob3B0cy52YXJpYWJsZXMpKS5zdWJzdHJpbmcoMCwgOCkpIHx8ICcnO1xuICAgIHJldHVybiBbcXVlcnlOYW1lLCBvcHRzLmFycmF5RmllbGROYW1lLCB2YXJpYWJsZXNLZXldLmpvaW4oJ3wnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5kTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzOiBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMpOiBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPGFueT5bXSB7XG4gICAgLy8gU2VhcmNoIGJ5IHF1ZXJ5TmFtZVxuICAgIGlmIChvcHRzLnF1ZXJ5TmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuZmlsdGVyKChxKSA9PiBxLmlkLnN0YXJ0c1dpdGgob3B0cy5xdWVyeU5hbWUgKyAnfCcpKTtcbiAgICB9XG4gICAgaWYgKG9wdHMucXVlcnlOYW1lcykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgb3B0cy5xdWVyeU5hbWVzXG4gICAgICAgICAgLm1hcCgocXVlcnlOYW1lKSA9PiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmZpbHRlcigocSkgPT4gcS5pZC5zdGFydHNXaXRoKHF1ZXJ5TmFtZSArICd8JykpKVxuICAgICAgICAgIC8vIGZsYXRNYXBcbiAgICAgICAgICAucmVkdWNlKChyZXMsIGFycmF5KSA9PiByZXMuY29uY2F0KC4uLmFycmF5KSwgW10pXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFNlYXJjaCBieSBxdWVyeVxuICAgIGlmIChvcHRzLnF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5maWx0ZXIoKHEpID0+IHEucXVlcnkgPT09IG9wdHMucXVlcnkpO1xuICAgIH1cbiAgICBpZiAob3B0cy5xdWVyaWVzKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBvcHRzLnF1ZXJpZXNcbiAgICAgICAgICAuZmlsdGVyKGlzTm90TmlsKVxuICAgICAgICAgIC5tYXAoKHF1ZXJ5KSA9PiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmZpbHRlcigocSkgPT4gcS5xdWVyeSA9PT0gcXVlcnkpKVxuICAgICAgICAgIC8vIGZsYXRNYXBcbiAgICAgICAgICAucmVkdWNlKChyZXMsIGFycmF5KSA9PiByZXMuY29uY2F0KC4uLmFycmF5KSwgW10pXG4gICAgICApO1xuICAgIH1cbiAgICB0aHJvdyBFcnJvcignSW52YWxpZCBvcHRpb25zOiBvbmx5IG9uZSBwcm9wZXJ0eSBtdXN0IGJlIHNldCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyTmV3TXV0YWJsZVdhdGNoUXVlcnkobXV0YWJsZVF1ZXJ5OiBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPGFueT4pIHtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFJlZ2lzdGVyIG5ldyBtdXRhYmxlIHdhdGNoIHF1ZXJ5IHske211dGFibGVRdWVyeS5pZH19YCk7XG5cbiAgICAvLyBJZiBleGNlZWQgdGhlIG1heCBzaXplIG9mIG11dGFibGUgcXVlcmllczogcmVtb3ZlIHNvbWVcbiAgICBpZiAodGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllc01heENvdW50ID4gMCAmJiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmxlbmd0aCA+PSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQpIHtcbiAgICAgIGNvbnN0IHJlbW92ZWRXYXRjaFF1ZXJpZXMgPSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLnNwbGljZSgwLCAxICsgdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5sZW5ndGggLSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQpO1xuXG4gICAgICAvLyBXYXJuLCBhcyBpdCBzaG91bGRuJ3QgYmUgaGFwcGVuIG9mdGVuLCB3aGVuIG1heCBpcyBjb3JyZWN0bHkgc2V0XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIHRoaXMuX2xvZ1ByZWZpeCArIGBSZW1vdmluZyBvbGRlciBtdXRhYmxlIHdhdGNoaW5nIHF1ZXJpZXMgKHN0YWNrIGV4Y2VlZCBtYXggb2YgJHt0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnR9KTogYCxcbiAgICAgICAgcmVtb3ZlZFdhdGNoUXVlcmllcy5tYXAoKHEpID0+IHEuaWQpXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgc29ydCBmdW5jdGlvbiAodG8gYmUgdXNlZCBpbiBpbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJ5KCkpXG4gICAgaWYgKCFtdXRhYmxlUXVlcnkuc29ydEZuICYmIG11dGFibGVRdWVyeS52YXJpYWJsZXMgJiYgbXV0YWJsZVF1ZXJ5LnZhcmlhYmxlcy5zb3J0QnkpIHtcbiAgICAgIG11dGFibGVRdWVyeS5zb3J0Rm4gPVxuICAgICAgICBtdXRhYmxlUXVlcnkudmFyaWFibGVzICYmXG4gICAgICAgIG11dGFibGVRdWVyeS52YXJpYWJsZXMuc29ydEJ5ICYmXG4gICAgICAgIEVudGl0eVV0aWxzLnNvcnRDb21wYXJhdG9yKG11dGFibGVRdWVyeS52YXJpYWJsZXMuc29ydEJ5LCBtdXRhYmxlUXVlcnkudmFyaWFibGVzLnNvcnREaXJlY3Rpb24gfHwgJ2FzYycpO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aGUgbmV3IG11dGFibGUgcXVlcnkgdG8gYXJyYXlcbiAgICB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLnB1c2gobXV0YWJsZVF1ZXJ5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5kUmVmZXRjaFF1ZXJpZXMob3B0czogRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zKTogSW50ZXJuYWxSZWZldGNoUXVlcmllc0luY2x1ZGUge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHMpXG4gICAgICAgIC8vIFdvcmthcm91bmQsIHRvIG1ha2UgcmVmZXRjaCBxdWVyaWVzIHdvcmtzOiB0cmFuc2Zvcm0gaW50byBhIHNpbXBsZSB7cXVlcnksIHZhcmlhYmxlc31cbiAgICAgICAgLm1hcCgoeyBxdWVyeSwgdmFyaWFibGVzIH0pID0+ICh7IHF1ZXJ5LCB2YXJpYWJsZXMgfSkpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uU3RhcnQoKTogUHJvbWlzZTxTPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsIGFzIFMpO1xuICB9XG59XG4iXX0=
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUE4Q3hDLE1BQU0sT0FBTyx5QkFBeUI7SUFDcEMsVUFBVSxDQUFXO0NBQ3RCO0FBR0Qsa0VBQWtFO0FBQ2xFLDZEQUE2RDtBQUM3RCxNQUFNLE9BQWdCLGtCQUF5RCxTQUFRLGdCQUFtQjtJQVc1RjtJQVZGLFVBQVUsQ0FBUztJQUNuQixvQkFBb0IsR0FBd0MsRUFBRSxDQUFDO0lBRXpFLHdDQUF3QztJQUN4QyxtREFBbUQ7SUFDbkQsaUNBQWlDO0lBQ2pDLDZHQUE2RztJQUNuRyw0QkFBNEIsR0FBRyxDQUFDLENBQUM7SUFFM0MsWUFDWSxPQUF1QixFQUNyQixPQUFtQztRQUUvQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFITCxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUtqQyxlQUFlO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFD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Q0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLENBQUM7UUFDN0csQ0FBQztRQUVELHFDQUFxQztRQUNyQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxJQUFvQztRQUMvRCxPQUFPLENBQ0wsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQztZQUNoQyx3RkFBd0Y7YUFDdkYsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVTLFNBQVM7UUFDakIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQVMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7d0dBeFBtQixrQkFBa0I7NEZBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFIdkMsU0FBUzs7MEJBZUwsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBocWxTZXJ2aWNlLCBNdXRhdGVRdWVyeU9wdGlvbnMsIFdhdGNoUXVlcnlPcHRpb25zIH0gZnJvbSAnLi4vZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGZXRjaFJlc3VsdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2xpbmsvY29yZSc7XG5pbXBvcnQgeyBFbnRpdHlVdGlscyB9IGZyb20gJy4vbW9kZWwvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEFwb2xsb0NhY2hlLCBJbnRlcm5hbFJlZmV0Y2hRdWVyaWVzSW5jbHVkZSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgaXNOb3RFbXB0eUFycmF5LCBpc05vdE5pbCwgdG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVyeVJlZiB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IFB1cmVRdWVyeU9wdGlvbnMgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgU3RhcnRhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zdGFydGFibGUtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQgeyBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJ0BncmFwaHFsLXR5cGVkLWRvY3VtZW50LW5vZGUvY29yZSc7XG5pbXBvcnQgeyBDcnlwdG9TZXJ2aWNlIH0gZnJvbSAnLi9jcnlwdG8uc2VydmljZSc7XG5pbXBvcnQgeyBFbXB0eU9iamVjdCB9IGZyb20gJy4uL2dyYXBocWwvZ3JhcGhxbC51dGlscyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlWYXJpYWJsZXM8RiA9IGFueT4gZXh0ZW5kcyBQYXJ0aWFsPFBhZ2U+IHtcbiAgZmlsdGVyPzogRjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE11dGF0ZVF1ZXJ5V2l0aENhY2hlVXBkYXRlT3B0aW9uczxUID0gYW55LCBWID0gRW1wdHlPYmplY3Q+IGV4dGVuZHMgTXV0YXRlUXVlcnlPcHRpb25zPFQsIFY+IHtcbiAgY2FjaGVJbnNlcnQ/OiB7XG4gICAgcXVlcnk6IGFueTtcbiAgICBmZXRjaERhdGE6ICh2YXJpYWJsZXM6IFYsIG11dGF0aW9uUmVzdWx0OiBGZXRjaFJlc3VsdDxUPikgPT4gYW55O1xuICB9W107XG5cbiAgY2FjaGVSZW1vdmU/OiB7XG4gICAgcXVlcnk6IGFueTtcbiAgICBmZXRjaElkczogKHZhcmlhYmxlczogVikgPT4gbnVtYmVyIHwgbnVtYmVyW107XG4gIH1bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdXRhYmxlV2F0Y2hRdWVyeU9wdGlvbnM8RCwgVCA9IGFueSwgViA9IEVtcHR5T2JqZWN0PiBleHRlbmRzIFdhdGNoUXVlcnlPcHRpb25zPFY+IHtcbiAgcXVlcnlOYW1lOiBzdHJpbmc7XG4gIGFycmF5RmllbGROYW1lOiBrZXlvZiBEO1xuICB0b3RhbEZpZWxkTmFtZT86IGtleW9mIEQ7XG4gIGluc2VydEZpbHRlckZuPzogKGRhdGE6IFQpID0+IGJvb2xlYW47XG4gIHNvcnRGbj86IChhOiBULCBiOiBUKSA9PiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YWJsZVdhdGNoUXVlcnlEZXNjcmlwdGlvbjxURGF0YSwgVEVudGl0eUNsYXNzID0gYW55LCBUVmFyaWFibGVzID0gRW1wdHlPYmplY3Q+IGV4dGVuZHMgUHVyZVF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzLCBURGF0YT4ge1xuICBpZD86IHN0cmluZztcbiAgcXVlcnk6IERvY3VtZW50Tm9kZSB8IFR5cGVkRG9jdW1lbnROb2RlPFREYXRhLCBUVmFyaWFibGVzPjtcbiAgcXVlcnlSZWY6IFF1ZXJ5UmVmPFREYXRhLCBUVmFyaWFibGVzPjtcbiAgdmFyaWFibGVzOiBUVmFyaWFibGVzO1xuICBhcnJheUZpZWxkTmFtZToga2V5b2YgVERhdGE7XG4gIHRvdGFsRmllbGROYW1lPzoga2V5b2YgVERhdGE7XG4gIGluc2VydEZpbHRlckZuPzogKGRhdGE6IFRFbnRpdHlDbGFzcykgPT4gYm9vbGVhbjtcbiAgc29ydEZuPzogKGE6IFRFbnRpdHlDbGFzcywgYjogVEVudGl0eUNsYXNzKSA9PiBudW1iZXI7XG4gIGNvdW50ZXI6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMge1xuICBxdWVyeT86IERvY3VtZW50Tm9kZTtcbiAgcXVlcmllcz86IERvY3VtZW50Tm9kZVtdO1xuICBxdWVyeU5hbWU/OiBzdHJpbmc7XG4gIHF1ZXJ5TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnMge1xuICBwcm9kdWN0aW9uPzogYm9vbGVhbjtcbn1cblxuQERpcmVjdGl2ZSgpXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1jbGFzcy1zdWZmaXhcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlR3JhcGhxbFNlcnZpY2U8VCA9IGFueSwgRiA9IGFueSwgSUQgPSBhbnksIFMgPSB2b2lkPiBleHRlbmRzIFN0YXJ0YWJsZVNlcnZpY2U8Uz4ge1xuICBwcm90ZWN0ZWQgX2xvZ1ByZWZpeDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX211dGFibGVXYXRjaFF1ZXJpZXM6IE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248YW55PltdID0gW107XG5cbiAgLy8gTWF4IHVwZGF0ZWQgcXVlcmllcywgZm9yIHRoaXMgZW50aXR5LlxuICAvLyAtIENhbiBiZSBvdmVycmlkZSBieSBzdWJjbGFzc2VzIChpbiBjb25zdHJ1Y3RvcilcbiAgLy8gLSBVc2UgdmFsdWUgLTEgZm9yIG5vIG1heCBzaXplXG4gIC8vIC0gRGVmYXVsdCB2YWx1ZSB0byAzLCBiZWNhdXNlIGl0IHVzdWFsbHkgZW5vdWdoIChlLmcuIE9wZXJhdGlvblNlcnZpY2UgYW5kIExhbmRpbmdTZXJ2aWNlIG5lZWQgYXQgbGVhc3QgMilcbiAgcHJvdGVjdGVkIF9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQgPSAzO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZ3JhcGhxbDogR3JhcGhxbFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgb3B0aW9ucz86IEJhc2VHcmFwaHFsU2VydmljZU9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCk7XG5cbiAgICAvLyBmb3IgREVWIG9ubHlcbiAgICB0aGlzLl9kZWJ1ZyA9IHRvQm9vbGVhbihvcHRpb25zICYmICFvcHRpb25zLnByb2R1Y3Rpb24sICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uKTtcbiAgICB0aGlzLl9sb2dQcmVmaXggPSBgW2Jhc2UtZ3JhcGhxbC1zZXJ2aWNlXSBgO1xuICB9XG5cbiAgbXV0YWJsZVdhdGNoUXVlcnk8RCwgViA9IEVtcHR5T2JqZWN0PihvcHRzOiBNdXRhYmxlV2F0Y2hRdWVyeU9wdGlvbnM8RCwgVCwgVj4pOiBPYnNlcnZhYmxlPEQ+IHtcbiAgICBvcHRzLmZldGNoUG9saWN5ID0gb3B0cy5mZXRjaFBvbGljeSB8fCB0aGlzLmdyYXBocWwuZGVmYXVsdEZldGNoUG9saWN5O1xuXG4gICAgLy8gU3RhbmRhcmQgcXVlcnkgKG5vIGNhY2hlKVxuICAgIGlmIChvcHRzLmZldGNoUG9saWN5ID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5ncmFwaHFsLndhdGNoUXVlcnkob3B0cyk7XG4gICAgfVxuXG4gICAgLy8gTm8gYXJyYXlGaWVsZE5hbWVcbiAgICBpZiAoIW9wdHMuYXJyYXlGaWVsZE5hbWUpIHtcbiAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArIFwizIBNaXNzaW5nICdvcHRzLmFycmF5RmllbGROYW1lJyA6IHVuYWJsZSB0byBjcmVhdGUgYSBtdXRhYmxlIHdhdGNoIHF1ZXJ5XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC53YXRjaFF1ZXJ5KG9wdHMpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgcXVlcnkgaWRcbiAgICBjb25zdCBxdWVyeUlkID0gdGhpcy5jb21wdXRlTXV0YWJsZVdhdGNoUXVlcnlJZChvcHRzKTtcbiAgICBjb25zdCBleGFjdE1hdGNoUXVlcmllcyA9IHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuZmlsdGVyKChxKSA9PiBxLmlkID09PSBxdWVyeUlkKTtcblxuICAgIGxldCBtdXRhYmxlUXVlcnk6IE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248RCwgVCwgVj47XG4gICAgbGV0IHF1ZXJ5UmVmOiBRdWVyeVJlZjxELCBWPjtcblxuICAgIGlmIChleGFjdE1hdGNoUXVlcmllcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIG11dGFibGVRdWVyeSA9IGV4YWN0TWF0Y2hRdWVyaWVzWzBdIGFzIE11dGFibGVXYXRjaFF1ZXJ5RGVzY3JpcHRpb248RCwgVCwgVj47XG4gICAgICBtdXRhYmxlUXVlcnkuY291bnRlciArPSAxO1xuICAgICAgcXVlcnlSZWYgPSBtdXRhYmxlUXVlcnkucXVlcnlSZWY7XG4gICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYEZpbmQgc2FtZSBtdXRhYmxlIHdhdGNoIHF1ZXJ5IChzYW1lIHZhcmlhYmxlcykgeyR7cXVlcnlJZH19LiBTa2lwIHJlZ2lzdGVyYCk7XG5cbiAgICAgIC8vIFJlZmV0Y2ggaWYgbmVlZCBkYXRhIGZyb20gbmV0d29ya1xuICAgICAgaWYgKG9wdHMuZmV0Y2hQb2xpY3kgPT09ICduZXR3b3JrLW9ubHknIHx8IG9wdHMuZmV0Y2hQb2xpY3kgPT09ICdjYWNoZS1hbmQtbmV0d29yaycpIHtcbiAgICAgICAgY29uc29sZS53YXJuKHRoaXMuX2xvZ1ByZWZpeCArICcgTXV0YWJsZSBxdWVyeSBhbHJlYWR5IGV4aXN0cywgYW5kIGZldGNoUG9saWN5PScgKyBvcHRzLmZldGNoUG9saWN5ICsgJy4gRm9yY2UgcmVmZXRjaCBxdWVyeS4uLicpO1xuICAgICAgICBxdWVyeVJlZi5yZWZldGNoKG11dGFibGVRdWVyeS52YXJpYWJsZXMpO1xuICAgICAgfVxuICAgICAgLy9pZiAobXV0YWJsZVF1ZXJ5LmNvdW50ZXIgPiAzKSB7XG4gICAgICAvLyAgY29uc29sZS53YXJuKHRoaXMuX2RlYnVnUHJlZml4ICsgJ1RPRE86IGNsZWFuIHByZXZpb3VzIHF1ZXJpZXMgd2l0aCBuYW1lOiAnICsgcXVlcnlOYW1lKTtcbiAgICAgIC8vfVxuICAgIH0gZWxzZSB7XG4gICAgICBxdWVyeVJlZiA9IHRoaXMuZ3JhcGhxbC53YXRjaFF1ZXJ5UmVmPEQsIFY+KG9wdHMpO1xuICAgICAgdGhpcy5yZWdpc3Rlck5ld011dGFibGVXYXRjaFF1ZXJ5KHtcbiAgICAgICAgaWQ6IHF1ZXJ5SWQsXG4gICAgICAgIHF1ZXJ5OiBvcHRzLnF1ZXJ5LFxuICAgICAgICBxdWVyeVJlZixcbiAgICAgICAgdmFyaWFibGVzOiBvcHRzLnZhcmlhYmxlcyxcbiAgICAgICAgYXJyYXlGaWVsZE5hbWU6IG9wdHMuYXJyYXlGaWVsZE5hbWUsXG4gICAgICAgIHRvdGFsRmllbGROYW1lOiBvcHRzLnRvdGFsRmllbGROYW1lLFxuICAgICAgICBpbnNlcnRGaWx0ZXJGbjogb3B0cy5pbnNlcnRGaWx0ZXJGbixcbiAgICAgICAgc29ydEZuOiBvcHRzLnNvcnRGbixcbiAgICAgICAgY291bnRlcjogMSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdyYXBocWwucXVlcnlSZWZWYWx1ZXNDaGFuZ2VzKHF1ZXJ5UmVmLCBvcHRzKS5waXBlKFxuICAgICAgLy8gRklYTUU6IGZpbmQgd2h5IHNvbWV0aW1lcyBkYXRhIGlzIGFuIG9iamVjdCwgYW5kIG5vdCBhbmQgYXJyYXlcbiAgICAgIGZpbHRlcigocmVzKSA9PiBBcnJheS5pc0FycmF5KHJlc1tvcHRzLmFycmF5RmllbGROYW1lXSkpXG4gICAgKTtcbiAgfVxuXG4gIGluc2VydEludG9NdXRhYmxlQ2FjaGVkUXVlcmllcyhcbiAgICBjYWNoZTogQXBvbGxvQ2FjaGU8YW55PixcbiAgICBvcHRzOiBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMgJiB7XG4gICAgICBkYXRhOiBUW10gfCBUO1xuICAgIH1cbiAgKSB7XG4gICAgY29uc3QgcXVlcmllcyA9IHRoaXMuZmluZE11dGFibGVXYXRjaFF1ZXJpZXMob3B0cyk7XG4gICAgaWYgKCFxdWVyaWVzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgcXVlcmllcy5mb3JFYWNoKChxdWVyeSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3B0cy5kYXRhKSkge1xuICAgICAgICAvLyBGaWx0ZXIgdmFsdWVzLCBpZiBhIGZpbHRlciBmdW5jdGlvbiBleGlzdHNcbiAgICAgICAgY29uc3QgZGF0YSA9IHF1ZXJ5Lmluc2VydEZpbHRlckZuID8gb3B0cy5kYXRhLmZpbHRlcigoZCkgPT4gcXVlcnkuaW5zZXJ0RmlsdGVyRm4oZCkpIDogb3B0cy5kYXRhO1xuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRhdGEpKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbYmFzZS1kYXRhLXNlcnZpY2VdIEluc2VydGluZyBkYXRhIGludG8gd2F0Y2hpbmcgcXVlcnk6IGAsIHF1ZXJ5LmlkKTtcbiAgICAgICAgICB0aGlzLmdyYXBocWwuYWRkTWFueVRvUXVlcnlDYWNoZShjYWNoZSwge1xuICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LnF1ZXJ5LFxuICAgICAgICAgICAgdmFyaWFibGVzOiBxdWVyeS52YXJpYWJsZXMsXG4gICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgdG90YWxGaWVsZE5hbWU6IHF1ZXJ5LnRvdGFsRmllbGROYW1lIGFzIHN0cmluZyxcbiAgICAgICAgICAgIHNvcnRGbjogcXVlcnkuc29ydEZuLFxuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRmlsdGVyIHZhbHVlLCBpZiBhIGZpbHRlciBmdW5jdGlvbiBleGlzdHNcbiAgICAgIGVsc2UgaWYgKCFxdWVyeS5pbnNlcnRGaWx0ZXJGbiB8fCBxdWVyeS5pbnNlcnRGaWx0ZXJGbihvcHRzLmRhdGEpKSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2Jhc2UtZGF0YS1zZXJ2aWNlXSBJbnNlcnRpbmcgZGF0YSBpbnRvIHdhdGNoaW5nIHF1ZXJ5OiBgLCBxdWVyeS5pZCk7XG4gICAgICAgIHRoaXMuZ3JhcGhxbC5pbnNlcnRJbnRvUXVlcnlDYWNoZShjYWNoZSwge1xuICAgICAgICAgIHF1ZXJ5OiBxdWVyeS5xdWVyeSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHF1ZXJ5LnZhcmlhYmxlcyxcbiAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgIHRvdGFsRmllbGROYW1lOiBxdWVyeS50b3RhbEZpZWxkTmFtZSBhcyBzdHJpbmcsXG4gICAgICAgICAgc29ydEZuOiBxdWVyeS5zb3J0Rm4sXG4gICAgICAgICAgZGF0YTogb3B0cy5kYXRhLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZUZyb21NdXRhYmxlQ2FjaGVkUXVlcmllc0J5SWRzKFxuICAgIGNhY2hlOiBBcG9sbG9DYWNoZTxhbnk+LFxuICAgIG9wdHM6IEZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzT3B0aW9ucyAmIHtcbiAgICAgIGlkczogSUQgfCBJRFtdO1xuICAgIH1cbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCBxdWVyaWVzID0gdGhpcy5maW5kTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzKTtcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zb2xlLmRlYnVnKGBbYmFzZS1kYXRhLXNlcnZpY2VdIFJlbW92aW5nIGRhdGEgZnJvbSB3YXRjaGluZyBxdWVyaWVzOiBgLCBxdWVyaWVzKTtcbiAgICByZXR1cm4gKFxuICAgICAgcXVlcmllc1xuICAgICAgICAubWFwKChxdWVyeSkgPT4ge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9wdHMuaWRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhxbC5yZW1vdmVGcm9tQ2FjaGVkUXVlcnlCeUlkcyhjYWNoZSwge1xuICAgICAgICAgICAgICBxdWVyeTogcXVlcnkucXVlcnksXG4gICAgICAgICAgICAgIHZhcmlhYmxlczogcXVlcnkudmFyaWFibGVzLFxuICAgICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICB0b3RhbEZpZWxkTmFtZTogcXVlcnkudG90YWxGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICBpZHM6IG9wdHMuaWRzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyYXBocWwucmVtb3ZlRnJvbUNhY2hlZFF1ZXJ5QnlJZChjYWNoZSwge1xuICAgICAgICAgICAgICBxdWVyeTogcXVlcnkucXVlcnksXG4gICAgICAgICAgICAgIHZhcmlhYmxlczogcXVlcnkudmFyaWFibGVzLFxuICAgICAgICAgICAgICBhcnJheUZpZWxkTmFtZTogcXVlcnkuYXJyYXlGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICB0b3RhbEZpZWxkTmFtZTogcXVlcnkudG90YWxGaWVsZE5hbWUgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICBpZHM6IG9wdHMuaWRzLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC8vIFN1bVxuICAgICAgICAucmVkdWNlKChyZXMsIGNvdW50KSA9PiByZXMgKyBjb3VudCwgMClcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgcmVmZXRjaE11dGFibGVXYXRjaFF1ZXJpZXMob3B0czogRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zICYgeyB2YXJpYWJsZXM/OiBhbnkgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFJldHJpZXZlIHF1ZXJpZXMgdG8gcmVmZXRjaFxuICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLmZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHMpO1xuXG4gICAgLy8gU2tpcCBpZiBub3RoaW5nIHRvIHJlZmV0Y2hcbiAgICBpZiAoIXF1ZXJpZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHF1ZXJpZXMubWFwKChxdWVyeSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1Zyh0aGlzLl9sb2dQcmVmaXggKyBgUmVmZXRjaGluZyBtdXRhYmxlIHdhdGNoIHF1ZXJ5IHske3F1ZXJ5LmlkfX1gKTtcbiAgICAgICAgICByZXR1cm4gcXVlcnkucXVlcnlSZWYucmVmZXRjaCh7IC4uLnF1ZXJ5LnZhcmlhYmxlcywgLi4ub3B0cy52YXJpYWJsZXMgfSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcih0aGlzLl9sb2dQcmVmaXggKyAnRXJyb3Igd2hpbGUgcmVmZXRjaGluZyBtdXRhYmxlIHdhdGNoIHF1ZXJpZXMnLCBlcnIpO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2RzIC0tICovXG5cbiAgcHJvdGVjdGVkIGNvbXB1dGVNdXRhYmxlV2F0Y2hRdWVyeUlkPEQsIFQsIFYgPSBFbXB0eU9iamVjdD4ob3B0czogTXV0YWJsZVdhdGNoUXVlcnlPcHRpb25zPEQsIFQsIFY+KSB7XG4gICAgY29uc3QgcXVlcnlOYW1lID0gb3B0cy5xdWVyeU5hbWUgfHwgQ3J5cHRvU2VydmljZS5zaGEyNTYoSlNPTi5zdHJpbmdpZnkob3B0cy5xdWVyeSkpLnN1YnN0cmluZygwLCA4KTtcbiAgICBjb25zdCB2YXJpYWJsZXNLZXkgPSAob3B0cy52YXJpYWJsZXMgJiYgQ3J5cHRvU2VydmljZS5zaGEyNTYoSlNPTi5zdHJpbmdpZnkob3B0cy52YXJpYWJsZXMpKS5zdWJzdHJpbmcoMCwgOCkpIHx8ICcnO1xuICAgIHJldHVybiBbcXVlcnlOYW1lLCBvcHRzLmFycmF5RmllbGROYW1lLCB2YXJpYWJsZXNLZXldLmpvaW4oJ3wnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5kTXV0YWJsZVdhdGNoUXVlcmllcyhvcHRzOiBGaW5kTXV0YWJsZVdhdGNoUXVlcmllc09wdGlvbnMpOiBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPGFueT5bXSB7XG4gICAgLy8gU2VhcmNoIGJ5IHF1ZXJ5TmFtZVxuICAgIGlmIChvcHRzLnF1ZXJ5TmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX211dGFibGVXYXRjaFF1ZXJpZXMuZmlsdGVyKChxKSA9PiBxLmlkLnN0YXJ0c1dpdGgob3B0cy5xdWVyeU5hbWUgKyAnfCcpKTtcbiAgICB9XG4gICAgaWYgKG9wdHMucXVlcnlOYW1lcykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgb3B0cy5xdWVyeU5hbWVzXG4gICAgICAgICAgLm1hcCgocXVlcnlOYW1lKSA9PiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmZpbHRlcigocSkgPT4gcS5pZC5zdGFydHNXaXRoKHF1ZXJ5TmFtZSArICd8JykpKVxuICAgICAgICAgIC8vIGZsYXRNYXBcbiAgICAgICAgICAucmVkdWNlKChyZXMsIGFycmF5KSA9PiByZXMuY29uY2F0KC4uLmFycmF5KSwgW10pXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFNlYXJjaCBieSBxdWVyeVxuICAgIGlmIChvcHRzLnF1ZXJ5KSB7XG4gICAgICByZXR1cm4gdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5maWx0ZXIoKHEpID0+IHEucXVlcnkgPT09IG9wdHMucXVlcnkpO1xuICAgIH1cbiAgICBpZiAob3B0cy5xdWVyaWVzKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBvcHRzLnF1ZXJpZXNcbiAgICAgICAgICAuZmlsdGVyKGlzTm90TmlsKVxuICAgICAgICAgIC5tYXAoKHF1ZXJ5KSA9PiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmZpbHRlcigocSkgPT4gcS5xdWVyeSA9PT0gcXVlcnkpKVxuICAgICAgICAgIC8vIGZsYXRNYXBcbiAgICAgICAgICAucmVkdWNlKChyZXMsIGFycmF5KSA9PiByZXMuY29uY2F0KC4uLmFycmF5KSwgW10pXG4gICAgICApO1xuICAgIH1cbiAgICB0aHJvdyBFcnJvcignSW52YWxpZCBvcHRpb25zOiBvbmx5IG9uZSBwcm9wZXJ0eSBtdXN0IGJlIHNldCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZ2lzdGVyTmV3TXV0YWJsZVdhdGNoUXVlcnkobXV0YWJsZVF1ZXJ5OiBNdXRhYmxlV2F0Y2hRdWVyeURlc2NyaXB0aW9uPGFueT4pIHtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcodGhpcy5fbG9nUHJlZml4ICsgYFJlZ2lzdGVyIG5ldyBtdXRhYmxlIHdhdGNoIHF1ZXJ5IHske211dGFibGVRdWVyeS5pZH19YCk7XG5cbiAgICAvLyBJZiBleGNlZWQgdGhlIG1heCBzaXplIG9mIG11dGFibGUgcXVlcmllczogcmVtb3ZlIHNvbWVcbiAgICBpZiAodGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllc01heENvdW50ID4gMCAmJiB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLmxlbmd0aCA+PSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQpIHtcbiAgICAgIGNvbnN0IHJlbW92ZWRXYXRjaFF1ZXJpZXMgPSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLnNwbGljZSgwLCAxICsgdGhpcy5fbXV0YWJsZVdhdGNoUXVlcmllcy5sZW5ndGggLSB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnQpO1xuXG4gICAgICAvLyBXYXJuLCBhcyBpdCBzaG91bGRuJ3QgYmUgaGFwcGVuIG9mdGVuLCB3aGVuIG1heCBpcyBjb3JyZWN0bHkgc2V0XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIHRoaXMuX2xvZ1ByZWZpeCArIGBSZW1vdmluZyBvbGRlciBtdXRhYmxlIHdhdGNoaW5nIHF1ZXJpZXMgKHN0YWNrIGV4Y2VlZCBtYXggb2YgJHt0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzTWF4Q291bnR9KTogYCxcbiAgICAgICAgcmVtb3ZlZFdhdGNoUXVlcmllcy5tYXAoKHEpID0+IHEuaWQpXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgc29ydCBmdW5jdGlvbiAodG8gYmUgdXNlZCBpbiBpbnNlcnRJbnRvTXV0YWJsZUNhY2hlZFF1ZXJ5KCkpXG4gICAgaWYgKCFtdXRhYmxlUXVlcnkuc29ydEZuICYmIG11dGFibGVRdWVyeS52YXJpYWJsZXMgJiYgbXV0YWJsZVF1ZXJ5LnZhcmlhYmxlcy5zb3J0QnkpIHtcbiAgICAgIG11dGFibGVRdWVyeS5zb3J0Rm4gPVxuICAgICAgICBtdXRhYmxlUXVlcnkudmFyaWFibGVzICYmXG4gICAgICAgIG11dGFibGVRdWVyeS52YXJpYWJsZXMuc29ydEJ5ICYmXG4gICAgICAgIEVudGl0eVV0aWxzLnNvcnRDb21wYXJhdG9yKG11dGFibGVRdWVyeS52YXJpYWJsZXMuc29ydEJ5LCBtdXRhYmxlUXVlcnkudmFyaWFibGVzLnNvcnREaXJlY3Rpb24gfHwgJ2FzYycpO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aGUgbmV3IG11dGFibGUgcXVlcnkgdG8gYXJyYXlcbiAgICB0aGlzLl9tdXRhYmxlV2F0Y2hRdWVyaWVzLnB1c2gobXV0YWJsZVF1ZXJ5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmaW5kUmVmZXRjaFF1ZXJpZXMob3B0czogRmluZE11dGFibGVXYXRjaFF1ZXJpZXNPcHRpb25zKTogSW50ZXJuYWxSZWZldGNoUXVlcmllc0luY2x1ZGUge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmZpbmRNdXRhYmxlV2F0Y2hRdWVyaWVzKG9wdHMpXG4gICAgICAgIC8vIFdvcmthcm91bmQsIHRvIG1ha2UgcmVmZXRjaCBxdWVyaWVzIHdvcmtzOiB0cmFuc2Zvcm0gaW50byBhIHNpbXBsZSB7cXVlcnksIHZhcmlhYmxlc31cbiAgICAgICAgLm1hcCgoeyBxdWVyeSwgdmFyaWFibGVzIH0pID0+ICh7IHF1ZXJ5LCB2YXJpYWJsZXMgfSkpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBuZ09uU3RhcnQoKTogUHJvbWlzZTxTPiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsIGFzIFMpO1xuICB9XG59XG4iXX0=
|