@microsoft/windows-admin-center-sdk 4.123.0 → 4.232.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/angular/assets/strings/cs-CZ/strings.json +1 -1
- package/angular/assets/strings/de-DE/strings.json +1 -1
- package/angular/assets/strings/es-ES/strings.json +1 -1
- package/angular/assets/strings/fr-FR/strings.json +1 -1
- package/angular/assets/strings/hu-HU/strings.json +1 -1
- package/angular/assets/strings/id-ID/strings.json +1 -1
- package/angular/assets/strings/it-IT/strings.json +1 -1
- package/angular/assets/strings/ja-JP/strings.json +1 -1
- package/angular/assets/strings/ko-KR/strings.json +1 -1
- package/angular/assets/strings/nl-NL/strings.json +1 -1
- package/angular/assets/strings/pl-PL/strings.json +1 -1
- package/angular/assets/strings/pt-BR/strings.json +1 -1
- package/angular/assets/strings/pt-PT/strings.json +1 -1
- package/angular/assets/strings/ru-RU/strings.json +1 -1
- package/angular/assets/strings/strings.json +1 -1
- package/angular/assets/strings/sv-SE/strings.json +1 -1
- package/angular/assets/strings/tr-TR/strings.json +1 -1
- package/angular/assets/strings/zh-CN/strings.json +1 -1
- package/angular/assets/strings/zh-TW/strings.json +1 -1
- package/angular/esm2020/src/controls/accordion/accordion-panel/accordion-panel.component.mjs +36 -12
- package/angular/esm2020/src/controls/actions/containers/action-container.component.mjs +2 -3
- package/angular/esm2020/src/controls/alert-bar/alert-bar.component.mjs +2 -2
- package/angular/esm2020/src/controls/breadcrumb-header/breadcrumb-header.component.mjs +1 -1
- package/angular/esm2020/src/controls/common/base.component.mjs +1 -1
- package/angular/esm2020/src/controls/common/spacer-base.component.mjs +25 -1
- package/angular/esm2020/src/controls/context-menu/context-menu.component.mjs +2 -3
- package/angular/esm2020/src/controls/data-table/data-table.component.mjs +7 -7
- package/angular/esm2020/src/controls/dialog/base-dialog.component.mjs +2 -4
- package/angular/esm2020/src/controls/dialog/confirmation-list-dialog/confirmation-list-dialog.component.mjs +2 -2
- package/angular/esm2020/src/controls/dropdown/dropdown.component.mjs +1 -4
- package/angular/esm2020/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.mjs +59 -0
- package/angular/esm2020/src/controls/form/form-field/array/array-form-field.component.mjs +24 -35
- package/angular/esm2020/src/controls/form/form-field/clock/clock-form-field.component.mjs +10 -7
- package/angular/esm2020/src/controls/form/form-field/form-field-accessibility-manager-base.service.mjs +105 -0
- package/angular/esm2020/src/controls/form/form-field/form-field.component.mjs +1 -1
- package/angular/esm2020/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.mjs +38 -0
- package/angular/esm2020/src/controls/form/form-field/list/list-form-field.component.mjs +56 -38
- package/angular/esm2020/src/controls/form/form-field/number/number-form-field.component.mjs +22 -4
- package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.mjs +54 -0
- package/angular/esm2020/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.mjs +67 -67
- package/angular/esm2020/src/controls/form/form-field/radio-group/classic/radio-group-form-field.component.mjs +5 -5
- package/angular/esm2020/src/controls/form/forms.module.mjs +19 -2
- package/angular/esm2020/src/controls/icon/icon-text/icon-text.component.mjs +6 -6
- package/angular/esm2020/src/controls/icon/layered-icon/status/status-icon.component.mjs +1 -1
- package/angular/esm2020/src/controls/layout/editable-layout.component.mjs +2 -3
- package/angular/esm2020/src/controls/node-credentials-form/node-credentials-form.component.mjs +2 -2
- package/angular/esm2020/src/controls/page-alert-bar/page-alert-bar.component.mjs +4 -4
- package/angular/esm2020/src/controls/property-grid/property-grid.component.mjs +33 -13
- package/angular/esm2020/src/controls/schema/tabbed-form-loader.component.mjs +2 -2
- package/angular/esm2020/src/controls/settings/common-settings/common-settings.component.mjs +5 -5
- package/angular/esm2020/src/controls/settings/settings-form.directive.mjs +3 -7
- package/angular/esm2020/src/controls/settings/settings-form.service.mjs +2 -4
- package/angular/esm2020/src/controls/snap-in-extension/snap-in-extension.component.mjs +1 -1
- package/angular/esm2020/src/controls/split-view/split-view.component.mjs +2 -2
- package/angular/esm2020/src/controls/wizard/models/wizard-step-snap-in-output.mjs +1 -1
- package/angular/esm2020/src/controls/wizard-lite/wizard-navigation-button/wizard-navigation-button.component.mjs +3 -3
- package/angular/esm2020/src/data/extension-broker/snap-in-listener.mjs +80 -0
- package/angular/esm2020/src/data/index.mjs +2 -1
- package/angular/esm2020/src/directives/router/router-link.directive.mjs +2 -2
- package/angular/esm2020/src/directives/svg/svg.directive.mjs +2 -3
- package/angular/esm2020/src/generated/strings.mjs +1 -1
- package/angular/esm2020/src/service/navigation.service.mjs +3 -8
- package/angular/esm2020/src/service/user-alive.service.mjs +2 -4
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs +665 -239
- package/angular/fesm2015/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs +636 -237
- package/angular/fesm2020/microsoft-windows-admin-center-sdk-angular.mjs.map +1 -1
- package/angular/package.json +1 -1
- package/angular/src/controls/accordion/accordion-panel/accordion-panel.component.d.ts +13 -4
- package/angular/src/controls/common/spacer-base.component.d.ts +11 -2
- package/angular/src/controls/form/form-field/array/array-form-field-accessibility-manager.service.d.ts +38 -0
- package/angular/src/controls/form/form-field/array/array-form-field.component.d.ts +3 -1
- package/angular/src/controls/form/form-field/form-field-accessibility-manager-base.service.d.ts +37 -0
- package/angular/src/controls/form/form-field/list/list-form-field-accessibility-manager.service.d.ts +25 -0
- package/angular/src/controls/form/form-field/list/list-form-field.component.d.ts +12 -2
- package/angular/src/controls/form/form-field/number/number-form-field.component.d.ts +8 -0
- package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field-accessibility-manager.service.d.ts +37 -0
- package/angular/src/controls/form/form-field/ordered-list/ordered-list-form-field.component.d.ts +12 -8
- package/angular/src/controls/icon/icon-text/icon-text.component.d.ts +1 -1
- package/angular/src/controls/property-grid/property-grid.component.d.ts +2 -0
- package/angular/src/controls/wizard/models/wizard-step-snap-in-output.d.ts +1 -1
- package/{core → angular/src}/data/extension-broker/snap-in-listener.d.ts +49 -46
- package/angular/src/data/index.d.ts +1 -0
- package/angular/src/directives/svg/svg.directive.d.ts +1 -2
- package/angular/src/generated/strings.d.ts +12 -0
- package/core/async/cancellation.js +312 -0
- package/core/async/index.js +312 -0
- package/core/async/progress.js +312 -0
- package/core/azure/azure-constants.d.ts +2 -2
- package/core/azure/azure-constants.d.ts.map +1 -1
- package/core/azure/azure-constants.js +322 -3
- package/core/azure/azure-constants.js.map +1 -1
- package/core/azure/azure-logging.js +312 -0
- package/core/azure/azure-manager.js +312 -0
- package/core/azure/models/aadAppConfig-data.js +312 -0
- package/core/azure/models/azureArcStatusEnum.js +312 -0
- package/core/azure/models/azureTokenResult-data.js +312 -0
- package/core/azure/resources/deployment-operation-request-body.js +312 -0
- package/core/azure/resources/deployment-operation-response.js +312 -0
- package/core/azure/resources/location-data.js +315 -0
- package/core/azure/resources/resource-group-data.js +312 -0
- package/core/azure/resources/subscription-data.js +312 -0
- package/core/base/data-store/browser-storage-data-store.js +315 -0
- package/core/base/data-store/cached-data-store.js +312 -0
- package/core/base/data-store/data-store.js +312 -0
- package/core/base/data-store/local-data-store.js +312 -0
- package/core/base/data-store/memory-data-store.js +312 -0
- package/core/base/data-store/session-data-store.js +312 -0
- package/core/base/date/date-like.js +312 -0
- package/core/base/date/date-range.js +312 -0
- package/core/base/date/date-time.js +312 -0
- package/core/base/date/date-type.js +312 -0
- package/core/base/date/time-unit.js +312 -0
- package/core/base/decorators/base.js +312 -0
- package/core/base/decorators/debounce.decorators.js +312 -0
- package/core/base/decorators/delay.decorator.js +315 -0
- package/core/base/decorators/yield.decorator.js +312 -0
- package/core/base/environment.js +312 -0
- package/core/base/json.js +312 -0
- package/core/base/msft-sme.mock.js +316 -0
- package/core/base/polyfills/array.js +315 -0
- package/core/base/polyfills/string.js +312 -0
- package/core/base/rxjs-lifetime-manager.js +312 -0
- package/core/base/utilities.js +312 -0
- package/core/base/versioned-object.js +312 -0
- package/core/data/accessibility-manager.js +312 -0
- package/core/data/active-directory/active-directory.js +312 -0
- package/core/data/active-directory/models/account-info.js +312 -0
- package/core/data/active-directory/models/active-directory-search-options.js +312 -0
- package/core/data/active-directory/models/search-type.js +312 -0
- package/core/data/animation.js +312 -0
- package/core/data/app-context.js +312 -0
- package/core/data/asset-manager.js +315 -0
- package/core/data/base64-array-buffer.js +312 -0
- package/core/data/batch-connection.js +312 -0
- package/core/data/cim-connection.js +312 -0
- package/core/data/cim-stream.js +312 -0
- package/core/data/cim.js +312 -0
- package/core/data/column-picker.js +312 -0
- package/core/data/cookie.js +312 -0
- package/core/data/core-environment.js +315 -0
- package/core/data/crypto.js +312 -0
- package/core/data/deployment-share.js +312 -0
- package/core/data/disposable.js +312 -0
- package/core/data/electron.js +315 -0
- package/core/data/error-extended.js +312 -0
- package/core/data/extension-broker/dialog-listener.js +312 -0
- package/core/data/extension-broker/extension-broker.js +312 -0
- package/core/data/extension-broker/extension-listener.js +312 -0
- package/core/data/extension-broker/model/extension-broker-request-payload.js +312 -0
- package/core/data/extension-broker/model/extension-broker-response-error.js +312 -0
- package/core/data/extension-broker/model/extension-broker-response-payload.js +312 -0
- package/core/data/extension-broker/model/extension-entries.js +315 -0
- package/core/data/extension-broker/model/extension-instance.js +315 -0
- package/core/data/extension-broker/model/extension-rect.js +312 -0
- package/core/data/extension-broker/model/extension-search-options.js +312 -0
- package/core/data/extension-broker/service-listener.js +312 -0
- package/core/data/extension-broker/worker-listener.js +312 -0
- package/core/data/extension-broker/worker-set.js +312 -0
- package/core/data/file-transfer.js +312 -0
- package/core/data/gateway-connection.js +312 -0
- package/core/data/gateway-status.js +312 -0
- package/core/data/gateway-url-builder.js +312 -0
- package/core/data/gateway-url-translator.d.ts +1 -0
- package/core/data/gateway-url-translator.d.ts.map +1 -1
- package/core/data/gateway-url-translator.js +337 -6
- package/core/data/gateway-url-translator.js.map +1 -1
- package/core/data/gateway-urls.js +312 -0
- package/core/data/globalization.js +315 -0
- package/core/data/http-constants.js +315 -0
- package/core/data/http.js +312 -0
- package/core/data/jobs/jobs-manager.js +312 -0
- package/core/data/jobs/models/job-credentials.js +312 -0
- package/core/data/jobs/models/job-node.js +312 -0
- package/core/data/jobs/models/job-paginated-response.js +315 -0
- package/core/data/jobs/models/job-pagination-options.js +315 -0
- package/core/data/jobs/models/job.js +312 -0
- package/core/data/jobs/models/node-job.js +312 -0
- package/core/data/jobs/models/powershell-job.js +312 -0
- package/core/data/language.js +315 -0
- package/core/data/lifetime-data.js +312 -0
- package/core/data/localization-manager.js +312 -0
- package/core/data/native-q.js +312 -0
- package/core/data/net.d.ts.map +1 -1
- package/core/data/net.js +313 -1
- package/core/data/net.js.map +1 -1
- package/core/data/node-connection.d.ts.map +1 -1
- package/core/data/node-connection.js +312 -2
- package/core/data/node-connection.js.map +1 -1
- package/core/data/node-extension-install.js +312 -0
- package/core/data/powershell-alternate.js +312 -0
- package/core/data/powershell-batch.js +312 -0
- package/core/data/powershell-connection.js +312 -0
- package/core/data/powershell-crypto.js +312 -0
- package/core/data/powershell-stream.js +312 -0
- package/core/data/powershell.js +312 -0
- package/core/data/query-cache.js +312 -0
- package/core/data/resource-cache.js +312 -0
- package/core/data/schedule-reboot.js +312 -0
- package/core/data/settings-manager.js +312 -0
- package/core/data/settings-manger.mock.js +312 -0
- package/core/data/sme-extension.js +312 -0
- package/core/data/ssh-stream.js +312 -0
- package/core/data/units.js +312 -0
- package/core/data/uri-builder.js +315 -0
- package/core/data/wdac-operations.js +312 -0
- package/core/data/websocket-stream.js +312 -0
- package/core/diagnostics/error-monitor.js +312 -0
- package/core/diagnostics/log-level.js +312 -0
- package/core/diagnostics/log-record.js +312 -0
- package/core/diagnostics/logging-constants.js +312 -0
- package/core/diagnostics/logging.js +312 -0
- package/core/diagnostics/logging.mock.js +312 -0
- package/core/diagnostics/sme-web-telemetry-models.js +312 -0
- package/core/diagnostics/sme-web-telemetry.d.ts +1 -2
- package/core/diagnostics/sme-web-telemetry.d.ts.map +1 -1
- package/core/diagnostics/sme-web-telemetry.js +336 -15
- package/core/diagnostics/sme-web-telemetry.js.map +1 -1
- package/core/diagnostics/telemetry-control-type.js +312 -0
- package/core/diagnostics/telemetry-options.js +312 -0
- package/core/diagnostics/telemetry-record.js +312 -0
- package/core/dom/dom.js +312 -0
- package/core/frame/frame-connection.js +312 -0
- package/core/frame/frame-connection.mock.js +312 -0
- package/core/frame/shell-navigation-connection.js +312 -0
- package/core/generated/powershell-scripts.d.ts.map +1 -1
- package/core/generated/powershell-scripts.js +313 -1
- package/core/generated/powershell-scripts.js.map +1 -1
- package/core/generated/strings.js +312 -0
- package/core/host/host-core-manager.js +312 -0
- package/core/host/host-core-message-type.js +312 -0
- package/core/host/host-core-messages.js +312 -0
- package/core/index.d.ts +0 -1
- package/core/index.d.ts.map +1 -1
- package/core/index.js +312 -1
- package/core/index.js.map +1 -1
- package/core/manifest/environment-modules.js +312 -0
- package/core/manifest/manifest-loader.js +312 -0
- package/core/notification/client-notification-instance.js +312 -0
- package/core/notification/client-notification.js +312 -0
- package/core/notification/notification-connection.js +312 -0
- package/core/notification/notification-link-type.js +312 -0
- package/core/notification/notification-manager.js +312 -0
- package/core/notification/notification-message.js +312 -0
- package/core/notification/notification-state.js +312 -0
- package/core/notification/notification.js +312 -0
- package/core/notification/powershell-notification.js +312 -0
- package/core/notification/socket-signalr.js +312 -0
- package/core/notification/work-item-connection.js +312 -0
- package/core/notification/work-item-manager.js +312 -0
- package/core/notification/work-item-request.js +312 -0
- package/core/performance/performance-profile-data-type.js +312 -0
- package/core/performance/performance-profile-data.js +312 -0
- package/core/performance/performance-profile-database.js +312 -0
- package/core/performance/performance-profile-record.js +312 -0
- package/core/performance/performance-profile.d.ts.map +1 -1
- package/core/performance/performance-profile.js +321 -9
- package/core/performance/performance-profile.js.map +1 -1
- package/core/performance/performance-tracker.js +312 -0
- package/core/polyfills.js +312 -0
- package/core/resources/scripts/public/crypto/Get-DecryptedDataFromNode.ps1 +216 -0
- package/core/resources/scripts/public/crypto/Get-EncryptionJWKOnNode.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32LogicalDisk.ps1 +218 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32NetworkAdapter.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32PhysicalMemory.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-CimWin32Processor.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ClusterInventory.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ClusterNodes.ps1 +216 -0
- package/core/resources/scripts/public/inventory/Get-ServerInventory.ps1 +246 -8
- package/core/rpc/alive/rpc-alive-client.js +312 -0
- package/core/rpc/alive/rpc-alive-handler.js +312 -0
- package/core/rpc/alive/rpc-alive-model.js +315 -0
- package/core/rpc/alive/rpc-alive-subject-server.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-client.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-model.js +312 -0
- package/core/rpc/alive/rpc-observable-alive-server.js +312 -0
- package/core/rpc/azure/rpc-azure-model.js +312 -0
- package/core/rpc/azure/rpc-azure-request-client.js +312 -0
- package/core/rpc/azure/rpc-azure-request-handler.js +312 -0
- package/core/rpc/azure/rpc-azure-request-subject-server.js +312 -0
- package/core/rpc/azure/rpc-azure-response-client.js +312 -0
- package/core/rpc/azure/rpc-azure-response-handler.js +315 -0
- package/core/rpc/credssp/rpc-credssp-model.js +312 -0
- package/core/rpc/credssp/rpc-credssp-request-client.js +312 -0
- package/core/rpc/credssp/rpc-credssp-request-handler.js +315 -0
- package/core/rpc/credssp/rpc-credssp-request-subject-server.js +312 -0
- package/core/rpc/credssp/rpc-credssp-response-client.js +312 -0
- package/core/rpc/credssp/rpc-credssp-response-handler.js +315 -0
- package/core/rpc/dialog/rpc-dialog-client.js +312 -0
- package/core/rpc/dialog/rpc-dialog-handler.js +312 -0
- package/core/rpc/dialog/rpc-dialog-model.js +312 -0
- package/core/rpc/dialog/rpc-dialog-subject-server.js +315 -0
- package/core/rpc/electron/rpc-electron-model.js +312 -0
- package/core/rpc/electron/rpc-electron-request-client.js +312 -0
- package/core/rpc/electron/rpc-electron-request-handler.js +312 -0
- package/core/rpc/electron/rpc-electron-request-subject-server.js +312 -0
- package/core/rpc/electron/rpc-electron-response-client.js +312 -0
- package/core/rpc/electron/rpc-electron-response-handler.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-client.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-model.js +312 -0
- package/core/rpc/elevate/rpc-observable-elevate-server.js +312 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-client.js +312 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-model.js +315 -0
- package/core/rpc/error-monitor/rpc-observable-error-monitor-server.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-model.js +315 -0
- package/core/rpc/extension-broker/rpc-extension-broker-module-request-subject-server.js +315 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-client.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-handler.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-request-subject-server.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-response-client.js +312 -0
- package/core/rpc/extension-broker/rpc-extension-broker-response-handler.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-client.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-model.js +312 -0
- package/core/rpc/extension-data/rpc-observable-extension-data-server.js +312 -0
- package/core/rpc/forward/rpc-forward-auto-client.js +312 -0
- package/core/rpc/forward/rpc-forward-down-client.js +315 -0
- package/core/rpc/forward/rpc-forward-down-handler.js +312 -0
- package/core/rpc/forward/rpc-forward-model.js +312 -0
- package/core/rpc/forward/rpc-forward-up-client.js +312 -0
- package/core/rpc/forward/rpc-forward-up-handler.js +312 -0
- package/core/rpc/forward/rpc-forward-up-subject-server.js +312 -0
- package/core/rpc/log/rpc-log-client.js +312 -0
- package/core/rpc/log/rpc-log-handler.js +312 -0
- package/core/rpc/log/rpc-log-model.js +312 -0
- package/core/rpc/log/rpc-log-subject-server.js +312 -0
- package/core/rpc/notification/rpc-notification-client.js +312 -0
- package/core/rpc/notification/rpc-notification-handler.js +312 -0
- package/core/rpc/notification/rpc-notification-model.js +312 -0
- package/core/rpc/notification/rpc-notification-subject-server.js +312 -0
- package/core/rpc/overlay/rpc-overlay-close-client.js +312 -0
- package/core/rpc/overlay/rpc-overlay-close-handler.js +312 -0
- package/core/rpc/overlay/rpc-overlay-model.js +312 -0
- package/core/rpc/overlay/rpc-overlay-open-client.js +315 -0
- package/core/rpc/overlay/rpc-overlay-open-handler.js +312 -0
- package/core/rpc/overlay/rpc-overlay-open-subject-server.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-client.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-config-client.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-config-server.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-model.js +312 -0
- package/core/rpc/performance/rpc-observable-performance-server.js +312 -0
- package/core/rpc/report/rpc-report-client.js +312 -0
- package/core/rpc/report/rpc-report-handler.js +312 -0
- package/core/rpc/report/rpc-report-model.js +312 -0
- package/core/rpc/report/rpc-report-subject-server.js +315 -0
- package/core/rpc/rpc-base.js +312 -0
- package/core/rpc/rpc-channel.js +312 -0
- package/core/rpc/rpc-forwarder.js +312 -0
- package/core/rpc/rpc-inbound-client.js +312 -0
- package/core/rpc/rpc-inbound.js +312 -0
- package/core/rpc/rpc-manager.js +312 -0
- package/core/rpc/rpc-module-subject-server.js +315 -0
- package/core/rpc/rpc-observable-client.js +312 -0
- package/core/rpc/rpc-observable-request.js +312 -0
- package/core/rpc/rpc-observable-result.js +312 -0
- package/core/rpc/rpc-observable-server.js +312 -0
- package/core/rpc/rpc-outbound-client.js +312 -0
- package/core/rpc/rpc-outbound.js +312 -0
- package/core/rpc/rpc-subject-server.js +312 -0
- package/core/rpc/rpc.js +312 -0
- package/core/rpc/seek/rpc-seek-client.js +312 -0
- package/core/rpc/seek/rpc-seek-handler.js +315 -0
- package/core/rpc/seek/rpc-seek-model.js +312 -0
- package/core/rpc/settings/rpc-settings-client.js +315 -0
- package/core/rpc/settings/rpc-settings-handler.js +312 -0
- package/core/rpc/settings/rpc-settings-model.js +312 -0
- package/core/rpc/settings/rpc-settings-subject-server.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-client.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-handler.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-model.js +312 -0
- package/core/rpc/shell-navigate/rpc-shell-navigate-subject-server.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-model.js +315 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-client.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-handler.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-request-subject-server.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-response-client.js +312 -0
- package/core/rpc/sme-extension/rpc-sme-extension-response-handler.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-client.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-handler.js +315 -0
- package/core/rpc/telemetry/rpc-telemetry-model.js +312 -0
- package/core/rpc/telemetry/rpc-telemetry-subject-server.js +312 -0
- package/core/rpc/update-data/rpc-update-data-client.js +312 -0
- package/core/rpc/update-data/rpc-update-data-handler.js +312 -0
- package/core/rpc/update-data/rpc-update-data-model.js +312 -0
- package/core/rpc/update-data/rpc-update-data-subject-server.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-client.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-model.js +312 -0
- package/core/rpc/update-theme/rpc-observable-update-theme-server.js +312 -0
- package/core/rpc/work-item/rpc-work-item-client.js +312 -0
- package/core/rpc/work-item/rpc-work-item-handler.js +312 -0
- package/core/rpc/work-item/rpc-work-item-model.js +312 -0
- package/core/rpc/work-item/rpc-work-item-subject-server.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-client.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-handler.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-model.js +312 -0
- package/core/rpc/work-item-find/rpc-work-item-find-subject-server.js +312 -0
- package/core/security/active-connection.js +312 -0
- package/core/security/authorization-manager.js +312 -0
- package/core/security/connection-manager-settings/common-connection-settings.js +315 -0
- package/core/security/connection-manager-settings/connection-settings.js +312 -0
- package/core/security/connection-manager.js +312 -0
- package/core/security/connection-stream.js +312 -0
- package/core/security/connection.js +312 -0
- package/core/security/credssp-manager.js +312 -0
- package/core/security/sign-on-manager.js +312 -0
- package/core/security/tag-manager.js +312 -0
- package/core/security/tool-condition-validator.js +312 -0
- package/core/security/tool-connection-query.js +312 -0
- package/core/security/user-principal.js +312 -0
- package/core/shared/cluster-inventory/cluster-inventory-cache.js +312 -0
- package/core/shared/cluster-inventory/cluster-inventory.js +312 -0
- package/core/shared/cluster-inventory/cluster-node-inventory.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-cache.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-detail-cache.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory-detail.js +312 -0
- package/core/shared/gateway-inventory/gateway-inventory.js +312 -0
- package/core/shared/inventory-query-caches.js +312 -0
- package/core/shared/server-inventory/server-inventory-cache.js +312 -0
- package/core/shared/server-inventory/server-inventory-detail-cache.js +312 -0
- package/core/shared/server-inventory/server-inventory-detail.js +315 -0
- package/core/shared/server-inventory/server-inventory.js +312 -0
- package/core/shared/shared-cache.js +312 -0
- package/core/shared/tool-inventory/tool-inventory-cache.js +312 -0
- package/core/shared/tool-inventory/tool-inventory.js +312 -0
- package/core/special.js +315 -0
- package/core/test-utilities/accessibility-tester.js +312 -0
- package/core/test-utilities/console.mock.js +312 -0
- package/core/test-utilities/jasmine-axe-matcher.js +312 -0
- package/core/test-utilities/wait-async.js +312 -0
- package/core/test.js +312 -0
- package/core/testing.js +312 -0
- package/core/workflow/persistent-local-storage.js +312 -0
- package/core/workflow/persistent-work-item-apply-state.js +316 -0
- package/core/workflow/persistent-work-item-state.js +312 -0
- package/core/workflow/persistent-work-item.js +315 -0
- package/core/workflow/persistent-workflow-builder.js +312 -0
- package/core/workflow/persistent-workflow-context.js +312 -0
- package/core/workflow/persistent-workflow-runner.js +312 -0
- package/core/workflow/persistent-workflow-snapshot.js +312 -0
- package/core/workflow/persistent-workflow-store.js +312 -0
- package/core/workflow/persistent-workflow.js +312 -0
- package/package.json +11 -9
- package/styles/css/main-v2.css +1 -1
- package/styles/fonts/SegoeUI/Bold/SegoeUIBold-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/Light/SegoeUILight-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/Normal/SegoeUI-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/SemiBold/SegoeUISemiBold-5.27.woff +0 -0
- package/styles/fonts/SegoeUI/SemiLight/SegoeUISemiLight-5.27.woff +0 -0
- package/styles/fonts/ServMDL2/ServMDL2-4.66.woff +0 -0
- package/tools/build/webpack/index-html.transform.js +312 -0
- package/tools/build/webpack/shell.index-html.transform.js +312 -0
- package/tools/build/webpack/shell.webpack.config.js +312 -0
- package/tools/build/webpack/webpack.config.js +312 -0
- package/tools/code-formatter/.eslintrc.base.json +3 -1
- package/tools/code-formatter/lint.d.ts.map +1 -1
- package/tools/code-formatter/lint.js +319 -1
- package/tools/code-formatter/lint.js.map +1 -1
- package/tools/code-formatter/utilities.d.ts +7 -0
- package/tools/code-formatter/utilities.d.ts.map +1 -0
- package/tools/code-formatter/utilities.js +395 -0
- package/tools/code-formatter/utilities.js.map +1 -0
- package/tools/gulp-doc-generator/index.js +312 -0
- package/tools/gulp-manifest-resource/index.js +312 -0
- package/tools/gulp-manifest-validator/index.js +312 -0
- package/tools/gulp-merge-json-in-folders/index.js +312 -0
- package/tools/gulp-merge-json-in-folders/json-merge.js +312 -0
- package/tools/gulp-ps-cim/index.js +315 -0
- package/tools/gulp-ps-code/index.d.ts.map +1 -1
- package/tools/gulp-ps-code/index.js +323 -2
- package/tools/gulp-ps-code/index.js.map +1 -1
- package/tools/gulp-ps-code/ps-code-convert.js +312 -0
- package/tools/gulp-ps-manifest/index.js +312 -0
- package/tools/gulp-ps-module/index.d.ts.map +1 -1
- package/tools/gulp-ps-module/index.js +327 -3
- package/tools/gulp-ps-module/index.js.map +1 -1
- package/tools/gulp-ps-resjson/index.js +315 -0
- package/tools/gulp-resjson/index.js +315 -0
- package/tools/gulp-resjson/resjson-convert.js +312 -0
- package/tools/gulp-schema-form/index.js +312 -0
- package/tools/gulp-svg-code/index.js +312 -0
- package/tools/gulp-svg-code/svg-code-convert.js +312 -0
- package/tools/gulp-update-notes-resource/index.d.ts.map +1 -1
- package/tools/gulp-update-notes-resource/index.js +316 -4
- package/tools/gulp-update-notes-resource/index.js.map +1 -1
- package/tools/module-template/.eslintrc.json +3 -0
- package/tools/module-template/build/increment-package-version.ps1 +216 -0
- package/tools/module-template/build/push-incremented-version.ps1 +216 -1
- package/tools/module-template/build/update-powershell-code.ps1 +216 -0
- package/tools/module-template/gulpfile.ts/common/clean.ts +2 -0
- package/tools/module-template/gulpfile.ts/common/pack.ts +17 -5
- package/tools/module-template/gulpfile.ts/common/powershell.ts +40 -2
- package/tools/module-template/gulpfile.ts/common/utilities.ts +1 -0
- package/tools/pack-nuget/index.d.ts.map +1 -1
- package/tools/pack-nuget/index.js +321 -3
- package/tools/pack-nuget/index.js.map +1 -1
- package/tools/scripts/Invoke-PesterTest.ps1 +216 -0
- package/tools/scripts/New-ExtensionPackage.ps1 +373 -6
- package/tools/scripts/Search-NonAsciiText.ps1 +216 -0
- package/tools/scripts/package-information/README.md +3 -0
- package/tools/scripts/package-information/ms-logo.png +0 -0
- package/tools/test-runner/index.js +312 -0
- package/tools/utilities/index.js +312 -0
- package/tools/wac-cli/src/angular15/configs/angular-json-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/ci-build-yml-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts +9 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.d.ts.map +1 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js +328 -0
- package/tools/wac-cli/src/angular15/configs/eslint-auto-fix-config.js.map +1 -0
- package/tools/wac-cli/src/angular15/configs/git-ignore-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/jasmine-test-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/package-json-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/replace-config.js +315 -0
- package/tools/wac-cli/src/angular15/configs/tsconfig-config.js +312 -0
- package/tools/wac-cli/src/angular15/configs/ui-test-automation-lagacy-config.js +312 -0
- package/tools/wac-cli/src/angular15/main.d.ts +19 -3
- package/tools/wac-cli/src/angular15/main.d.ts.map +1 -1
- package/tools/wac-cli/src/angular15/main.js +353 -7
- package/tools/wac-cli/src/angular15/main.js.map +1 -1
- package/tools/wac-cli/src/angular15/upgrader/angular-json-upgrader.js +316 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/ajax-response-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/css-syntax-error-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/declare-override-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/error-updater-angular15.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/form-control-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/iif-updater-util.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/load-children-callback-updater.js +315 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/log-parser.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/observable-throw-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/parameter-count-violation-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/string-replace-updater.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/audit/subjuct-next-updater-util.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/ci-build-yml-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts +18 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.d.ts.map +1 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js +361 -0
- package/tools/wac-cli/src/angular15/upgrader/eslint-auto-fix-upgrader.js.map +1 -0
- package/tools/wac-cli/src/angular15/upgrader/file-replacement-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/git-ignore-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/jasmine-test-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/package-json-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/remove-upgrader.js +315 -0
- package/tools/wac-cli/src/angular15/upgrader/replace-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/tsconfig-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/ui-test-automation-legacy-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/upgrader/version-json-upgrader.js +312 -0
- package/tools/wac-cli/src/angular15/utils/add-item.js +312 -0
- package/tools/wac-cli/src/angular15/utils/command-runner.js +312 -0
- package/tools/wac-cli/src/angular15/utils/file-comparison.js +315 -0
- package/tools/wac-cli/src/angular15/utils/file-replacement.js +312 -0
- package/tools/wac-cli/src/angular15/utils/file-writer.js +312 -0
- package/tools/wac-cli/src/angular15/utils/logger.js +312 -0
- package/tools/wac-cli/src/angular15/utils/main-debugger.js +312 -0
- package/tools/wac-cli/src/angular15/utils/relative-path.js +312 -0
- package/tools/wac-cli/src/angular15/utils/remove-item.js +312 -0
- package/tools/wac-cli/src/angular15/utils/space-generator.js +312 -0
- package/tools/wac-cli/src/angular15/utils/update-shell-references.js +316 -0
- package/tools/wac-cli/src/common.js +312 -0
- package/tools/wac-cli/src/create/main.js +312 -0
- package/tools/wac-cli/src/eslint/main.js +312 -0
- package/tools/wac-cli/src/index.js +312 -0
- package/tools/wac-cli/src/upgrade/error-updater.js +312 -0
- package/tools/wac-cli/src/upgrade/error-updaters/component-selector-updater.js +315 -0
- package/tools/wac-cli/src/upgrade/error-updaters/only-arrow-functions-updater.js +315 -0
- package/tools/wac-cli/src/upgrade/error-updaters/updater-lookup.js +312 -0
- package/tools/wac-cli/src/upgrade/file-updater.js +312 -0
- package/tools/wac-cli/src/upgrade/get-files.js +312 -0
- package/tools/wac-cli/src/upgrade/main.js +312 -0
- package/tools/wac-cli/src/upgrade/models/error-result.js +312 -0
- package/tools/wac-cli/src/upgrade/models/updater-interface.js +312 -0
- package/tools/wac-cli/src/upgrade/package-updater.js +312 -0
- package/tools/wac-cli/templates/wac-template/src/favicon.ico +0 -0
- package/tools/wac-cli/templates/wac-template/src/karma.conf.js +312 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Error.ps1 +216 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Exception.ps1 +216 -0
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Process.ps1 +216 -1
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-Service.ps1 +216 -1
- package/tools/wac-cli/templates/wac-template/src/resources/scripts/Get-WinRmState.ps1 +216 -1
- package/core/data/extension-broker/snap-in-listener.d.ts.map +0 -1
- package/core/data/extension-broker/snap-in-listener.js +0 -73
- package/core/data/extension-broker/snap-in-listener.js.map +0 -1
- package/microsoft-windows-admin-center-sdk-4.123.0.tgz +0 -0
|
@@ -67,9 +67,7 @@ export class NavigationService {
|
|
|
67
67
|
this.idleUrl = `/${this.options.idleRoute[0]}`;
|
|
68
68
|
// navigate to idle.
|
|
69
69
|
this.router.navigate(this.options.idleRoute, this.defaultNavigationOptions);
|
|
70
|
-
|
|
71
|
-
this.subscription.unsubscribe();
|
|
72
|
-
}
|
|
70
|
+
this.subscription?.unsubscribe();
|
|
73
71
|
let startTimestamp = null;
|
|
74
72
|
this.subscription = this.router.events
|
|
75
73
|
.pipe(tap(event => {
|
|
@@ -108,10 +106,7 @@ export class NavigationService {
|
|
|
108
106
|
*/
|
|
109
107
|
shutdown() {
|
|
110
108
|
this.active = false;
|
|
111
|
-
|
|
112
|
-
this.subscription.unsubscribe();
|
|
113
|
-
this.subscription = null;
|
|
114
|
-
}
|
|
109
|
+
this.subscription?.unsubscribe();
|
|
115
110
|
}
|
|
116
111
|
/**
|
|
117
112
|
* Map dialog service and dialog id so that correct dialog service instance can be found
|
|
@@ -379,4 +374,4 @@ NavigationService.initialWaitTime = 2000;
|
|
|
379
374
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NavigationService, [{
|
|
380
375
|
type: Injectable
|
|
381
376
|
}], function () { return [{ type: i1.AppContextService }, { type: i2.UserAliveService }, { type: i3.Router }, { type: i3.ActivatedRoute }]; }, null); })();
|
|
382
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvc2VydmljZS9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBb0IsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNqRyxPQUFPLEVBQWtCLE9BQU8sRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBRTlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQzVHLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLG1HQUFtRyxDQUFDO0FBRXpKLE9BQU8sRUFHSCxrQkFBa0IsRUFHbEIsWUFBWSxFQUNaLG1CQUFtQixFQUd0QixNQUFNLHVEQUF1RCxDQUFDO0FBQy9ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhGQUE4RixDQUFDO0FBQzlJLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFB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QkFBaUI7dUZBQWpCLGlCQUFpQjtjQUw3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkV4dHJhcywgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDb3JlRW52aXJvbm1lbnQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RhdGEvY29yZS1lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IE5hdGl2ZURlZmVycmVkLCBOYXRpdmVRIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL25hdGl2ZS1xJztcclxuaW1wb3J0IHsgTmV0IH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL25ldCc7XHJcbmltcG9ydCB7IExvZ2dpbmcgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RpYWdub3N0aWNzL2xvZ2dpbmcnO1xyXG5pbXBvcnQgeyBTbWVXZWJUZWxlbWV0cnkgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RpYWdub3N0aWNzL3NtZS13ZWItdGVsZW1ldHJ5JztcclxuaW1wb3J0IHsgUGVyZm9ybWFuY2VQcm9maWxlIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS1wcm9maWxlJztcclxuaW1wb3J0IHsgUGVyZm9ybWFuY2VUcmFja2VyIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9wZXJmb3JtYW5jZS9wZXJmb3JtYW5jZS10cmFja2VyJztcclxuaW1wb3J0IHsgUnBjRGlhbG9nT3ZlcmxheURhdGEsIFJwY0RpYWxvZ092ZXJsYXlSZXN1bHQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3JwYy9vdmVybGF5L3JwYy1vdmVybGF5LW1vZGVsJztcclxuaW1wb3J0IHsgUnBjT3ZlcmxheUNsb3NlS2V5IH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvb3ZlcmxheS9ycGMtb3ZlcmxheS1tb2RlbCc7XHJcbmltcG9ydCB7IFJwY09ic2VydmFibGVQZXJmb3JtYW5jZUNvbmZpZ1NlcnZlciB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL3BlcmZvcm1hbmNlL3JwYy1vYnNlcnZhYmxlLXBlcmZvcm1hbmNlLWNvbmZpZy1zZXJ2ZXInO1xyXG5pbXBvcnQgeyBTZWxlY3RhYmxlUGF0aCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL3JlcG9ydC9ycGMtcmVwb3J0LW1vZGVsJztcclxuaW1wb3J0IHtcclxuICAgIFJwY0FjdGl2YXRlRGF0YSxcclxuICAgIFJwY0RlYWN0aXZhdGVSZXN1bHQsXHJcbiAgICBScGNEZWFjdGl2YXRlU3RhdGUsXHJcbiAgICBScGNPcGVuRGF0YSxcclxuICAgIFJwY09wZW5SZXN1bHQsXHJcbiAgICBScGNPcGVuU3RhdGUsXHJcbiAgICBScGNPdXRib3VuZENvbW1hbmRzLFxyXG4gICAgUnBjU2h1dGRvd25EYXRhLFxyXG4gICAgUnBjU2h1dGRvd25SZXN1bHRcclxufSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3JwYy9ycGMtYmFzZSc7XHJcbmltcG9ydCB7IFJwY09ic2VydmFibGVVcGRhdGVUaGVtZVNlcnZlciB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL3VwZGF0ZS10aGVtZS9ycGMtb2JzZXJ2YWJsZS11cGRhdGUtdGhlbWUtc2VydmVyJztcclxuaW1wb3J0IHsgRU1QVFksIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIG1lcmdlTWFwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uL2NvbnRyb2xzL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtY29udGV4dC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29ubmVjdGl2aXR5RW5mb3JjZXIgfSBmcm9tICcuL2Nvbm5lY3Rpdml0eS1lbmZvcmNlcic7XHJcbmltcG9ydCB7IE5hdmlnYXRpb24sIE5hdmlnYXRpb25EYXRhLCBOYXZpZ2F0aW9uRGF0YUV4dHJhcyB9IGZyb20gJy4vbmF2aWdhdGlvbic7XHJcbmltcG9ydCB7IFVzZXJBbGl2ZVNlcnZpY2UgfSBmcm9tICcuL3VzZXItYWxpdmUuc2VydmljZSc7XHJcbi8qKlxyXG4gKiBPcHRpb25zIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBuYXZpZ2F0aW9uIHNlcnZpY2VcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTmF2aWdhdG9yU2VydmljZU9wdGlvbnMge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgYW5ndWxhciAyIGRlZmF1bHQgcm91dGUgdG8gdXNlIGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmRcclxuICAgICAqIGlmIHRoZSBhcHBsaWNhdGlvbiBnZXRzIGRlYWN0aXZhdGVkIGJ1dCBzdGlsbCBydW5uaW5nXHJcbiAgICAgKiBTZWUgQGFuZ3VsYXIvcm91dGVyIC0gUm91dGVyLm5hdmlnYXRlIG1ldGhvZCBmb3IgbW9yZSBkZXRhaWxzXHJcbiAgICAgKi9cclxuICAgIGlkbGVSb3V0ZT86IGFueVtdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgU3RhdGVDb250ZXh0PFRTdGF0ZSwgVFJlc3VsdD4ge1xyXG4gICAgc3RhdGU6IFRTdGF0ZTtcclxuICAgIHJlcXVlc3RlZFRpbWU6IG51bWJlcjtcclxuICAgIHRpbWVyOiBhbnk7XHJcbiAgICBkZWZlcnJlZDogTmF0aXZlRGVmZXJyZWQ8VFJlc3VsdD47XHJcbiAgICBlcnJvcj86IHN0cmluZztcclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG4vKipcclxuICogT25jZSBpbml0aWFsaXplIHRoaXMgY2xhc3MgdXNlcyB0aGUgdW5kZXJseWluZyBSUEMgY2hhbm5lbFxyXG4gKiB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSByZW1vdGUgUlBDIHNlcnZpY2UuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2Uge1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5pdGlhbFdhaXRUaW1lID0gMjAwMDtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE5hdmlnYXRpb25PcHRpb25zOiBOYXZpZ2F0aW9uRXh0cmFzID0geyBza2lwTG9jYXRpb25DaGFuZ2U6IHRydWUgfTtcclxuICAgIHByaXZhdGUgbGFzdFJvdXRlOiBOYXZpZ2F0aW9uRGF0YTtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIG9wdGlvbnM6IE5hdmlnYXRvclNlcnZpY2VPcHRpb25zO1xyXG4gICAgcHJpdmF0ZSBpZGxlVXJsOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIGFjdGl2ZTogYm9vbGVhbjtcclxuICAgIHByaXZhdGUgZW50ZXJpbmdNb2R1bGUgPSB0cnVlO1xyXG4gICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlTWFwOiB7IFtpbmRleDogc3RyaW5nXTogRGlhbG9nU2VydmljZSB9ID0ge307XHJcbiAgICBwcml2YXRlIG9wZW5Db250ZXh0OiBTdGF0ZUNvbnRleHQ8UnBjT3BlblN0YXRlLCBScGNPcGVuUmVzdWx0PiA9IHtcclxuICAgICAgICBzdGF0ZTogbnVsbCxcclxuICAgICAgICByZXF1ZXN0ZWRUaW1lOiAwLFxyXG4gICAgICAgIHRpbWVyOiBudWxsLFxyXG4gICAgICAgIGRlZmVycmVkOiBudWxsLFxyXG4gICAgICAgIGVycm9yOiBudWxsXHJcbiAgICB9O1xyXG4gICAgcHJpdmF0ZSBkZWFjdGl2YXRlQ29udGV4dDogU3RhdGVDb250ZXh0PFJwY0RlYWN0aXZhdGVTdGF0ZSwgUnBjRGVhY3RpdmF0ZVJlc3VsdD4gPSB7XHJcbiAgICAgICAgc3RhdGU6IG51bGwsXHJcbiAgICAgICAgcmVxdWVzdGVkVGltZTogMCxcclxuICAgICAgICB0aW1lcjogbnVsbCxcclxuICAgICAgICBkZWZlcnJlZDogbnVsbFxyXG4gICAgfTtcclxuICAgIHByaXZhdGUgbW9kdWxlTmFtZTogc3RyaW5nO1xyXG4gICAgcHJpdmF0ZSBScGNPYnNlcnZhYmxlUGVyZm9ybWFuY2VDb25maWdTZXJ2ZXI6IFJwY09ic2VydmFibGVQZXJmb3JtYW5jZUNvbmZpZ1NlcnZlcjtcclxuICAgIHByaXZhdGUgcnBjT2JzZXJ2YWJsZVVwZGF0ZVRoZW1lU2VydmVyOiBScGNPYnNlcnZhYmxlVXBkYXRlVGhlbWVTZXJ2ZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgc2VydmljZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGFwcENvbnRleHRTZXJ2aWNlOiBBcHBDb250ZXh0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHVzZXJBbGl2ZVNlcnZpY2U6IFVzZXJBbGl2ZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZSBuYXZpZ2F0aW9uIGNvbW11bmljYXRpb24gZnJvbS90byB0aGUgc2hlbGwuXHJcbiAgICAgKlxyXG4gICAgICogIFJlZ2lzdGVycyB0aGUgbWV0aG9kcyB3aXRoIHRoZSByZW1vdGUgUlBDIGRlZmluZWQgaW4gdGhlIG1hbmlmZXN0XHJcbiAgICAgKiAgU3Vic2NyaWJlcyB0byB0aGUgcm91dGVyIGV2ZW50cyBhbmQgcmVwb3J0cyB0aGUgYnJlYWRjcnVtYiBpdGVtc1xyXG4gICAgICogIGJhY2sgdG8gdGhlIHJwYyByZW1vdGVcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaW5pdGlhbGl6ZShvcHRpb25zPzogTmF2aWdhdG9yU2VydmljZU9wdGlvbnMpOiB2b2lkIHtcclxuICAgICAgICBQZXJmb3JtYW5jZVRyYWNrZXIubmF2aWdhdGlvbkluaXRpYWxpemVkKCk7XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgPyBvcHRpb25zIDogeyBpZGxlUm91dGU6IFsnaWRsZSddIH07XHJcbiAgICAgICAgdGhpcy5pZGxlVXJsID0gYC8ke3RoaXMub3B0aW9ucy5pZGxlUm91dGVbMF19YDtcclxuXHJcbiAgICAgICAgLy8gbmF2aWdhdGUgdG8gaWRsZS5cclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLm9wdGlvbnMuaWRsZVJvdXRlLCB0aGlzLmRlZmF1bHROYXZpZ2F0aW9uT3B0aW9ucyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHN0YXJ0VGltZXN0YW1wID0gbnVsbDtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMucm91dGVyLmV2ZW50c1xyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIHRhcChldmVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUGVyZm9ybWFuY2VUcmFja2VyLm5hdmlnYXRpb25TdGFydGVkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgJiYgc3RhcnRUaW1lc3RhbXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUGVyZm9ybWFuY2VQcm9maWxlLmxvZ1JvdXRlTmF2aWdhdGlvbignTmF2aWdhdGlvblNlcnZpY2UnLCBzdGFydFRpbWVzdGFtcCwgRGF0ZS5ub3coKSwgZXZlbnQudXJsLCB0aGlzLm1vZHVsZU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWVzdGFtcCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlVHJhY2tlci5uYXZpZ2F0aW9uQ29tcGxldGVkKHRoaXMuZW50ZXJpbmdNb2R1bGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZXZlbnQgPT5cclxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLmJ1aWxkU2VsZWN0YWJsZVBhdGhzRm9yUm91dGUodGhpcy5hcHBDb250ZXh0U2VydmljZSwgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShtYXAoc2VsZWN0YWJsZVBhdGhzID0+IDxhbnk+eyBldmVudCwgc2VsZWN0YWJsZVBhdGhzIH0pKSlcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiB7IGV2ZW50OiBOYXZpZ2F0aW9uRW5kLCBzZWxlY3RhYmxlUGF0aHM6IFNlbGVjdGFibGVQYXRoW119KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBpbml0aWFsIGlkbGUgc3RhdGUsIHJlcG9ydGluZyB1cmwgd2lsbCBjYXVzZSBycGMgZXJyb3IuIGFsbCBvdGhlciBjYXNlcyBzaG91bGQgYmUgb2suXHJcbiAgICAgICAgICAgICAgICAvLyBScGNSZXBvcnQgaW5jbHVkZSBmcmFnbWVudCBhbmQgcXVlcnlQYXJhbXMgaW4gJ3BhdGgnIGFuZCAnYmVmb3JlUmVkaXJlY3RlZFBhdGgnLlxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlICYmIGRhdGEuZXZlbnQudXJsICE9PSB0aGlzLmlkbGVVcmwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLmZyYW1lLnJlcG9ydCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGRlY29kZVVSSShkYXRhLmV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlUmVkaXJlY3RlZFBhdGg6IGRlY29kZVVSSShkYXRhLmV2ZW50LnVybCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGFibGVQYXRoOiBkYXRhLnNlbGVjdGFibGVQYXRoc1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50ZXJpbmdNb2R1bGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjLnJlZ2lzdGVyKFJwY091dGJvdW5kQ29tbWFuZHMuSW5pdCwgdGhpcy5vbkluaXQuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMucmVnaXN0ZXIoUnBjT3V0Ym91bmRDb21tYW5kcy5PcGVuLCB0aGlzLm9uT3Blbi5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYy5yZWdpc3RlcihScGNPdXRib3VuZENvbW1hbmRzLkRlYWN0aXZhdGUyLCB0aGlzLm9uRGVhY3RpdmF0ZTIuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMucmVnaXN0ZXIoUnBjT3V0Ym91bmRDb21tYW5kcy5BY3RpdmF0ZSwgdGhpcy5vbkFjdGl2YXRlLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjLnJlZ2lzdGVyKFJwY091dGJvdW5kQ29tbWFuZHMuU2h1dGRvd24sIHRoaXMub25TaHV0ZG93bi5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYy5yZWdpc3RlcihScGNPdmVybGF5Q2xvc2VLZXkuY29tbWFuZCwgdGhpcy5vbk92ZXJsYXlDbG9zZS5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNodXRkb3duIHRoZSBuYXZpZ2F0aW9uIGNvbW11bmljYXRpb24gZnJvbS90byB0aGUgc2hlbGwuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzaHV0ZG93bigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWFwIGRpYWxvZyBzZXJ2aWNlIGFuZCBkaWFsb2cgaWQgc28gdGhhdCBjb3JyZWN0IGRpYWxvZyBzZXJ2aWNlIGluc3RhbmNlIGNhbiBiZSBmb3VuZFxyXG4gICAgICogQHBhcmFtIGRpYWxvZ1NlcnZpY2UgZGlhbG9nIHNlcnZpY2UgdG8gYmUgcmVnaXN0ZXJlZFxyXG4gICAgICogQHBhcmFtIGRpYWxvZ0lkIGFzc29jaWF0ZWQgZGlhbG9nIGlkXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWdpc3RlckRpYWxvZ1NlcnZpY2UoZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSwgZGlhbG9nSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nU2VydmljZU1hcFtkaWFsb2dJZF0gPSBkaWFsb2dTZXJ2aWNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY29uZmlndXJlUGVyZm9ybWFuY2VQcm9maWxlKGVuYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzdGFydFRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgaWYgKGVuYWJsZWQpIHtcclxuICAgICAgICAgICAgUGVyZm9ybWFuY2VQcm9maWxlLmN1cnJlbnQuZW5hYmxlKHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBQZXJmb3JtYW5jZVByb2ZpbGUuY3VycmVudC5kaXNhYmxlKHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5sb2dSb3V0ZU5hdmlnYXRpb24oJ05hdmlnYXRpb25TZXJ2aWNlJywgc3RhcnRUaW1lc3RhbXAsIERhdGUubm93KCksICdbcnBjSW5pdF0nLCB0aGlzLm1vZHVsZU5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25Jbml0KGRhdGE6IGFueSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgLy8gSWZyYW1lIGhhcyByZWNlaXZlZCBhbGwgaW5pdGlhbGl6YXRpb24gZGF0YSBmcm9tIHRoZSBzaGVsbC5cclxuICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLmdhdGV3YXkubmF2aWdhdGlvblJlYWR5U3RhdHVzID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHNlbGYgPSBNc2Z0U21lLnNlbGYoKTtcclxuICAgICAgICBpZiAoIU1zZnRTbWUuaXNOdWxsT3JVbmRlZmluZWQoc2VsZi5Jbml0LnNlc3Npb25FeHBpcmF0aW9uKSAmJiBzZWxmLkluaXQuc2Vzc2lvbkV4cGlyYXRpb24gPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlckFsaXZlU2VydmljZS5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgQ29ubmVjdGl2aXR5RW5mb3JjZXIucmVnaXN0ZXIodGhpcy5hcHBDb250ZXh0U2VydmljZSk7XHJcbiAgICAgICAgdGhpcy5tb2R1bGVOYW1lID0gc2VsZi5Jbml0Lm1vZHVsZU5hbWU7XHJcbiAgICAgICAgdGhpcy5jb25maWd1cmVQZXJmb3JtYW5jZVByb2ZpbGUoc2VsZi5Jbml0LnBlcmZvcm1hbmNlUHJvZmlsZSk7XHJcbiAgICAgICAgUGVyZm9ybWFuY2VQcm9maWxlLmxvZ051bGwodGhpcy5tb2R1bGVOYW1lKTtcclxuICAgICAgICBpZiAoIXRoaXMuUnBjT2JzZXJ2YWJsZVBlcmZvcm1hbmNlQ29uZmlnU2VydmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuUnBjT2JzZXJ2YWJsZVBlcmZvcm1hbmNlQ29uZmlnU2VydmVyID0gbmV3IFJwY09ic2VydmFibGVQZXJmb3JtYW5jZUNvbmZpZ1NlcnZlcih0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYyk7XHJcbiAgICAgICAgICAgIHRoaXMuUnBjT2JzZXJ2YWJsZVBlcmZvcm1hbmNlQ29uZmlnU2VydmVyLnJlZ2lzdGVyKChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyZVBlcmZvcm1hbmNlUHJvZmlsZShyZXF1ZXN0LmVuYWJsZWQpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5ycGNPYnNlcnZhYmxlVXBkYXRlVGhlbWVTZXJ2ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5ycGNPYnNlcnZhYmxlVXBkYXRlVGhlbWVTZXJ2ZXIgPSBuZXcgUnBjT2JzZXJ2YWJsZVVwZGF0ZVRoZW1lU2VydmVyKHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjKTtcclxuICAgICAgICAgICAgdGhpcy5ycGNPYnNlcnZhYmxlVXBkYXRlVGhlbWVTZXJ2ZXIucmVnaXN0ZXIoKHJlcXVlc3QpID0+IHtcclxuICAgICAgICAgICAgICAgIENvcmVFbnZpcm9ubWVudC5hc3NldE1hbmFnZXIuc2V0VGhlbWUocmVxdWVzdC5uZXdUaGVtZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FsbCB0byBkaWFsb2cgc2VydmljZSB0byByZXF1ZXN0IGNsb3NlIGEgZGlhbG9nXHJcbiAgICAgKiBAcGFyYW0gZGF0YSBkYXRhIG9iamVjdCB0byBjbG9zZSBhIGRpYWxvZyBmcm9tIHNoZWxsXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25PdmVybGF5Q2xvc2UoZGF0YTogUnBjRGlhbG9nT3ZlcmxheURhdGEpOiBQcm9taXNlPFJwY0RpYWxvZ092ZXJsYXlSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBkaWFsb2dTZXJ2aWNlID0gdGhpcy5kaWFsb2dTZXJ2aWNlTWFwW2RhdGEuZGlhbG9nSWRdO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAoZGlhbG9nU2VydmljZSkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBkaWFsb2dTZXJ2aWNlLm92ZXJsYXlDbGlja2VkKGRhdGEuZGlhbG9nSWQpO1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy5kaWFsb2dTZXJ2aWNlTWFwW2RhdGEuZGlhbG9nSWRdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IG92ZXJsYXlDbG9zZWQ6IHJlc3VsdCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlcGVhdGVkIG9wZW4gY2FsbGVkIHVudGlsIG5hdmlnYXRpb24gaXMgZXN0YWJsaXNoZWQgb3IgZmFpbGVkLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBkYXRhIHRoZSBScGNPcGVuRGF0YSBkYXRhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9uT3BlbihkYXRhOiBScGNPcGVuRGF0YSk6IFByb21pc2U8UnBjT3BlblJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRleHQ6IFN0YXRlQ29udGV4dDxScGNPcGVuU3RhdGUsIFJwY09wZW5SZXN1bHQ+ID0gdGhpcy5vcGVuQ29udGV4dDtcclxuICAgICAgICBpZiAoY29udGV4dC5zdGF0ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcclxuICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICBzdGF0ZTogdGhpcy5vcGVuQ29udGV4dC5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIGVycm9yOiBjb250ZXh0LmVycm9yXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnN0YXRlICE9PSBScGNPcGVuU3RhdGUuSW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNPcGVuU3RhdGUuSW5Qcm9ncmVzcztcclxuICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gTmF0aXZlUS5kZWZlcjxScGNPcGVuUmVzdWx0PigpO1xyXG5cclxuICAgICAgICAvLyBzZXQgdGltZW91dCB0byByZXNwb25kIGJhY2sgc3RhdHVzIHRvIHNoZWxsLlxyXG4gICAgICAgIGNvbnRleHQudGltZXIgPSBzZXRUaW1lb3V0KFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkLnJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbnRleHQuc3RhdGVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC50aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gbnVsbDtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgTmF2aWdhdGlvblNlcnZpY2UuaW5pdGlhbFdhaXRUaW1lKTtcclxuXHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5zZXJ2aWNlc1JlYWR5XHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgIHRha2UoMSksXHJcbiAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIFNtZVdlYlRlbGVtZXRyeS5pbml0KHRoaXMuYXBwQ29udGV4dFNlcnZpY2UpLnN1YnNjcmliZShcclxuICAgICAgICAgICAgICAgICAgICBsb2FkZWQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnaW5nLmxvZ0RlYnVnKCdTbWVXZWJUZWxlbWV0cnknLCBsb2FkZWQgPyAnTG9hZGVkIGJyb3dzZXIgdGVsZW1ldHJ5JyA6ICdGYWlsZWQgdG8gbG9hZCBicm93c2VyIHRlbGVtZXRyeScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBQZXJmb3JtYW5jZVRyYWNrZXIudHJ5U3RhcnRDYWxjdWxhdGluZ1RpbWVUb0ludGVyYWN0aXZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBuYXZpZ2F0aW9uID0gTmF2aWdhdGlvbi5nZXRVcmxOYXZpZ2F0aW9uRGF0YSh0aGlzLnJvdXRlciwgZGF0YS5wYXRoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShuYXZpZ2F0aW9uLmNvbW1hbmRzLCB0aGlzLmFkZERlZmF1bHROYXZpZ2F0aW9uT3B0aW9ucyhuYXZpZ2F0aW9uLm9wdGlvbnMpKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG1hcChzdWNjZXNzID0+IHtcclxuICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5sb2dSb3V0ZU5hdmlnYXRpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgJ05hdmlnYXRpb25TZXJ2aWNlJywgY29udGV4dC5yZXF1ZXN0ZWRUaW1lLCBEYXRlLm5vdygpLCAnW3JwY09wZW5dJywgdGhpcy5tb2R1bGVOYW1lKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNPcGVuU3RhdGUuT3BlbmVkO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRpbWVyIGlzbid0IGZpcmVkIHlldCwganVzdCBjb21wbGV0ZSB3aXRoIHN1Y2Nlc3MgbmF2aWdhdGlvbi5cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnRpbWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGNvbnRleHQudGltZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQucmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb250ZXh0LnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogY29udGV4dC5lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC50aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvciwgY2F1Z2h0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gUnBjT3BlblN0YXRlLkZhaWxlZDtcclxuICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gJyc7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3IueGhyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE5ldC5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGVycm9yO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhY2spIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGVycm9yLnN0YWNrO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3IubWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5lcnJvciA9IG1lc3NhZ2U7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGltZXIgaXNuJ3QgZmlyZWQgeWV0LCBqdXN0IGNvbXBsZXRlIHdpdGggZXJyb3IgbmF2aWdhdGlvbi5cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnRpbWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGNvbnRleHQudGltZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQucmVqZWN0KGNvbnRleHQuZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC50aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgICAgICB9KSlcclxuICAgICAgICAuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIHJldHVybiBjb250ZXh0LmRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBlYXRlZCBjYWxsZWQgdW50aWwgR3VhcmQgaXMgY29udGludWVkIG9yIGNhbmNlbGxlZC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZGF0YSB0aGUgdm9pZCBkYXRhLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9uRGVhY3RpdmF0ZTIoZGF0YTogdm9pZCk6IFByb21pc2U8UnBjRGVhY3RpdmF0ZVJlc3VsdD4ge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0VGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBjb25zdCBjb250ZXh0OiBTdGF0ZUNvbnRleHQ8UnBjRGVhY3RpdmF0ZVN0YXRlLCBScGNEZWFjdGl2YXRlUmVzdWx0PiA9IHRoaXMuZGVhY3RpdmF0ZUNvbnRleHQ7XHJcbiAgICAgICAgaWYgKGNvbnRleHQuc3RhdGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICB3YWl0ZWRUaW1lOiBEYXRlLm5vdygpIC0gY29udGV4dC5yZXF1ZXN0ZWRUaW1lLFxyXG4gICAgICAgICAgICAgICAgc3RhdGU6IGNvbnRleHQuc3RhdGVcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaWYgKGNvbnRleHQuc3RhdGUgIT09IFJwY0RlYWN0aXZhdGVTdGF0ZS5JblByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5sb2dSb3V0ZU5hdmlnYXRpb24oJ05hdmlnYXRpb25TZXJ2aWNlJywgc3RhcnRUaW1lc3RhbXAsIERhdGUubm93KCksICdbcnBjRGVhY3RpdmF0ZV0nLCB0aGlzLm1vZHVsZU5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBjdXJyZW50ID0gZGVjb2RlVVJJKHRoaXMucm91dGVyLnVybCk7XHJcbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IHRoaXMuaWRsZVVybCkge1xyXG4gICAgICAgICAgICAvLyBpdCdzIGFscmVhZHkgaW5hY3RpdmUuXHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgd2FpdGVkVGltZTogMCxcclxuICAgICAgICAgICAgICAgIHN0YXRlOiBScGNEZWFjdGl2YXRlU3RhdGUuRGVhY3RpdmF0ZWRcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNEZWFjdGl2YXRlU3RhdGUuSW5Qcm9ncmVzcztcclxuICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gTmF0aXZlUS5kZWZlcjxScGNEZWFjdGl2YXRlUmVzdWx0PigpO1xyXG5cclxuICAgICAgICAvLyBzZXQgdGltZW91dCB0byByZXNwb25kIGJhY2sgc3RhdHVzIHRvIHNoZWxsLlxyXG4gICAgICAgIGNvbnRleHQudGltZXIgPSBzZXRUaW1lb3V0KFxyXG4gICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkLnJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbnRleHQuc3RhdGVcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC50aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZiBpdCBpc24ndCBpbiBwcm9ncmVzcywgcmVzZXQgdGhlIHN0YXRlLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQuc3RhdGUgIT09IFJwY0RlYWN0aXZhdGVTdGF0ZS5JblByb2dyZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXF1ZXN0ZWRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgTmF2aWdhdGlvblNlcnZpY2UuaW5pdGlhbFdhaXRUaW1lKTtcclxuXHJcbiAgICAgICAgLy8gdHJ5IG5hdmlnYXRlIHRvIGlkbGUuXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUodGhpcy5vcHRpb25zLmlkbGVSb3V0ZSwgdGhpcy5kZWZhdWx0TmF2aWdhdGlvbk9wdGlvbnMpXHJcbiAgICAgICAgICAgIC50aGVuKFxyXG4gICAgICAgICAgICBzdWNjZXNzID0+IHtcclxuICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5sb2dSb3V0ZU5hdmlnYXRpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgJ05hdmlnYXRpb25TZXJ2aWNlJywgc3RhcnRUaW1lc3RhbXAsIERhdGUubm93KCksICdbcnBjRGVhY3RpdmF0ZV0nLCB0aGlzLm1vZHVsZU5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBuYXZpZ2F0ZSBhd2F5IHNvIGluYWN0aXZlIG1vZGUuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RSb3V0ZSA9IE5hdmlnYXRpb24uZ2V0VXJsTmF2aWdhdGlvbkRhdGEodGhpcy5yb3V0ZXIsIGN1cnJlbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNEZWFjdGl2YXRlU3RhdGUuRGVhY3RpdmF0ZWQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIG5hdmlnYXRlIGNhbmNlbCBzbyBhY3RpdmUgbW9kZS5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IFJwY0RlYWN0aXZhdGVTdGF0ZS5DYW5jZWxsZWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaWYgdGltZXIgaXNuJ3QgZmlyZWQgeWV0LCBqdXN0IGNvbXBsZXRlIHdpdGggc3VjY2VzcyBuYXZpZ2F0aW9uLlxyXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQudGltZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoY29udGV4dC50aW1lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZC5yZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGVkVGltZTogRGF0ZS5ub3coKSAtIGNvbnRleHQucmVxdWVzdGVkVGltZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IGNvbnRleHQuc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRpbWVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBuYXZpZ2F0ZSBlcnJvciBzbyBhY3RpdmUgbW9kZS5cclxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNEZWFjdGl2YXRlU3RhdGUuQ2FuY2VsbGVkO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRpbWVyIGlzbid0IGZpcmVkIHlldCwganVzdCBjb21wbGV0ZSB3aXRoIHN1Y2Nlc3MgbmF2aWdhdGlvbi5cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnRpbWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGNvbnRleHQudGltZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQucmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb250ZXh0LnN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC50aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXF1ZXN0ZWRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGNvbnRleHQuZGVmZXJyZWQucHJvbWlzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uQWN0aXZhdGUoZGF0YTogUnBjQWN0aXZhdGVEYXRhKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBzdGFydFRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgY29uc3QgbmV3Um91dGUgPSBkYXRhLnVybCB8fCBkYXRhLnVybCA9PT0gJycgP1xyXG4gICAgICAgICAgICBOYXZpZ2F0aW9uLmdldFVybE5hdmlnYXRpb25EYXRhKHRoaXMucm91dGVyLCBkYXRhLnVybClcclxuICAgICAgICAgICAgOiB0aGlzLmxhc3RSb3V0ZSB8fCB7IGNvbW1hbmRzOiBbJyddLCBvcHRpb25zOiBudWxsIH07XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuZW50ZXJpbmdNb2R1bGUgPSB0cnVlO1xyXG5cclxuICAgICAgICAvLyBNYW51YWxseSBmaXJlIHBhZ2UgdmlldyBmb3IgZXZlcnkgdGltZSB3ZSByZWFjdGl2YXRlIGEgbW9kdWxlXHJcbiAgICAgICAgU21lV2ViVGVsZW1ldHJ5LnRyYWNlUGFnZVZpZXcoe30pO1xyXG5cclxuICAgICAgICAvLyBwdWxsIGxhdGVzdCBycGMgZm9yd2FyZGVyIHNlcnZpY2VzIGRhdGEgd2hlbiByZWFjdGl2YXRlZC5cclxuICAgICAgICByZXR1cm4gdGhpcy5hcHBDb250ZXh0U2VydmljZS5yZWluaXRpYWxpemVTZXJ2aWNlcygpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT4gdGhpcy5yb3V0ZXIubmF2aWdhdGUobmV3Um91dGUuY29tbWFuZHMsIHRoaXMuYWRkRGVmYXVsdE5hdmlnYXRpb25PcHRpb25zKG5ld1JvdXRlLm9wdGlvbnMpKSksXHJcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4gUGVyZm9ybWFuY2VQcm9maWxlLmxvZ1JvdXRlTmF2aWdhdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAnTmF2aWdhdGlvblNlcnZpY2UnLCBzdGFydFRpbWVzdGFtcCwgRGF0ZS5ub3coKSwgJ1tycGNBY3RpdmF0ZV0nLCB0aGlzLm1vZHVsZU5hbWUpKVxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvblNodXRkb3duKGRhdGE6IFJwY1NodXRkb3duRGF0YSk6IFByb21pc2U8UnBjU2h1dGRvd25SZXN1bHQ+IHtcclxuICAgICAgICB0aGlzLnVzZXJBbGl2ZVNlcnZpY2Uuc3RvcCgpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZSh0aGlzLm9wdGlvbnMuaWRsZVJvdXRlLCB0aGlzLmRlZmF1bHROYXZpZ2F0aW9uT3B0aW9ucylcclxuICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IDxScGNTaHV0ZG93blJlc3VsdD57IGNhblNodXRkb3duOiByZXN1bHQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGREZWZhdWx0TmF2aWdhdGlvbk9wdGlvbnMob3B0aW9uczogTmF2aWdhdGlvbkRhdGFFeHRyYXMpOiBOYXZpZ2F0aW9uRXh0cmFzIHtcclxuICAgICAgICByZXR1cm4geyAuLi4ob3B0aW9ucyB8fCB7fSksIC4uLnRoaXMuZGVmYXVsdE5hdmlnYXRpb25PcHRpb25zIH07XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
377
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvc2VydmljZS9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBb0IsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNqRyxPQUFPLEVBQWtCLE9BQU8sRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOERBQThELENBQUM7QUFDdkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQzlHLE9BQU8sRUFBRSxrQkFBa0IsRUFBZ0QsTUFBTSx3RUFBd0UsQ0FBQztBQUMxSixPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxtR0FBbUcsQ0FBQztBQUV6SixPQUFPLEVBR0gsa0JBQWtCLEVBR2xCLFlBQVksRUFDWixtQkFBbUIsRUFHdEIsTUFBTSx1REFBdUQsQ0FBQztBQUMvRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4RkFBOEYsQ0FBQztBQUM5SSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQXdDLE1BQU0sY0FBYyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQXNCeEQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQTJCMUI7O09BRUc7SUFDSCxZQUNZLGlCQUFvQyxFQUNwQyxnQkFBa0MsRUFDbEMsTUFBYyxFQUNkLGNBQThCO1FBSDlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBaEN6Qiw2QkFBd0IsR0FBcUIsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQU1uRixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixxQkFBZ0IsR0FBdUMsRUFBRSxDQUFDO1FBQzFELGdCQUFXLEdBQThDO1lBQzdELEtBQUssRUFBRSxJQUFJO1lBQ1gsYUFBYSxFQUFFLENBQUM7WUFDaEIsS0FBSyxFQUFFLElBQUk7WUFDWCxRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRSxJQUFJO1NBQ2QsQ0FBQztRQUNNLHNCQUFpQixHQUEwRDtZQUMvRSxLQUFLLEVBQUUsSUFBSTtZQUNYLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLEtBQUssRUFBRSxJQUFJO1lBQ1gsUUFBUSxFQUFFLElBQUk7U0FDakIsQ0FBQztJQWFGLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLFVBQVUsQ0FBQyxPQUFpQztRQUMvQyxrQkFBa0IsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUUvQyxvQkFBb0I7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFFNUUsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUVqQyxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07YUFDakMsSUFBSSxDQUNELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRTtnQkFDbEMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDNUIsa0JBQWtCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzthQUMxQztpQkFBTSxJQUFJLEtBQUssWUFBWSxhQUFhLElBQUksY0FBYyxFQUFFO2dCQUN6RCxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNuSCxjQUFjLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDL0Q7UUFDTCxDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLEVBQy9DLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNkLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7YUFDaEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUssRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FDbEY7YUFDQSxTQUFTLENBQUMsQ0FBQyxJQUFnRSxFQUFFLEVBQUU7WUFDNUUsdUdBQXVHO1lBQ3ZHLG1GQUFtRjtZQUNuRixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDaEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7b0JBQ2hDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztvQkFDN0Msb0JBQW9CLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29CQUMvQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWU7aUJBQ3ZDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQzthQUMvQjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRVAsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVEOztPQUVHO0lBQ0ksUUFBUTtRQUNYLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxxQkFBcUIsQ0FBQyxhQUE0QixFQUFFLFFBQWdCO1FBQ3ZFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxhQUFhLENBQUM7SUFDcEQsQ0FBQztJQUVPLDJCQUEyQixDQUFDLE9BQWdCO1FBQ2hELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxJQUFJLE9BQU8sRUFBRTtZQUNULGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2pFO2FBQU07WUFDSCxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsRTtRQUVELGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6SCxDQUFDO0lBRU8sTUFBTSxDQUFDLElBQVM7UUFDcEIsOERBQThEO1FBQzlELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBRTVELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsRUFBRTtZQUM1RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDakM7UUFFRCxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN2QyxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9ELGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQ0FBb0MsRUFBRTtZQUM1QyxJQUFJLENBQUMsb0NBQW9DLEdBQUcsSUFBSSxvQ0FBb0MsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakgsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNsRCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsRUFBRTtZQUN0QyxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNyRCxlQUFlLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssY0FBYyxDQUFDLElBQTBCO1FBQzdDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0QsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksYUFBYSxFQUFFO1lBQ2YsTUFBTSxHQUFHLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvQztRQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssTUFBTSxDQUFDLElBQWlCO1FBQzVCLE1BQU0sT0FBTyxHQUE4QyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzVFLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdkIsTUFBTSxNQUFNLEdBQUc7Z0JBQ1gsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsYUFBYTtnQkFDOUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSztnQkFDN0IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2FBQ3ZCLENBQUM7WUFDRixJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLFVBQVUsRUFBRTtnQkFDM0MsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQ2hDO1lBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xDO1FBRUQsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkMsT0FBTyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBaUIsQ0FBQztRQUVsRCwrQ0FBK0M7UUFDL0MsT0FBTyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQ3RCLEdBQUcsRUFBRTtZQUNELE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhO2dCQUM5QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7YUFDdkIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDckIsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDNUIsQ0FBQyxFQUNELGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhO2FBQ25DLElBQUksQ0FDRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNWLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUNsRCxNQUFNLENBQUMsRUFBRTtnQkFDTCxPQUFPLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7Z0JBQzlHLGtCQUFrQixDQUFDLG9DQUFvQyxFQUFFLENBQUM7WUFDOUQsQ0FBQyxDQUNKLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0UsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMzRyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FDakMsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRixPQUFPLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFFcEMsbUVBQW1FO1lBQ25FLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtnQkFDZixZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztvQkFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsYUFBYTtvQkFDOUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO29CQUNwQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7aUJBQ3ZCLENBQUMsQ0FBQztnQkFDSCxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDckIsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzthQUMzQjtRQUNMLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN6QixPQUFPLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFDcEMsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ3BCLE9BQU8sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3hDO2lCQUFNLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO2dCQUNsQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ25CO2lCQUFNO2dCQUNILElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtvQkFDYixPQUFPLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztpQkFDekI7cUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO29CQUN0QixPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztpQkFDM0I7YUFDSjtZQUVELE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1lBRXhCLGlFQUFpRTtZQUNqRSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7Z0JBQ2YsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDckIsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzthQUMzQjtZQUVELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO2FBQ04sU0FBUyxFQUFFLENBQUM7UUFFYixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssYUFBYSxDQUFDLElBQVU7UUFDNUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUEwRCxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDOUYsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN2QixNQUFNLE1BQU0sR0FBRztnQkFDWCxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhO2dCQUM5QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7YUFDdkIsQ0FBQztZQUNGLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUU7Z0JBQ2pELE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzthQUNoQztZQUVELGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNILE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsQztRQUVELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDMUIseUJBQXlCO1lBQ3pCLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQztnQkFDbkIsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxFQUFFLGtCQUFrQixDQUFDLFdBQVc7YUFDeEMsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNuQyxPQUFPLENBQUMsS0FBSyxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUM5QyxPQUFPLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQXVCLENBQUM7UUFFeEQsK0NBQStDO1FBQy9DLE9BQU8sQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUN0QixHQUFHLEVBQUU7WUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsYUFBYTtnQkFDOUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO2FBQ3ZCLENBQUMsQ0FBQztZQUNILE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBRXhCLDRDQUE0QztZQUM1QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssa0JBQWtCLENBQUMsVUFBVSxFQUFFO2dCQUNqRCxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDckIsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7YUFDaEM7UUFDTCxDQUFDLEVBQ0QsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFdkMsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQzthQUN0RSxJQUFJLENBQ0wsT0FBTyxDQUFDLEVBQUU7WUFDTixrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FDakMsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekYsSUFBSSxPQUFPLEVBQUU7Z0JBQ1Qsa0NBQWtDO2dCQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDdkUsT0FBTyxDQUFDLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7YUFDbEQ7aUJBQU07Z0JBQ0gsa0NBQWtDO2dCQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsT0FBTyxDQUFDLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7YUFDaEQ7WUFFRCxtRUFBbUU7WUFDbkUsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO2dCQUNmLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO29CQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhO29CQUM5QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7aUJBQ3ZCLENBQUMsQ0FBQztnQkFDSCxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDckIsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzthQUNoQztRQUNMLENBQUMsRUFDRCxLQUFLLENBQUMsRUFBRTtZQUNKLGlDQUFpQztZQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixPQUFPLENBQUMsS0FBSyxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztZQUU3QyxtRUFBbUU7WUFDbkUsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO2dCQUNmLFlBQVksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO29CQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhO29CQUM5QyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7aUJBQ3ZCLENBQUMsQ0FBQztnQkFDSCxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztnQkFDckIsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQzthQUNoQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsT0FBTyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQXFCO1FBQ3BDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDMUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUN0RCxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUUzQixnRUFBZ0U7UUFDaEUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsQyw0REFBNEQ7UUFDNUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLEVBQUU7YUFDL0MsSUFBSSxDQUNELFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUMzRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLENBQzNDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUN0RjthQUNKLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxVQUFVLENBQUMsSUFBcUI7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDO2FBQzdFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFBLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU8sMkJBQTJCLENBQUMsT0FBNkI7UUFDN0QsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNwRSxDQUFDOztBQXhaYyxpQ0FBZSxHQUFHLElBQUksQ0FBQztxR0FEN0IsaUJBQWlCO3NHQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCO3VGQUFqQixpQkFBaUI7Y0FMN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FeHRyYXMsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ29yZUVudmlyb25tZW50IH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kYXRhL2NvcmUtZW52aXJvbm1lbnQnO1xyXG5pbXBvcnQgeyBOYXRpdmVEZWZlcnJlZCwgTmF0aXZlUSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZGF0YS9uYXRpdmUtcSc7XHJcbmltcG9ydCB7IE5ldCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvZGF0YS9uZXQnO1xyXG5pbXBvcnQgeyBMb2dnaW5nIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kaWFnbm9zdGljcy9sb2dnaW5nJztcclxuaW1wb3J0IHsgU21lV2ViVGVsZW1ldHJ5IH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9kaWFnbm9zdGljcy9zbWUtd2ViLXRlbGVtZXRyeSc7XHJcbmltcG9ydCB7IFBlcmZvcm1hbmNlUHJvZmlsZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtcHJvZmlsZSc7XHJcbmltcG9ydCB7IFBlcmZvcm1hbmNlVHJhY2tlciB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcGVyZm9ybWFuY2UvcGVyZm9ybWFuY2UtdHJhY2tlcic7XHJcbmltcG9ydCB7IFJwY092ZXJsYXlDbG9zZUtleSwgUnBjRGlhbG9nT3ZlcmxheURhdGEsIFJwY0RpYWxvZ092ZXJsYXlSZXN1bHQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3JwYy9vdmVybGF5L3JwYy1vdmVybGF5LW1vZGVsJztcclxuaW1wb3J0IHsgUnBjT2JzZXJ2YWJsZVBlcmZvcm1hbmNlQ29uZmlnU2VydmVyIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvcGVyZm9ybWFuY2UvcnBjLW9ic2VydmFibGUtcGVyZm9ybWFuY2UtY29uZmlnLXNlcnZlcic7XHJcbmltcG9ydCB7IFNlbGVjdGFibGVQYXRoIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvcmVwb3J0L3JwYy1yZXBvcnQtbW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gICAgUnBjQWN0aXZhdGVEYXRhLFxyXG4gICAgUnBjRGVhY3RpdmF0ZVJlc3VsdCxcclxuICAgIFJwY0RlYWN0aXZhdGVTdGF0ZSxcclxuICAgIFJwY09wZW5EYXRhLFxyXG4gICAgUnBjT3BlblJlc3VsdCxcclxuICAgIFJwY09wZW5TdGF0ZSxcclxuICAgIFJwY091dGJvdW5kQ29tbWFuZHMsXHJcbiAgICBScGNTaHV0ZG93bkRhdGEsXHJcbiAgICBScGNTaHV0ZG93blJlc3VsdFxyXG59IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvcnBjL3JwYy1iYXNlJztcclxuaW1wb3J0IHsgUnBjT2JzZXJ2YWJsZVVwZGF0ZVRoZW1lU2VydmVyIH0gZnJvbSAnQG1pY3Jvc29mdC93aW5kb3dzLWFkbWluLWNlbnRlci1zZGsvY29yZS9ycGMvdXBkYXRlLXRoZW1lL3JwYy1vYnNlcnZhYmxlLXVwZGF0ZS10aGVtZS1zZXJ2ZXInO1xyXG5pbXBvcnQgeyBFTVBUWSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vY29udHJvbHMvZGlhbG9nL2RpYWxvZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXBwQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL2FwcC1jb250ZXh0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25uZWN0aXZpdHlFbmZvcmNlciB9IGZyb20gJy4vY29ubmVjdGl2aXR5LWVuZm9yY2VyJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvbiwgTmF2aWdhdGlvbkRhdGEsIE5hdmlnYXRpb25EYXRhRXh0cmFzIH0gZnJvbSAnLi9uYXZpZ2F0aW9uJztcclxuaW1wb3J0IHsgVXNlckFsaXZlU2VydmljZSB9IGZyb20gJy4vdXNlci1hbGl2ZS5zZXJ2aWNlJztcclxuLyoqXHJcbiAqIE9wdGlvbnMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIG5hdmlnYXRpb24gc2VydmljZVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0b3JTZXJ2aWNlT3B0aW9ucyB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBhbmd1bGFyIDIgZGVmYXVsdCByb3V0ZSB0byB1c2UgZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZFxyXG4gICAgICogaWYgdGhlIGFwcGxpY2F0aW9uIGdldHMgZGVhY3RpdmF0ZWQgYnV0IHN0aWxsIHJ1bm5pbmdcclxuICAgICAqIFNlZSBAYW5ndWxhci9yb3V0ZXIgLSBSb3V0ZXIubmF2aWdhdGUgbWV0aG9kIGZvciBtb3JlIGRldGFpbHNcclxuICAgICAqL1xyXG4gICAgaWRsZVJvdXRlPzogYW55W107XHJcbn1cclxuXHJcbmludGVyZmFjZSBTdGF0ZUNvbnRleHQ8VFN0YXRlLCBUUmVzdWx0PiB7XHJcbiAgICBzdGF0ZTogVFN0YXRlO1xyXG4gICAgcmVxdWVzdGVkVGltZTogbnVtYmVyO1xyXG4gICAgdGltZXI6IGFueTtcclxuICAgIGRlZmVycmVkOiBOYXRpdmVEZWZlcnJlZDxUUmVzdWx0PjtcclxuICAgIGVycm9yPzogc3RyaW5nO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbi8qKlxyXG4gKiBPbmNlIGluaXRpYWxpemUgdGhpcyBjbGFzcyB1c2VzIHRoZSB1bmRlcmx5aW5nIFJQQyBjaGFubmVsXHJcbiAqIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHJlbW90ZSBSUEMgc2VydmljZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uU2VydmljZSB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBpbml0aWFsV2FpdFRpbWUgPSAyMDAwO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TmF2aWdhdGlvbk9wdGlvbnM6IE5hdmlnYXRpb25FeHRyYXMgPSB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9O1xyXG4gICAgcHJpdmF0ZSBsYXN0Um91dGU6IE5hdmlnYXRpb25EYXRhO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgb3B0aW9uczogTmF2aWdhdG9yU2VydmljZU9wdGlvbnM7XHJcbiAgICBwcml2YXRlIGlkbGVVcmw6IHN0cmluZztcclxuICAgIHByaXZhdGUgYWN0aXZlOiBib29sZWFuO1xyXG4gICAgcHJpdmF0ZSBlbnRlcmluZ01vZHVsZSA9IHRydWU7XHJcbiAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2VNYXA6IHsgW2luZGV4OiBzdHJpbmddOiBEaWFsb2dTZXJ2aWNlIH0gPSB7fTtcclxuICAgIHByaXZhdGUgb3BlbkNvbnRleHQ6IFN0YXRlQ29udGV4dDxScGNPcGVuU3RhdGUsIFJwY09wZW5SZXN1bHQ+ID0ge1xyXG4gICAgICAgIHN0YXRlOiBudWxsLFxyXG4gICAgICAgIHJlcXVlc3RlZFRpbWU6IDAsXHJcbiAgICAgICAgdGltZXI6IG51bGwsXHJcbiAgICAgICAgZGVmZXJyZWQ6IG51bGwsXHJcbiAgICAgICAgZXJyb3I6IG51bGxcclxuICAgIH07XHJcbiAgICBwcml2YXRlIGRlYWN0aXZhdGVDb250ZXh0OiBTdGF0ZUNvbnRleHQ8UnBjRGVhY3RpdmF0ZVN0YXRlLCBScGNEZWFjdGl2YXRlUmVzdWx0PiA9IHtcclxuICAgICAgICBzdGF0ZTogbnVsbCxcclxuICAgICAgICByZXF1ZXN0ZWRUaW1lOiAwLFxyXG4gICAgICAgIHRpbWVyOiBudWxsLFxyXG4gICAgICAgIGRlZmVycmVkOiBudWxsXHJcbiAgICB9O1xyXG4gICAgcHJpdmF0ZSBtb2R1bGVOYW1lOiBzdHJpbmc7XHJcbiAgICBwcml2YXRlIFJwY09ic2VydmFibGVQZXJmb3JtYW5jZUNvbmZpZ1NlcnZlcjogUnBjT2JzZXJ2YWJsZVBlcmZvcm1hbmNlQ29uZmlnU2VydmVyO1xyXG4gICAgcHJpdmF0ZSBycGNPYnNlcnZhYmxlVXBkYXRlVGhlbWVTZXJ2ZXI6IFJwY09ic2VydmFibGVVcGRhdGVUaGVtZVNlcnZlcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhpcyBzZXJ2aWNlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYXBwQ29udGV4dFNlcnZpY2U6IEFwcENvbnRleHRTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgdXNlckFsaXZlU2VydmljZTogVXNlckFsaXZlU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsaXplIG5hdmlnYXRpb24gY29tbXVuaWNhdGlvbiBmcm9tL3RvIHRoZSBzaGVsbC5cclxuICAgICAqXHJcbiAgICAgKiAgUmVnaXN0ZXJzIHRoZSBtZXRob2RzIHdpdGggdGhlIHJlbW90ZSBSUEMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3RcclxuICAgICAqICBTdWJzY3JpYmVzIHRvIHRoZSByb3V0ZXIgZXZlbnRzIGFuZCByZXBvcnRzIHRoZSBicmVhZGNydW1iIGl0ZW1zXHJcbiAgICAgKiAgYmFjayB0byB0aGUgcnBjIHJlbW90ZVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBpbml0aWFsaXplKG9wdGlvbnM/OiBOYXZpZ2F0b3JTZXJ2aWNlT3B0aW9ucyk6IHZvaWQge1xyXG4gICAgICAgIFBlcmZvcm1hbmNlVHJhY2tlci5uYXZpZ2F0aW9uSW5pdGlhbGl6ZWQoKTtcclxuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyA/IG9wdGlvbnMgOiB7IGlkbGVSb3V0ZTogWydpZGxlJ10gfTtcclxuICAgICAgICB0aGlzLmlkbGVVcmwgPSBgLyR7dGhpcy5vcHRpb25zLmlkbGVSb3V0ZVswXX1gO1xyXG5cclxuICAgICAgICAvLyBuYXZpZ2F0ZSB0byBpZGxlLlxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHRoaXMub3B0aW9ucy5pZGxlUm91dGUsIHRoaXMuZGVmYXVsdE5hdmlnYXRpb25PcHRpb25zKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgICAgIGxldCBzdGFydFRpbWVzdGFtcCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YXAoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlVHJhY2tlci5uYXZpZ2F0aW9uU3RhcnRlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kICYmIHN0YXJ0VGltZXN0YW1wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5sb2dSb3V0ZU5hdmlnYXRpb24oJ05hdmlnYXRpb25TZXJ2aWNlJywgc3RhcnRUaW1lc3RhbXAsIERhdGUubm93KCksIGV2ZW50LnVybCwgdGhpcy5tb2R1bGVOYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRUaW1lc3RhbXAgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBQZXJmb3JtYW5jZVRyYWNrZXIubmF2aWdhdGlvbkNvbXBsZXRlZCh0aGlzLmVudGVyaW5nTW9kdWxlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGV2ZW50ID0+XHJcbiAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5idWlsZFNlbGVjdGFibGVQYXRoc0ZvclJvdXRlKHRoaXMuYXBwQ29udGV4dFNlcnZpY2UsIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBpcGUobWFwKHNlbGVjdGFibGVQYXRocyA9PiA8YW55PnsgZXZlbnQsIHNlbGVjdGFibGVQYXRocyB9KSkpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogeyBldmVudDogTmF2aWdhdGlvbkVuZCwgc2VsZWN0YWJsZVBhdGhzOiBTZWxlY3RhYmxlUGF0aFtdfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgaW5pdGlhbCBpZGxlIHN0YXRlLCByZXBvcnRpbmcgdXJsIHdpbGwgY2F1c2UgcnBjIGVycm9yLiBhbGwgb3RoZXIgY2FzZXMgc2hvdWxkIGJlIG9rLlxyXG4gICAgICAgICAgICAgICAgLy8gUnBjUmVwb3J0IGluY2x1ZGUgZnJhZ21lbnQgYW5kIHF1ZXJ5UGFyYW1zIGluICdwYXRoJyBhbmQgJ2JlZm9yZVJlZGlyZWN0ZWRQYXRoJy5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZSAmJiBkYXRhLmV2ZW50LnVybCAhPT0gdGhpcy5pZGxlVXJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5mcmFtZS5yZXBvcnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBkZWNvZGVVUkkoZGF0YS5ldmVudC51cmxBZnRlclJlZGlyZWN0cyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZVJlZGlyZWN0ZWRQYXRoOiBkZWNvZGVVUkkoZGF0YS5ldmVudC51cmwpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RhYmxlUGF0aDogZGF0YS5zZWxlY3RhYmxlUGF0aHNcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudGVyaW5nTW9kdWxlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYy5yZWdpc3RlcihScGNPdXRib3VuZENvbW1hbmRzLkluaXQsIHRoaXMub25Jbml0LmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjLnJlZ2lzdGVyKFJwY091dGJvdW5kQ29tbWFuZHMuT3BlbiwgdGhpcy5vbk9wZW4uYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMucmVnaXN0ZXIoUnBjT3V0Ym91bmRDb21tYW5kcy5EZWFjdGl2YXRlMiwgdGhpcy5vbkRlYWN0aXZhdGUyLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucnBjLnJlZ2lzdGVyKFJwY091dGJvdW5kQ29tbWFuZHMuQWN0aXZhdGUsIHRoaXMub25BY3RpdmF0ZS5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYy5yZWdpc3RlcihScGNPdXRib3VuZENvbW1hbmRzLlNodXRkb3duLCB0aGlzLm9uU2h1dGRvd24uYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMucmVnaXN0ZXIoUnBjT3ZlcmxheUNsb3NlS2V5LmNvbW1hbmQsIHRoaXMub25PdmVybGF5Q2xvc2UuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaHV0ZG93biB0aGUgbmF2aWdhdGlvbiBjb21tdW5pY2F0aW9uIGZyb20vdG8gdGhlIHNoZWxsLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2h1dGRvd24oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1hcCBkaWFsb2cgc2VydmljZSBhbmQgZGlhbG9nIGlkIHNvIHRoYXQgY29ycmVjdCBkaWFsb2cgc2VydmljZSBpbnN0YW5jZSBjYW4gYmUgZm91bmRcclxuICAgICAqIEBwYXJhbSBkaWFsb2dTZXJ2aWNlIGRpYWxvZyBzZXJ2aWNlIHRvIGJlIHJlZ2lzdGVyZWRcclxuICAgICAqIEBwYXJhbSBkaWFsb2dJZCBhc3NvY2lhdGVkIGRpYWxvZyBpZFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJEaWFsb2dTZXJ2aWNlKGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsIGRpYWxvZ0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2VNYXBbZGlhbG9nSWRdID0gZGlhbG9nU2VydmljZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbmZpZ3VyZVBlcmZvcm1hbmNlUHJvZmlsZShlbmFibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGlmIChlbmFibGVkKSB7XHJcbiAgICAgICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5jdXJyZW50LmVuYWJsZSh0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgUGVyZm9ybWFuY2VQcm9maWxlLmN1cnJlbnQuZGlzYWJsZSh0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBQZXJmb3JtYW5jZVByb2ZpbGUubG9nUm91dGVOYXZpZ2F0aW9uKCdOYXZpZ2F0aW9uU2VydmljZScsIHN0YXJ0VGltZXN0YW1wLCBEYXRlLm5vdygpLCAnW3JwY0luaXRdJywgdGhpcy5tb2R1bGVOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uSW5pdChkYXRhOiBhbnkpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIC8vIElmcmFtZSBoYXMgcmVjZWl2ZWQgYWxsIGluaXRpYWxpemF0aW9uIGRhdGEgZnJvbSB0aGUgc2hlbGwuXHJcbiAgICAgICAgdGhpcy5hcHBDb250ZXh0U2VydmljZS5nYXRld2F5Lm5hdmlnYXRpb25SZWFkeVN0YXR1cyA9IHRydWU7XHJcblxyXG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBzZWxmID0gTXNmdFNtZS5zZWxmKCk7XHJcbiAgICAgICAgaWYgKCFNc2Z0U21lLmlzTnVsbE9yVW5kZWZpbmVkKHNlbGYuSW5pdC5zZXNzaW9uRXhwaXJhdGlvbikgJiYgc2VsZi5Jbml0LnNlc3Npb25FeHBpcmF0aW9uID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJBbGl2ZVNlcnZpY2Uuc3RhcnQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIENvbm5lY3Rpdml0eUVuZm9yY2VyLnJlZ2lzdGVyKHRoaXMuYXBwQ29udGV4dFNlcnZpY2UpO1xyXG4gICAgICAgIHRoaXMubW9kdWxlTmFtZSA9IHNlbGYuSW5pdC5tb2R1bGVOYW1lO1xyXG4gICAgICAgIHRoaXMuY29uZmlndXJlUGVyZm9ybWFuY2VQcm9maWxlKHNlbGYuSW5pdC5wZXJmb3JtYW5jZVByb2ZpbGUpO1xyXG4gICAgICAgIFBlcmZvcm1hbmNlUHJvZmlsZS5sb2dOdWxsKHRoaXMubW9kdWxlTmFtZSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLlJwY09ic2VydmFibGVQZXJmb3JtYW5jZUNvbmZpZ1NlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLlJwY09ic2VydmFibGVQZXJmb3JtYW5jZUNvbmZpZ1NlcnZlciA9IG5ldyBScGNPYnNlcnZhYmxlUGVyZm9ybWFuY2VDb25maWdTZXJ2ZXIodGhpcy5hcHBDb250ZXh0U2VydmljZS5ycGMpO1xyXG4gICAgICAgICAgICB0aGlzLlJwY09ic2VydmFibGVQZXJmb3JtYW5jZUNvbmZpZ1NlcnZlci5yZWdpc3RlcigocmVxdWVzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmVQZXJmb3JtYW5jZVByb2ZpbGUocmVxdWVzdC5lbmFibGVkKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucnBjT2JzZXJ2YWJsZVVwZGF0ZVRoZW1lU2VydmVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucnBjT2JzZXJ2YWJsZVVwZGF0ZVRoZW1lU2VydmVyID0gbmV3IFJwY09ic2VydmFibGVVcGRhdGVUaGVtZVNlcnZlcih0aGlzLmFwcENvbnRleHRTZXJ2aWNlLnJwYyk7XHJcbiAgICAgICAgICAgIHRoaXMucnBjT2JzZXJ2YWJsZVVwZGF0ZVRoZW1lU2VydmVyLnJlZ2lzdGVyKChyZXF1ZXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBDb3JlRW52aXJvbm1lbnQuYXNzZXRNYW5hZ2VyLnNldFRoZW1lKHJlcXVlc3QubmV3VGhlbWUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGwgdG8gZGlhbG9nIHNlcnZpY2UgdG8gcmVxdWVzdCBjbG9zZSBhIGRpYWxvZ1xyXG4gICAgICogQHBhcmFtIGRhdGEgZGF0YSBvYmplY3QgdG8gY2xvc2UgYSBkaWFsb2cgZnJvbSBzaGVsbFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9uT3ZlcmxheUNsb3NlKGRhdGE6IFJwY0RpYWxvZ092ZXJsYXlEYXRhKTogUHJvbWlzZTxScGNEaWFsb2dPdmVybGF5UmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nU2VydmljZSA9IHRoaXMuZGlhbG9nU2VydmljZU1hcFtkYXRhLmRpYWxvZ0lkXTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGRpYWxvZ1NlcnZpY2UpIHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gZGlhbG9nU2VydmljZS5vdmVybGF5Q2xpY2tlZChkYXRhLmRpYWxvZ0lkKTtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuZGlhbG9nU2VydmljZU1hcFtkYXRhLmRpYWxvZ0lkXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyBvdmVybGF5Q2xvc2VkOiByZXN1bHQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXBlYXRlZCBvcGVuIGNhbGxlZCB1bnRpbCBuYXZpZ2F0aW9uIGlzIGVzdGFibGlzaGVkIG9yIGZhaWxlZC5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZGF0YSB0aGUgUnBjT3BlbkRhdGEgZGF0YS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBvbk9wZW4oZGF0YTogUnBjT3BlbkRhdGEpOiBQcm9taXNlPFJwY09wZW5SZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBjb250ZXh0OiBTdGF0ZUNvbnRleHQ8UnBjT3BlblN0YXRlLCBScGNPcGVuUmVzdWx0PiA9IHRoaXMub3BlbkNvbnRleHQ7XHJcbiAgICAgICAgaWYgKGNvbnRleHQuc3RhdGUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICB3YWl0ZWRUaW1lOiBEYXRlLm5vdygpIC0gY29udGV4dC5yZXF1ZXN0ZWRUaW1lLFxyXG4gICAgICAgICAgICAgICAgc3RhdGU6IHRoaXMub3BlbkNvbnRleHQuc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBlcnJvcjogY29udGV4dC5lcnJvclxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dC5zdGF0ZSAhPT0gUnBjT3BlblN0YXRlLkluUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5yZXF1ZXN0ZWRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29udGV4dC5yZXF1ZXN0ZWRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBjb250ZXh0LnN0YXRlID0gUnBjT3BlblN0YXRlLkluUHJvZ3Jlc3M7XHJcbiAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9IE5hdGl2ZVEuZGVmZXI8UnBjT3BlblJlc3VsdD4oKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHRpbWVvdXQgdG8gcmVzcG9uZCBiYWNrIHN0YXR1cyB0byBzaGVsbC5cclxuICAgICAgICBjb250ZXh0LnRpbWVyID0gc2V0VGltZW91dChcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZC5yZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICB3YWl0ZWRUaW1lOiBEYXRlLm5vdygpIC0gY29udGV4dC5yZXF1ZXN0ZWRUaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb250ZXh0LnN0YXRlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQudGltZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9IG51bGw7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIE5hdmlnYXRpb25TZXJ2aWNlLmluaXRpYWxXYWl0VGltZSk7XHJcblxyXG4gICAgICAgIHRoaXMuYXBwQ29udGV4dFNlcnZpY2Uuc2VydmljZXNSZWFkeVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YWtlKDEpLFxyXG4gICAgICAgICAgICBtZXJnZU1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBTbWVXZWJUZWxlbWV0cnkuaW5pdCh0aGlzLmFwcENvbnRleHRTZXJ2aWNlKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAgICAgbG9hZGVkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2luZy5sb2dEZWJ1ZygnU21lV2ViVGVsZW1ldHJ5JywgbG9hZGVkID8gJ0xvYWRlZCBicm93c2VyIHRlbGVtZXRyeScgOiAnRmFpbGVkIHRvIGxvYWQgYnJvd3NlciB0ZWxlbWV0cnknKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgUGVyZm9ybWFuY2VUcmFja2VyLnRyeVN0YXJ0Q2FsY3VsYXRpbmdUaW1lVG9JbnRlcmFjdGl2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgbmF2aWdhdGlvbiA9IE5hdmlnYXRpb24uZ2V0VXJsTmF2aWdhdGlvbkRhdGEodGhpcy5yb3V0ZXIsIGRhdGEucGF0aCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUobmF2aWdhdGlvbi5jb21tYW5kcywgdGhpcy5hZGREZWZhdWx0TmF2aWdhdGlvbk9wdGlvbnMobmF2aWdhdGlvbi5vcHRpb25zKSk7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBtYXAoc3VjY2VzcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBQZXJmb3JtYW5jZVByb2ZpbGUubG9nUm91dGVOYXZpZ2F0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICdOYXZpZ2F0aW9uU2VydmljZScsIGNvbnRleHQucmVxdWVzdGVkVGltZSwgRGF0ZS5ub3coKSwgJ1tycGNPcGVuXScsIHRoaXMubW9kdWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gUnBjT3BlblN0YXRlLk9wZW5lZDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aW1lciBpc24ndCBmaXJlZCB5ZXQsIGp1c3QgY29tcGxldGUgd2l0aCBzdWNjZXNzIG5hdmlnYXRpb24uXHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC50aW1lcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChjb250ZXh0LnRpbWVyKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkLnJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YWl0ZWRUaW1lOiBEYXRlLm5vdygpIC0gY29udGV4dC5yZXF1ZXN0ZWRUaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogY29udGV4dC5zdGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGNvbnRleHQuZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQudGltZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IsIGNhdWdodCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IFJwY09wZW5TdGF0ZS5GYWlsZWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9ICcnO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yICYmIGVycm9yLnhocikge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBOZXQuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvcjtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YWNrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvci5zdGFjaztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZXJyb3IgPSBtZXNzYWdlO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRpbWVyIGlzbid0IGZpcmVkIHlldCwganVzdCBjb21wbGV0ZSB3aXRoIGVycm9yIG5hdmlnYXRpb24uXHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC50aW1lcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChjb250ZXh0LnRpbWVyKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkLnJlamVjdChjb250ZXh0LmVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQudGltZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiBFTVBUWTtcclxuICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICAgICByZXR1cm4gY29udGV4dC5kZWZlcnJlZC5wcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVwZWF0ZWQgY2FsbGVkIHVudGlsIEd1YXJkIGlzIGNvbnRpbnVlZCBvciBjYW5jZWxsZWQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGRhdGEgdGhlIHZvaWQgZGF0YS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBvbkRlYWN0aXZhdGUyKGRhdGE6IHZvaWQpOiBQcm9taXNlPFJwY0RlYWN0aXZhdGVSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBzdGFydFRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgY29uc3QgY29udGV4dDogU3RhdGVDb250ZXh0PFJwY0RlYWN0aXZhdGVTdGF0ZSwgUnBjRGVhY3RpdmF0ZVJlc3VsdD4gPSB0aGlzLmRlYWN0aXZhdGVDb250ZXh0O1xyXG4gICAgICAgIGlmIChjb250ZXh0LnN0YXRlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgd2FpdGVkVGltZTogRGF0ZS5ub3coKSAtIGNvbnRleHQucmVxdWVzdGVkVGltZSxcclxuICAgICAgICAgICAgICAgIHN0YXRlOiBjb250ZXh0LnN0YXRlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChjb250ZXh0LnN0YXRlICE9PSBScGNEZWFjdGl2YXRlU3RhdGUuSW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnJlcXVlc3RlZFRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBQZXJmb3JtYW5jZVByb2ZpbGUubG9nUm91dGVOYXZpZ2F0aW9uKCdOYXZpZ2F0aW9uU2VydmljZScsIHN0YXJ0VGltZXN0YW1wLCBEYXRlLm5vdygpLCAnW3JwY0RlYWN0aXZhdGVdJywgdGhpcy5tb2R1bGVOYW1lKTtcclxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGRlY29kZVVSSSh0aGlzLnJvdXRlci51cmwpO1xyXG4gICAgICAgIGlmIChjdXJyZW50ID09PSB0aGlzLmlkbGVVcmwpIHtcclxuICAgICAgICAgICAgLy8gaXQncyBhbHJlYWR5IGluYWN0aXZlLlxyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IDAsXHJcbiAgICAgICAgICAgICAgICBzdGF0ZTogUnBjRGVhY3RpdmF0ZVN0YXRlLkRlYWN0aXZhdGVkXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29udGV4dC5yZXF1ZXN0ZWRUaW1lID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBjb250ZXh0LnN0YXRlID0gUnBjRGVhY3RpdmF0ZVN0YXRlLkluUHJvZ3Jlc3M7XHJcbiAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9IE5hdGl2ZVEuZGVmZXI8UnBjRGVhY3RpdmF0ZVJlc3VsdD4oKTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHRpbWVvdXQgdG8gcmVzcG9uZCBiYWNrIHN0YXR1cyB0byBzaGVsbC5cclxuICAgICAgICBjb250ZXh0LnRpbWVyID0gc2V0VGltZW91dChcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZC5yZXNvbHZlKHtcclxuICAgICAgICAgICAgICAgICAgICB3YWl0ZWRUaW1lOiBEYXRlLm5vdygpIC0gY29udGV4dC5yZXF1ZXN0ZWRUaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb250ZXh0LnN0YXRlXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQudGltZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaWYgaXQgaXNuJ3QgaW4gcHJvZ3Jlc3MsIHJlc2V0IHRoZSBzdGF0ZS5cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnN0YXRlICE9PSBScGNEZWFjdGl2YXRlU3RhdGUuSW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIE5hdmlnYXRpb25TZXJ2aWNlLmluaXRpYWxXYWl0VGltZSk7XHJcblxyXG4gICAgICAgIC8vIHRyeSBuYXZpZ2F0ZSB0byBpZGxlLlxyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHRoaXMub3B0aW9ucy5pZGxlUm91dGUsIHRoaXMuZGVmYXVsdE5hdmlnYXRpb25PcHRpb25zKVxyXG4gICAgICAgICAgICAudGhlbihcclxuICAgICAgICAgICAgc3VjY2VzcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBQZXJmb3JtYW5jZVByb2ZpbGUubG9nUm91dGVOYXZpZ2F0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICdOYXZpZ2F0aW9uU2VydmljZScsIHN0YXJ0VGltZXN0YW1wLCBEYXRlLm5vdygpLCAnW3JwY0RlYWN0aXZhdGVdJywgdGhpcy5tb2R1bGVOYW1lKTtcclxuICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gbmF2aWdhdGUgYXdheSBzbyBpbmFjdGl2ZSBtb2RlLlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0Um91dGUgPSBOYXZpZ2F0aW9uLmdldFVybE5hdmlnYXRpb25EYXRhKHRoaXMucm91dGVyLCBjdXJyZW50KTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gUnBjRGVhY3RpdmF0ZVN0YXRlLkRlYWN0aXZhdGVkO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBuYXZpZ2F0ZSBjYW5jZWwgc28gYWN0aXZlIG1vZGUuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBScGNEZWFjdGl2YXRlU3RhdGUuQ2FuY2VsbGVkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHRpbWVyIGlzbid0IGZpcmVkIHlldCwganVzdCBjb21wbGV0ZSB3aXRoIHN1Y2Nlc3MgbmF2aWdhdGlvbi5cclxuICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LnRpbWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGNvbnRleHQudGltZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQucmVzb2x2ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRlZFRpbWU6IERhdGUubm93KCkgLSBjb250ZXh0LnJlcXVlc3RlZFRpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBjb250ZXh0LnN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC50aW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZWZlcnJlZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5zdGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZXF1ZXN0ZWRUaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gbmF2aWdhdGUgZXJyb3Igc28gYWN0aXZlIG1vZGUuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0YXRlID0gUnBjRGVhY3RpdmF0ZVN0YXRlLkNhbmNlbGxlZDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZiB0aW1lciBpc24ndCBmaXJlZCB5ZXQsIGp1c3QgY29tcGxldGUgd2l0aCBzdWNjZXNzIG5hdmlnYXRpb24uXHJcbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC50aW1lcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChjb250ZXh0LnRpbWVyKTtcclxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlZmVycmVkLnJlc29sdmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YWl0ZWRUaW1lOiBEYXRlLm5vdygpIC0gY29udGV4dC5yZXF1ZXN0ZWRUaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogY29udGV4dC5zdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQudGltZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVmZXJyZWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc3RhdGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucmVxdWVzdGVkVGltZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBjb250ZXh0LmRlZmVycmVkLnByb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvbkFjdGl2YXRlKGRhdGE6IFJwY0FjdGl2YXRlRGF0YSk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGNvbnN0IG5ld1JvdXRlID0gZGF0YS51cmwgfHwgZGF0YS51cmwgPT09ICcnID9cclxuICAgICAgICAgICAgTmF2aWdhdGlvbi5nZXRVcmxOYXZpZ2F0aW9uRGF0YSh0aGlzLnJvdXRlciwgZGF0YS51cmwpXHJcbiAgICAgICAgICAgIDogdGhpcy5sYXN0Um91dGUgfHwgeyBjb21tYW5kczogWycnXSwgb3B0aW9uczogbnVsbCB9O1xyXG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmVudGVyaW5nTW9kdWxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy8gTWFudWFsbHkgZmlyZSBwYWdlIHZpZXcgZm9yIGV2ZXJ5IHRpbWUgd2UgcmVhY3RpdmF0ZSBhIG1vZHVsZVxyXG4gICAgICAgIFNtZVdlYlRlbGVtZXRyeS50cmFjZVBhZ2VWaWV3KHt9KTtcclxuXHJcbiAgICAgICAgLy8gcHVsbCBsYXRlc3QgcnBjIGZvcndhcmRlciBzZXJ2aWNlcyBkYXRhIHdoZW4gcmVhY3RpdmF0ZWQuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwQ29udGV4dFNlcnZpY2UucmVpbml0aWFsaXplU2VydmljZXMoKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMucm91dGVyLm5hdmlnYXRlKG5ld1JvdXRlLmNvbW1hbmRzLCB0aGlzLmFkZERlZmF1bHROYXZpZ2F0aW9uT3B0aW9ucyhuZXdSb3V0ZS5vcHRpb25zKSkpLFxyXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IFBlcmZvcm1hbmNlUHJvZmlsZS5sb2dSb3V0ZU5hdmlnYXRpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgJ05hdmlnYXRpb25TZXJ2aWNlJywgc3RhcnRUaW1lc3RhbXAsIERhdGUubm93KCksICdbcnBjQWN0aXZhdGVdJywgdGhpcy5tb2R1bGVOYW1lKSlcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25TaHV0ZG93bihkYXRhOiBScGNTaHV0ZG93bkRhdGEpOiBQcm9taXNlPFJwY1NodXRkb3duUmVzdWx0PiB7XHJcbiAgICAgICAgdGhpcy51c2VyQWxpdmVTZXJ2aWNlLnN0b3AoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIubmF2aWdhdGUodGhpcy5vcHRpb25zLmlkbGVSb3V0ZSwgdGhpcy5kZWZhdWx0TmF2aWdhdGlvbk9wdGlvbnMpXHJcbiAgICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiA8UnBjU2h1dGRvd25SZXN1bHQ+eyBjYW5TaHV0ZG93bjogcmVzdWx0IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWRkRGVmYXVsdE5hdmlnYXRpb25PcHRpb25zKG9wdGlvbnM6IE5hdmlnYXRpb25EYXRhRXh0cmFzKTogTmF2aWdhdGlvbkV4dHJhcyB7XHJcbiAgICAgICAgcmV0dXJuIHsgLi4uKG9wdGlvbnMgfHwge30pLCAuLi50aGlzLmRlZmF1bHROYXZpZ2F0aW9uT3B0aW9ucyB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -56,9 +56,7 @@ export class UserAliveService extends RpcObservableAliveClient {
|
|
|
56
56
|
* Stop monitoring the user activity.
|
|
57
57
|
*/
|
|
58
58
|
stop() {
|
|
59
|
-
|
|
60
|
-
this.subscription.unsubscribe();
|
|
61
|
-
}
|
|
59
|
+
this.subscription?.unsubscribe();
|
|
62
60
|
}
|
|
63
61
|
}
|
|
64
62
|
/** @nocollapse */ UserAliveService.ɵfac = function UserAliveService_Factory(t) { return new (t || UserAliveService)(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.RpcService)); };
|
|
@@ -66,4 +64,4 @@ export class UserAliveService extends RpcObservableAliveClient {
|
|
|
66
64
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UserAliveService, [{
|
|
67
65
|
type: Injectable
|
|
68
66
|
}], function () { return [{ type: i1.Router }, { type: i2.RpcService }]; }, null); })();
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hbGl2ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvc2VydmljZS91c2VyLWFsaXZlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0ZBQWdGLENBQUM7QUFDMUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQUczQyxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsd0JBQXdCO0lBRzFEOzs7OztPQUtHO0lBQ0gsWUFBb0IsTUFBYyxFQUFFLEdBQWU7UUFDL0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBREssV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUVsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1IsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDbEIsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUNqQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQ2xCLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQ2pDO1lBQ0QsMENBQTBDO1lBQzFDLDZDQUE2QztZQUM3QyxtREFBbUQ7YUFDbEQsSUFBSSxDQUNELFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFdkIsNENBQTRDO1lBQzVDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxJQUFJLFFBQVEsRUFBRTtnQkFDdEMsSUFBSSxHQUFHLEdBQUcsQ0FBQztnQkFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDN0M7WUFFRCw2QkFBNkI7WUFDN0IsUUFBUSxHQUFHLEdBQUcsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxFQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUN0QixZQUFZLENBQUMsUUFBUSxDQUFDLEVBQ3RCLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRTtZQUNaLDRDQUE0QztZQUM1QyxJQUFJLFFBQVEsR0FBRyxJQUFJLEVBQUU7Z0JBQ2pCLElBQUksR0FBRyxRQUFRLENBQUM7Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3ZCO1lBRUQsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUMsQ0FDTjthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNJLElBQUk7UUFDUCxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7O21HQWxFUSxnQkFBZ0I7cUdBQWhCLGdCQUFnQixXQUFoQixnQkFBZ0I7dUZBQWhCLGdCQUFnQjtjQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBScGNPYnNlcnZhYmxlQWxpdmVDbGllbnQgfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL3JwYy9hbGl2ZS9ycGMtb2JzZXJ2YWJsZS1hbGl2ZS1jbGllbnQnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUnBjU2VydmljZSB9IGZyb20gJy4vcnBjLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVXNlckFsaXZlU2VydmljZSBleHRlbmRzIFJwY09ic2VydmFibGVBbGl2ZUNsaWVudCB7XHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFVzZXJBbGl2ZVNlcnZpY2UgY2xhc3MuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHJvdXRlciB0aGUgcm91dGVyIG9iamVjdC5cclxuICAgICAqIEBwYXJhbSBycGMgdGhlIHJwYyBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHJwYzogUnBjU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKHJwYyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTdGFydHMgbW9uaXRvcmluZyB1c2VyIGFjdGl2aXR5IHRvIHJlcG9ydCB0aGUgc2hlbGwuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGFydCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB3YWl0VGltZSA9IDEwMDAwO1xyXG4gICAgICAgIGlmICh0aGlzLnJwYy5pc1NoZWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBsYXN0ID0gMDtcclxuICAgICAgICBsZXQgZGVib3VuY2UgPSAwO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gbWVyZ2UoXHJcbiAgICAgICAgICAgICAgICBvZigwKSxcclxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLmV2ZW50cyxcclxuICAgICAgICAgICAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2ZvY3VzaW4nKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC8vIDAwIDE1IDMwID0+IDAwIDE1IDMwICh3YWl0VGltZSBleGNlZWRzKVxyXG4gICAgICAgICAgICAvLyAwMCAwNSAxMCA9PiAwMCAxMCAoZGVib3VuY2UgMDUgaXMgaWdub3JlZClcclxuICAgICAgICAgICAgLy8gMDAgMTUgMjAgPT4gMDAgMTUgMzAgKDIwIGlzIGRlYm91bmNlIDEwIHNlY29uZHMpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBlbWl0IHdoZW4gdGhlIGZpcnN0IGFuZCBleGNlZWRzIHdhaXRUaW1lLlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0ID09PSAwIHx8IG5vdyAtIGxhc3QgPj0gd2FpdFRpbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IG5vdztcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWxpdmUoKS5waXBlKG1hcCgoKSA9PiB0cnVlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBzZW5kIGRvd24gdG8gZGVib3VuY2VUaW1lLlxyXG4gICAgICAgICAgICAgICAgICAgIGRlYm91bmNlID0gbm93O1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgZmlsdGVyKHN0YXRlID0+IHN0YXRlKSxcclxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSh3YWl0VGltZSksXHJcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBvbmx5IHNlbmQgaWYgZGVib3VuY2UgaXMgbmV3ZXIgdGhhbiBsYXN0LlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWJvdW5jZSA+IGxhc3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IGRlYm91bmNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hbGl2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3RvcCBtb25pdG9yaW5nIHRoZSB1c2VyIGFjdGl2aXR5LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RvcCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|