@openziti/ziti-console-lib 0.12.11 → 1.0.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/assets/fonts/icomoon.eot +0 -0
- package/assets/fonts/icomoon.svg +6 -1
- package/assets/fonts/icomoon.ttf +0 -0
- package/assets/fonts/icomoon.woff +0 -0
- package/assets/fonts/icomoon.woff2 +0 -0
- package/assets/styles/global.scss +431 -24
- package/assets/styles/icons.scss +644 -0
- package/assets/svgs/Icon_Log_Logout.svg +43 -0
- package/assets/svgs/clients.svg +6 -0
- package/assets/svgs/ziti-logo.svg +23 -0
- package/esm2022/lib/ZAC_VERSION.mjs +4 -0
- package/esm2022/lib/default-app-config.mjs +5 -0
- package/esm2022/lib/features/card/card.component.mjs +4 -5
- package/esm2022/lib/features/card-list/card-list.component.mjs +2 -4
- package/esm2022/lib/features/config-editor/config-editor.component.mjs +2 -3
- package/esm2022/lib/features/confirm/confirm.component.mjs +4 -5
- package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +2 -3
- package/esm2022/lib/features/custom-tags/custom-tags.component.mjs +4 -5
- package/esm2022/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.mjs +2 -3
- package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +2 -3
- package/esm2022/lib/features/data-table/cells/table-cell-select/table-cell-select.component.mjs +4 -5
- package/esm2022/lib/features/data-table/cells/table-cell-token/table-cell-token.component.mjs +2 -3
- package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +2 -3
- package/esm2022/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.mjs +2 -3
- package/esm2022/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.mjs +2 -3
- package/esm2022/lib/features/data-table/column-headers/table-column-select/table-column-select.component.mjs +4 -5
- package/esm2022/lib/features/data-table/data-table-filter.service.mjs +2 -3
- package/esm2022/lib/features/data-table/data-table.component.mjs +4 -5
- package/esm2022/lib/features/data-table/data-table.service.mjs +2 -3
- package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +4 -5
- package/esm2022/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.mjs +2 -3
- package/esm2022/lib/features/data-table/tooltips/os-tooltip.component.mjs +2 -3
- package/esm2022/lib/features/data-table/tooltips/sdk-tooltip.component.mjs +2 -3
- package/esm2022/lib/features/dynamic-widgets/boolean/boolean-toggle-input.component.mjs +2 -3
- package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +2 -3
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +2 -3
- package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.service.mjs +2 -3
- package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +2 -3
- package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +4 -5
- package/esm2022/lib/features/dynamic-widgets/password/password-input.component.mjs +2 -3
- package/esm2022/lib/features/dynamic-widgets/port-ranges/port-ranges.component.mjs +2 -3
- package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +2 -3
- package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +2 -3
- package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +2 -3
- package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +2 -3
- package/esm2022/lib/features/extendable/extendable.component.mjs +2 -3
- package/esm2022/lib/features/extendable/extensions-noop.service.mjs +3 -3
- package/esm2022/lib/features/header-bar/header-bar.component.mjs +105 -0
- package/esm2022/lib/features/json-view/json-view.component.mjs +4 -5
- package/esm2022/lib/features/list-page-features/list-page-form/list-page-form.component.mjs +2 -3
- package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +4 -5
- package/esm2022/lib/features/loading-indicator/loading-indicator.component.mjs +2 -3
- package/esm2022/lib/features/login/login-dialog.component.mjs +10 -12
- package/esm2022/lib/features/messaging/growler.component.mjs +4 -5
- package/esm2022/lib/features/messaging/growler.module.mjs +2 -3
- package/esm2022/lib/features/messaging/growler.service.mjs +2 -3
- package/esm2022/lib/features/messaging/logger.service.mjs +2 -3
- package/esm2022/lib/features/multi-action-button/multi-action-button.component.mjs +2 -3
- package/esm2022/lib/features/no-items/no-items.component.mjs +2 -3
- package/esm2022/lib/features/overrides/overrides.component.mjs +2 -3
- package/esm2022/lib/features/overrides/overrides.service.mjs +2 -3
- package/esm2022/lib/features/preview-list/preview-list.component.mjs +4 -5
- package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +2 -3
- package/esm2022/lib/features/progress-meter/progress-meter.component.mjs +2 -3
- package/esm2022/lib/features/progress-wizard/progress-wizard.component.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/api-session/api-session-form.component.mjs +5 -9
- package/esm2022/lib/features/projectable-forms/api-session/api-session-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +5 -9
- package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.mjs +5 -9
- package/esm2022/lib/features/projectable-forms/certificate-authority/certificate-authority-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.mjs +4 -8
- package/esm2022/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/config-type/config-type-form.component.mjs +5 -9
- package/esm2022/lib/features/projectable-forms/config-type/config-type-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +5 -9
- package/esm2022/lib/features/projectable-forms/configuration/configuration.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +34 -26
- package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.mjs +8 -12
- package/esm2022/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +4 -5
- package/esm2022/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.mjs +4 -5
- package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +4 -5
- package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +6 -12
- package/esm2022/lib/features/projectable-forms/identity/identity-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +5 -12
- package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.component.mjs +5 -9
- package/esm2022/lib/features/projectable-forms/posture-check/posture-check-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/projectable-form.class.mjs +36 -74
- package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +5 -8
- package/esm2022/lib/features/projectable-forms/service/service-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +57 -24
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.mjs +8 -12
- package/esm2022/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.component.mjs +8 -12
- package/esm2022/lib/features/projectable-forms/service-policy/service-policy-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/session/session-form.component.mjs +5 -9
- package/esm2022/lib/features/projectable-forms/session/session-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +4 -8
- package/esm2022/lib/features/projectable-forms/terminator/terminator-form.service.mjs +2 -3
- package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.component.mjs +7 -11
- package/esm2022/lib/features/projectable-forms/transit-router/transit-router-form.service.mjs +2 -3
- package/esm2022/lib/features/qr-code/qr-code.component.mjs +4 -5
- package/esm2022/lib/features/quick-add/quick-add.component.mjs +50 -0
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +4 -5
- package/esm2022/lib/features/reset-enrollment/reset-enrollment.service.mjs +2 -3
- package/esm2022/lib/features/side-modal/side-modal.component.mjs +2 -3
- package/esm2022/lib/features/side-navigator/side-navigator.component.mjs +127 -0
- package/esm2022/lib/features/sidebars/side-navbar/side-navbar.component.mjs +4 -5
- package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +2 -3
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs +2 -3
- package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs +2 -3
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.component.mjs +2 -3
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.helper.mjs +2 -3
- package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.treenodeprocessor.mjs +2 -3
- package/esm2022/lib/features/visualizer/visualizer-service.class.mjs +2 -3
- package/esm2022/lib/pages/api-sessions/api-sessions-page.component.mjs +2 -3
- package/esm2022/lib/pages/api-sessions/api-sessions-page.service.mjs +2 -3
- package/esm2022/lib/pages/attributes/attributes.component.mjs +104 -0
- package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +2 -3
- package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +4 -4
- package/esm2022/lib/pages/callback/callback.component.mjs +2 -3
- package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.component.mjs +2 -3
- package/esm2022/lib/pages/certificate-authorities/certificate-authorities-page.service.mjs +2 -3
- package/esm2022/lib/pages/config-types/config-types-page.component.mjs +2 -3
- package/esm2022/lib/pages/config-types/config-types-page.service.mjs +2 -3
- package/esm2022/lib/pages/configurations/configurations-page.component.mjs +2 -3
- package/esm2022/lib/pages/configurations/configurations-page.service.mjs +2 -3
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +6 -13
- package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.service.mjs +2 -3
- package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +5 -16
- package/esm2022/lib/pages/edge-routers/edge-routers-page.service.mjs +2 -4
- package/esm2022/lib/pages/geolocate/geolocate.component.mjs +130 -0
- package/esm2022/lib/pages/identities/identities-page.component.mjs +5 -16
- package/esm2022/lib/pages/identities/identities-page.service.mjs +2 -3
- package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +2 -3
- package/esm2022/lib/pages/jwt-signers/jwt-signers-page.service.mjs +2 -3
- package/esm2022/lib/pages/posture-checks/posture-checks-page.component.mjs +3 -4
- package/esm2022/lib/pages/posture-checks/posture-checks-page.service.mjs +2 -3
- package/esm2022/lib/pages/profile/profile.component.mjs +58 -0
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +6 -13
- package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.service.mjs +2 -3
- package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +6 -13
- package/esm2022/lib/pages/service-policies/service-policies-page.service.mjs +2 -3
- package/esm2022/lib/pages/services/services-page.component.mjs +6 -13
- package/esm2022/lib/pages/services/services-page.service.mjs +2 -3
- package/esm2022/lib/pages/sessions/sessions-page.component.mjs +2 -3
- package/esm2022/lib/pages/sessions/sessions-page.service.mjs +2 -3
- package/esm2022/lib/pages/settings/settings.component.mjs +61 -0
- package/esm2022/lib/pages/terminators/terminators-page.component.mjs +3 -4
- package/esm2022/lib/pages/terminators/terminators-page.service.mjs +2 -3
- package/esm2022/lib/pages/transit-routers/transit-routers-page.component.mjs +5 -16
- package/esm2022/lib/pages/transit-routers/transit-routers-page.service.mjs +2 -3
- package/esm2022/lib/safe.pipe.mjs +2 -3
- package/esm2022/lib/services/auth.service.mjs +2 -3
- package/esm2022/lib/services/console-events.service.mjs +2 -14
- package/esm2022/lib/services/csv-download.service.mjs +2 -3
- package/esm2022/lib/services/deactivate-guard.service.mjs +2 -3
- package/esm2022/lib/services/login-service.class.mjs +2 -3
- package/esm2022/lib/services/node-data.service.mjs +24 -3
- package/esm2022/lib/services/noop-login.service.mjs +2 -3
- package/esm2022/lib/services/schema.service.mjs +2 -3
- package/esm2022/lib/services/settings-service.class.mjs +5 -18
- package/esm2022/lib/services/settings.service.mjs +14 -11
- package/esm2022/lib/services/tab-name.service.mjs +9 -6
- package/esm2022/lib/services/validation.service.mjs +2 -3
- package/esm2022/lib/services/ziti-controller-data.service.mjs +18 -3
- package/esm2022/lib/services/ziti-data.service.mjs +2 -3
- package/esm2022/lib/shared/list-page-component.class.mjs +6 -3
- package/esm2022/lib/shared/list-page-service.class.mjs +2 -3
- package/esm2022/lib/zac-routing.module.mjs +3 -10
- package/esm2022/lib/ziti-console-lib.module.mjs +43 -24
- package/esm2022/lib/ziti-console.constants.mjs +2 -1
- package/esm2022/public-api.mjs +9 -8
- package/fesm2022/openziti-ziti-console-lib.mjs +3512 -4317
- package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
- package/lib/ZAC_VERSION.d.ts +4 -0
- package/lib/ZAC_VERSION.d.ts.map +1 -0
- package/lib/default-app-config.d.ts +9 -0
- package/lib/default-app-config.d.ts.map +1 -0
- package/lib/features/card-list/card-list.component.d.ts +0 -1
- package/lib/features/card-list/card-list.component.d.ts.map +1 -1
- package/lib/features/extendable/extensions-noop.service.d.ts +2 -0
- package/lib/features/extendable/extensions-noop.service.d.ts.map +1 -1
- package/lib/features/header-bar/header-bar.component.d.ts +29 -0
- package/lib/features/header-bar/header-bar.component.d.ts.map +1 -0
- package/lib/features/login/login-dialog.component.d.ts +2 -1
- package/lib/features/login/login-dialog.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/api-session/api-session-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/certificate-authority/certificate-authority-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts +1 -2
- package/lib/features/projectable-forms/certificate-authority/verify-certificate/verify-certificate.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/config-type/config-type-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts +6 -3
- package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/edge-router-policy/edge-router-policy-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/identity/identity-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/posture-check/posture-check-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/projectable-form.class.d.ts +11 -7
- package/lib/features/projectable-forms/projectable-form.class.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/service-form.component.d.ts +0 -1
- package/lib/features/projectable-forms/service/service-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts +9 -2
- package/lib/features/projectable-forms/service/simple-service/simple-service.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/service-edge-router-policy/service-edge-router-policy-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/service-policy/service-policy-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/session/session-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/session/session-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/terminator/terminator-form.component.d.ts.map +1 -1
- package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts +1 -2
- package/lib/features/projectable-forms/transit-router/transit-router-form.component.d.ts.map +1 -1
- package/lib/features/quick-add/quick-add.component.d.ts +15 -0
- package/lib/features/quick-add/quick-add.component.d.ts.map +1 -0
- package/lib/features/side-navigator/side-navigator.component.d.ts +33 -0
- package/lib/features/side-navigator/side-navigator.component.d.ts.map +1 -0
- package/lib/pages/attributes/attributes.component.d.ts +31 -0
- package/lib/pages/attributes/attributes.component.d.ts.map +1 -0
- package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -1
- package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts +1 -3
- package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts.map +1 -1
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts +1 -3
- package/lib/pages/edge-routers/edge-routers-page.component.d.ts.map +1 -1
- package/lib/pages/edge-routers/edge-routers-page.service.d.ts.map +1 -1
- package/lib/pages/geolocate/geolocate.component.d.ts +32 -0
- package/lib/pages/geolocate/geolocate.component.d.ts.map +1 -0
- package/lib/pages/identities/identities-page.component.d.ts +1 -3
- package/lib/pages/identities/identities-page.component.d.ts.map +1 -1
- package/lib/pages/profile/profile.component.d.ts +17 -0
- package/lib/pages/profile/profile.component.d.ts.map +1 -0
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts +1 -3
- package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts.map +1 -1
- package/lib/pages/service-policies/service-policies-page.component.d.ts +1 -3
- package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -1
- package/lib/pages/services/services-page.component.d.ts +1 -3
- package/lib/pages/services/services-page.component.d.ts.map +1 -1
- package/lib/pages/settings/settings.component.d.ts +23 -0
- package/lib/pages/settings/settings.component.d.ts.map +1 -0
- package/lib/pages/transit-routers/transit-routers-page.component.d.ts +1 -3
- package/lib/pages/transit-routers/transit-routers-page.component.d.ts.map +1 -1
- package/lib/services/console-events.service.d.ts.map +1 -1
- package/lib/services/node-data.service.d.ts +1 -0
- package/lib/services/node-data.service.d.ts.map +1 -1
- package/lib/services/settings-service.class.d.ts +0 -2
- package/lib/services/settings-service.class.d.ts.map +1 -1
- package/lib/services/settings.service.d.ts.map +1 -1
- package/lib/services/tab-name.service.d.ts.map +1 -1
- package/lib/services/ziti-controller-data.service.d.ts +1 -0
- package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
- package/lib/services/ziti-data.service.d.ts +1 -0
- package/lib/services/ziti-data.service.d.ts.map +1 -1
- package/lib/shared/list-page-component.class.d.ts.map +1 -1
- package/lib/zac-routing.module.d.ts.map +1 -1
- package/lib/ziti-console-lib.module.d.ts +114 -110
- package/lib/ziti-console-lib.module.d.ts.map +1 -1
- package/lib/ziti-console.constants.d.ts +1 -0
- package/lib/ziti-console.constants.d.ts.map +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +8 -7
- package/public-api.d.ts.map +1 -1
- package/assets/components/add.html +0 -1
- package/assets/components/api.html +0 -12
- package/assets/components/customtags.html +0 -4
- package/assets/components/line.html +0 -1
- package/assets/components/noitems.html +0 -1
- package/assets/components/save.html +0 -4
- package/assets/components/search.html +0 -8
- package/assets/components/tabIdentities.html +0 -5
- package/assets/components/tabPolicies.html +0 -7
- package/assets/components/tabRouters.html +0 -5
- package/assets/components/tabServers.html +0 -4
- package/assets/components/tabServices.html +0 -6
- package/assets/components/tabSessions.html +0 -4
- package/assets/data/mail.json +0 -0
- package/assets/data/services.json +0 -6
- package/assets/data/site.json +0 -31
- package/assets/data/tags.json +0 -7
- package/assets/data/templates.json +0 -1
- package/assets/fonts/zac.eot +0 -0
- package/assets/fonts/zac.svg +0 -57
- package/assets/fonts/zac.ttf +0 -0
- package/assets/fonts/zac.woff +0 -0
- package/assets/fonts/zac.woff2 +0 -0
- package/assets/html/api-sessions.htm +0 -152
- package/assets/html/attributes.htm +0 -260
- package/assets/html/auth-policies.htm +0 -410
- package/assets/html/cas.htm +0 -439
- package/assets/html/config-types.htm +0 -167
- package/assets/html/configs.htm +0 -238
- package/assets/html/deprecated/fabric-links.htm +0 -336
- package/assets/html/deprecated/fabric-routers.htm +0 -72
- package/assets/html/deprecated/fabric-services.htm +0 -494
- package/assets/html/identities.htm +0 -934
- package/assets/html/index.htm +0 -222
- package/assets/html/jwt-signers.htm +0 -260
- package/assets/html/known.htm +0 -115
- package/assets/html/login.htm +0 -131
- package/assets/html/organization.htm +0 -223
- package/assets/html/posture-checks.htm +0 -393
- package/assets/html/profile.htm +0 -52
- package/assets/html/recipes.htm +0 -455
- package/assets/html/router-policies.htm +0 -168
- package/assets/html/routers.htm +0 -323
- package/assets/html/servers.htm +0 -236
- package/assets/html/service-policies.htm +0 -197
- package/assets/html/service-router-policies.htm +0 -170
- package/assets/html/services.htm +0 -634
- package/assets/html/sessions.htm +0 -157
- package/assets/html/settings.htm +0 -146
- package/assets/html/terminators.htm +0 -244
- package/assets/html/transit-routers.htm +0 -173
- package/assets/resources/avatar/man.svg +0 -78
- package/assets/resources/avatar/woman.svg +0 -96
- package/assets/resources/icon/analysis.svg +0 -104
- package/assets/resources/icon/appwans.svg +0 -20
- package/assets/resources/icon/architecture.svg +0 -1
- package/assets/resources/icon/bike.svg +0 -94
- package/assets/resources/icon/bus.svg +0 -64
- package/assets/resources/icon/cas.svg +0 -46
- package/assets/resources/icon/clusters.svg +0 -28
- package/assets/resources/icon/computer.svg +0 -1
- package/assets/resources/icon/data.svg +0 -1
- package/assets/resources/icon/delivery-truck.svg +0 -1
- package/assets/resources/icon/explosion.svg +0 -81
- package/assets/resources/icon/fabricServices.svg +0 -31
- package/assets/resources/icon/fabrics.svg +0 -136
- package/assets/resources/icon/front.svg +0 -83
- package/assets/resources/icon/gateway.svg +0 -49
- package/assets/resources/icon/gear.svg +0 -122
- package/assets/resources/icon/house.svg +0 -72
- package/assets/resources/icon/language.svg +0 -1
- package/assets/resources/icon/objective.svg +0 -55
- package/assets/resources/icon/route.svg +0 -97
- package/assets/resources/icon/routers.svg +0 -27
- package/assets/resources/icon/startup.svg +0 -112
- package/assets/resources/icon/switch.svg +0 -101
- package/assets/scripts/chart.min.js +0 -7
- package/assets/scripts/commands.js +0 -112
- package/assets/scripts/components/codemirror/codemirror.css +0 -356
- package/assets/scripts/components/codemirror/codemirror.js +0 -9741
- package/assets/scripts/components/codemirror/modes/addons/closetags.js +0 -200
- package/assets/scripts/components/codemirror/modes/addons/colorize.js +0 -40
- package/assets/scripts/components/codemirror/modes/addons/css-hint.js +0 -66
- package/assets/scripts/components/codemirror/modes/addons/formatting.js +0 -124
- package/assets/scripts/components/codemirror/modes/addons/html-hint.js +0 -366
- package/assets/scripts/components/codemirror/modes/addons/javascript-hint.js +0 -159
- package/assets/scripts/components/codemirror/modes/addons/show-hint.css +0 -36
- package/assets/scripts/components/codemirror/modes/addons/show-hint.js +0 -482
- package/assets/scripts/components/codemirror/modes/css.js +0 -831
- package/assets/scripts/components/codemirror/modes/htmlmixed.js +0 -152
- package/assets/scripts/components/codemirror/modes/javascript.js +0 -930
- package/assets/scripts/components/codemirror/modes/xml.js +0 -413
- package/assets/scripts/components/column.css +0 -184
- package/assets/scripts/components/column.js +0 -165
- package/assets/scripts/components/flows.css +0 -0
- package/assets/scripts/components/flows.js +0 -48
- package/assets/scripts/components/moment.js +0 -4602
- package/assets/scripts/components/multiselect.js +0 -333
- package/assets/scripts/components/resources.js +0 -26
- package/assets/scripts/components/selector-new.js +0 -300
- package/assets/scripts/components/selector.js +0 -300
- package/assets/scripts/components/spectrum.js +0 -2323
- package/assets/scripts/components/timezone.js +0 -1545
- package/assets/scripts/context.js +0 -177
- package/assets/scripts/dragging.js +0 -58
- package/assets/scripts/forms/forms.js +0 -74
- package/assets/scripts/forms/host.v1.htm +0 -43
- package/assets/scripts/forms/intercept.v1.htm +0 -0
- package/assets/scripts/forms/schema.js +0 -693
- package/assets/scripts/growler.js +0 -137
- package/assets/scripts/header.js +0 -163
- package/assets/scripts/jquery-3.6.3.min.js +0 -2
- package/assets/scripts/jquery.datetimepicker.js +0 -2930
- package/assets/scripts/locale.js +0 -47
- package/assets/scripts/modal.js +0 -65
- package/assets/scripts/model/data.js +0 -558
- package/assets/scripts/model/fabric.js +0 -55
- package/assets/scripts/model/fabricServices.js +0 -45
- package/assets/scripts/model/known.js +0 -43
- package/assets/scripts/model/links.js +0 -44
- package/assets/scripts/model/routers.js +0 -51
- package/assets/scripts/model/series.js +0 -70
- package/assets/scripts/model/sessions.js +0 -61
- package/assets/scripts/model/settings.js +0 -60
- package/assets/scripts/model/summary.js +0 -49
- package/assets/scripts/model/tags.js +0 -310
- package/assets/scripts/model/templates.js +0 -42
- package/assets/scripts/model/user.js +0 -40
- package/assets/scripts/restrictions.js +0 -34
- package/assets/scripts/service.js +0 -76
- package/assets/scripts/validation-tools.js +0 -5119
- package/assets/scripts/ziti.js +0 -372
- package/assets/styles/chart.min.css +0 -1
- package/assets/styles/datetimepicker.css +0 -1
- package/assets/styles/forms.css +0 -521
- package/assets/styles/growler.css +0 -190
- package/assets/styles/header.css +0 -232
- package/assets/styles/icons.css +0 -182
- package/assets/styles/navigation.css +0 -183
- package/assets/styles/select2.css +0 -481
- package/assets/styles/spectrum.css +0 -507
- package/assets/styles/tables.css +0 -449
- package/assets/styles/tooltip.css +0 -134
- package/assets/styles/ziti.css +0 -3271
- package/assets/templates/footer.htm +0 -183
- package/assets/templates/header.htm +0 -297
- package/esm2022/lib/features/sidebars/side-banner/side-banner.component.mjs +0 -17
- package/esm2022/lib/features/sidebars/side-toolbar/side-toolbar.component.mjs +0 -129
- package/esm2022/lib/features/wrappers/node-wrapper.service.mjs +0 -51
- package/esm2022/lib/features/wrappers/zac-wrapper-service.class.mjs +0 -95
- package/esm2022/lib/features/wrappers/zac-wrapper.component.mjs +0 -148
- package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +0 -981
- package/esm2022/lib/version.mjs +0 -4
- package/lib/features/sidebars/side-banner/side-banner.component.d.ts +0 -7
- package/lib/features/sidebars/side-banner/side-banner.component.d.ts.map +0 -1
- package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts +0 -34
- package/lib/features/sidebars/side-toolbar/side-toolbar.component.d.ts.map +0 -1
- package/lib/features/wrappers/node-wrapper.service.d.ts +0 -24
- package/lib/features/wrappers/node-wrapper.service.d.ts.map +0 -1
- package/lib/features/wrappers/zac-wrapper-service.class.d.ts +0 -38
- package/lib/features/wrappers/zac-wrapper-service.class.d.ts.map +0 -1
- package/lib/features/wrappers/zac-wrapper.component.d.ts +0 -31
- package/lib/features/wrappers/zac-wrapper.component.d.ts.map +0 -1
- package/lib/features/wrappers/zac-wrapper.service.d.ts +0 -58
- package/lib/features/wrappers/zac-wrapper.service.d.ts.map +0 -1
- package/lib/version.d.ts +0 -4
- package/lib/version.d.ts.map +0 -1
package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs
CHANGED
|
@@ -16,7 +16,7 @@ import * as i7 from "@angular/material/core";
|
|
|
16
16
|
import * as i8 from "../../loading-indicator/loading-indicator.component";
|
|
17
17
|
import * as i9 from "../../../services/settings.service";
|
|
18
18
|
import * as i10 from "../../../services/ziti-data.service";
|
|
19
|
-
class IdentityServicePathComponent {
|
|
19
|
+
export class IdentityServicePathComponent {
|
|
20
20
|
constructor(identityServicePathHelper, settingsService, zitiService, router, dialogRef, data) {
|
|
21
21
|
this.identityServicePathHelper = identityServicePathHelper;
|
|
22
22
|
this.settingsService = settingsService;
|
|
@@ -568,7 +568,6 @@ class IdentityServicePathComponent {
|
|
|
568
568
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentityServicePathComponent, deps: [{ token: i1.IdentityServicePathHelper }, { token: SETTINGS_SERVICE }, { token: ZITI_DATA_SERVICE }, { token: i2.Router }, { token: i3.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
569
569
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: IdentityServicePathComponent, selector: "app-identity-visualizer", ngImport: i0, template: "<div [ngClass]=\"{ 'full-screen': fullScreen }\" class=\"modal solid\" id=\"IdentityVisualizer\">\n <div class=\"tp-data-header\">\n <div class=\"modaltitle\">Identity Service Path</div>\n <div (click)=\"hide()\" class=\"buttonBall icon-close\" id=\"EscZEndpointClose\"></div>\n <div (click)=\"toggleModalSize()\" class=\"buttonBall resize\" id=\"ResizeModalButton\"></div>\n </div>\n <div [ngClass]=\"isDarkMode==true?'darkMode':'lightMode'\" class=\"identity-topology-container\">\n <div style=\"width: 100%; height: 80px; float: left\">\n <div class=\"ep-topology-filter-container listBox row\">\n <input\n (keyup)=\"filterSearchArray()\"\n [(ngModel)]=\"selectedService\"\n [matAutocomplete]=\"auto\"\n class=\"topology-filter-input\"\n id=\"filterText\"\n matInput\n placeholder=\"Type to search identity accessible services.\"\n />\n\n <div\n (click)=\"clearSearchFilter()\"\n *ngIf=\"filterText\"\n class=\"clear-svc-icon icon-close\"\n id=\"ClearSearchFilter\"\n ></div>\n <div [hidden]=\"!noSearchResults\" class=\"no-results-warning\">No Results Found</div>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"autocompleteSearch($event)\">\n <mat-option *ngFor=\"let option of autocompleteOptions\" [value]=\"option.name\">\n {{ option.name }}\n </mat-option>\n </mat-autocomplete>\n </div>\n </div>\n\n <div class=\"topotip\" id=\"epTooltip\"></div>\n\n <svg style='pointer-events:all' height=\"1000\" id=\"IdentityTopology\" width=\"1200\">\n </svg>\n <lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n\n <div class=\"topology-legendA\">\n <div class=\"legend-item-head\">\n <div class=\"legend-text-heading\">Component Status</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle unregistered\"></div>\n <div class=\"legend-text\">Unregistered / Offline</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle registered_in_use\"></div>\n <div class=\"legend-text\">Registered, Online</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle errored\"></div>\n <div class=\"legend-text\">Errored</div>\n </div>\n </div>\n\n <div class=\"topology-legendB\">\n <div class=\"legend-item-head\">\n <div class=\"legend-text-heading\">Link Status</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle unregistered\"></div>\n <div class=\"legend-text\">Offline</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle registered_in_use\"></div>\n <div class=\"legend-text\">In Usage</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle registered_not_in_use\"></div>\n <div class=\"legend-text\">Usage Date N/A</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle linkerrored\"></div>\n <div class=\"legend-text\">Errored</div>\n </div>\n </div>\n\n </div>\n</div>\n", styles: ["#IdentityVisualizer{overflow:hidden;width:75%;height:85%;background-color:var(--background);border-radius:1.5625rem;z-index:1001;margin:auto;inset:0rem;position:fixed}#IdentityVisualizer .buttonBall{cursor:pointer;font-weight:600}#IdentityVisualizer .buttonBall.icon-close{position:absolute;top:1.25rem;right:1.25rem;font-size:1.4375rem;color:var(--icon)}#IdentityVisualizer .buttonBall:hover{filter:brightness(50%)}#IdentityVisualizer .clear-svc-icon{font-size:1.4375rem;font-weight:600;position:relative;top:.9375rem;right:2.5rem;color:var(--icon);cursor:pointer}#IdentityVisualizer .clear-svc-icon:hover{filter:brightness(50%)}#IdentityVisualizer.full-screen{width:100%;height:100%;border-radius:0}.ep-topology-filter-container{width:37%;display:flex;flex-direction:row;position:absolute;margin:1.25rem;padding:0}.buttonBall.resize{top:1.25rem;width:1.4375rem;height:1.4375rem;right:3.4375rem;background-image:url(/assets/svgs/Resize.svg);background-size:1.4375rem 1.4375rem;position:absolute;cursor:pointer}.identity-topology-container{display:flex;margin-left:-.3125rem;margin-top:.625rem;flex-direction:column;cursor:grab}.lightMode{background:#f5e9f2;background-image:linear-gradient(#ecd3e6 .125rem,transparent 0),linear-gradient(90deg,#ecd3e6 .125rem,transparent 0),linear-gradient(#ecd3e6 .0625rem,transparent 0),linear-gradient(90deg,#ecd3e6 .0625rem,transparent 0);background-size:2.5rem 2.5rem,2.5rem 2.5rem,.625rem .625rem,.625rem .625rem}.darkMode{background:#000a17;background-image:linear-gradient(#001127 .125rem,transparent 0),linear-gradient(90deg,#001127 .125rem,transparent 0),linear-gradient(#001127 1px,transparent 0),linear-gradient(90deg,#001127 1px,transparent 0);background-size:2.5rem 2.5rem,2.5rem 2.5rem,.625rem .625rem,.625rem .625rem}.tp-data-header{height:2.5rem;font-size:1.5625rem;font-weight:600;margin-left:1.25rem;margin-top:.625rem;margin-bottom:.3125rem;font-family:Russo One;color:var(--primaryColor);font-size:1.875rem;text-transform:uppercase;font-weight:400}.node text{font:.75rem Open Sans,Arial,sans-serif}.modaltitle{padding-top:.375rem;padding-left:.3125rem;color:var(--primaryColor)}.modalbuttons{padding-right:1.25rem}.listBox.row .close{position:fixed;display:flex;flex-direction:column;font-family:icomoon!important;font-style:normal;font-weight:600;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--icon);text-align:center;font-size:2.1875rem;line-height:2.5rem;left:35%;top:17%;width:2.5rem;height:2.5rem;background-image:url(/assets/svgs/close.svg);z-index:600;background-position:center center;background-size:75%;cursor:pointer;transition:.3s;justify-content:end;align-items:center}.tp-topo-data-header{border:0rem solid black;height:75rem;font-size:.75rem;font-weight:400;margin-left:.75rem;margin-top:.1875rem;color:var(--primaryColor)}.services-select{width:25rem;flex-shrink:0;border-radius:1.6875rem;height:3.1875rem;margin-left:1.375rem;margin-top:.625rem;background-color:#fff;border-color:var(--navigation);box-shadow:0 1.25rem 1.4375rem 0 var(--shadow);color:var(--tableText);padding-left:1.25rem}select{background-image:url(/assets/svgs/ArrowDown.svg);background-position:center right .9375rem;background-repeat:no-repeat;background-size:1.125rem;padding-right:2.9375rem}.topology-filter-input{height:3.125rem;width:95%;border-radius:1.5625rem;border-color:var(--navigation);background-color:var(--navigation);box-shadow:0 1.25rem 1.4375rem 0 var(--shadow);padding-left:1.25rem}.topotip{display:none;position:fixed;background:var(--navigation);border:.1rem;border-radius:.75rem;pointer-events:none;box-shadow:0 1.25rem 1.4375rem 0 var(--shadow);transition:background-color .3s;padding:.3125rem 0;font-size:1.0625rem;font-weight:700;color:var(--tableText);z-index:2000;opacity:1;padding:1rem}.topology-legendA{border:0rem solid blue;width:12.5rem;border-radius:.75rem;margin-bottom:.625rem;margin-right:.625rem;position:absolute;display:inline-block;top:4.6875rem;right:0rem;background:var(--navigation);box-shadow:0 1.25rem 1.4375rem 0 var(--shadow);padding:0rem .625rem .3125rem;margin-top:0}.topology-legendB{width:12.5rem;border:0rem solid blue;border-radius:.75rem;margin-bottom:.625rem;margin-right:.625rem;position:absolute;top:12.5rem;right:0rem;background:var(--navigation);display:inline-block;box-shadow:0 1.25rem 1.4375rem 0 var(--shadow);padding:0rem .625rem .3125rem;margin-left:.625rem}.legend-item{width:100%;height:100%;display:inline-block}.legend-item-head{width:105%;height:100%;display:inline-block;border:0rem solid blue;left:-.1875rem}.legend-circle{height:.75rem;width:.75rem;border-radius:.9375rem;display:inline-block;margin-top:.4375rem}.legend-circle.unregistered{background-color:#d8dce7}.legend-circle.registered_not_in_use{border:.0625rem solid #08dc5a;background-color:#fff}.legend-circle.registered_in_use{background-color:#08dc5a}.legend-circle.errored{background-color:#fb0d3d}.legend-circle.linkerrored{background-image:url(/assets/images/visualizer/link-cut.png);background-size:contain}.legend-text{display:inline-block;font-size:.9375rem;font-weight:600;color:var(--tableText);padding-left:.4375rem;padding-bottom:.25rem}.legend-text-heading{text-align:center;display:inline-block;font-size:.875rem;font-weight:600;color:var(--tableText);padding-left:.625rem;padding-top:.125rem;padding-bottom:.125rem;color:#8a2be2}.legend-text2{display:inline-block;font-size:.625rem;font-weight:400;color:var(--tableText);padding-left:.125rem;padding-bottom:.25rem}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.rotating{animation:rotating 2s linear infinite}.tool-tip-container .prop-row{display:grid;grid-template-columns:auto auto;grid-gap:.625rem;height:-moz-fit-content;height:fit-content;width:-moz-fit-content;width:fit-content;min-height:1.5625rem;align-items:center;padding:.5rem}.tool-tip-container .prop-row:nth-child(2n){background-color:var(--formBackground)}::ng-deep .cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-radius:14px;background:var(--background);color:var(--tableText)}::ng-deep .mat-mdc-option.mdc-list-item{align-items:center;color:var(--tableText)}::ng-deep .mat-mdc-option.mdc-list-item:hover:not(.mat-option-disabled),::ng-deep .mat-mdc-option.mdc-list-item:focus:not(.mat-option-disabled){border-color:var(--primaryColor);border-radius:14px;border:.01rem solid var(--primaryColor)}::ng-deep .mat-mdc-raised-button .mdc-button__ripple{border:.1rem solid var(--primaryColor)}::ng-deep .p-button.p-button-icon-only{width:1.357rem}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i8.LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
|
|
570
570
|
}
|
|
571
|
-
export { IdentityServicePathComponent };
|
|
572
571
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentityServicePathComponent, decorators: [{
|
|
573
572
|
type: Component,
|
|
574
573
|
args: [{ selector: 'app-identity-visualizer', template: "<div [ngClass]=\"{ 'full-screen': fullScreen }\" class=\"modal solid\" id=\"IdentityVisualizer\">\n <div class=\"tp-data-header\">\n <div class=\"modaltitle\">Identity Service Path</div>\n <div (click)=\"hide()\" class=\"buttonBall icon-close\" id=\"EscZEndpointClose\"></div>\n <div (click)=\"toggleModalSize()\" class=\"buttonBall resize\" id=\"ResizeModalButton\"></div>\n </div>\n <div [ngClass]=\"isDarkMode==true?'darkMode':'lightMode'\" class=\"identity-topology-container\">\n <div style=\"width: 100%; height: 80px; float: left\">\n <div class=\"ep-topology-filter-container listBox row\">\n <input\n (keyup)=\"filterSearchArray()\"\n [(ngModel)]=\"selectedService\"\n [matAutocomplete]=\"auto\"\n class=\"topology-filter-input\"\n id=\"filterText\"\n matInput\n placeholder=\"Type to search identity accessible services.\"\n />\n\n <div\n (click)=\"clearSearchFilter()\"\n *ngIf=\"filterText\"\n class=\"clear-svc-icon icon-close\"\n id=\"ClearSearchFilter\"\n ></div>\n <div [hidden]=\"!noSearchResults\" class=\"no-results-warning\">No Results Found</div>\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"autocompleteSearch($event)\">\n <mat-option *ngFor=\"let option of autocompleteOptions\" [value]=\"option.name\">\n {{ option.name }}\n </mat-option>\n </mat-autocomplete>\n </div>\n </div>\n\n <div class=\"topotip\" id=\"epTooltip\"></div>\n\n <svg style='pointer-events:all' height=\"1000\" id=\"IdentityTopology\" width=\"1200\">\n </svg>\n <lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n\n <div class=\"topology-legendA\">\n <div class=\"legend-item-head\">\n <div class=\"legend-text-heading\">Component Status</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle unregistered\"></div>\n <div class=\"legend-text\">Unregistered / Offline</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle registered_in_use\"></div>\n <div class=\"legend-text\">Registered, Online</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle errored\"></div>\n <div class=\"legend-text\">Errored</div>\n </div>\n </div>\n\n <div class=\"topology-legendB\">\n <div class=\"legend-item-head\">\n <div class=\"legend-text-heading\">Link Status</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle unregistered\"></div>\n <div class=\"legend-text\">Offline</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle registered_in_use\"></div>\n <div class=\"legend-text\">In Usage</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle registered_not_in_use\"></div>\n <div class=\"legend-text\">Usage Date N/A</div>\n </div>\n <div class=\"legend-item\">\n <div class=\"legend-circle linkerrored\"></div>\n <div class=\"legend-text\">Errored</div>\n </div>\n </div>\n\n </div>\n</div>\n", styles: ["#IdentityVisualizer{overflow:hidden;width:75%;height:85%;background-color:var(--background);border-radius:1.5625rem;z-index:1001;margin:auto;inset:0rem;position:fixed}#IdentityVisualizer .buttonBall{cursor:pointer;font-weight:600}#IdentityVisualizer .buttonBall.icon-close{position:absolute;top:1.25rem;right:1.25rem;font-size:1.4375rem;color:var(--icon)}#IdentityVisualizer .buttonBall:hover{filter:brightness(50%)}#IdentityVisualizer .clear-svc-icon{font-size:1.4375rem;font-weight:600;position:relative;top:.9375rem;right:2.5rem;color:var(--icon);cursor:pointer}#IdentityVisualizer .clear-svc-icon:hover{filter:brightness(50%)}#IdentityVisualizer.full-screen{width:100%;height:100%;border-radius:0}.ep-topology-filter-container{width:37%;display:flex;flex-direction:row;position:absolute;margin:1.25rem;padding:0}.buttonBall.resize{top:1.25rem;width:1.4375rem;height:1.4375rem;right:3.4375rem;background-image:url(/assets/svgs/Resize.svg);background-size:1.4375rem 1.4375rem;position:absolute;cursor:pointer}.identity-topology-container{display:flex;margin-left:-.3125rem;margin-top:.625rem;flex-direction:column;cursor:grab}.lightMode{background:#f5e9f2;background-image:linear-gradient(#ecd3e6 .125rem,transparent 0),linear-gradient(90deg,#ecd3e6 .125rem,transparent 0),linear-gradient(#ecd3e6 .0625rem,transparent 0),linear-gradient(90deg,#ecd3e6 .0625rem,transparent 0);background-size:2.5rem 2.5rem,2.5rem 2.5rem,.625rem .625rem,.625rem .625rem}.darkMode{background:#000a17;background-image:linear-gradient(#001127 .125rem,transparent 0),linear-gradient(90deg,#001127 .125rem,transparent 0),linear-gradient(#001127 1px,transparent 0),linear-gradient(90deg,#001127 1px,transparent 0);background-size:2.5rem 2.5rem,2.5rem 2.5rem,.625rem .625rem,.625rem .625rem}.tp-data-header{height:2.5rem;font-size:1.5625rem;font-weight:600;margin-left:1.25rem;margin-top:.625rem;margin-bottom:.3125rem;font-family:Russo One;color:var(--primaryColor);font-size:1.875rem;text-transform:uppercase;font-weight:400}.node text{font:.75rem Open Sans,Arial,sans-serif}.modaltitle{padding-top:.375rem;padding-left:.3125rem;color:var(--primaryColor)}.modalbuttons{padding-right:1.25rem}.listBox.row .close{position:fixed;display:flex;flex-direction:column;font-family:icomoon!important;font-style:normal;font-weight:600;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--icon);text-align:center;font-size:2.1875rem;line-height:2.5rem;left:35%;top:17%;width:2.5rem;height:2.5rem;background-image:url(/assets/svgs/close.svg);z-index:600;background-position:center center;background-size:75%;cursor:pointer;transition:.3s;justify-content:end;align-items:center}.tp-topo-data-header{border:0rem solid black;height:75rem;font-size:.75rem;font-weight:400;margin-left:.75rem;margin-top:.1875rem;color:var(--primaryColor)}.services-select{width:25rem;flex-shrink:0;border-radius:1.6875rem;height:3.1875rem;margin-left:1.375rem;margin-top:.625rem;background-color:#fff;border-color:var(--navigation);box-shadow:0 1.25rem 1.4375rem 0 var(--shadow);color:var(--tableText);padding-left:1.25rem}select{background-image:url(/assets/svgs/ArrowDown.svg);background-position:center right .9375rem;background-repeat:no-repeat;background-size:1.125rem;padding-right:2.9375rem}.topology-filter-input{height:3.125rem;width:95%;border-radius:1.5625rem;border-color:var(--navigation);background-color:var(--navigation);box-shadow:0 1.25rem 1.4375rem 0 var(--shadow);padding-left:1.25rem}.topotip{display:none;position:fixed;background:var(--navigation);border:.1rem;border-radius:.75rem;pointer-events:none;box-shadow:0 1.25rem 1.4375rem 0 var(--shadow);transition:background-color .3s;padding:.3125rem 0;font-size:1.0625rem;font-weight:700;color:var(--tableText);z-index:2000;opacity:1;padding:1rem}.topology-legendA{border:0rem solid blue;width:12.5rem;border-radius:.75rem;margin-bottom:.625rem;margin-right:.625rem;position:absolute;display:inline-block;top:4.6875rem;right:0rem;background:var(--navigation);box-shadow:0 1.25rem 1.4375rem 0 var(--shadow);padding:0rem .625rem .3125rem;margin-top:0}.topology-legendB{width:12.5rem;border:0rem solid blue;border-radius:.75rem;margin-bottom:.625rem;margin-right:.625rem;position:absolute;top:12.5rem;right:0rem;background:var(--navigation);display:inline-block;box-shadow:0 1.25rem 1.4375rem 0 var(--shadow);padding:0rem .625rem .3125rem;margin-left:.625rem}.legend-item{width:100%;height:100%;display:inline-block}.legend-item-head{width:105%;height:100%;display:inline-block;border:0rem solid blue;left:-.1875rem}.legend-circle{height:.75rem;width:.75rem;border-radius:.9375rem;display:inline-block;margin-top:.4375rem}.legend-circle.unregistered{background-color:#d8dce7}.legend-circle.registered_not_in_use{border:.0625rem solid #08dc5a;background-color:#fff}.legend-circle.registered_in_use{background-color:#08dc5a}.legend-circle.errored{background-color:#fb0d3d}.legend-circle.linkerrored{background-image:url(/assets/images/visualizer/link-cut.png);background-size:contain}.legend-text{display:inline-block;font-size:.9375rem;font-weight:600;color:var(--tableText);padding-left:.4375rem;padding-bottom:.25rem}.legend-text-heading{text-align:center;display:inline-block;font-size:.875rem;font-weight:600;color:var(--tableText);padding-left:.625rem;padding-top:.125rem;padding-bottom:.125rem;color:#8a2be2}.legend-text2{display:inline-block;font-size:.625rem;font-weight:400;color:var(--tableText);padding-left:.125rem;padding-bottom:.25rem}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.rotating{animation:rotating 2s linear infinite}.tool-tip-container .prop-row{display:grid;grid-template-columns:auto auto;grid-gap:.625rem;height:-moz-fit-content;height:fit-content;width:-moz-fit-content;width:fit-content;min-height:1.5625rem;align-items:center;padding:.5rem}.tool-tip-container .prop-row:nth-child(2n){background-color:var(--formBackground)}::ng-deep .cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) div.mat-mdc-autocomplete-panel{border-radius:14px;background:var(--background);color:var(--tableText)}::ng-deep .mat-mdc-option.mdc-list-item{align-items:center;color:var(--tableText)}::ng-deep .mat-mdc-option.mdc-list-item:hover:not(.mat-option-disabled),::ng-deep .mat-mdc-option.mdc-list-item:focus:not(.mat-option-disabled){border-color:var(--primaryColor);border-radius:14px;border:.01rem solid var(--primaryColor)}::ng-deep .mat-mdc-raised-button .mdc-button__ripple{border:.1rem solid var(--primaryColor)}::ng-deep .p-button.p-button-icon-only{width:1.357rem}\n"] }]
|
|
@@ -584,4 +583,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
584
583
|
}] }]; } });
|
|
585
584
|
class ServiceData {
|
|
586
585
|
}
|
|
587
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktc2VydmljZS1wYXRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy92aXN1YWxpemVyL2lkZW50aXR5LXNlcnZpY2UtcGF0aC9pZGVudGl0eS1zZXJ2aWNlLXBhdGguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3Zpc3VhbGl6ZXIvaWRlbnRpdHktc2VydmljZS1wYXRoL2lkZW50aXR5LXNlcnZpY2UtcGF0aC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsZ0JBQWdCLEdBRWpCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUNMLGlCQUFpQixHQUVsQixNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXpCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTXZCLE1BS2EsNEJBQTRCO0lBeUJ2QyxZQUNVLHlCQUFvRCxFQUMzQixlQUFnQyxFQUM5QixXQUE0QixFQUN2RCxNQUFjLEVBQ2QsU0FBcUQsRUFDN0IsSUFBUztRQUxqQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQzNCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUM5QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFDdkQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQTRDO1FBQzdCLFNBQUks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OzBCQUd4QixNQUFNOzJCQUFDLGVBQWU7O0FBaW1CM0IsTUFBTSxXQUFXO0NBR2hCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50IHByZWZlci1jb25zdDogMSAqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG4gIEluamVjdCxcbiAgT25Jbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgU0VUVElOR1NfU0VSVklDRSxcbiAgU2V0dGluZ3NTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zZXR0aW5ncy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFpJVElfREFUQV9TRVJWSUNFLFxuICBaaXRpRGF0YVNlcnZpY2UsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ppdGktZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IElkZW50aXR5U2VydmljZVBhdGhIZWxwZXIgfSBmcm9tICcuL2lkZW50aXR5LXNlcnZpY2UtcGF0aC5oZWxwZXInO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWlkZW50aXR5LXZpc3VhbGl6ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaWRlbnRpdHktc2VydmljZS1wYXRoLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaWRlbnRpdHktc2VydmljZS1wYXRoLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIElkZW50aXR5U2VydmljZVBhdGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgZDM7XG4gIGlzRGFya01vZGUgPSBmYWxzZTtcbiAgcmVmcmVzaFJvdGF0ZSA9IGZhbHNlO1xuICBjbG9zZVJvdGF0ZSA9IHRydWU7XG4gIGZpbHRlclRleHQgPSAnZmV0Y2hpbmcgc2VydmljZXMuLic7XG4gIG5vU2VhcmNoUmVzdWx0cyA9IGZhbHNlO1xuICBhdXRvY29tcGxldGVPcHRpb25zID0gW107XG4gIGZ1bGxTY3JlZW4gPSBmYWxzZTtcbiAgc2VydmljZU9wdGlvbnM6IGFueTtcbiAgZW5kcG9pbnREYXRhO1xuICBuZXR3b3JrR3JhcGg7XG4gIGdyYXBoSnNvbk9iajtcbiAgc2VydmljZXM7XG4gIGVkZ2Vyb3V0ZXJzO1xuICBlbmRwb2ludHMgPSBbXTtcbiAgc2VsZWN0ZWRTZXJ2aWNlID0gJyc7XG4gIHNlcnZpY2VTZWxlY3RFcnJvcjtcbiAgZG9FbmRwb2ludEhhc0FwcHdhbnMgPSBmYWxzZTtcbiAgZG9FbmRwb2ludEhhc1B1YmxpY1JvdXRlcnMgPSBmYWxzZTtcbiAgZG9FbmRwb2ludEhhc1NlcnZpY2VzSW5Qcml2YXRlTncgPSBmYWxzZTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIGNvdW50R3JwMk5kcyA9IDA7XG4gIGNvdW50R3JwM05kcyA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpZGVudGl0eVNlcnZpY2VQYXRoSGVscGVyOiBJZGVudGl0eVNlcnZpY2VQYXRoSGVscGVyLFxuICAgIEBJbmplY3QoU0VUVElOR1NfU0VSVklDRSkgcHVibGljIHNldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlLFxuICAgIEBJbmplY3QoWklUSV9EQVRBX1NFUlZJQ0UpIHByaXZhdGUgeml0aVNlcnZpY2U6IFppdGlEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8SWRlbnRpdHlTZXJ2aWNlUGF0aENvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnlcbiAgKSB7XG4gICAgdGhpcy5lbmRwb2ludERhdGEgPSBkYXRhLmlkZW50aXR5O1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRFbmRwb2ludE5ldHdvcmtBc0NvZGUoKTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgYmdDb2wgPSBkMy5jb2xvcihkMy5zZWxlY3QoJ2JvZHknKS5zdHlsZShcImJhY2tncm91bmQtY29sb3JcIikpLmZvcm1hdEhleCgpO1xuICAgIHRoaXMuaXNEYXJrTW9kZSA9IGJnQ29sID09JyMxODE5MWQnID8gdHJ1ZTogZmFsc2U7XG4gIH1cblxuICBnZXRFbmRwb2ludE5ldHdvcmtBc0NvZGUoKSB7XG4gICAgY29uc3QgcGFnZXNpemUgPSA1MDA7XG4gICAgY29uc3Qgc2VydmljZXNfcGFnaW5nID0ge1xuICAgICAgc2VhcmNoT246ICduYW1lJyxcbiAgICAgIGZpbHRlcjogJycsXG4gICAgICB0b3RhbDogcGFnZXNpemUsXG4gICAgICBwYWdlOiAxLFxuICAgICAgc29ydDogJ25hbWUnLFxuICAgICAgb3JkZXI6ICdhc2MnLFxuICAgIH07XG5cbiAgICB0aGlzLnppdGlTZXJ2aWNlXG4gICAgICAuZ2V0KGBpZGVudGl0aWVzLyR7dGhpcy5lbmRwb2ludERhdGEuaWR9L3NlcnZpY2VzYCwgc2VydmljZXNfcGFnaW5nLCBbXSlcbiAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcyA9IHJlc3VsdC5kYXRhO1xuICAgICAgICB0aGlzLmNsb3NlUm90YXRlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2VzIHx8IHRoaXMuc2VydmljZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlcyA9IFtdO1xuICAgICAgICAgIHRoaXMuc2VydmljZU9wdGlvbnMgPSBbXTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2VPcHRpb25zLnB1c2gobm9TZXJ2aWNlcygpKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkU2VydmljZSA9ICdTZXJ2aWNlcyBub3QgZm91bmQgZm9yIGEgc2VsZWN0ZWQgaWRlbnRpdHknO1xuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcGFnZXMgPSBNYXRoLmNlaWwocmVzdWx0Lm1ldGEucGFnaW5hdGlvbi50b3RhbENvdW50IC8gcGFnZXNpemUpO1xuICAgICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgICAgICAgZm9yIChsZXQgcGFnZSA9IDI7IHBhZ2UgPD0gcGFnZXM7IHBhZ2UrKykge1xuICAgICAgICAgICAgc2VydmljZXNfcGFnaW5nLnBhZ2UgPSBwYWdlO1xuICAgICAgICAgICAgY29uc3QgdG1wX3Byb21pc2UgPSB0aGlzLnppdGlTZXJ2aWNlXG4gICAgICAgICAgICAgIC5nZXQoXG4gICAgICAgICAgICAgICAgYGlkZW50aXRpZXMvJHt0aGlzLmVuZHBvaW50RGF0YS5pZH0vc2VydmljZXNgLFxuICAgICAgICAgICAgICAgIHNlcnZpY2VzX3BhZ2luZyxcbiAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC50aGVuKChwYWdlUmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcGFnZVJlc3VsdC5kYXRhLmZvckVhY2goKHNlcnYpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZXMucHVzaChzZXJ2KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKHRtcF9wcm9taXNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy56aXRpU2VydmljZVxuICAgICAgICAgICAgICAuZ2V0KGBpZGVudGl0aWVzLyR7dGhpcy5lbmRwb2ludERhdGEuaWR9L2VkZ2Utcm91dGVyc2AsIHt9LCBbXSlcbiAgICAgICAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZWRnZXJvdXRlcnMgPSBbXTtcbiAgICAgICAgICAgICAgICByZXN1bHQuZGF0YS5mb3JFYWNoKChyZWMpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZWRnZXJvdXRlcnMucHVzaChyZWMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2VydmljZU9wdGlvbnMgPSBjcmVhdGVTZXJ2aWNlT3B0aW9ucyh0aGlzLnNlcnZpY2VzKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVGV4dCA9XG4gICAgICAgICAgICAgIHRoaXMuc2VydmljZU9wdGlvbnMubGVuZ3RoID09PSAwXG4gICAgICAgICAgICAgICAgPyAnJ1xuICAgICAgICAgICAgICAgIDogdGhpcy5zZXJ2aWNlT3B0aW9uc1swXS5uYW1lO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFNlcnZpY2UgPVxuICAgICAgICAgICAgICB0aGlzLnNlcnZpY2VPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgID8gJ1NlcnZpY2VzIG5vdCBmb3VuZCBmb3IgYSBzZWxlY3RlZCBpZGVudGl0eSdcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2VydmljZU9wdGlvbnNbMF0ubmFtZTtcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucyA9IHRoaXMuc2VydmljZU9wdGlvbnM7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2VDaGFuZ2VkKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlU2VydmljZU9wdGlvbnMoX3NlcnZpY2VzKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gW107XG4gICAgICBjb25zdCBzZXJ2aWNlTmFtZXMgPSBbXTtcbiAgICAgIF9zZXJ2aWNlcz8uZmluZCgoc3J2aWNlKSA9PiB7XG4gICAgICAgIGlmICghc2VydmljZU5hbWVzLmluY2x1ZGVzKHNydmljZS5uYW1lKSkge1xuICAgICAgICAgIHNlcnZpY2VOYW1lcy5wdXNoKHNydmljZS5uYW1lKTtcbiAgICAgICAgICBjb25zdCBzZCA9IG5ldyBTZXJ2aWNlRGF0YSgpO1xuICAgICAgICAgIHNkLmlkID0gc3J2aWNlLmlkO1xuICAgICAgICAgIHNkLm5hbWUgPSBzcnZpY2UubmFtZTtcbiAgICAgICAgICBvcHRpb25zLnB1c2goc2QpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vU2VydmljZXMoKSB7XG4gICAgICBjb25zdCBzZCA9IG5ldyBTZXJ2aWNlRGF0YSgpO1xuICAgICAgc2QuaWQgPSAnJztcbiAgICAgIHNkLm5hbWUgPSAnTk8gU0VSVklDRVMnO1xuICAgICAgcmV0dXJuIHNkO1xuICAgIH1cbiAgfSAvLyBlbmQgb2YgZ2V0RW5kcG9pbnROZXR3b3JrQXNDb2RlXG5cbiAgZmlsdGVyU2VhcmNoQXJyYXkoKSB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zID0gW107XG4gICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zID0gdGhpcy5zZXJ2aWNlT3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT5cbiAgICAgIG9wdGlvbi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5zZWxlY3RlZFNlcnZpY2UudG9Mb3dlckNhc2UoKSlcbiAgICApO1xuICB9XG5cbiAgY2xlYXJTZWFyY2hGaWx0ZXIoKSB7XG4gICAgdGhpcy5maWx0ZXJUZXh0ID0gJ1lvdSBjYW4gZmlsdGVyIHNlcnZpY2VzIGJ5IHR5cGluZyBoZXJlJztcbiAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbnMgPSB0aGlzLnNlcnZpY2VPcHRpb25zO1xuICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlID0gJyc7XG4gIH1cblxuICBhdXRvY29tcGxldGVTZWFyY2goZXZlbnQpIHtcbiAgICB0aGlzLnNlcnZpY2VDaGFuZ2VkKCk7XG4gIH1cblxuICBzZXJ2aWNlQ2hhbmdlZCgpIHtcbiAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICBjb25zdCBhbGxQcm9taXNlcyA9IFtdO1xuICAgICBsZXQgc2VydmljZU9iID0gbnVsbDtcbiAgICAgbGV0IHNlcnZpY2VfY29uZmlncyA9IFtdO1xuXG4gICAgIHNlcnZpY2VPYiA9IHRoaXMuc2VydmljZXMgJiYgdGhpcy5zZXJ2aWNlcy5maW5kKChyZWMpID0+IHtcbiAgICAgIHJldHVybiAgKHJlYy5uYW1lID09PSB0aGlzLnNlbGVjdGVkU2VydmljZSk7XG4gICAgIH0pO1xuXG4gICAgIGlmICghc2VydmljZU9iKSB7XG4gICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICByZXR1cm47XG4gICAgIH1cblxuICAgICBjb25zdCBjb25maWdzX3VybCA9IHRoaXMuZ2V0TGlua0ZvclJlc291cmNlKHNlcnZpY2VPYiwgJ2NvbmZpZ3MnKTtcblxuICAgICBjb25zdCBjb25maWdQcm9taXNlID0gdGhpcy56aXRpU2VydmljZVxuICAgICAgLmdldChjb25maWdzX3VybCwge30sIFtdKVxuICAgICAgLnRoZW4oKGNvbmZpZ3MpID0+IHtcbiAgICAgICAgc2VydmljZV9jb25maWdzID0gY29uZmlncyAmJiBjb25maWdzLmRhdGEgPyBjb25maWdzLmRhdGEgOiBbXTtcbiAgICAgIH0pO1xuICAgICBjb25zdCBzZXJ2aWNlX2VkZ2Vfcm91dGVyX3BvbGljaWVzX3VybCA9IHRoaXMuZ2V0TGlua0ZvclJlc291cmNlKFxuICAgICAgc2VydmljZU9iLFxuICAgICAgJ3NlcnZpY2UtZWRnZS1yb3V0ZXItcG9saWNpZXMnXG4gICAgICk7XG4gICAgIGNvbnN0IHNlcnZpY2VfcG9saWNpZXNfdXJsID0gdGhpcy5nZXRMaW5rRm9yUmVzb3VyY2UoXG4gICAgICBzZXJ2aWNlT2IsXG4gICAgICAnc2VydmljZS1wb2xpY2llcydcbiAgICAgKS5yZXBsYWNlKCcuLycsICcnKTsgLy8gZGlhbCwgQmluZCBpbmZvXG5cbiAgICBsZXQgYmluZFBvbGljaWVzID0gW107XG4gICAgbGV0IGJpbmRJZG5ldGl0aWVzID0gW107XG4gICAgY29uc3QgcHJvbWlzZTIgPSB0aGlzLnppdGlTZXJ2aWNlXG4gICAgICAuZ2V0KHNlcnZpY2VfcG9saWNpZXNfdXJsLCB7fSwgW10pXG4gICAgICAudGhlbigocG9saWNpZXMpID0+IHtcbiAgICAgICAgY29uc3QgaWRlbnRpdHlQcm9taXNlcyA9IFtdO1xuICAgICAgICBfLmlzQXJyYXkocG9saWNpZXMuZGF0YSkgJiYgcG9saWNpZXMuZGF0YS5mb3JFYWNoKChwb2xpY3kpID0+IHtcbiAgICAgICAgICBpZiAocG9saWN5LnR5cGUgPT09ICdCaW5kJykge1xuICAgICAgICAgICAgY29uc3QgYmluZElkZW50aXRpZXNVcmwgPSB0aGlzLmdldExpbmtGb3JSZXNvdXJjZShcbiAgICAgICAgICAgICAgcG9saWN5LFxuICAgICAgICAgICAgICAnaWRlbnRpdGllcydcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBwcm9tc2UgPSB0aGlzLnppdGlTZXJ2aWNlXG4gICAgICAgICAgICAgIC5nZXQoYmluZElkZW50aXRpZXNVcmwucmVwbGFjZSgnLi8nLCAnJyksIHt9LCBbXSlcbiAgICAgICAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgcmVzLmRhdGEuZm9yRWFjaCgocnMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtVG9BcnJheShiaW5kSWRuZXRpdGllcywgcnMpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbVRvQXJyYXkoYmluZElkbmV0aXRpZXMsIHJlcy5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWRlbnRpdHlQcm9taXNlcy5wdXNoKHByb21zZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgUHJvbWlzZS5hbGwoaWRlbnRpdHlQcm9taXNlcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zdGFydFZpc1Byb2Nlc3MoYmluZElkbmV0aXRpZXMsIHNlcnZpY2VPYiwgc2VydmljZV9jb25maWdzKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYWRkSXRlbVRvQXJyYXkoYmluZElkbmV0aXRpZXMsIG9iKSB7XG4gICAgaWYgKCFiaW5kSWRuZXRpdGllcy5maW5kKChpdGVtKSA9PiBpdGVtLmlkID09PSBvYi5pZCkpIHtcbiAgICAgIGJpbmRJZG5ldGl0aWVzLnB1c2gob2IpO1xuICAgIH1cbiAgICByZXR1cm4gYmluZElkbmV0aXRpZXM7XG4gIH1cblxuICBnZXRMaW5rRm9yUmVzb3VyY2Uob2IsIHJlc291cmNlKSB7XG4gICAgcmV0dXJuIG9iWydfbGlua3MnXVtyZXNvdXJjZV1bJ2hyZWYnXTtcbiAgfVxuXG4gIHN0YXJ0VmlzUHJvY2VzcyhiaW5kSWRuZXRpdGllcywgc2VsZWN0ZWRTZXJ2aWNlT2IsIHNlcnZpY2VDb25maWdzKSB7XG4gICAgdGhpcy5jb3VudEdycDJOZHMgPSAwO1xuICAgIHRoaXMuY291bnRHcnAzTmRzID0gMDtcbiAgICBpZiAoXy5pc0VtcHR5KHRoaXMuc2VsZWN0ZWRTZXJ2aWNlKSkge1xuICAgICAgdGhpcy5zZXJ2aWNlU2VsZWN0RXJyb3IgPSAhXy5pc0VtcHR5KHRoaXMuc2VsZWN0ZWRTZXJ2aWNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZ3JhcGhKc29uT2JqID0gdGhpcy5pZGVudGl0eVNlcnZpY2VQYXRoSGVscGVyLmdldEVuZHBvaW50R3JhcGhPYmooXG4gICAgICAgIHRoaXMuZW5kcG9pbnREYXRhLFxuICAgICAgICBiaW5kSWRuZXRpdGllcyxcbiAgICAgICAgdGhpcy5lZGdlcm91dGVycyxcbiAgICAgICAgc2VsZWN0ZWRTZXJ2aWNlT2IsXG4gICAgICAgIHNlcnZpY2VDb25maWdzXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjb3VudEdycDFOZHMgPSAwO1xuICAgIHRoaXMuZG9FbmRwb2ludEhhc1NlcnZpY2VzSW5Qcml2YXRlTncgPSBmYWxzZTtcbiAgICB0aGlzLmRvRW5kcG9pbnRIYXNQdWJsaWNSb3V0ZXJzID0gZmFsc2U7XG4gICAgdGhpcy5kb0VuZHBvaW50SGFzQXBwd2FucyA9IGZhbHNlO1xuICAgIHRoaXMuZ3JhcGhKc29uT2JqLm5vZGVzLmZvckVhY2goKG5kKSA9PiB7XG4gICAgICBpZiAobmQuZ3JvdXAgPT09ICczJykge1xuICAgICAgICB0aGlzLmNvdW50R3JwM05kcysrO1xuICAgICAgfVxuICAgICAgaWYgKG5kLmdyb3VwLmluY2x1ZGVzKCcyJykpIHtcbiAgICAgICAgdGhpcy5jb3VudEdycDJOZHMrKztcbiAgICAgIH1cbiAgICAgIGlmIChuZC5ncm91cCA9PT0gJzEnKSB7XG4gICAgICAgIGNvdW50R3JwMU5kcysrO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuY291bnRHcnAzTmRzID4gMCkge1xuICAgICAgdGhpcy5kb0VuZHBvaW50SGFzU2VydmljZXNJblByaXZhdGVOdyA9IHRydWU7IC8vIHNob3cgcHJpdmF0ZS9jdXN0b21lciBuZXR3b3JrIGJveCwgd2lsbCBiZSBkZWNpZGVkIHdpdGggdGhpcyB2YXJpYWJsZS5cbiAgICB9XG4gICAgaWYgKHRoaXMuY291bnRHcnAyTmRzID4gMCkge1xuICAgICAgdGhpcy5kb0VuZHBvaW50SGFzUHVibGljUm91dGVycyA9IHRydWU7IC8vIHNob3cgcHVibGljIG5ldHdvcmsgYm94LCB3aWxsIGJlIGRlY2lkZWQgd2l0aCB0aGlzIHZhcmlhYmxlLlxuICAgIH1cblxuICAgIGlmIChjb3VudEdycDFOZHMgPiAwKSB7XG4gICAgICB0aGlzLmRvRW5kcG9pbnRIYXNBcHB3YW5zID0gdHJ1ZTsgLy8gc2hvdyBwcml2YXRlIG5ldHdvcmsgYm94LCB3aWxsIGJlIGRlY2lkZWQgd2l0aCB0aGlzIHZhcmlhYmxlLlxuICAgIH1cbiAgICB0aGlzLmluaXRUb3BvVmlldygpO1xuICB9XG5cbiAgdG9nZ2xlTW9kYWxTaXplKCkge1xuICAgIHRoaXMuZnVsbFNjcmVlbiA9ICF0aGlzLmZ1bGxTY3JlZW47XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICBpbml0VG9wb1ZpZXcoKSB7XG4gICAgY29uc3QgbWFyZ2luID0geyB0b3A6IDEwLCByaWdodDogOTAsIGJvdHRvbTogMzAsIGxlZnQ6IDAgfTtcbiAgICBjb25zdCB3aWR0aCA9IDExMDAgLSBtYXJnaW4ubGVmdCAtIG1hcmdpbi5yaWdodDtcbiAgICBjb25zdCBoZWlnaHQgPSAxMTAwIC0gbWFyZ2luLnRvcCAtIG1hcmdpbi5ib3R0b207XG4gICAgY29uc3QgY29sb3JzID0gZDMuc2NhbGVPcmRpbmFsKGQzLnNjaGVtZUNhdGVnb3J5MTApO1xuICAgIGNvbnN0IHRvb2x0aXAgPSBkMy5zZWxlY3QoJyNlcFRvb2x0aXAnKTtcblxuICAgIGxldCBzdmcgPSBkMy5zZWxlY3QoJyNJZGVudGl0eVRvcG9sb2d5JyksXG4gICAgICBub2RlLFxuICAgICAgbGluaztcblxuICAgIGNvbnN0IGhhbmRsZVpvb20gPSAoZSkgPT4gc3ZnLmF0dHIoJ3RyYW5zZm9ybScsIGUudHJhbnNmb3JtKTtcbiAgICBjb25zdCB6b29tID0gZDMuem9vbSgpLm9uKCd6b29tJywgaGFuZGxlWm9vbSk7XG5cbiAgICBzdmdcbiAgICAgIC5hdHRyKCd3aWR0aCcsICcxMDAlJylcbiAgICAgIC5hdHRyKCdoZWlnaHQnLCAnMTAwJScpXG4gICAgICAvLyAuY2FsbCh6b29tKVxuICAgICAgLmF0dHIoJ3ZpZXdCb3gnLCAnMCAnICsgLTEwICsgJyAnICsgd2lkdGggKyAnICcgKyBoZWlnaHQpXG4gICAgICAuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKCcgKyAtMzAwICsgJywnICsgMjI1ICsgJyknKTtcblxuICAgIHN2Zy5zZWxlY3RBbGwoJ2cnKS5yZW1vdmUoKTtcblxuICAgIGNvbnN0IHNpbXVsYXRpb246IGFueSA9IGQzXG4gICAgICAuZm9yY2VTaW11bGF0aW9uKClcbiAgICAgIC5mb3JjZShcbiAgICAgICAgJ2xpbmsnLFxuICAgICAgICBkM1xuICAgICAgICAgIC5mb3JjZUxpbmsoKVxuICAgICAgICAgIC5pZChmdW5jdGlvbiAoZDogYW55KSB7XG4gICAgICAgICAgICByZXR1cm4gZC5pZDtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5kaXN0YW5jZSgxMDApXG4gICAgICAgICAgLnN0cmVuZ3RoKDEpXG4gICAgICApXG4gICAgICAuZm9yY2UoJ2NoYXJnZScsIGQzLmZvcmNlTWFueUJvZHkoKSlcbiAgICAgIC5mb3JjZSgnY2VudGVyJywgZDMuZm9yY2VDZW50ZXIod2lkdGggLyAyLCBoZWlnaHQgLyAyKSk7XG5cbiAgICBjb25zdCBsaW5rcyA9IHRoaXMuZ3JhcGhKc29uT2JqLmxpbmtzO1xuICAgIGNvbnN0IG5vZGVzID0gdGhpcy5ncmFwaEpzb25PYmoubm9kZXM7XG5cbiAgICBsaW5rID0gc3ZnXG4gICAgICAuc2VsZWN0QWxsKCdnLmxpbmUubGluZScpXG4gICAgICAuZGF0YShsaW5rcylcbiAgICAgIC5lbnRlcigpXG4gICAgICAuYXBwZW5kKCdnJylcbiAgICAgIC5hdHRyKCdjbGFzcycsICdsaW5rJylcbiAgICAgIC5hdHRyKCdtYXJrZXItZW5kJywgJ3VybCgjYXJyb3doZWFkKScpO1xuXG4gICAgbGlua1xuICAgICAgLmFwcGVuZCgnbGluZScpXG4gICAgICAuc3R5bGUoJ3N0cm9rZS13aWR0aCcsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgIGlmIChkLnN0YXR1cyA9PT0gMSB8fCBkLnN0YXR1cyA9PT0gLTEpIHtcbiAgICAgICAgICByZXR1cm4gMS41OyAvL01hdGguc3FydChkLndlaWdodCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuc3R5bGUoJ3N0cm9rZScsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgIGlmIChkLnN0YXR1cyA9PT0gMSkge1xuICAgICAgICAgIGxldCBkb0luVXNhZ2UgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gJyMwMGNkMTMnO1xuICAgICAgICB9IGVsc2UgaWYgKGQuc3RhdHVzID09PSAtMSkge1xuICAgICAgICAgIHJldHVybiAnI2Q4ZGNlNyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICcjZmYwMDRlJztcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBsaW5rLmVhY2goZnVuY3Rpb24gKHRoaXM6IGFueSwgZDogYW55LCBpKSB7XG4gICAgICBjb25zdCBfdGhpcyA9IGQzLnNlbGVjdCh0aGlzKTtcbiAgICAgIGlmIChkLnN0YXR1cyA9PT0gMSkge1xuICAgICAgICBsZXQgZG9JblVzYWdlID0gdHJ1ZTtcbiAgICAgICAgX3RoaXNcbiAgICAgICAgICAuYXBwZW5kKCd0ZXh0JylcbiAgICAgICAgICAuc3R5bGUoJ2ZpbGwnLCAncmdiKDI1NSwxOTgsMjIpJylcbiAgICAgICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsICcxMScpO1xuICAgICAgICBfdGhpc1xuICAgICAgICAgIC5hcHBlbmQoJ3JlY3QnKVxuICAgICAgICAgIC5hdHRyKCdmaWxsJywgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgIHJldHVybiAnd2hpdGUnO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmF0dHIoJ3dpZHRoJywgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgIGlmIChkb0luVXNhZ2UpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIDM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gMC4xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmF0dHIoJ2hlaWdodCcsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgICBpZiAoZG9JblVzYWdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiAzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIDAuMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hcHBlbmQoJ2FuaW1hdGUnKTtcblxuICAgICAgICBfdGhpcy5zZWxlY3QoJ3JlY3QnKS5hcHBlbmQoJ2FuaW1hdGUnKTtcbiAgICAgIH0gZWxzZSBpZiAoZC5zdGF0dXMgPT09IDApIHtcbiAgICAgICAgX3RoaXNcbiAgICAgICAgICAuYXBwZW5kKCdpbWFnZScpXG4gICAgICAgICAgLmF0dHIoJ3hsaW5rOmhyZWYnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gJy9hc3NldHMvaW1hZ2VzL3Zpc3VhbGl6ZXIvbGluay1jdXQucG5nJztcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hdHRyKCd3aWR0aCcsICcyMCcpXG4gICAgICAgICAgLmF0dHIoJ2hlaWdodCcsICcyNCcpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbm9kZSA9IHN2Z1xuICAgICAgLnNlbGVjdEFsbCgnLm5vZGUnKVxuICAgICAgLmRhdGEobm9kZXMpXG4gICAgICAuZW50ZXIoKVxuICAgICAgLmFwcGVuZCgnZycpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbm9kZScpO1xuXG4gICAgbm9kZVxuICAgICAgLmFwcGVuZCgnaW1hZ2UnKVxuICAgICAgLmF0dHIoJ3hsaW5rOmhyZWYnLCBmdW5jdGlvbiAoZCkge1xuICAgICAgICBjb25zdCByb3V0ZXJJbWFnZVBhdGggPSAnL2Fzc2V0cy9pbWFnZXMvdmlzdWFsaXplci9Sb3V0ZXJzLnBuZyc7XG4gICAgICAgIGNvbnN0IG5vblByb3Zpc2lvbmVkUm91dGVySW1hZ2VQYXRoID1cbiAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvdmlzdWFsaXplci9FUi5wbmcnO1xuICAgICAgICBjb25zdCBlcnJSb3V0ZXJJbWFnZVBhdGggPSAnL2Fzc2V0cy9pbWFnZXMvdmlzdWFsaXplci9lcnJvcl9lci5wbmcnO1xuICAgICAgICBjb25zdCBlcnJFbmRwb2ludEltYWdlUGF0aCA9ICcvYXNzZXRzL2ltYWdlcy92aXN1YWxpemVyL2hvc3QtZXJyb3IucG5nJztcbiAgICAgICAgY29uc3QgdW5yZWdpc3RlcmVkRW5kcG9pbnRJbWFnZVBhdGggPVxuICAgICAgICAgICcvYXNzZXRzL2ltYWdlcy92aXN1YWxpemVyL2hvc3RfdW5yZWdpc3RlcmVkLnBuZyc7XG4gICAgICAgIGNvbnN0IGVuZFBvaW50UGF0aCA9ICcvYXNzZXRzL2ltYWdlcy92aXN1YWxpemVyL2hvc3QucG5nJztcblxuICAgICAgICBpZiAoZC50eXBlLmluY2x1ZGVzKCdJZGVudGl0eScpICYmIGQuc3RhdHVzID09PSAnVW4tUmVnaXN0ZXJlZCcpIHtcbiAgICAgICAgICByZXR1cm4gdW5yZWdpc3RlcmVkRW5kcG9pbnRJbWFnZVBhdGg7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgZC50eXBlLmluY2x1ZGVzKCdJZGVudGl0eScpICYmXG4gICAgICAgICAgZC5hcGlTZXNzaW9uID09PSAnWWVzJyAmJlxuICAgICAgICAgIGQuc3RhdHVzID09PSAnUmVnaXN0ZXJlZCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGVuZFBvaW50UGF0aDtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICBkLnR5cGUuaW5jbHVkZXMoJ0lkZW50aXR5JykgJiZcbiAgICAgICAgICAoZC5yb3V0ZXJDb25uZWN0aW9uID09PSAnTm8nIHx8IGQuYXBpU2Vzc2lvbiA9PT0gJ05vJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGVyckVuZHBvaW50SW1hZ2VQYXRoO1xuICAgICAgICB9IGVsc2UgaWYgKGQudHlwZS5pbmNsdWRlcygnSWRlbnRpdHknKSkge1xuICAgICAgICAgIHJldHVybiBlbmRQb2ludFBhdGg7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgZC50eXBlLmluY2x1ZGVzKCdSb3V0ZXInKSAmJlxuICAgICAgICAgIChkLnN0YXR1cyA9PT0gJ0VSUk9SJyB8fCBkLm9ubGluZSA9PT0gJ05vJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGVyclJvdXRlckltYWdlUGF0aDtcbiAgICAgICAgfSBlbHNlIGlmIChkLnR5cGUuaW5jbHVkZXMoJ1JvdXRlcicpICYmIGQuc3RhdHVzID09PSAnUFJPVklTSU9ORUQnKSB7XG4gICAgICAgICAgcmV0dXJuIHJvdXRlckltYWdlUGF0aDtcbiAgICAgICAgfSBlbHNlIGlmIChkLnR5cGUuaW5jbHVkZXMoJ1JvdXRlcicpKSB7XG4gICAgICAgICAgcmV0dXJuIG5vblByb3Zpc2lvbmVkUm91dGVySW1hZ2VQYXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGQuZ3JvdXAgPT09ICc0Jykge1xuICAgICAgICAgIHJldHVybiAnL2Fzc2V0cy9pbWFnZXMvdmlzdWFsaXplci9zZXJ2aWNlLnBuZyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmF0dHIoJ3gnLCAtMjUpXG4gICAgICAuYXR0cigneScsIC0yNSlcbiAgICAgIC5hdHRyKCd3aWR0aCcsICc0MCcpXG4gICAgICAuYXR0cignaGVpZ2h0JywgJzQwJyk7XG5cbiAgICBub2RlXG4gICAgICAuYXBwZW5kKCd0ZXh0JylcbiAgICAgIC5hdHRyKCd4JywgMTApXG4gICAgICAuYXR0cigneScsIDEyKVxuICAgICAgLmF0dHIoJ2ZpbGwnLCAndmFyKC0tdGFibGVUZXh0KScpXG4gICAgICAudGV4dChmdW5jdGlvbiAoZCkge1xuICAgICAgICByZXR1cm4gZC5uYW1lO1xuICAgICAgfSk7XG5cbiAgICBzaW11bGF0aW9uLm5vZGVzKG5vZGVzKS5vbigndGljaycsIHRpY2tlZCk7XG5cbiAgICBzaW11bGF0aW9uLmZvcmNlKCdsaW5rJykubGlua3MobGlua3MpO1xuICAgIG5vZGUub24oJ21vdXNlb3ZlcicsIChldmVudCwgZCkgPT4ge1xuICAgICAgY29uc3QgZW5kcG9pbnRVdGxpemF0aW9uSnNvbiA9IHt9O1xuICAgICAgZHJhd1Rvb2x0aXAoZXZlbnQsIGQsIGVuZHBvaW50VXRsaXphdGlvbkpzb24pO1xuICAgIH0pO1xuXG4gICAgbm9kZS5vbignbW91c2VvdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZW1vdmVUb29sdGlwKCk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiB0aWNrZWQoKSB7XG4gICAgICBub2RlLmF0dHIoJ3RyYW5zZm9ybScsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgIHJldHVybiAndHJhbnNsYXRlKCcgKyBkLnBvc3ggKyAnLCcgKyBkLnBvc3kgKyAnKSc7XG4gICAgICB9KTtcblxuICAgICAgbGlua1xuICAgICAgICAuc2VsZWN0KCdsaW5lJylcbiAgICAgICAgLmF0dHIoJ3gxJywgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICByZXR1cm4gZC5zb3VyY2UucG9zeDtcbiAgICAgICAgfSlcbiAgICAgICAgLmF0dHIoJ3kxJywgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICByZXR1cm4gZC5zb3VyY2UucG9zeTtcbiAgICAgICAgfSlcbiAgICAgICAgLmF0dHIoJ3gyJywgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICByZXR1cm4gZC50YXJnZXQucG9zeDtcbiAgICAgICAgfSlcbiAgICAgICAgLmF0dHIoJ3kyJywgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICByZXR1cm4gZC50YXJnZXQucG9zeTtcbiAgICAgICAgfSk7XG5cbiAgICAgIGxpbmtcbiAgICAgICAgLnNlbGVjdCgnaW1hZ2UnKVxuICAgICAgICAuYXR0cigneCcsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgY29uc3QgeDEgPSBkLnNvdXJjZS5wb3N4LFxuICAgICAgICAgICAgeDIgPSBkLnRhcmdldC5wb3N4LFxuICAgICAgICAgICAgeCA9IHgxIC0gKHgxIC0geDIpIC8gMjtcblxuICAgICAgICAgIHJldHVybiB4IC0gODtcbiAgICAgICAgfSlcbiAgICAgICAgLmF0dHIoJ3knLCBmdW5jdGlvbiAoZCkge1xuICAgICAgICAgIGNvbnN0IHkxID0gZC5zb3VyY2UucG9zeSxcbiAgICAgICAgICAgIHkyID0gZC50YXJnZXQucG9zeSxcbiAgICAgICAgICAgIHkgPSB5MSAtICh5MSAtIHkyKSAvIDI7XG5cbiAgICAgICAgICByZXR1cm4geSAtIDEyO1xuICAgICAgICB9KTtcblxuICAgICAgbGlua1xuICAgICAgICAuc2VsZWN0KCdyZWN0JylcbiAgICAgICAgLmF0dHIoJ29wYWNpdHknLCAxKVxuICAgICAgICAuYXR0cigneCcsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgcmV0dXJuIGQuc291cmNlLnBvc3g7XG4gICAgICAgIH0pXG4gICAgICAgIC5hdHRyKCd5JywgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICByZXR1cm4gZC5zb3VyY2UucG9zeTtcbiAgICAgICAgfSlcbiAgICAgICAgLnNlbGVjdEFsbCgnYW5pbWF0ZScpXG4gICAgICAgIC5lYWNoKGZ1bmN0aW9uICh0aGlzOiBhbnksIGQ6IGFueSwgaSkge1xuICAgICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICBkMy5zZWxlY3QodGhpcylcbiAgICAgICAgICAgICAgLmF0dHIoJ2F0dHJpYnV0ZU5hbWUnLCBmdW5jdGlvbiAoZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAneCc7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5hdHRyKCdmcm9tJywgZnVuY3Rpb24gKGQ6IGFueSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG4gPSBkLnNvdXJjZS5wb3N4IC0gMTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmF0dHIoJ3RvJywgZnVuY3Rpb24gKGQ6IGFueSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkLnRhcmdldC5wb3N4O1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZDMuc2VsZWN0KHRoaXMpXG4gICAgICAgICAgICAgIC5hdHRyKCdhdHRyaWJ1dGVOYW1lJywgZnVuY3Rpb24gKGQ6IGFueSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAneSc7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5hdHRyKCdmcm9tJywgZnVuY3Rpb24gKGQ6IGFueSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkLnNvdXJjZS5wb3N5O1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuYXR0cigndG8nLCBmdW5jdGlvbiAoZDogYW55KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGQudGFyZ2V0LnBvc3k7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGQzLnNlbGVjdCh0aGlzKVxuICAgICAgICAgICAgLmF0dHIoJ2F0dHJpYnV0ZVR5cGUnLCAnWE1MJylcbiAgICAgICAgICAgIC5hdHRyKCdiZWdpbicsICcwLjVzJylcbiAgICAgICAgICAgIC5hdHRyKCdkdXInLCBmdW5jdGlvbiAoZCkge1xuICAgICAgICAgICAgICByZXR1cm4gJzEuMHMnO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5hdHRyKCdyZXBlYXRDb3VudCcsICdpbmRlZmluaXRlJyk7XG4gICAgICAgIH0pO1xuICAgIH0gLy8gZW5kIG9mIHRpY2tlZFxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlVG9vbHRpcCgpIHtcbiAgICAgIGlmICh0b29sdGlwKSB7XG4gICAgICAgIHRvb2x0aXAuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRyYXdUb29sdGlwKGV2ZW50LCBkLCBlbmRwb2ludFV0bGl6YXRpb25Kc29uKSB7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXBUb29sdGlwJykuaW5uZXJIVE1MID0gcmVhZEtleVZhbHVlcyhcbiAgICAgICAgZCxcbiAgICAgICAgZW5kcG9pbnRVdGxpemF0aW9uSnNvblxuICAgICAgKTtcbiAgICAgIHRvb2x0aXAuc3R5bGUoJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICAgIHRvb2x0aXAuc3R5bGUoJ3doaXRlLXNwYWNlJywgJ3ByZS13cmFwJyk7XG4gICAgICBjb25zdCB4ID0gZXZlbnQucGFnZVggKyAncHgnO1xuICAgICAgY29uc3QgeSA9IGV2ZW50LnBhZ2VZICsgJ3B4JztcbiAgICAgIHRvb2x0aXAuc3R5bGUoJ2xlZnQnLCB4KTtcbiAgICAgIHRvb2x0aXAuc3R5bGUoJ3RvcCcsIHkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWRLZXlWYWx1ZXMoZCwgZW5kcG9pbnRVdGxpemF0aW9uSnNvbikge1xuICAgICAgbGV0IGluZm8gPVxuICAgICAgICBcIjxkaXYgY2xhc3M9J3Rvb2wtdGlwLWNvbnRhaW5lcicgc3R5bGU9J2ZvbnQtc2l6ZToxNHB4O2ZvbnQtZmFtaWx5Ok9wZW4gU2FuczsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1jb2xvcjogdmFyKC0tdGFibGVUZXh0KTsnPlwiO1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGQpO1xuXG4gICAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGsgPT09ICdzdGF0dXMnIHx8XG4gICAgICAgICAgayA9PT0gJ3Bvc3knIHx8XG4gICAgICAgICAgayA9PT0gJ3Bvc3gnIHx8XG4gICAgICAgICAgayA9PT0gJ2dyb3VwJyB8fFxuICAgICAgICAgIGsgPT09ICdob3N0ZWRFZGdlSWQnIHx8XG4gICAgICAgICAgayA9PT0gJ3ZhbHVlJyB8fFxuICAgICAgICAgIGsgPT09ICdpbmRleCcgfHxcbiAgICAgICAgICBrID09PSAncGFyZW50JyB8fFxuICAgICAgICAgIGsgPT09ICdkZXB0aCcgfHxcbiAgICAgICAgICBrID09PSAneCcgfHxcbiAgICAgICAgICBrID09PSAneScgfHxcbiAgICAgICAgICBrID09PSAnaWQnIHx8XG4gICAgICAgICAgayA9PT0gJ3gwJyB8fFxuICAgICAgICAgIGsgPT09ICd5MCcgfHxcbiAgICAgICAgICBrID09PSAndnknIHx8XG4gICAgICAgICAgayA9PT0gJ3Z4J1xuICAgICAgICApIHtcbiAgICAgICAgICAvLyBjb250aW51ZTtcbiAgICAgICAgfSBlbHNlIGlmIChrID09PSAnY2hpbGRyZW4nKSB7XG4gICAgICAgICAgY29uc3Qga1ZhbDogYW55ID0gZFtrXTtcbiAgICAgICAgICBpZiAoa1ZhbCAmJiBrVmFsICE9PSAnJykge1xuICAgICAgICAgICAgIGluZm8gPSBpbmZvICsgJzxkaXYgY2xhc3M9XCJwcm9wLXJvd1wiPicgKyBrICsgJzogJyArIGtWYWwubGVuZ3RoICsgJzwvZGl2Pic7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0FuT2JqZWN0KGRba10pKSB7XG4gICAgICAgICAgICBjb25zdCBrVmFsOiBhbnkgPSBkW2tdO1xuICAgICAgICAgICAgaWYgKGtWYWwgJiYga1ZhbCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgaW5mbyA9IGluZm8gKyAnPGRpdiBjbGFzcz1cInByb3Atcm93XCI+JyArIGsgKyAnOiAnICsga1ZhbC5uYW1lICsgJzwvZGl2Pic7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChkW2tdIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIGluZm8gPVxuICAgICAgICAgICAgICBpbmZvICtcbiAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJwcm9wLXJvd1wiPicgK1xuICAgICAgICAgICAgICBrICtcbiAgICAgICAgICAgICAgJzogJyArXG4gICAgICAgICAgICAgIGRba10uam9pbignPGJyPiAmbmJzcDsmbmJzcDsgJm5ic3A7Jm5ic3A7JykgK1xuICAgICAgICAgICAgICAnPC9kaXY+JztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgdm8gPSBkW2tdO1xuICAgICAgICAgICAgaWYgKHZvICYmIHZvICE9PSAnJykge1xuICAgICAgICAgICAgICBpbmZvID1cbiAgICAgICAgICAgICAgICBpbmZvICtcbiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz1cInByb3Atcm93XCI+JyArXG4gICAgICAgICAgICAgICAgayArXG4gICAgICAgICAgICAgICAgJzogJyArXG4gICAgICAgICAgICAgICAgKHZvICE9PSBudWxsIHx8IHZvICE9PSAnJyA/IGRba10gOiAnTi9BJykgK1xuICAgICAgICAgICAgICAgICc8L2Rpdj4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBpbmZvICsgJzwvZGl2Pic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBbk9iamVjdChvKSB7XG4gICAgICByZXR1cm4gbyBpbnN0YW5jZW9mIE9iamVjdCAmJiBvLmNvbnN0cnVjdG9yID09PSBPYmplY3Q7XG4gICAgfVxuXG4gICAgdGhpcy5yZWZyZXNoUm90YXRlID0gZmFsc2U7XG4gIH0gLy8gZW5kIG9mIGluaXRUb3BvVmlld1xufVxuXG5jbGFzcyBTZXJ2aWNlRGF0YSB7XG4gIGlkO1xuICBuYW1lO1xufVxuXG4iLCI8ZGl2IFtuZ0NsYXNzXT1cInsgJ2Z1bGwtc2NyZWVuJzogZnVsbFNjcmVlbiB9XCIgY2xhc3M9XCJtb2RhbCBzb2xpZFwiIGlkPVwiSWRlbnRpdHlWaXN1YWxpemVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInRwLWRhdGEtaGVhZGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbHRpdGxlXCI+SWRlbnRpdHkgU2VydmljZSBQYXRoPC9kaXY+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cImhpZGUoKVwiIGNsYXNzPVwiYnV0dG9uQmFsbCBpY29uLWNsb3NlXCIgaWQ9XCJFc2NaRW5kcG9pbnRDbG9zZVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVNb2RhbFNpemUoKVwiIGNsYXNzPVwiYnV0dG9uQmFsbCByZXNpemVcIiBpZD1cIlJlc2l6ZU1vZGFsQnV0dG9uXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBbbmdDbGFzc109XCJpc0RhcmtNb2RlPT10cnVlPydkYXJrTW9kZSc6J2xpZ2h0TW9kZSdcIiBjbGFzcz1cImlkZW50aXR5LXRvcG9sb2d5LWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogODBweDsgZmxvYXQ6IGxlZnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlcC10b3BvbG9neS1maWx0ZXItY29udGFpbmVyIGxpc3RCb3ggcm93XCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJmaWx0ZXJTZWFyY2hBcnJheSgpXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFNlcnZpY2VcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRvcG9sb2d5LWZpbHRlci1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiZmlsdGVyVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVHlwZSB0byBzZWFyY2ggaWRlbnRpdHkgYWNjZXNzaWJsZSBzZXJ2aWNlcy5cIlxuICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclNlYXJjaEZpbHRlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWx0ZXJUZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGVhci1zdmMtaWNvbiBpY29uLWNsb3NlXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJDbGVhclNlYXJjaEZpbHRlclwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgW2hpZGRlbl09XCIhbm9TZWFyY2hSZXN1bHRzXCIgY2xhc3M9XCJuby1yZXN1bHRzLXdhcm5pbmdcIj5ObyBSZXN1bHRzIEZvdW5kPC9kaXY+XG4gICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwiYXV0b2NvbXBsZXRlU2VhcmNoKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhdXRvY29tcGxldGVPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9wb3RpcFwiIGlkPVwiZXBUb29sdGlwXCI+PC9kaXY+XG5cbiAgICAgICAgICAgIDxzdmcgc3R5bGU9J3BvaW50ZXItZXZlbnRzOmFsbCcgaGVpZ2h0PVwiMTAwMFwiIGlkPVwiSWRlbnRpdHlUb3BvbG9neVwiIHdpZHRoPVwiMTIwMFwiPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8bGliLWxvYWRpbmctaW5kaWNhdG9yICpuZ0lmPVwiaXNMb2FkaW5nXCIgW2lzTG9hZGluZ109XCJpc0xvYWRpbmdcIj48L2xpYi1sb2FkaW5nLWluZGljYXRvcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9wb2xvZ3ktbGVnZW5kQVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtLWhlYWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLXRleHQtaGVhZGluZ1wiPkNvbXBvbmVudCBTdGF0dXM8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1jaXJjbGUgdW5yZWdpc3RlcmVkXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC10ZXh0XCI+VW5yZWdpc3RlcmVkIC8gT2ZmbGluZTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWNpcmNsZSByZWdpc3RlcmVkX2luX3VzZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtdGV4dFwiPlJlZ2lzdGVyZWQsIE9ubGluZTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWNpcmNsZSBlcnJvcmVkXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC10ZXh0XCI+RXJyb3JlZDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0b3BvbG9neS1sZWdlbmRCXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWl0ZW0taGVhZFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtdGV4dC1oZWFkaW5nXCI+TGluayBTdGF0dXM8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1jaXJjbGUgdW5yZWdpc3RlcmVkXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC10ZXh0XCI+T2ZmbGluZTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWNpcmNsZSByZWdpc3RlcmVkX2luX3VzZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtdGV4dFwiPkluIFVzYWdlPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtY2lyY2xlIHJlZ2lzdGVyZWRfbm90X2luX3VzZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtdGV4dFwiPlVzYWdlIERhdGUgTi9BPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtY2lyY2xlIGxpbmtlcnJvcmVkXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC10ZXh0XCI+RXJyb3JlZDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
586
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktc2VydmljZS1wYXRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy92aXN1YWxpemVyL2lkZW50aXR5LXNlcnZpY2UtcGF0aC9pZGVudGl0eS1zZXJ2aWNlLXBhdGguY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL3Zpc3VhbGl6ZXIvaWRlbnRpdHktc2VydmljZS1wYXRoL2lkZW50aXR5LXNlcnZpY2UtcGF0aC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0QkFBNEI7QUFDNUIsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsZ0JBQWdCLEdBRWpCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUNMLGlCQUFpQixHQUVsQixNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXpCLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7O0FBV3ZCLE1BQU0sT0FBTyw0QkFBNEI7SUF5QnZDLFlBQ1UseUJBQW9ELEVBQzNCLGVBQWdDLEVBQzlCLFdBQTRCLEVBQ3ZELE1BQWMsRUFDZCxTQUFxRCxFQUM3QixJQUFTO1FBTGpDLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDM0Isb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUN2RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsY0FBUyxHQUFULFNBQVMsQ0FBNEM7UUFDN0Is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TUFBTTsyQkFBQyxlQUFlOztBQWltQjNCLE1BQU0sV0FBVztDQUdoQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBwcmVmZXItY29uc3Q6IDEgKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NoaWxkLFxuICBJbmplY3QsXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIFNFVFRJTkdTX1NFUlZJQ0UsXG4gIFNldHRpbmdzU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQge1xuICBaSVRJX0RBVEFfU0VSVklDRSxcbiAgWml0aURhdGFTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy96aXRpLWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBJZGVudGl0eVNlcnZpY2VQYXRoSGVscGVyIH0gZnJvbSAnLi9pZGVudGl0eS1zZXJ2aWNlLXBhdGguaGVscGVyJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pZGVudGl0eS12aXN1YWxpemVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2lkZW50aXR5LXNlcnZpY2UtcGF0aC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2lkZW50aXR5LXNlcnZpY2UtcGF0aC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJZGVudGl0eVNlcnZpY2VQYXRoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIGQzO1xuICBpc0RhcmtNb2RlID0gZmFsc2U7XG4gIHJlZnJlc2hSb3RhdGUgPSBmYWxzZTtcbiAgY2xvc2VSb3RhdGUgPSB0cnVlO1xuICBmaWx0ZXJUZXh0ID0gJ2ZldGNoaW5nIHNlcnZpY2VzLi4nO1xuICBub1NlYXJjaFJlc3VsdHMgPSBmYWxzZTtcbiAgYXV0b2NvbXBsZXRlT3B0aW9ucyA9IFtdO1xuICBmdWxsU2NyZWVuID0gZmFsc2U7XG4gIHNlcnZpY2VPcHRpb25zOiBhbnk7XG4gIGVuZHBvaW50RGF0YTtcbiAgbmV0d29ya0dyYXBoO1xuICBncmFwaEpzb25PYmo7XG4gIHNlcnZpY2VzO1xuICBlZGdlcm91dGVycztcbiAgZW5kcG9pbnRzID0gW107XG4gIHNlbGVjdGVkU2VydmljZSA9ICcnO1xuICBzZXJ2aWNlU2VsZWN0RXJyb3I7XG4gIGRvRW5kcG9pbnRIYXNBcHB3YW5zID0gZmFsc2U7XG4gIGRvRW5kcG9pbnRIYXNQdWJsaWNSb3V0ZXJzID0gZmFsc2U7XG4gIGRvRW5kcG9pbnRIYXNTZXJ2aWNlc0luUHJpdmF0ZU53ID0gZmFsc2U7XG4gIGlzTG9hZGluZyA9IGZhbHNlO1xuICBjb3VudEdycDJOZHMgPSAwO1xuICBjb3VudEdycDNOZHMgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaWRlbnRpdHlTZXJ2aWNlUGF0aEhlbHBlcjogSWRlbnRpdHlTZXJ2aWNlUGF0aEhlbHBlcixcbiAgICBASW5qZWN0KFNFVFRJTkdTX1NFUlZJQ0UpIHB1YmxpYyBzZXR0aW5nc1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICBASW5qZWN0KFpJVElfREFUQV9TRVJWSUNFKSBwcml2YXRlIHppdGlTZXJ2aWNlOiBaaXRpRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPElkZW50aXR5U2VydmljZVBhdGhDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55XG4gICkge1xuICAgIHRoaXMuZW5kcG9pbnREYXRhID0gZGF0YS5pZGVudGl0eTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0RW5kcG9pbnROZXR3b3JrQXNDb2RlKCk7XG4gICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zID0gW107XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IGJnQ29sID0gZDMuY29sb3IoZDMuc2VsZWN0KCdib2R5Jykuc3R5bGUoXCJiYWNrZ3JvdW5kLWNvbG9yXCIpKS5mb3JtYXRIZXgoKTtcbiAgICB0aGlzLmlzRGFya01vZGUgPSBiZ0NvbCA9PScjMTgxOTFkJyA/IHRydWU6IGZhbHNlO1xuICB9XG5cbiAgZ2V0RW5kcG9pbnROZXR3b3JrQXNDb2RlKCkge1xuICAgIGNvbnN0IHBhZ2VzaXplID0gNTAwO1xuICAgIGNvbnN0IHNlcnZpY2VzX3BhZ2luZyA9IHtcbiAgICAgIHNlYXJjaE9uOiAnbmFtZScsXG4gICAgICBmaWx0ZXI6ICcnLFxuICAgICAgdG90YWw6IHBhZ2VzaXplLFxuICAgICAgcGFnZTogMSxcbiAgICAgIHNvcnQ6ICduYW1lJyxcbiAgICAgIG9yZGVyOiAnYXNjJyxcbiAgICB9O1xuXG4gICAgdGhpcy56aXRpU2VydmljZVxuICAgICAgLmdldChgaWRlbnRpdGllcy8ke3RoaXMuZW5kcG9pbnREYXRhLmlkfS9zZXJ2aWNlc2AsIHNlcnZpY2VzX3BhZ2luZywgW10pXG4gICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMuc2VydmljZXMgPSByZXN1bHQuZGF0YTtcbiAgICAgICAgdGhpcy5jbG9zZVJvdGF0ZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlcyB8fCB0aGlzLnNlcnZpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuc2VydmljZXMgPSBbXTtcbiAgICAgICAgICB0aGlzLnNlcnZpY2VPcHRpb25zID0gW107XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlT3B0aW9ucy5wdXNoKG5vU2VydmljZXMoKSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFNlcnZpY2UgPSAnU2VydmljZXMgbm90IGZvdW5kIGZvciBhIHNlbGVjdGVkIGlkZW50aXR5JztcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHBhZ2VzID0gTWF0aC5jZWlsKHJlc3VsdC5tZXRhLnBhZ2luYXRpb24udG90YWxDb3VudCAvIHBhZ2VzaXplKTtcbiAgICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuICAgICAgICAgIGZvciAobGV0IHBhZ2UgPSAyOyBwYWdlIDw9IHBhZ2VzOyBwYWdlKyspIHtcbiAgICAgICAgICAgIHNlcnZpY2VzX3BhZ2luZy5wYWdlID0gcGFnZTtcbiAgICAgICAgICAgIGNvbnN0IHRtcF9wcm9taXNlID0gdGhpcy56aXRpU2VydmljZVxuICAgICAgICAgICAgICAuZ2V0KFxuICAgICAgICAgICAgICAgIGBpZGVudGl0aWVzLyR7dGhpcy5lbmRwb2ludERhdGEuaWR9L3NlcnZpY2VzYCxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlc19wYWdpbmcsXG4gICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAudGhlbigocGFnZVJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHBhZ2VSZXN1bHQuZGF0YS5mb3JFYWNoKChzZXJ2KSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlcnZpY2VzLnB1c2goc2Vydik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0bXBfcHJvbWlzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMueml0aVNlcnZpY2VcbiAgICAgICAgICAgICAgLmdldChgaWRlbnRpdGllcy8ke3RoaXMuZW5kcG9pbnREYXRhLmlkfS9lZGdlLXJvdXRlcnNgLCB7fSwgW10pXG4gICAgICAgICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVkZ2Vyb3V0ZXJzID0gW107XG4gICAgICAgICAgICAgICAgcmVzdWx0LmRhdGEuZm9yRWFjaCgocmVjKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmVkZ2Vyb3V0ZXJzLnB1c2gocmVjKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2VPcHRpb25zID0gY3JlYXRlU2VydmljZU9wdGlvbnModGhpcy5zZXJ2aWNlcyk7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclRleHQgPVxuICAgICAgICAgICAgICB0aGlzLnNlcnZpY2VPcHRpb25zLmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2VydmljZU9wdGlvbnNbMF0ubmFtZTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTZXJ2aWNlID1cbiAgICAgICAgICAgICAgdGhpcy5zZXJ2aWNlT3B0aW9ucy5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgICA/ICdTZXJ2aWNlcyBub3QgZm91bmQgZm9yIGEgc2VsZWN0ZWQgaWRlbnRpdHknXG4gICAgICAgICAgICAgICAgOiB0aGlzLnNlcnZpY2VPcHRpb25zWzBdLm5hbWU7XG4gICAgICAgICAgICB0aGlzLmF1dG9jb21wbGV0ZU9wdGlvbnMgPSB0aGlzLnNlcnZpY2VPcHRpb25zO1xuICAgICAgICAgICAgdGhpcy5zZXJ2aWNlQ2hhbmdlZCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVNlcnZpY2VPcHRpb25zKF9zZXJ2aWNlcykge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IFtdO1xuICAgICAgY29uc3Qgc2VydmljZU5hbWVzID0gW107XG4gICAgICBfc2VydmljZXM/LmZpbmQoKHNydmljZSkgPT4ge1xuICAgICAgICBpZiAoIXNlcnZpY2VOYW1lcy5pbmNsdWRlcyhzcnZpY2UubmFtZSkpIHtcbiAgICAgICAgICBzZXJ2aWNlTmFtZXMucHVzaChzcnZpY2UubmFtZSk7XG4gICAgICAgICAgY29uc3Qgc2QgPSBuZXcgU2VydmljZURhdGEoKTtcbiAgICAgICAgICBzZC5pZCA9IHNydmljZS5pZDtcbiAgICAgICAgICBzZC5uYW1lID0gc3J2aWNlLm5hbWU7XG4gICAgICAgICAgb3B0aW9ucy5wdXNoKHNkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub1NlcnZpY2VzKCkge1xuICAgICAgY29uc3Qgc2QgPSBuZXcgU2VydmljZURhdGEoKTtcbiAgICAgIHNkLmlkID0gJyc7XG4gICAgICBzZC5uYW1lID0gJ05PIFNFUlZJQ0VTJztcbiAgICAgIHJldHVybiBzZDtcbiAgICB9XG4gIH0gLy8gZW5kIG9mIGdldEVuZHBvaW50TmV0d29ya0FzQ29kZVxuXG4gIGZpbHRlclNlYXJjaEFycmF5KCkge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlT3B0aW9ucyA9IHRoaXMuc2VydmljZU9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+XG4gICAgICBvcHRpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuc2VsZWN0ZWRTZXJ2aWNlLnRvTG93ZXJDYXNlKCkpXG4gICAgKTtcbiAgfVxuXG4gIGNsZWFyU2VhcmNoRmlsdGVyKCkge1xuICAgIHRoaXMuZmlsdGVyVGV4dCA9ICdZb3UgY2FuIGZpbHRlciBzZXJ2aWNlcyBieSB0eXBpbmcgaGVyZSc7XG4gICAgdGhpcy5hdXRvY29tcGxldGVPcHRpb25zID0gdGhpcy5zZXJ2aWNlT3B0aW9ucztcbiAgICB0aGlzLnNlbGVjdGVkU2VydmljZSA9ICcnO1xuICB9XG5cbiAgYXV0b2NvbXBsZXRlU2VhcmNoKGV2ZW50KSB7XG4gICAgdGhpcy5zZXJ2aWNlQ2hhbmdlZCgpO1xuICB9XG5cbiAgc2VydmljZUNoYW5nZWQoKSB7XG4gICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgY29uc3QgYWxsUHJvbWlzZXMgPSBbXTtcbiAgICAgbGV0IHNlcnZpY2VPYiA9IG51bGw7XG4gICAgIGxldCBzZXJ2aWNlX2NvbmZpZ3MgPSBbXTtcblxuICAgICBzZXJ2aWNlT2IgPSB0aGlzLnNlcnZpY2VzICYmIHRoaXMuc2VydmljZXMuZmluZCgocmVjKSA9PiB7XG4gICAgICByZXR1cm4gIChyZWMubmFtZSA9PT0gdGhpcy5zZWxlY3RlZFNlcnZpY2UpO1xuICAgICB9KTtcblxuICAgICBpZiAoIXNlcnZpY2VPYikge1xuICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgcmV0dXJuO1xuICAgICB9XG5cbiAgICAgY29uc3QgY29uZmlnc191cmwgPSB0aGlzLmdldExpbmtGb3JSZXNvdXJjZShzZXJ2aWNlT2IsICdjb25maWdzJyk7XG5cbiAgICAgY29uc3QgY29uZmlnUHJvbWlzZSA9IHRoaXMueml0aVNlcnZpY2VcbiAgICAgIC5nZXQoY29uZmlnc191cmwsIHt9LCBbXSlcbiAgICAgIC50aGVuKChjb25maWdzKSA9PiB7XG4gICAgICAgIHNlcnZpY2VfY29uZmlncyA9IGNvbmZpZ3MgJiYgY29uZmlncy5kYXRhID8gY29uZmlncy5kYXRhIDogW107XG4gICAgICB9KTtcbiAgICAgY29uc3Qgc2VydmljZV9lZGdlX3JvdXRlcl9wb2xpY2llc191cmwgPSB0aGlzLmdldExpbmtGb3JSZXNvdXJjZShcbiAgICAgIHNlcnZpY2VPYixcbiAgICAgICdzZXJ2aWNlLWVkZ2Utcm91dGVyLXBvbGljaWVzJ1xuICAgICApO1xuICAgICBjb25zdCBzZXJ2aWNlX3BvbGljaWVzX3VybCA9IHRoaXMuZ2V0TGlua0ZvclJlc291cmNlKFxuICAgICAgc2VydmljZU9iLFxuICAgICAgJ3NlcnZpY2UtcG9saWNpZXMnXG4gICAgICkucmVwbGFjZSgnLi8nLCAnJyk7IC8vIGRpYWwsIEJpbmQgaW5mb1xuXG4gICAgbGV0IGJpbmRQb2xpY2llcyA9IFtdO1xuICAgIGxldCBiaW5kSWRuZXRpdGllcyA9IFtdO1xuICAgIGNvbnN0IHByb21pc2UyID0gdGhpcy56aXRpU2VydmljZVxuICAgICAgLmdldChzZXJ2aWNlX3BvbGljaWVzX3VybCwge30sIFtdKVxuICAgICAgLnRoZW4oKHBvbGljaWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IGlkZW50aXR5UHJvbWlzZXMgPSBbXTtcbiAgICAgICAgXy5pc0FycmF5KHBvbGljaWVzLmRhdGEpICYmIHBvbGljaWVzLmRhdGEuZm9yRWFjaCgocG9saWN5KSA9PiB7XG4gICAgICAgICAgaWYgKHBvbGljeS50eXBlID09PSAnQmluZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGJpbmRJZGVudGl0aWVzVXJsID0gdGhpcy5nZXRMaW5rRm9yUmVzb3VyY2UoXG4gICAgICAgICAgICAgIHBvbGljeSxcbiAgICAgICAgICAgICAgJ2lkZW50aXRpZXMnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgcHJvbXNlID0gdGhpcy56aXRpU2VydmljZVxuICAgICAgICAgICAgICAuZ2V0KGJpbmRJZGVudGl0aWVzVXJsLnJlcGxhY2UoJy4vJywgJycpLCB7fSwgW10pXG4gICAgICAgICAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5kYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgIHJlcy5kYXRhLmZvckVhY2goKHJzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbVRvQXJyYXkoYmluZElkbmV0aXRpZXMsIHJzKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW1Ub0FycmF5KGJpbmRJZG5ldGl0aWVzLCByZXMuZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlkZW50aXR5UHJvbWlzZXMucHVzaChwcm9tc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIFByb21pc2UuYWxsKGlkZW50aXR5UHJvbWlzZXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc3RhcnRWaXNQcm9jZXNzKGJpbmRJZG5ldGl0aWVzLCBzZXJ2aWNlT2IsIHNlcnZpY2VfY29uZmlncyk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFkZEl0ZW1Ub0FycmF5KGJpbmRJZG5ldGl0aWVzLCBvYikge1xuICAgIGlmICghYmluZElkbmV0aXRpZXMuZmluZCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb2IuaWQpKSB7XG4gICAgICBiaW5kSWRuZXRpdGllcy5wdXNoKG9iKTtcbiAgICB9XG4gICAgcmV0dXJuIGJpbmRJZG5ldGl0aWVzO1xuICB9XG5cbiAgZ2V0TGlua0ZvclJlc291cmNlKG9iLCByZXNvdXJjZSkge1xuICAgIHJldHVybiBvYlsnX2xpbmtzJ11bcmVzb3VyY2VdWydocmVmJ107XG4gIH1cblxuICBzdGFydFZpc1Byb2Nlc3MoYmluZElkbmV0aXRpZXMsIHNlbGVjdGVkU2VydmljZU9iLCBzZXJ2aWNlQ29uZmlncykge1xuICAgIHRoaXMuY291bnRHcnAyTmRzID0gMDtcbiAgICB0aGlzLmNvdW50R3JwM05kcyA9IDA7XG4gICAgaWYgKF8uaXNFbXB0eSh0aGlzLnNlbGVjdGVkU2VydmljZSkpIHtcbiAgICAgIHRoaXMuc2VydmljZVNlbGVjdEVycm9yID0gIV8uaXNFbXB0eSh0aGlzLnNlbGVjdGVkU2VydmljZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLmdyYXBoSnNvbk9iaiA9IHRoaXMuaWRlbnRpdHlTZXJ2aWNlUGF0aEhlbHBlci5nZXRFbmRwb2ludEdyYXBoT2JqKFxuICAgICAgICB0aGlzLmVuZHBvaW50RGF0YSxcbiAgICAgICAgYmluZElkbmV0aXRpZXMsXG4gICAgICAgIHRoaXMuZWRnZXJvdXRlcnMsXG4gICAgICAgIHNlbGVjdGVkU2VydmljZU9iLFxuICAgICAgICBzZXJ2aWNlQ29uZmlnc1xuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY291bnRHcnAxTmRzID0gMDtcbiAgICB0aGlzLmRvRW5kcG9pbnRIYXNTZXJ2aWNlc0luUHJpdmF0ZU53ID0gZmFsc2U7XG4gICAgdGhpcy5kb0VuZHBvaW50SGFzUHVibGljUm91dGVycyA9IGZhbHNlO1xuICAgIHRoaXMuZG9FbmRwb2ludEhhc0FwcHdhbnMgPSBmYWxzZTtcbiAgICB0aGlzLmdyYXBoSnNvbk9iai5ub2Rlcy5mb3JFYWNoKChuZCkgPT4ge1xuICAgICAgaWYgKG5kLmdyb3VwID09PSAnMycpIHtcbiAgICAgICAgdGhpcy5jb3VudEdycDNOZHMrKztcbiAgICAgIH1cbiAgICAgIGlmIChuZC5ncm91cC5pbmNsdWRlcygnMicpKSB7XG4gICAgICAgIHRoaXMuY291bnRHcnAyTmRzKys7XG4gICAgICB9XG4gICAgICBpZiAobmQuZ3JvdXAgPT09ICcxJykge1xuICAgICAgICBjb3VudEdycDFOZHMrKztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmNvdW50R3JwM05kcyA+IDApIHtcbiAgICAgIHRoaXMuZG9FbmRwb2ludEhhc1NlcnZpY2VzSW5Qcml2YXRlTncgPSB0cnVlOyAvLyBzaG93IHByaXZhdGUvY3VzdG9tZXIgbmV0d29yayBib3gsIHdpbGwgYmUgZGVjaWRlZCB3aXRoIHRoaXMgdmFyaWFibGUuXG4gICAgfVxuICAgIGlmICh0aGlzLmNvdW50R3JwMk5kcyA+IDApIHtcbiAgICAgIHRoaXMuZG9FbmRwb2ludEhhc1B1YmxpY1JvdXRlcnMgPSB0cnVlOyAvLyBzaG93IHB1YmxpYyBuZXR3b3JrIGJveCwgd2lsbCBiZSBkZWNpZGVkIHdpdGggdGhpcyB2YXJpYWJsZS5cbiAgICB9XG5cbiAgICBpZiAoY291bnRHcnAxTmRzID4gMCkge1xuICAgICAgdGhpcy5kb0VuZHBvaW50SGFzQXBwd2FucyA9IHRydWU7IC8vIHNob3cgcHJpdmF0ZSBuZXR3b3JrIGJveCwgd2lsbCBiZSBkZWNpZGVkIHdpdGggdGhpcyB2YXJpYWJsZS5cbiAgICB9XG4gICAgdGhpcy5pbml0VG9wb1ZpZXcoKTtcbiAgfVxuXG4gIHRvZ2dsZU1vZGFsU2l6ZSgpIHtcbiAgICB0aGlzLmZ1bGxTY3JlZW4gPSAhdGhpcy5mdWxsU2NyZWVuO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICB9XG5cbiAgaW5pdFRvcG9WaWV3KCkge1xuICAgIGNvbnN0IG1hcmdpbiA9IHsgdG9wOiAxMCwgcmlnaHQ6IDkwLCBib3R0b206IDMwLCBsZWZ0OiAwIH07XG4gICAgY29uc3Qgd2lkdGggPSAxMTAwIC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQ7XG4gICAgY29uc3QgaGVpZ2h0ID0gMTEwMCAtIG1hcmdpbi50b3AgLSBtYXJnaW4uYm90dG9tO1xuICAgIGNvbnN0IGNvbG9ycyA9IGQzLnNjYWxlT3JkaW5hbChkMy5zY2hlbWVDYXRlZ29yeTEwKTtcbiAgICBjb25zdCB0b29sdGlwID0gZDMuc2VsZWN0KCcjZXBUb29sdGlwJyk7XG5cbiAgICBsZXQgc3ZnID0gZDMuc2VsZWN0KCcjSWRlbnRpdHlUb3BvbG9neScpLFxuICAgICAgbm9kZSxcbiAgICAgIGxpbms7XG5cbiAgICBjb25zdCBoYW5kbGVab29tID0gKGUpID0+IHN2Zy5hdHRyKCd0cmFuc2Zvcm0nLCBlLnRyYW5zZm9ybSk7XG4gICAgY29uc3Qgem9vbSA9IGQzLnpvb20oKS5vbignem9vbScsIGhhbmRsZVpvb20pO1xuXG4gICAgc3ZnXG4gICAgICAuYXR0cignd2lkdGgnLCAnMTAwJScpXG4gICAgICAuYXR0cignaGVpZ2h0JywgJzEwMCUnKVxuICAgICAgLy8gLmNhbGwoem9vbSlcbiAgICAgIC5hdHRyKCd2aWV3Qm94JywgJzAgJyArIC0xMCArICcgJyArIHdpZHRoICsgJyAnICsgaGVpZ2h0KVxuICAgICAgLmFwcGVuZCgnZycpXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgnICsgLTMwMCArICcsJyArIDIyNSArICcpJyk7XG5cbiAgICBzdmcuc2VsZWN0QWxsKCdnJykucmVtb3ZlKCk7XG5cbiAgICBjb25zdCBzaW11bGF0aW9uOiBhbnkgPSBkM1xuICAgICAgLmZvcmNlU2ltdWxhdGlvbigpXG4gICAgICAuZm9yY2UoXG4gICAgICAgICdsaW5rJyxcbiAgICAgICAgZDNcbiAgICAgICAgICAuZm9yY2VMaW5rKClcbiAgICAgICAgICAuaWQoZnVuY3Rpb24gKGQ6IGFueSkge1xuICAgICAgICAgICAgcmV0dXJuIGQuaWQ7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZGlzdGFuY2UoMTAwKVxuICAgICAgICAgIC5zdHJlbmd0aCgxKVxuICAgICAgKVxuICAgICAgLmZvcmNlKCdjaGFyZ2UnLCBkMy5mb3JjZU1hbnlCb2R5KCkpXG4gICAgICAuZm9yY2UoJ2NlbnRlcicsIGQzLmZvcmNlQ2VudGVyKHdpZHRoIC8gMiwgaGVpZ2h0IC8gMikpO1xuXG4gICAgY29uc3QgbGlua3MgPSB0aGlzLmdyYXBoSnNvbk9iai5saW5rcztcbiAgICBjb25zdCBub2RlcyA9IHRoaXMuZ3JhcGhKc29uT2JqLm5vZGVzO1xuXG4gICAgbGluayA9IHN2Z1xuICAgICAgLnNlbGVjdEFsbCgnZy5saW5lLmxpbmUnKVxuICAgICAgLmRhdGEobGlua3MpXG4gICAgICAuZW50ZXIoKVxuICAgICAgLmFwcGVuZCgnZycpXG4gICAgICAuYXR0cignY2xhc3MnLCAnbGluaycpXG4gICAgICAuYXR0cignbWFya2VyLWVuZCcsICd1cmwoI2Fycm93aGVhZCknKTtcblxuICAgIGxpbmtcbiAgICAgIC5hcHBlbmQoJ2xpbmUnKVxuICAgICAgLnN0eWxlKCdzdHJva2Utd2lkdGgnLCBmdW5jdGlvbiAoZCkge1xuICAgICAgICBpZiAoZC5zdGF0dXMgPT09IDEgfHwgZC5zdGF0dXMgPT09IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIDEuNTsgLy9NYXRoLnNxcnQoZC53ZWlnaHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnN0eWxlKCdzdHJva2UnLCBmdW5jdGlvbiAoZCkge1xuICAgICAgICBpZiAoZC5zdGF0dXMgPT09IDEpIHtcbiAgICAgICAgICBsZXQgZG9JblVzYWdlID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuICcjMDBjZDEzJztcbiAgICAgICAgfSBlbHNlIGlmIChkLnN0YXR1cyA9PT0gLTEpIHtcbiAgICAgICAgICByZXR1cm4gJyNkOGRjZTcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAnI2ZmMDA0ZSc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgbGluay5lYWNoKGZ1bmN0aW9uICh0aGlzOiBhbnksIGQ6IGFueSwgaSkge1xuICAgICAgY29uc3QgX3RoaXMgPSBkMy5zZWxlY3QodGhpcyk7XG4gICAgICBpZiAoZC5zdGF0dXMgPT09IDEpIHtcbiAgICAgICAgbGV0IGRvSW5Vc2FnZSA9IHRydWU7XG4gICAgICAgIF90aGlzXG4gICAgICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAgICAgLnN0eWxlKCdmaWxsJywgJ3JnYigyNTUsMTk4LDIyKScpXG4gICAgICAgICAgLnN0eWxlKCdmb250LXNpemUnLCAnMTEnKTtcbiAgICAgICAgX3RoaXNcbiAgICAgICAgICAuYXBwZW5kKCdyZWN0JylcbiAgICAgICAgICAuYXR0cignZmlsbCcsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3doaXRlJztcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hdHRyKCd3aWR0aCcsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgICBpZiAoZG9JblVzYWdlKSB7XG4gICAgICAgICAgICAgIHJldHVybiAzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmV0dXJuIDAuMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCBmdW5jdGlvbiAoZCkge1xuICAgICAgICAgICAgaWYgKGRvSW5Vc2FnZSkge1xuICAgICAgICAgICAgICByZXR1cm4gMztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiAwLjE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYXBwZW5kKCdhbmltYXRlJyk7XG5cbiAgICAgICAgX3RoaXMuc2VsZWN0KCdyZWN0JykuYXBwZW5kKCdhbmltYXRlJyk7XG4gICAgICB9IGVsc2UgaWYgKGQuc3RhdHVzID09PSAwKSB7XG4gICAgICAgIF90aGlzXG4gICAgICAgICAgLmFwcGVuZCgnaW1hZ2UnKVxuICAgICAgICAgIC5hdHRyKCd4bGluazpocmVmJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuICcvYXNzZXRzL2ltYWdlcy92aXN1YWxpemVyL2xpbmstY3V0LnBuZyc7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuYXR0cignd2lkdGgnLCAnMjAnKVxuICAgICAgICAgIC5hdHRyKCdoZWlnaHQnLCAnMjQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG5vZGUgPSBzdmdcbiAgICAgIC5zZWxlY3RBbGwoJy5ub2RlJylcbiAgICAgIC5kYXRhKG5vZGVzKVxuICAgICAgLmVudGVyKClcbiAgICAgIC5hcHBlbmQoJ2cnKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ25vZGUnKTtcblxuICAgIG5vZGVcbiAgICAgIC5hcHBlbmQoJ2ltYWdlJylcbiAgICAgIC5hdHRyKCd4bGluazpocmVmJywgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgY29uc3Qgcm91dGVySW1hZ2VQYXRoID0gJy9hc3NldHMvaW1hZ2VzL3Zpc3VhbGl6ZXIvUm91dGVycy5wbmcnO1xuICAgICAgICBjb25zdCBub25Qcm92aXNpb25lZFJvdXRlckltYWdlUGF0aCA9XG4gICAgICAgICAgJy9hc3NldHMvaW1hZ2VzL3Zpc3VhbGl6ZXIvRVIucG5nJztcbiAgICAgICAgY29uc3QgZXJyUm91dGVySW1hZ2VQYXRoID0gJy9hc3NldHMvaW1hZ2VzL3Zpc3VhbGl6ZXIvZXJyb3JfZXIucG5nJztcbiAgICAgICAgY29uc3QgZXJyRW5kcG9pbnRJbWFnZVBhdGggPSAnL2Fzc2V0cy9pbWFnZXMvdmlzdWFsaXplci9ob3N0LWVycm9yLnBuZyc7XG4gICAgICAgIGNvbnN0IHVucmVnaXN0ZXJlZEVuZHBvaW50SW1hZ2VQYXRoID1cbiAgICAgICAgICAnL2Fzc2V0cy9pbWFnZXMvdmlzdWFsaXplci9ob3N0X3VucmVnaXN0ZXJlZC5wbmcnO1xuICAgICAgICBjb25zdCBlbmRQb2ludFBhdGggPSAnL2Fzc2V0cy9pbWFnZXMvdmlzdWFsaXplci9ob3N0LnBuZyc7XG5cbiAgICAgICAgaWYgKGQudHlwZS5pbmNsdWRlcygnSWRlbnRpdHknKSAmJiBkLnN0YXR1cyA9PT0gJ1VuLVJlZ2lzdGVyZWQnKSB7XG4gICAgICAgICAgcmV0dXJuIHVucmVnaXN0ZXJlZEVuZHBvaW50SW1hZ2VQYXRoO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGQudHlwZS5pbmNsdWRlcygnSWRlbnRpdHknKSAmJlxuICAgICAgICAgIGQuYXBpU2Vzc2lvbiA9PT0gJ1llcycgJiZcbiAgICAgICAgICBkLnN0YXR1cyA9PT0gJ1JlZ2lzdGVyZWQnXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBlbmRQb2ludFBhdGg7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgZC50eXBlLmluY2x1ZGVzKCdJZGVudGl0eScpICYmXG4gICAgICAgICAgKGQucm91dGVyQ29ubmVjdGlvbiA9PT0gJ05vJyB8fCBkLmFwaVNlc3Npb24gPT09ICdObycpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBlcnJFbmRwb2ludEltYWdlUGF0aDtcbiAgICAgICAgfSBlbHNlIGlmIChkLnR5cGUuaW5jbHVkZXMoJ0lkZW50aXR5JykpIHtcbiAgICAgICAgICByZXR1cm4gZW5kUG9pbnRQYXRoO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIGQudHlwZS5pbmNsdWRlcygnUm91dGVyJykgJiZcbiAgICAgICAgICAoZC5zdGF0dXMgPT09ICdFUlJPUicgfHwgZC5vbmxpbmUgPT09ICdObycpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBlcnJSb3V0ZXJJbWFnZVBhdGg7XG4gICAgICAgIH0gZWxzZSBpZiAoZC50eXBlLmluY2x1ZGVzKCdSb3V0ZXInKSAmJiBkLnN0YXR1cyA9PT0gJ1BST1ZJU0lPTkVEJykge1xuICAgICAgICAgIHJldHVybiByb3V0ZXJJbWFnZVBhdGg7XG4gICAgICAgIH0gZWxzZSBpZiAoZC50eXBlLmluY2x1ZGVzKCdSb3V0ZXInKSkge1xuICAgICAgICAgIHJldHVybiBub25Qcm92aXNpb25lZFJvdXRlckltYWdlUGF0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkLmdyb3VwID09PSAnNCcpIHtcbiAgICAgICAgICByZXR1cm4gJy9hc3NldHMvaW1hZ2VzL3Zpc3VhbGl6ZXIvc2VydmljZS5wbmcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5hdHRyKCd4JywgLTI1KVxuICAgICAgLmF0dHIoJ3knLCAtMjUpXG4gICAgICAuYXR0cignd2lkdGgnLCAnNDAnKVxuICAgICAgLmF0dHIoJ2hlaWdodCcsICc0MCcpO1xuXG4gICAgbm9kZVxuICAgICAgLmFwcGVuZCgndGV4dCcpXG4gICAgICAuYXR0cigneCcsIDEwKVxuICAgICAgLmF0dHIoJ3knLCAxMilcbiAgICAgIC5hdHRyKCdmaWxsJywgJ3ZhcigtLXRhYmxlVGV4dCknKVxuICAgICAgLnRleHQoZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgcmV0dXJuIGQubmFtZTtcbiAgICAgIH0pO1xuXG4gICAgc2ltdWxhdGlvbi5ub2Rlcyhub2Rlcykub24oJ3RpY2snLCB0aWNrZWQpO1xuXG4gICAgc2ltdWxhdGlvbi5mb3JjZSgnbGluaycpLmxpbmtzKGxpbmtzKTtcbiAgICBub2RlLm9uKCdtb3VzZW92ZXInLCAoZXZlbnQsIGQpID0+IHtcbiAgICAgIGNvbnN0IGVuZHBvaW50VXRsaXphdGlvbkpzb24gPSB7fTtcbiAgICAgIGRyYXdUb29sdGlwKGV2ZW50LCBkLCBlbmRwb2ludFV0bGl6YXRpb25Kc29uKTtcbiAgICB9KTtcblxuICAgIG5vZGUub24oJ21vdXNlb3V0JywgZnVuY3Rpb24gKCkge1xuICAgICAgcmVtb3ZlVG9vbHRpcCgpO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gdGlja2VkKCkge1xuICAgICAgbm9kZS5hdHRyKCd0cmFuc2Zvcm0nLCBmdW5jdGlvbiAoZCkge1xuICAgICAgICByZXR1cm4gJ3RyYW5zbGF0ZSgnICsgZC5wb3N4ICsgJywnICsgZC5wb3N5ICsgJyknO1xuICAgICAgfSk7XG5cbiAgICAgIGxpbmtcbiAgICAgICAgLnNlbGVjdCgnbGluZScpXG4gICAgICAgIC5hdHRyKCd4MScsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgcmV0dXJuIGQuc291cmNlLnBvc3g7XG4gICAgICAgIH0pXG4gICAgICAgIC5hdHRyKCd5MScsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgcmV0dXJuIGQuc291cmNlLnBvc3k7XG4gICAgICAgIH0pXG4gICAgICAgIC5hdHRyKCd4MicsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgcmV0dXJuIGQudGFyZ2V0LnBvc3g7XG4gICAgICAgIH0pXG4gICAgICAgIC5hdHRyKCd5MicsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgcmV0dXJuIGQudGFyZ2V0LnBvc3k7XG4gICAgICAgIH0pO1xuXG4gICAgICBsaW5rXG4gICAgICAgIC5zZWxlY3QoJ2ltYWdlJylcbiAgICAgICAgLmF0dHIoJ3gnLCBmdW5jdGlvbiAoZCkge1xuICAgICAgICAgIGNvbnN0IHgxID0gZC5zb3VyY2UucG9zeCxcbiAgICAgICAgICAgIHgyID0gZC50YXJnZXQucG9zeCxcbiAgICAgICAgICAgIHggPSB4MSAtICh4MSAtIHgyKSAvIDI7XG5cbiAgICAgICAgICByZXR1cm4geCAtIDg7XG4gICAgICAgIH0pXG4gICAgICAgIC5hdHRyKCd5JywgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICBjb25zdCB5MSA9IGQuc291cmNlLnBvc3ksXG4gICAgICAgICAgICB5MiA9IGQudGFyZ2V0LnBvc3ksXG4gICAgICAgICAgICB5ID0geTEgLSAoeTEgLSB5MikgLyAyO1xuXG4gICAgICAgICAgcmV0dXJuIHkgLSAxMjtcbiAgICAgICAgfSk7XG5cbiAgICAgIGxpbmtcbiAgICAgICAgLnNlbGVjdCgncmVjdCcpXG4gICAgICAgIC5hdHRyKCdvcGFjaXR5JywgMSlcbiAgICAgICAgLmF0dHIoJ3gnLCBmdW5jdGlvbiAoZCkge1xuICAgICAgICAgIHJldHVybiBkLnNvdXJjZS5wb3N4O1xuICAgICAgICB9KVxuICAgICAgICAuYXR0cigneScsIGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgcmV0dXJuIGQuc291cmNlLnBvc3k7XG4gICAgICAgIH0pXG4gICAgICAgIC5zZWxlY3RBbGwoJ2FuaW1hdGUnKVxuICAgICAgICAuZWFjaChmdW5jdGlvbiAodGhpczogYW55LCBkOiBhbnksIGkpIHtcbiAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgZDMuc2VsZWN0KHRoaXMpXG4gICAgICAgICAgICAgIC5hdHRyKCdhdHRyaWJ1dGVOYW1lJywgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3gnO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuYXR0cignZnJvbScsIGZ1bmN0aW9uIChkOiBhbnkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuID0gZC5zb3VyY2UucG9zeCAtIDE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5hdHRyKCd0bycsIGZ1bmN0aW9uIChkOiBhbnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZC50YXJnZXQucG9zeDtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGQzLnNlbGVjdCh0aGlzKVxuICAgICAgICAgICAgICAuYXR0cignYXR0cmlidXRlTmFtZScsIGZ1bmN0aW9uIChkOiBhbnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3knO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuYXR0cignZnJvbScsIGZ1bmN0aW9uIChkOiBhbnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZC5zb3VyY2UucG9zeTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmF0dHIoJ3RvJywgZnVuY3Rpb24gKGQ6IGFueSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkLnRhcmdldC5wb3N5O1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkMy5zZWxlY3QodGhpcylcbiAgICAgICAgICAgIC5hdHRyKCdhdHRyaWJ1dGVUeXBlJywgJ1hNTCcpXG4gICAgICAgICAgICAuYXR0cignYmVnaW4nLCAnMC41cycpXG4gICAgICAgICAgICAuYXR0cignZHVyJywgZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICcxLjBzJztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYXR0cigncmVwZWF0Q291bnQnLCAnaW5kZWZpbml0ZScpO1xuICAgICAgICB9KTtcbiAgICB9IC8vIGVuZCBvZiB0aWNrZWRcblxuICAgIGZ1bmN0aW9uIHJlbW92ZVRvb2x0aXAoKSB7XG4gICAgICBpZiAodG9vbHRpcCkge1xuICAgICAgICB0b29sdGlwLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkcmF3VG9vbHRpcChldmVudCwgZCwgZW5kcG9pbnRVdGxpemF0aW9uSnNvbikge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VwVG9vbHRpcCcpLmlubmVySFRNTCA9IHJlYWRLZXlWYWx1ZXMoXG4gICAgICAgIGQsXG4gICAgICAgIGVuZHBvaW50VXRsaXphdGlvbkpzb25cbiAgICAgICk7XG4gICAgICB0b29sdGlwLnN0eWxlKCdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgICB0b29sdGlwLnN0eWxlKCd3aGl0ZS1zcGFjZScsICdwcmUtd3JhcCcpO1xuICAgICAgY29uc3QgeCA9IGV2ZW50LnBhZ2VYICsgJ3B4JztcbiAgICAgIGNvbnN0IHkgPSBldmVudC5wYWdlWSArICdweCc7XG4gICAgICB0b29sdGlwLnN0eWxlKCdsZWZ0JywgeCk7XG4gICAgICB0b29sdGlwLnN0eWxlKCd0b3AnLCB5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWFkS2V5VmFsdWVzKGQsIGVuZHBvaW50VXRsaXphdGlvbkpzb24pIHtcbiAgICAgIGxldCBpbmZvID1cbiAgICAgICAgXCI8ZGl2IGNsYXNzPSd0b29sLXRpcC1jb250YWluZXInIHN0eWxlPSdmb250LXNpemU6MTRweDtmb250LWZhbWlseTpPcGVuIFNhbnM7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtY29sb3I6IHZhcigtLXRhYmxlVGV4dCk7Jz5cIjtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhkKTtcblxuICAgICAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBrID09PSAnc3RhdHVzJyB8fFxuICAgICAgICAgIGsgPT09ICdwb3N5JyB8fFxuICAgICAgICAgIGsgPT09ICdwb3N4JyB8fFxuICAgICAgICAgIGsgPT09ICdncm91cCcgfHxcbiAgICAgICAgICBrID09PSAnaG9zdGVkRWRnZUlkJyB8fFxuICAgICAgICAgIGsgPT09ICd2YWx1ZScgfHxcbiAgICAgICAgICBrID09PSAnaW5kZXgnIHx8XG4gICAgICAgICAgayA9PT0gJ3BhcmVudCcgfHxcbiAgICAgICAgICBrID09PSAnZGVwdGgnIHx8XG4gICAgICAgICAgayA9PT0gJ3gnIHx8XG4gICAgICAgICAgayA9PT0gJ3knIHx8XG4gICAgICAgICAgayA9PT0gJ2lkJyB8fFxuICAgICAgICAgIGsgPT09ICd4MCcgfHxcbiAgICAgICAgICBrID09PSAneTAnIHx8XG4gICAgICAgICAgayA9PT0gJ3Z5JyB8fFxuICAgICAgICAgIGsgPT09ICd2eCdcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gY29udGludWU7XG4gICAgICAgIH0gZWxzZSBpZiAoayA9PT0gJ2NoaWxkcmVuJykge1xuICAgICAgICAgIGNvbnN0IGtWYWw6IGFueSA9IGRba107XG4gICAgICAgICAgaWYgKGtWYWwgJiYga1ZhbCAhPT0gJycpIHtcbiAgICAgICAgICAgICBpbmZvID0gaW5mbyArICc8ZGl2IGNsYXNzPVwicHJvcC1yb3dcIj4nICsgayArICc6ICcgKyBrVmFsLmxlbmd0aCArICc8L2Rpdj4nO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNBbk9iamVjdChkW2tdKSkge1xuICAgICAgICAgICAgY29uc3Qga1ZhbDogYW55ID0gZFtrXTtcbiAgICAgICAgICAgIGlmIChrVmFsICYmIGtWYWwgIT09ICcnKSB7XG4gICAgICAgICAgICAgIGluZm8gPSBpbmZvICsgJzxkaXYgY2xhc3M9XCJwcm9wLXJvd1wiPicgKyBrICsgJzogJyArIGtWYWwubmFtZSArICc8L2Rpdj4nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoZFtrXSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBpbmZvID1cbiAgICAgICAgICAgICAgaW5mbyArXG4gICAgICAgICAgICAgICc8ZGl2IGNsYXNzPVwicHJvcC1yb3dcIj4nICtcbiAgICAgICAgICAgICAgayArXG4gICAgICAgICAgICAgICc6ICcgK1xuICAgICAgICAgICAgICBkW2tdLmpvaW4oJzxicj4gJm5ic3A7Jm5ic3A7ICZuYnNwOyZuYnNwOycpICtcbiAgICAgICAgICAgICAgJzwvZGl2Pic7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHZvID0gZFtrXTtcbiAgICAgICAgICAgIGlmICh2byAmJiB2byAhPT0gJycpIHtcbiAgICAgICAgICAgICAgaW5mbyA9XG4gICAgICAgICAgICAgICAgaW5mbyArXG4gICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCJwcm9wLXJvd1wiPicgK1xuICAgICAgICAgICAgICAgIGsgK1xuICAgICAgICAgICAgICAgICc6ICcgK1xuICAgICAgICAgICAgICAgICh2byAhPT0gbnVsbCB8fCB2byAhPT0gJycgPyBkW2tdIDogJ04vQScpICtcbiAgICAgICAgICAgICAgICAnPC9kaXY+JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gaW5mbyArICc8L2Rpdj4nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQW5PYmplY3Qobykge1xuICAgICAgcmV0dXJuIG8gaW5zdGFuY2VvZiBPYmplY3QgJiYgby5jb25zdHJ1Y3RvciA9PT0gT2JqZWN0O1xuICAgIH1cblxuICAgIHRoaXMucmVmcmVzaFJvdGF0ZSA9IGZhbHNlO1xuICB9IC8vIGVuZCBvZiBpbml0VG9wb1ZpZXdcbn1cblxuY2xhc3MgU2VydmljZURhdGEge1xuICBpZDtcbiAgbmFtZTtcbn1cblxuIiwiPGRpdiBbbmdDbGFzc109XCJ7ICdmdWxsLXNjcmVlbic6IGZ1bGxTY3JlZW4gfVwiIGNsYXNzPVwibW9kYWwgc29saWRcIiBpZD1cIklkZW50aXR5VmlzdWFsaXplclwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0cC1kYXRhLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWx0aXRsZVwiPklkZW50aXR5IFNlcnZpY2UgUGF0aDwvZGl2PlxuICAgICAgICA8ZGl2IChjbGljayk9XCJoaWRlKClcIiBjbGFzcz1cImJ1dHRvbkJhbGwgaWNvbi1jbG9zZVwiIGlkPVwiRXNjWkVuZHBvaW50Q2xvc2VcIj48L2Rpdj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwidG9nZ2xlTW9kYWxTaXplKClcIiBjbGFzcz1cImJ1dHRvbkJhbGwgcmVzaXplXCIgaWQ9XCJSZXNpemVNb2RhbEJ1dHRvblwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiaXNEYXJrTW9kZT09dHJ1ZT8nZGFya01vZGUnOidsaWdodE1vZGUnXCIgY2xhc3M9XCJpZGVudGl0eS10b3BvbG9neS1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDgwcHg7IGZsb2F0OiBsZWZ0XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXAtdG9wb2xvZ3ktZmlsdGVyLWNvbnRhaW5lciBsaXN0Qm94IHJvd1wiPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwiZmlsdGVyU2VhcmNoQXJyYXkoKVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRTZXJ2aWNlXCJcbiAgICAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0b3BvbG9neS1maWx0ZXItaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImZpbHRlclRleHRcIlxuICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlR5cGUgdG8gc2VhcmNoIGlkZW50aXR5IGFjY2Vzc2libGUgc2VydmljZXMuXCJcbiAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJTZWFyY2hGaWx0ZXIoKVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmlsdGVyVGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xlYXItc3ZjLWljb24gaWNvbi1jbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiQ2xlYXJTZWFyY2hGaWx0ZXJcIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtoaWRkZW5dPVwiIW5vU2VhcmNoUmVzdWx0c1wiIGNsYXNzPVwibm8tcmVzdWx0cy13YXJuaW5nXCI+Tm8gUmVzdWx0cyBGb3VuZDwvZGl2PlxuICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cImF1dG9jb21wbGV0ZVNlYXJjaCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXV0b2NvbXBsZXRlT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24ubmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvcG90aXBcIiBpZD1cImVwVG9vbHRpcFwiPjwvZGl2PlxuXG4gICAgICAgICAgICA8c3ZnIHN0eWxlPSdwb2ludGVyLWV2ZW50czphbGwnIGhlaWdodD1cIjEwMDBcIiBpZD1cIklkZW50aXR5VG9wb2xvZ3lcIiB3aWR0aD1cIjEyMDBcIj5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPGxpYi1sb2FkaW5nLWluZGljYXRvciAqbmdJZj1cImlzTG9hZGluZ1wiIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCI+PC9saWItbG9hZGluZy1pbmRpY2F0b3I+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRvcG9sb2d5LWxlZ2VuZEFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbS1oZWFkXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC10ZXh0LWhlYWRpbmdcIj5Db21wb25lbnQgU3RhdHVzPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtY2lyY2xlIHVucmVnaXN0ZXJlZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtdGV4dFwiPlVucmVnaXN0ZXJlZCAvIE9mZmxpbmU8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1jaXJjbGUgcmVnaXN0ZXJlZF9pbl91c2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLXRleHRcIj5SZWdpc3RlcmVkLCBPbmxpbmU8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1jaXJjbGUgZXJyb3JlZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtdGV4dFwiPkVycm9yZWQ8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9wb2xvZ3ktbGVnZW5kQlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtLWhlYWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLXRleHQtaGVhZGluZ1wiPkxpbmsgU3RhdHVzPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtY2lyY2xlIHVucmVnaXN0ZXJlZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtdGV4dFwiPk9mZmxpbmU8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZ2VuZC1jaXJjbGUgcmVnaXN0ZXJlZF9pbl91c2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLXRleHRcIj5JbiBVc2FnZTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWNpcmNsZSByZWdpc3RlcmVkX25vdF9pbl91c2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLXRleHRcIj5Vc2FnZSBEYXRlIE4vQTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVnZW5kLWNpcmNsZSBsaW5rZXJyb3JlZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWdlbmQtdGV4dFwiPkVycm9yZWQ8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.helper.mjs
CHANGED
|
@@ -12,7 +12,7 @@ class ServiceHostNode {
|
|
|
12
12
|
}
|
|
13
13
|
export class ServiceData {
|
|
14
14
|
}
|
|
15
|
-
class IdentityServicePathHelper {
|
|
15
|
+
export class IdentityServicePathHelper {
|
|
16
16
|
constructor() {
|
|
17
17
|
this.posy_for_group3 = 0;
|
|
18
18
|
}
|
|
@@ -335,7 +335,6 @@ class IdentityServicePathHelper {
|
|
|
335
335
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentityServicePathHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
336
336
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentityServicePathHelper, providedIn: 'root' }); }
|
|
337
337
|
}
|
|
338
|
-
export { IdentityServicePathHelper };
|
|
339
338
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: IdentityServicePathHelper, decorators: [{
|
|
340
339
|
type: Injectable,
|
|
341
340
|
args: [{
|
|
@@ -371,4 +370,4 @@ class RootJson {
|
|
|
371
370
|
}
|
|
372
371
|
;
|
|
373
372
|
}
|
|
374
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktc2VydmljZS1wYXRoLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy92aXN1YWxpemVyL2lkZW50aXR5LXNlcnZpY2UtcGF0aC9pZGVudGl0eS1zZXJ2aWNlLXBhdGguaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQUV2QixNQUFNLElBQUk7Q0FPVDtBQUVELE1BQU0sSUFBSTtDQWdCVDtBQUVELE1BQU0sZUFBZTtJQUFyQjtRQWtCSSxjQUFTLEdBQUcsRUFBRSxDQUFDO0lBR25CLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxXQUFXO0NBR3ZCO0FBRUQsTUFHYSx5QkFBeUI7SUFHbEM7UUFGQSxvQkFBZSxHQUFHLENBQUMsQ0FBQztJQUdqQixDQUFDO0lBRUcsbUJBQW1CLENBQ3RCLFFBQVEsRUFDUixjQUFjLEVBQ2QsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsVUFBVSxHQUFHLEVBQUU7UUFFZixJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBSSxjQUFjLENBQUMsSUFBSSxDQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBRSxFQUFFLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUcsQ0FBQztRQUMxRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1osY0FBYyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxjQUFjLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUMzQixjQUFjLENBQUMsSUFBSSxHQUFHLEVBQUUs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QUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQUEsQ0FBQztDQUVSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jbGFzcyBMaW5rIHtcbiAgICBzb3VyY2U7XG4gICAgc291cmNlTmFtZTtcbiAgICB0YXJnZXQ7XG4gICAgdGFyZ2V0TmFtZTtcbiAgICB3ZWlnaHQ7XG4gICAgc3RhdHVzO1xufVxuXG5jbGFzcyBOb2RlIHtcbiAgICBpZDtcbiAgICBuYW1lO1xuICAgIHByb3ZpZGVyO1xuICAgIGdyb3VwO1xuICAgIHBvc3g7XG4gICAgcG9zeTtcbiAgICBzdGF0dXM7XG4gICAgb25saW5lO1xuICAgIGFwaVNlc3Npb247XG4gICAgcm91dGVyQ29ubmVjdGlvbjtcbiAgICB0dW5uZWxlckVuYWJsZWQ7XG4gICAgb3M7XG4gICAgbWZhRW5hYmxlZDtcbiAgICB0eXBlO1xuICAgIHVzYWdlO1xufVxuXG5jbGFzcyBTZXJ2aWNlSG9zdE5vZGUge1xuICAgIGlkO1xuICAgIG5hbWU7XG4gICAgZ3JvdXA7XG4gICAgcG9zeDtcbiAgICBwb3N5O1xuICAgIGludGVyY2VwdElwcztcbiAgICBpbnRlcmNlcHRQb3J0cztcbiAgICBpbnRlcmNlcHRQcm90b2NvbHM7XG4gICAgZm9yd2FyZGVkSG9zdDtcbiAgICBob3N0TmFtZXM7XG4gICAgZm9yd2FyZGVkUG9ydDtcbiAgICBob3N0UG9ydHM7XG4gICAgZm9yd2FyZGVkUHJvdG9jb2w7XG4gICAgaG9zdFByb3RvY29scztcbiAgICBzdGF0dXM7XG4gICAgdHlwZTtcbiAgICB1c2FnZTtcbiAgICBpbnRlcmNlcHQgPSBbXTtcbiAgICBjb25maWdBZGRyZXNzO1xuICAgIGNvbmZpZ1BvcnRzO1xufVxuXG5leHBvcnQgY2xhc3MgU2VydmljZURhdGEge1xuICAgIGlkO1xuICAgIG5hbWU7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIElkZW50aXR5U2VydmljZVBhdGhIZWxwZXIge1xuICAgIHBvc3lfZm9yX2dyb3VwMyA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgZ2V0RW5kcG9pbnRHcmFwaE9iaihcbiAgICAgICAgZW5kcG9pbnQsXG4gICAgICAgIGJpbmRJZG5ldGl0aWVzLFxuICAgICAgICBlZGdlcm91dGVycyxcbiAgICAgICAgc2VsZWN0ZWRTZXJ2aWNlT2IsXG4gICAgICAgIHNlcnZpY2VDb25maWdzLFxuICAgICAgICBmaWx0ZXJUZXh0ID0gJydcbiAgICApIHtcbiAgICAgICAgbGV0IGVuZHBvaW50Tm9kZU9iID0gbnVsbDtcbiAgICAgICAgY29uc3Qgcm9vdE9iID0gbmV3IFJvb3RKc29uKCk7XG4gICAgICAgIGNvbnN0IGJpbmROb2RlID0gIGJpbmRJZG5ldGl0aWVzLmZpbmQoIChuZCkgPT4gIG5kLmlkID09PSBlbmRwb2ludC5pZCAgKTtcbiAgICAgICBpZiAoIWJpbmROb2RlKSB7XG4gICAgICAgICAgZW5kcG9pbnROb2RlT2IgPSBjcmVhdGVFbmRwb2ludChlbmRwb2ludCk7XG4gICAgICAgICAgZW5kcG9pbnROb2RlT2IuZ3JvdXAgPSAnMSc7XG4gICAgICAgICAgZW5kcG9pbnROb2RlT2IucG9zeCA9IDUwO1xuICAgICAgICAgIGVuZHBvaW50Tm9kZU9iLnBvc3kgPSAyMDA7XG4gICAgICAgICAgcm9vdE9iLmFkZE5vZGUoZW5kcG9pbnROb2RlT2IpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwdWJsaWNSb3V0ZXJOb2RlcyA9IFtdO1xuICAgICAgICBsZXQgcG9zeSA9IDA7XG4gICAgICAgIF8uaXNBcnJheShlZGdlcm91dGVycykgJiYgZWRnZXJvdXRlcnMuZm9yRWFjaCgobmQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVPYiA9IGNyZWF0ZUVSTm9kZShuZCk7XG4gICAgICAgICAgICBub2RlT2IuZ3JvdXAgPSAnMmEnO1xuICAgICAgICAgICAgbm9kZU9iLnBvc3ggPSAyNTA7XG4gICAgICAgICAgICBwb3N5ID0gcG9zeSArIDEwMDtcbiAgICAgICAgICAgIG5vZGVPYi5wb3N5ID0gcG9zeTtcbiAgICAgICAgICAgIHB1YmxpY1JvdXRlck5vZGVzLnB1c2gobm9kZU9iKTtcbiAgICAgICAgICAgIHJvb3RPYi5hZGROb2RlKG5vZGVPYik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBwdWJsaWNSb3V0ZXJOb2Rlc0ZvckVuZHBvaW50VHVubmVsZXJzID0gW107XG5cbiAgICAgICAgY29uc3QgcG9zeF9mb3JfZ3JvdXAzID0gNTUwO1xuICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IDA7XG4gICAgICAgIGxldCBncm91cDNJZHMgPSBbXTtcbiAgICAgICAgbGV0IHBvc3lfZm9yX2dyb3VwNCA9IDE1MDtcbiAgICAgICAgY29uc3QgZ3JvdXA0Tm9kZXMgPSBbXTtcbiAgICAgICAgY29uc3Qgc2VydmljZUlQUG9ydHMgPSBbXTtcbiAgICAgICAgICAgY29uc3Qgc3JOb2RlID0gbmV3IFNlcnZpY2VIb3N0Tm9kZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUuaWQgPSBzZWxlY3RlZFNlcnZpY2VPYi5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgc3JOb2RlLm5hbWUgPSBzZWxlY3RlZFNlcnZpY2VPYi5uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUuaW50ZXJjZXB0ID0gc2VydmljZUNvbmZpZ0FsaWFzKHNlcnZpY2VDb25maWdzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgc3JOb2RlLnR5cGUgPSAnQ29uZmlnIFNlcnZpY2UnO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUuZ3JvdXAgPSAnNCc7XG4gICAgICAgICAgICAgICAgICAgICAgIHNyTm9kZS5zdGF0dXMgPSAnMSc7XG4gICAgICAgICAgICAgICAgICAgICAgIGdyb3VwNE5vZGVzLnB1c2goc3JOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgcm9vdE9iLmFkZE5vZGUoc3JOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgXy5pc0FycmF5KGJpbmRJZG5ldGl0aWVzKSAmJiBiaW5kSWRuZXRpdGllcy5mb3JFYWNoKChlUG9pbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXAzSWRzLmluZGV4T2YoZVBvaW50LmlkKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDNJZHMucHVzaChlUG9pbnQuaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGNyZWF0ZSBsaW5rcyBiZXR3ZWVuIG5vZGVzXG5cbiAgICAgICAgLy8gaW4gZ3JvdXAzLCAgcmVtb3ZlICByb3V0ZXJzL2VwICB0aGF0IGV4aXN0IGluIGdyb3VwMlxuICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IDE2NTtcbiAgICAgICAgbGV0IGdycDNZaW5jcmVtZW50ID0gMTAwO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwM05vZGVzID0gW107XG4gICAgICAgIGxldCBjb3VudGdycDMgPSAwO1xuICAgICAgICBncm91cDNJZHMuZmluZCgobmlkKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gbGV0J3MgY2hlY2sgaWYgdGhlIHNlcnZpY2UgaG9zdGVkIGlzIGFuIEVuZHBvaW50XG4gICAgICAgICAgICAgICBsZXQgZ3JwM05vZGUgPSBmaW5kRW5kcG9pbnQobmlkLCBiaW5kSWRuZXRpdGllcyk7XG4gICAgICAgICAgICAgICAgICBpZihncnAzTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICBncnAzTm9kZS5ncm91cCA9ICczJztcbiAgICAgICAgICAgICAgICAgICAgZ3JwM05vZGUucG9zeCA9IHBvc3hfZm9yX2dyb3VwMztcbiAgICAgICAgICAgICAgICAgICAgZ3JwM05vZGUucG9zeSA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzICsgMTI1O1xuICAgICAgICAgICAgICAgICAgICBncm91cDNOb2Rlcy5wdXNoKGdycDNOb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgY291bnRncnAzKys7XG4gICAgICAgICAgICAgICAgICAgIHJvb3RPYi5hZGROb2RlKGdycDNOb2RlKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZ3JwM1lpbmNyZW1lbnQgPSBjb3VudGdycDMgPiAyID8gNzUgOiAxMDA7XG4gICAgICAgIGlmIChjb3VudGdycDMgPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gMTYwO1xuICAgICAgICB9IGVsc2UgaWYgKGNvdW50Z3JwMyA9PT0gMikge1xuICAgICAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSAxMjA7XG4gICAgICAgIH0gZWxzZSBpZiAoY291bnRncnAzID49IDUpIHtcbiAgICAgICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gNTA7XG4gICAgICAgICAgICBncnAzWWluY3JlbWVudCA9IDc1O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSA3MztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChncm91cDNOb2RlcylcbiAgICAgICAgICAgIGdyb3VwM05vZGVzLmZpbmQoKG5vZGUzKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUzLmdyb3VwID09PSAnMycpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZTMucG9zeSA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IHRoaXMucG9zeV9mb3JfZ3JvdXAzICsgZ3JwM1lpbmNyZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGdyb3VwNE5vZGVzICYmIGdyb3VwNE5vZGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcG9zeV9mb3JfZ3JvdXA0ID0gMjAwO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3JvdXA0Tm9kZXMuZmluZCgobmQ0KSA9PiB7XG4gICAgICAgICAgIC8vIG5kNC5wb3N4ID0gZ3JvdXAzTm9kZXMgICYmIGdyb3VwM05vZGVzLmxlbmd0aCA+IDAgICYmICFncm91cDNOb2Rlc1swXS50eXBlLmluY2x1ZGVzKFwiUHVibGljIEhvc3RlZFwiKSA/IHBvc3hfZm9yX2dyb3VwMyArIDE3NSA6IHBvc3hfZm9yX2dyb3VwMztcbiAgICAgICAgICAgIG5kNC5wb3N4ID0gcG9zeF9mb3JfZ3JvdXAzICsgMTc1O1xuICAgICAgICAgICAgbmQ0LnBvc3kgPSBwb3N5X2Zvcl9ncm91cDQ7XG4gICAgICAgICAgICBwb3N5X2Zvcl9ncm91cDQgPSBwb3N5X2Zvcl9ncm91cDQgKyAxMDA7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBjb3VudFB1YmxpY05vZGVzID0gMDtcbiAgICAgICAgcm9vdE9iLm5vZGVzLmZpbmQoKHBOb2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAocE5vZGUuZ3JvdXAuaW5jbHVkZXMoJzInKSkge1xuICAgICAgICAgICAgICAgIGNvdW50UHVibGljTm9kZXMgPSBjb3VudFB1YmxpY05vZGVzICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHVibGljUm91dGVyTm9kZXMgPSBbXTtcbiAgICAgICAgbGV0IHBvc3lfZ3JvdXAyID0gMTAwO1xuICAgICAgICBsZXQgeUluY3JlbWVudCA9IDA7XG4gICAgICAgIGlmIChjb3VudFB1YmxpY05vZGVzID09PSAxKSB7XG4gICAgICAgICAgICBwb3N5X2dyb3VwMiA9IDIwMDtcbiAgICAgICAgfSBlbHNlIGlmIChjb3VudFB1YmxpY05vZGVzID49IDIgJiYgY291bnRQdWJsaWNOb2RlcyA8IDUpIHtcbiAgICAgICAgICAgIHBvc3lfZ3JvdXAyID0gNjA7XG4gICAgICAgICAgICB5SW5jcmVtZW50ID0gODA7XG4gICAgICAgIH0gZWxzZSBpZiAoY291bnRQdWJsaWNOb2RlcyA+PSA1ICYmIGNvdW50UHVibGljTm9kZXMgPCAxMCkge1xuICAgICAgICAgICAgcG9zeV9ncm91cDIgPSA0MDtcbiAgICAgICAgICAgIHlJbmNyZW1lbnQgPSA1MDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc3lfZ3JvdXAyID0gNDA7XG4gICAgICAgICAgICB5SW5jcmVtZW50ID0gNDA7XG4gICAgICAgIH1cblxuICAgICAgICByb290T2Iubm9kZXMuZmluZCgocHVibGljTm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHB1YmxpY05vZGUuZ3JvdXAuaW5jbHVkZXMoJzInKSkge1xuICAgICAgICAgICAgICAgIHB1YmxpY05vZGUucG9zeCA9IDI3NTtcbiAgICAgICAgICAgICAgICBwdWJsaWNOb2RlLnBvc3kgPSBwb3N5X2dyb3VwMjtcbiAgICAgICAgICAgICAgICBwb3N5X2dyb3VwMiA9IHBvc3lfZ3JvdXAyICsgeUluY3JlbWVudDtcbiAgICAgICAgICAgICAgICBwdWJsaWNSb3V0ZXJOb2Rlcy5wdXNoKHB1YmxpY05vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChwdWJsaWNOb2RlLmdyb3VwID09PSAnMmInKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwM05vZGVzLnB1c2gocHVibGljTm9kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuXG4gICAgICAgIGZvciAobGV0IGsxID0gMDsgazEgPCByb290T2Iubm9kZXMubGVuZ3RoOyBrMSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuZCA9IHJvb3RPYi5ub2Rlc1trMV07XG4gICAgICAgICAgICBpZiAoZW5kcG9pbnROb2RlT2IgIT09bnVsbCAmJiAobmQuZ3JvdXAgPT09ICcyYScgfHwgbmQuZ3JvdXAgPT09ICcyYWInIHx8IG5kLmdyb3VwID09PSAnMmFjJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsbmsgPSBuZXcgTGluaygpO1xuICAgICAgICAgICAgICAgIGxuay5zb3VyY2UgPSBlbmRwb2ludE5vZGVPYi5pZDtcbiAgICAgICAgICAgICAgICBsbmsuc291cmNlTmFtZSA9IGVuZHBvaW50Tm9kZU9iLm5hbWU7XG4gICAgICAgICAgICAgICAgbG5rLnRhcmdldCA9IG5kLmlkO1xuICAgICAgICAgICAgICAgIGxuay50YXJnZXROYW1lID0gbmQubmFtZTtcbiAgICAgICAgICAgICAgICBsbmsuc3RhdHVzID0gZ2V0RW5kcG9pbnRUb1JvdXRlckxpbmtTdGF0ZShlbmRwb2ludE5vZGVPYiwgbmQpO1xuICAgICAgICAgICAgICAgIGxuay53ZWlnaHQgPSBnZXRXZWlnaHQobG5rLnN0YXR1cyk7XG4gICAgICAgICAgICAgICAgcm9vdE9iLmFkZExpbmsobG5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGsxID0gMDsgazEgPCByb290T2Iubm9kZXMubGVuZ3RoOyBrMSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuZDEgPSByb290T2Iubm9kZXNbazFdO1xuXG4gICAgICAgICAgICBpZiAobmQxLmdyb3VwLmluY2x1ZGVzKCcyJykpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrMiA9IDA7IGsyIDwgZ3JvdXAzTm9kZXMubGVuZ3RoOyBrMisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kMiA9IGdyb3VwM05vZGVzW2syXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5kMi5ncm91cCA9PT0gJzJiJyB8fCBuZDIuZ3JvdXAgPT09ICcyYWInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfSAvLyBsaW5rIG5vdCByZXF1aXJlZC5cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsbmsgPSBuZXcgTGluaygpO1xuICAgICAgICAgICAgICAgICAgICBsbmsuc291cmNlID0gbmQxLmlkO1xuICAgICAgICAgICAgICAgICAgICBsbmsuc291cmNlTmFtZSA9IG5kMS5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBsbmsudGFyZ2V0ID0gbmQyLmlkO1xuICAgICAgICAgICAgICAgICAgICBsbmsudGFyZ2V0TmFtZSA9IG5kMi5uYW1lO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChuZDEudHlwZS5pbmNsdWRlcygnUm91dGVyJykgJiYgbmQyLnR5cGUuaW5jbHVkZXMoJ1JvdXRlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsbmsuc3RhdHVzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZDEuc3RhdHVzID09PSAnUFJPVklTSU9ORUQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmQxLm9ubGluZSA9PT0gJ1llcycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZDIuc3RhdHVzID09PSAnUFJPVklTSU9ORUQnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmQyLm9ubGluZSA9PT0gJ1llcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxuay5zdGF0dXMgPSBnZXRFbmRwb2ludFRvUm91dGVyTGlua1N0YXRlKG5kMiwgbmQxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsbmsud2VpZ2h0ID0gZ2V0V2VpZ2h0KGxuay5zdGF0dXMpO1xuICAgICAgICAgICAgICAgICAgICByb290T2IuYWRkTGluayhsbmspO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGswID0gMDsgazAgPCBncm91cDROb2Rlcy5sZW5ndGg7IGswKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGsxID0gMDsgazEgPCBncm91cDNOb2Rlcy5sZW5ndGg7IGsxKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsbmsgPSBuZXcgTGluaygpO1xuICAgICAgICAgICAgICAgIGxuay5zb3VyY2UgPSBncm91cDNOb2Rlc1trMV0uaWQ7XG4gICAgICAgICAgICAgICAgbG5rLnNvdXJjZU5hbWUgPSBncm91cDNOb2Rlc1trMV0ubmFtZTtcbiAgICAgICAgICAgICAgICBsbmsudGFyZ2V0ID0gZ3JvdXA0Tm9kZXNbazBdLmlkO1xuICAgICAgICAgICAgICAgIGxuay50YXJnZXROYW1lID0gZ3JvdXA0Tm9kZXNbazBdLm5hbWU7XG4gICAgICAgICAgICAgICAgbG5rLndlaWdodCA9IDE7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmROZCA9IHJvb3RPYi5ub2Rlcy5maW5kKCBmdW5jdGlvbiAocm5kKSB7XG4gICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm5kLmlkID09PSBncm91cDNOb2Rlc1trMV0uaWQ7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZm91bmROZC50eXBlLmluY2x1ZGVzKCdSb3V0ZXInKSkge1xuICAgICAgICAgICAgICAgICAgICBsbmsuc3RhdHVzID0gIGZvdW5kTmQub25saW5lID09PSAnWWVzJyA/IDEgOiAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxuay5zdGF0dXMgPSBnZXRTZXJ2aWNlVG9FbmRwb2ludExpbmtTdGF0ZShncm91cDNOb2Rlc1trMV0sIGdyb3VwNE5vZGVzW2swXSk7XG4gICAgICAgICAgICAgICAgICAgIGxuay53ZWlnaHQgPSBnZXRXZWlnaHQobG5rLnN0YXR1cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJvb3RPYi5hZGRMaW5rKGxuayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBzZXJ2aWNlQ29uZmlnQWxpYXMoY29uZmlncykge1xuICAgICAgICAgIGxldCBpbnRlcmNlcHQgPSBbXTtcbiAgICAgICAgICBfLmlzQXJyYXkoY29uZmlncykgJiYgY29uZmlncy5mb3JFYWNoKCAoY29uZikgPT4ge1xuICAgICAgICAgICAgIGxldCBhZGRyZXNzZXMgPSAnJztcbiAgICAgICAgICAgICBsZXQgcG9ydHMgPSAnJztcbiAgICAgICAgICAgIGlmIChjb25mLmRhdGEuYWRkcmVzc2VzKSB7XG4gICAgICAgICAgICAgICBhZGRyZXNzZXMgPSBjb25mLmRhdGEuYWRkcmVzc2VzLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgYWRkcmVzc2VzID0gY29uZi5kYXRhLmFkZHJlc3M7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChfLmlzQXJyYXkoY29uZi5kYXRhLnBvcnRSYW5nZXMpICkge1xuICAgICAgICAgICAgICAgIGNvbmYuZGF0YS5wb3J0UmFuZ2VzLmZvckVhY2goIChwb3J0c0pzb24pID0+IHtcbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHBvcnRzSnNvbikge1xuICAgICAgICAgICAgICAgICAgICBwb3J0cyA9IHBvcnRzICsga2V5ICsnOicrcG9ydHNKc29uW2tleV0gKycgJyA7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgcG9ydHMgPSBwb3J0cyArICc7JztcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcG9ydHMgPSAgY29uZi5kYXRhLnBvcnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnRlcmNlcHQucHVzaChhZGRyZXNzZXMpO1xuICAgICAgICAgICAgaW50ZXJjZXB0LnB1c2gocG9ydHMpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBpbnRlcmNlcHQ7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBmaW5kRW5kcG9pbnQoZW5kcG9pbnRJZCwgZW5kcG9pbnRzKSB7XG4gICAgICAgICAgICBsZXQgbm9kZSA9IG51bGw7XG4gICAgICAgICAgICBpZiAoZW5kcG9pbnRJZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZVBvaW50ID0gZW5kcG9pbnRzLmZpbmQoIGZ1bmN0aW9uIChlcikge1xuICAgICAgICAgICAgICAgICByZXR1cm4gZXIuaWQgPT09IGVuZHBvaW50SWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGVQb2ludCkge1xuICAgICAgICAgICAgICAgIG5vZGUgPSBjcmVhdGVFbmRwb2ludChlUG9pbnQpO1xuICAgICAgICAgICAgICAgIG5vZGUudHlwZSA9ICdIb3N0ZWQgSWRlbnRpdHknO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH0gLy8gZW5kIG9mIGZpbmRFbmRwb2ludFxuXG4gICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUVuZHBvaW50KGVQb2ludCkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5ldyBOb2RlKCk7XG4gICAgICAgICAgICBub2RlLmlkID0gZVBvaW50LmlkO1xuICAgICAgICAgICAgbm9kZS5uYW1lID0gZVBvaW50Lm5hbWU7XG4gICAgICAgICAgICBub2RlLnR5cGUgPSAnSWRlbnRpdHknO1xuICAgICAgICAgICAgaWYgKF8uaGFzKGVQb2ludCwnZWRnZVJvdXRlckNvbm5lY3Rpb25TdGF0dXMnKSApIHtcbiAgICAgICAgICAgICAgbm9kZS5yb3V0ZXJDb25uZWN0aW9uID0gZVBvaW50LmVkZ2VSb3V0ZXJDb25uZWN0aW9uU3RhdHVzID09PSAnb2ZmbGluZScgPyAnTm8nIDogJ1llcyc7XG4gICAgICAgICAgICAgIG5vZGUuYXBpU2Vzc2lvbiA9ICBub2RlLnJvdXRlckNvbm5lY3Rpb247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBub2RlLnJvdXRlckNvbm5lY3Rpb24gPSBlUG9pbnRbJ2hhc0VkZ2VSb3V0ZXJDb25uZWN0aW9uJ10gPT09IGZhbHNlID8gJ05vJyA6ICdZZXMnO1xuICAgICAgICAgICAgICBub2RlLmFwaVNlc3Npb24gPSAgZVBvaW50WydoYXNBcGlTZXNzaW9uJ10gPT09IGZhbHNlID8gJ05vJyA6ICdZZXMnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgIG5vZGUub3MgPSBlUG9pbnQuZW52SW5mbz8gZVBvaW50LmVudkluZm8ub3MgOiAnJztcbiAgICAgICAgICAgICBub2RlLm1mYUVuYWJsZWQgPSBlUG9pbnQuaXNNZmFFbmFibGVkO1xuICAgICAgICAgICAgIG5vZGUuc3RhdHVzID0gZVBvaW50LmVudkluZm8gJiYgZVBvaW50LmVudkluZm8ub3MgIT09IG51bGwgPyAnUmVnaXN0ZXJlZCcgOiAnVW4tUmVnaXN0ZXJlZCc7XG4gICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUVSTm9kZShlcm91dGVyKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlT2IgPSBuZXcgTm9kZSgpO1xuICAgICAgICAgICAgbm9kZU9iLmlkID0gZXJvdXRlci5pZDtcbiAgICAgICAgICAgIG5vZGVPYi5uYW1lID0gZXJvdXRlci5uYW1lO1xuICAgICAgICAgICAgbm9kZU9iLnN0YXR1cyA9IGVyb3V0ZXIuaXNWZXJpZmllZCA9PT0gdHJ1ZT8gJ1JlZ2lzdGVyZWQnOidVbi1SZWdpc3RlcmVkJztcbiAgICAgICAgICAgIG5vZGVPYi5vbmxpbmUgPSBlcm91dGVyLmlzT25saW5lID09PSBmYWxzZSA/ICdObycgOiAnWWVzJztcbiAgICAgICAgICAgIG5vZGVPYi50dW5uZWxlckVuYWJsZWQgPSBlcm91dGVyLmlzVHVubmVsZXJFbmFibGVkID09PSBmYWxzZSA/ICdObycgOiAnWWVzJztcbiAgICAgICAgICAgIG5vZGVPYi50eXBlID0gJ0VkZ2VSb3V0ZXInO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGVPYjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGZpbmRFZGdlUm91dGVyRm9ySWQocm91dGVySWQsIGVkZ2Vyb3V0ZXJzKSB7XG4gICAgICAgICAgICBjb25zdCBlcm91dGVyID0gZWRnZXJvdXRlcnMuZmluZCgoZXIpID0+IHtcbiAgICAgICAgICAgICAgLy8gIGlmIChlci5pZCA9PT0gcm91dGVySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVyLmlkID09PSByb3V0ZXJJZDtcbiAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoZXJvdXRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVFUk5vZGUoZXJvdXRlcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IC8vIGVuZCBvZiBmaW5kRWRnZVJvdXRlckZvcklkXG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0RW5kcG9pbnRUb1JvdXRlckxpbmtTdGF0ZShlbmRwb2ludE5vZGUsIHJvdXRlck5vZGUpIHtcbiAgICAgICAgICAgIGxldCBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgaWYgKHJvdXRlck5vZGUuc3RhdHVzID09PSAnRVJST1InKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kcG9pbnROb2RlLnN0YXR1cyA9PT0gJ1VuLVJlZ2lzdGVyZWQnKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gLTE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZHBvaW50Tm9kZS5hcGlTZXNzaW9uID09PSAnTm8nKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kcG9pbnROb2RlLnJvdXRlckNvbm5lY3Rpb24gPT09ICdObycpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocm91dGVyTm9kZS5vbmxpbmUgPT09ICdZZXMnICYmIGVuZHBvaW50Tm9kZS5yb3V0ZXJDb25uZWN0aW9uID09PSAnWWVzJykge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxpbmtzdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdldFNlcnZpY2VUb0VuZHBvaW50TGlua1N0YXRlKGVuZHBvaW50Tm9kZSwgc2VydmljZU5vZGUpIHtcbiAgICAgICAgICAgIGxldCBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgaWYgKGVuZHBvaW50Tm9kZS5zdGF0dXMgPT09ICdVbi1SZWdpc3RlcmVkJyB8fCBzZXJ2aWNlTm9kZS5pbnRlcmNlcHQuaW5jbHVkZXMoJ05vJykpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAtMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kcG9pbnROb2RlLmFwaVNlc3Npb24gPT09ICdObycpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRwb2ludE5vZGUuc3RhdHVzID09PSAnUmVnaXN0ZXJlZCcgJiYgZW5kcG9pbnROb2RlLnJvdXRlckNvbm5lY3Rpb24gPT09ICdZZXMnKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBsaW5rc3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRXZWlnaHQobGlua1N0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbGlua1N0YXRlID09PSAtMSA/IDUgOiAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb290T2I7XG4gICAgfSAvLyBlbmQgb2YgTkVXIEZ1bmN0aW9uXG5cbn1cblxuIGNsYXNzIFJvb3RKc29uIHtcbiAgICAgICAgbm9kZXM6YW55ID0gW107XG4gICAgICAgIGxpbmtzOmFueSA9IFtdO1xuICAgICAgICBhZGROb2RlIChuZXdPYmplY3QpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3VuZE9iaiA9IHRoaXMubm9kZXMuZmluZCggZnVuY3Rpb24gKG5kKSB7XG4gICAgICAgICAgICAgICAgICAgLy8gaWYgKG5kLmlkID09PSBuZXdPYmplY3QuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgLy8gbmQgPSBuZXdPYmplY3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmQuaWQgPT09IG5ld09iamVjdC5pZDtcbiAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghZm91bmRPYmopIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKG5ld09iamVjdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXBsYWNlTm9kZSAobmV3T2JqZWN0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGluZHggPSB0aGlzLm5vZGVzLmZpbmRJbmRleChuZCA9PiBuZC5pZCA9PT0gbmV3T2JqZWN0LmlkKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5keCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgIHRoaXMubm9kZXNbaW5keF0gPSBuZXdPYmplY3Q7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgIGFkZExpbmsgKG5ld09iamVjdCkge1xuICAgICAgICAgICB0aGlzLmxpbmtzLnB1c2gobmV3T2JqZWN0KTtcbiAgICAgICAgfTtcblxuIH1cbiJdfQ==
|
|
373
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktc2VydmljZS1wYXRoLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy92aXN1YWxpemVyL2lkZW50aXR5LXNlcnZpY2UtcGF0aC9pZGVudGl0eS1zZXJ2aWNlLXBhdGguaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDOztBQUV2QixNQUFNLElBQUk7Q0FPVDtBQUVELE1BQU0sSUFBSTtDQWdCVDtBQUVELE1BQU0sZUFBZTtJQUFyQjtRQWtCSSxjQUFTLEdBQUcsRUFBRSxDQUFDO0lBR25CLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxXQUFXO0NBR3ZCO0FBS0QsTUFBTSxPQUFPLHlCQUF5QjtJQUdsQztRQUZBLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO0lBR2pCLENBQUM7SUFFRyxtQkFBbUIsQ0FDdEIsUUFBUSxFQUNSLGNBQWMsRUFDZCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxVQUFVLEdBQUcsRUFBRTtRQUVmLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sUUFBUSxHQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLEVBQUUsQ0FBRyxDQUFDO1FBQzFFLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDWixjQUFjLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLGNBQWMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1lBQzNCLGNBQWMsQ0FBQyxJQUFJLEdBQUcs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LENBQUM7SUFDOUIsQ0FBQztJQUFBLENBQUM7Q0FFUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY2xhc3MgTGluayB7XG4gICAgc291cmNlO1xuICAgIHNvdXJjZU5hbWU7XG4gICAgdGFyZ2V0O1xuICAgIHRhcmdldE5hbWU7XG4gICAgd2VpZ2h0O1xuICAgIHN0YXR1cztcbn1cblxuY2xhc3MgTm9kZSB7XG4gICAgaWQ7XG4gICAgbmFtZTtcbiAgICBwcm92aWRlcjtcbiAgICBncm91cDtcbiAgICBwb3N4O1xuICAgIHBvc3k7XG4gICAgc3RhdHVzO1xuICAgIG9ubGluZTtcbiAgICBhcGlTZXNzaW9uO1xuICAgIHJvdXRlckNvbm5lY3Rpb247XG4gICAgdHVubmVsZXJFbmFibGVkO1xuICAgIG9zO1xuICAgIG1mYUVuYWJsZWQ7XG4gICAgdHlwZTtcbiAgICB1c2FnZTtcbn1cblxuY2xhc3MgU2VydmljZUhvc3ROb2RlIHtcbiAgICBpZDtcbiAgICBuYW1lO1xuICAgIGdyb3VwO1xuICAgIHBvc3g7XG4gICAgcG9zeTtcbiAgICBpbnRlcmNlcHRJcHM7XG4gICAgaW50ZXJjZXB0UG9ydHM7XG4gICAgaW50ZXJjZXB0UHJvdG9jb2xzO1xuICAgIGZvcndhcmRlZEhvc3Q7XG4gICAgaG9zdE5hbWVzO1xuICAgIGZvcndhcmRlZFBvcnQ7XG4gICAgaG9zdFBvcnRzO1xuICAgIGZvcndhcmRlZFByb3RvY29sO1xuICAgIGhvc3RQcm90b2NvbHM7XG4gICAgc3RhdHVzO1xuICAgIHR5cGU7XG4gICAgdXNhZ2U7XG4gICAgaW50ZXJjZXB0ID0gW107XG4gICAgY29uZmlnQWRkcmVzcztcbiAgICBjb25maWdQb3J0cztcbn1cblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VEYXRhIHtcbiAgICBpZDtcbiAgICBuYW1lO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBJZGVudGl0eVNlcnZpY2VQYXRoSGVscGVyIHtcbiAgICBwb3N5X2Zvcl9ncm91cDMgPSAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgKSB7fVxuXG4gICAgcHVibGljIGdldEVuZHBvaW50R3JhcGhPYmooXG4gICAgICAgIGVuZHBvaW50LFxuICAgICAgICBiaW5kSWRuZXRpdGllcyxcbiAgICAgICAgZWRnZXJvdXRlcnMsXG4gICAgICAgIHNlbGVjdGVkU2VydmljZU9iLFxuICAgICAgICBzZXJ2aWNlQ29uZmlncyxcbiAgICAgICAgZmlsdGVyVGV4dCA9ICcnXG4gICAgKSB7XG4gICAgICAgIGxldCBlbmRwb2ludE5vZGVPYiA9IG51bGw7XG4gICAgICAgIGNvbnN0IHJvb3RPYiA9IG5ldyBSb290SnNvbigpO1xuICAgICAgICBjb25zdCBiaW5kTm9kZSA9ICBiaW5kSWRuZXRpdGllcy5maW5kKCAobmQpID0+ICBuZC5pZCA9PT0gZW5kcG9pbnQuaWQgICk7XG4gICAgICAgaWYgKCFiaW5kTm9kZSkge1xuICAgICAgICAgIGVuZHBvaW50Tm9kZU9iID0gY3JlYXRlRW5kcG9pbnQoZW5kcG9pbnQpO1xuICAgICAgICAgIGVuZHBvaW50Tm9kZU9iLmdyb3VwID0gJzEnO1xuICAgICAgICAgIGVuZHBvaW50Tm9kZU9iLnBvc3ggPSA1MDtcbiAgICAgICAgICBlbmRwb2ludE5vZGVPYi5wb3N5ID0gMjAwO1xuICAgICAgICAgIHJvb3RPYi5hZGROb2RlKGVuZHBvaW50Tm9kZU9iKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcHVibGljUm91dGVyTm9kZXMgPSBbXTtcbiAgICAgICAgbGV0IHBvc3kgPSAwO1xuICAgICAgICBfLmlzQXJyYXkoZWRnZXJvdXRlcnMpICYmIGVkZ2Vyb3V0ZXJzLmZvckVhY2goKG5kKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBub2RlT2IgPSBjcmVhdGVFUk5vZGUobmQpO1xuICAgICAgICAgICAgbm9kZU9iLmdyb3VwID0gJzJhJztcbiAgICAgICAgICAgIG5vZGVPYi5wb3N4ID0gMjUwO1xuICAgICAgICAgICAgcG9zeSA9IHBvc3kgKyAxMDA7XG4gICAgICAgICAgICBub2RlT2IucG9zeSA9IHBvc3k7XG4gICAgICAgICAgICBwdWJsaWNSb3V0ZXJOb2Rlcy5wdXNoKG5vZGVPYik7XG4gICAgICAgICAgICByb290T2IuYWRkTm9kZShub2RlT2IpO1xuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgcHVibGljUm91dGVyTm9kZXNGb3JFbmRwb2ludFR1bm5lbGVycyA9IFtdO1xuXG4gICAgICAgIGNvbnN0IHBvc3hfZm9yX2dyb3VwMyA9IDU1MDtcbiAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSAwO1xuICAgICAgICBsZXQgZ3JvdXAzSWRzID0gW107XG4gICAgICAgIGxldCBwb3N5X2Zvcl9ncm91cDQgPSAxNTA7XG4gICAgICAgIGNvbnN0IGdyb3VwNE5vZGVzID0gW107XG4gICAgICAgIGNvbnN0IHNlcnZpY2VJUFBvcnRzID0gW107XG4gICAgICAgICAgIGNvbnN0IHNyTm9kZSA9IG5ldyBTZXJ2aWNlSG9zdE5vZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgc3JOb2RlLmlkID0gc2VsZWN0ZWRTZXJ2aWNlT2IuaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgIHNyTm9kZS5uYW1lID0gc2VsZWN0ZWRTZXJ2aWNlT2IubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgc3JOb2RlLmludGVyY2VwdCA9IHNlcnZpY2VDb25maWdBbGlhcyhzZXJ2aWNlQ29uZmlncyk7XG4gICAgICAgICAgICAgICAgICAgICAgIHNyTm9kZS50eXBlID0gJ0NvbmZpZyBTZXJ2aWNlJztcbiAgICAgICAgICAgICAgICAgICAgICAgc3JOb2RlLmdyb3VwID0gJzQnO1xuICAgICAgICAgICAgICAgICAgICAgICBzck5vZGUuc3RhdHVzID0gJzEnO1xuICAgICAgICAgICAgICAgICAgICAgICBncm91cDROb2Rlcy5wdXNoKHNyTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgIHJvb3RPYi5hZGROb2RlKHNyTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIF8uaXNBcnJheShiaW5kSWRuZXRpdGllcykgJiYgYmluZElkbmV0aXRpZXMuZm9yRWFjaCgoZVBvaW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwM0lkcy5pbmRleE9mKGVQb2ludC5pZCkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAzSWRzLnB1c2goZVBvaW50LmlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBjcmVhdGUgbGlua3MgYmV0d2VlbiBub2Rlc1xuXG4gICAgICAgIC8vIGluIGdyb3VwMywgIHJlbW92ZSAgcm91dGVycy9lcCAgdGhhdCBleGlzdCBpbiBncm91cDJcbiAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSAxNjU7XG4gICAgICAgIGxldCBncnAzWWluY3JlbWVudCA9IDEwMDtcblxuICAgICAgICBjb25zdCBncm91cDNOb2RlcyA9IFtdO1xuICAgICAgICBsZXQgY291bnRncnAzID0gMDtcbiAgICAgICAgZ3JvdXAzSWRzLmZpbmQoKG5pZCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGxldCdzIGNoZWNrIGlmIHRoZSBzZXJ2aWNlIGhvc3RlZCBpcyBhbiBFbmRwb2ludFxuICAgICAgICAgICAgICAgbGV0IGdycDNOb2RlID0gZmluZEVuZHBvaW50KG5pZCwgYmluZElkbmV0aXRpZXMpO1xuICAgICAgICAgICAgICAgICAgaWYoZ3JwM05vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZ3JwM05vZGUuZ3JvdXAgPSAnMyc7XG4gICAgICAgICAgICAgICAgICAgIGdycDNOb2RlLnBvc3ggPSBwb3N4X2Zvcl9ncm91cDM7XG4gICAgICAgICAgICAgICAgICAgIGdycDNOb2RlLnBvc3kgPSB0aGlzLnBvc3lfZm9yX2dyb3VwMztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSB0aGlzLnBvc3lfZm9yX2dyb3VwMyArIDEyNTtcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAzTm9kZXMucHVzaChncnAzTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50Z3JwMysrO1xuICAgICAgICAgICAgICAgICAgICByb290T2IuYWRkTm9kZShncnAzTm9kZSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGdycDNZaW5jcmVtZW50ID0gY291bnRncnAzID4gMiA/IDc1IDogMTAwO1xuICAgICAgICBpZiAoY291bnRncnAzID09PSAxKSB7XG4gICAgICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IDE2MDtcbiAgICAgICAgfSBlbHNlIGlmIChjb3VudGdycDMgPT09IDIpIHtcbiAgICAgICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gMTIwO1xuICAgICAgICB9IGVsc2UgaWYgKGNvdW50Z3JwMyA+PSA1KSB7XG4gICAgICAgICAgICB0aGlzLnBvc3lfZm9yX2dyb3VwMyA9IDUwO1xuICAgICAgICAgICAgZ3JwM1lpbmNyZW1lbnQgPSA3NTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zeV9mb3JfZ3JvdXAzID0gNzM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZ3JvdXAzTm9kZXMpXG4gICAgICAgICAgICBncm91cDNOb2Rlcy5maW5kKChub2RlMykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChub2RlMy5ncm91cCA9PT0gJzMnKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUzLnBvc3kgPSB0aGlzLnBvc3lfZm9yX2dyb3VwMztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3N5X2Zvcl9ncm91cDMgPSB0aGlzLnBvc3lfZm9yX2dyb3VwMyArIGdycDNZaW5jcmVtZW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChncm91cDROb2RlcyAmJiBncm91cDROb2Rlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHBvc3lfZm9yX2dyb3VwNCA9IDIwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGdyb3VwNE5vZGVzLmZpbmQoKG5kNCkgPT4ge1xuICAgICAgICAgICAvLyBuZDQucG9zeCA9IGdyb3VwM05vZGVzICAmJiBncm91cDNOb2Rlcy5sZW5ndGggPiAwICAmJiAhZ3JvdXAzTm9kZXNbMF0udHlwZS5pbmNsdWRlcyhcIlB1YmxpYyBIb3N0ZWRcIikgPyBwb3N4X2Zvcl9ncm91cDMgKyAxNzUgOiBwb3N4X2Zvcl9ncm91cDM7XG4gICAgICAgICAgICBuZDQucG9zeCA9IHBvc3hfZm9yX2dyb3VwMyArIDE3NTtcbiAgICAgICAgICAgIG5kNC5wb3N5ID0gcG9zeV9mb3JfZ3JvdXA0O1xuICAgICAgICAgICAgcG9zeV9mb3JfZ3JvdXA0ID0gcG9zeV9mb3JfZ3JvdXA0ICsgMTAwO1xuICAgICAgICB9KTtcblxuICAgICAgICBsZXQgY291bnRQdWJsaWNOb2RlcyA9IDA7XG4gICAgICAgIHJvb3RPYi5ub2Rlcy5maW5kKChwTm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHBOb2RlLmdyb3VwLmluY2x1ZGVzKCcyJykpIHtcbiAgICAgICAgICAgICAgICBjb3VudFB1YmxpY05vZGVzID0gY291bnRQdWJsaWNOb2RlcyArIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHB1YmxpY1JvdXRlck5vZGVzID0gW107XG4gICAgICAgIGxldCBwb3N5X2dyb3VwMiA9IDEwMDtcbiAgICAgICAgbGV0IHlJbmNyZW1lbnQgPSAwO1xuICAgICAgICBpZiAoY291bnRQdWJsaWNOb2RlcyA9PT0gMSkge1xuICAgICAgICAgICAgcG9zeV9ncm91cDIgPSAyMDA7XG4gICAgICAgIH0gZWxzZSBpZiAoY291bnRQdWJsaWNOb2RlcyA+PSAyICYmIGNvdW50UHVibGljTm9kZXMgPCA1KSB7XG4gICAgICAgICAgICBwb3N5X2dyb3VwMiA9IDYwO1xuICAgICAgICAgICAgeUluY3JlbWVudCA9IDgwO1xuICAgICAgICB9IGVsc2UgaWYgKGNvdW50UHVibGljTm9kZXMgPj0gNSAmJiBjb3VudFB1YmxpY05vZGVzIDwgMTApIHtcbiAgICAgICAgICAgIHBvc3lfZ3JvdXAyID0gNDA7XG4gICAgICAgICAgICB5SW5jcmVtZW50ID0gNTA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwb3N5X2dyb3VwMiA9IDQwO1xuICAgICAgICAgICAgeUluY3JlbWVudCA9IDQwO1xuICAgICAgICB9XG5cbiAgICAgICAgcm9vdE9iLm5vZGVzLmZpbmQoKHB1YmxpY05vZGUpID0+IHtcbiAgICAgICAgICAgIGlmIChwdWJsaWNOb2RlLmdyb3VwLmluY2x1ZGVzKCcyJykpIHtcbiAgICAgICAgICAgICAgICBwdWJsaWNOb2RlLnBvc3ggPSAyNzU7XG4gICAgICAgICAgICAgICAgcHVibGljTm9kZS5wb3N5ID0gcG9zeV9ncm91cDI7XG4gICAgICAgICAgICAgICAgcG9zeV9ncm91cDIgPSBwb3N5X2dyb3VwMiArIHlJbmNyZW1lbnQ7XG4gICAgICAgICAgICAgICAgcHVibGljUm91dGVyTm9kZXMucHVzaChwdWJsaWNOb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAocHVibGljTm9kZS5ncm91cCA9PT0gJzJiJykge1xuICAgICAgICAgICAgICAgICAgICBncm91cDNOb2Rlcy5wdXNoKHB1YmxpY05vZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cblxuICAgICAgICBmb3IgKGxldCBrMSA9IDA7IGsxIDwgcm9vdE9iLm5vZGVzLmxlbmd0aDsgazErKykge1xuICAgICAgICAgICAgY29uc3QgbmQgPSByb290T2Iubm9kZXNbazFdO1xuICAgICAgICAgICAgaWYgKGVuZHBvaW50Tm9kZU9iICE9PW51bGwgJiYgKG5kLmdyb3VwID09PSAnMmEnIHx8IG5kLmdyb3VwID09PSAnMmFiJyB8fCBuZC5ncm91cCA9PT0gJzJhYycpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG5rID0gbmV3IExpbmsoKTtcbiAgICAgICAgICAgICAgICBsbmsuc291cmNlID0gZW5kcG9pbnROb2RlT2IuaWQ7XG4gICAgICAgICAgICAgICAgbG5rLnNvdXJjZU5hbWUgPSBlbmRwb2ludE5vZGVPYi5uYW1lO1xuICAgICAgICAgICAgICAgIGxuay50YXJnZXQgPSBuZC5pZDtcbiAgICAgICAgICAgICAgICBsbmsudGFyZ2V0TmFtZSA9IG5kLm5hbWU7XG4gICAgICAgICAgICAgICAgbG5rLnN0YXR1cyA9IGdldEVuZHBvaW50VG9Sb3V0ZXJMaW5rU3RhdGUoZW5kcG9pbnROb2RlT2IsIG5kKTtcbiAgICAgICAgICAgICAgICBsbmsud2VpZ2h0ID0gZ2V0V2VpZ2h0KGxuay5zdGF0dXMpO1xuICAgICAgICAgICAgICAgIHJvb3RPYi5hZGRMaW5rKGxuayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBrMSA9IDA7IGsxIDwgcm9vdE9iLm5vZGVzLmxlbmd0aDsgazErKykge1xuICAgICAgICAgICAgY29uc3QgbmQxID0gcm9vdE9iLm5vZGVzW2sxXTtcblxuICAgICAgICAgICAgaWYgKG5kMS5ncm91cC5pbmNsdWRlcygnMicpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgazIgPSAwOyBrMiA8IGdyb3VwM05vZGVzLmxlbmd0aDsgazIrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZDIgPSBncm91cDNOb2Rlc1trMl07XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZDIuZ3JvdXAgPT09ICcyYicgfHwgbmQyLmdyb3VwID09PSAnMmFiJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH0gLy8gbGluayBub3QgcmVxdWlyZWQuXG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbG5rID0gbmV3IExpbmsoKTtcbiAgICAgICAgICAgICAgICAgICAgbG5rLnNvdXJjZSA9IG5kMS5pZDtcbiAgICAgICAgICAgICAgICAgICAgbG5rLnNvdXJjZU5hbWUgPSBuZDEubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgbG5rLnRhcmdldCA9IG5kMi5pZDtcbiAgICAgICAgICAgICAgICAgICAgbG5rLnRhcmdldE5hbWUgPSBuZDIubmFtZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobmQxLnR5cGUuaW5jbHVkZXMoJ1JvdXRlcicpICYmIG5kMi50eXBlLmluY2x1ZGVzKCdSb3V0ZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG5rLnN0YXR1cyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmQxLnN0YXR1cyA9PT0gJ1BST1ZJU0lPTkVEJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kMS5vbmxpbmUgPT09ICdZZXMnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmQyLnN0YXR1cyA9PT0gJ1BST1ZJU0lPTkVEJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kMi5vbmxpbmUgPT09ICdZZXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsbmsuc3RhdHVzID0gZ2V0RW5kcG9pbnRUb1JvdXRlckxpbmtTdGF0ZShuZDIsIG5kMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbG5rLndlaWdodCA9IGdldFdlaWdodChsbmsuc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgcm9vdE9iLmFkZExpbmsobG5rKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBrMCA9IDA7IGswIDwgZ3JvdXA0Tm9kZXMubGVuZ3RoOyBrMCsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBrMSA9IDA7IGsxIDwgZ3JvdXAzTm9kZXMubGVuZ3RoOyBrMSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG5rID0gbmV3IExpbmsoKTtcbiAgICAgICAgICAgICAgICBsbmsuc291cmNlID0gZ3JvdXAzTm9kZXNbazFdLmlkO1xuICAgICAgICAgICAgICAgIGxuay5zb3VyY2VOYW1lID0gZ3JvdXAzTm9kZXNbazFdLm5hbWU7XG4gICAgICAgICAgICAgICAgbG5rLnRhcmdldCA9IGdyb3VwNE5vZGVzW2swXS5pZDtcbiAgICAgICAgICAgICAgICBsbmsudGFyZ2V0TmFtZSA9IGdyb3VwNE5vZGVzW2swXS5uYW1lO1xuICAgICAgICAgICAgICAgIGxuay53ZWlnaHQgPSAxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kTmQgPSByb290T2Iubm9kZXMuZmluZCggZnVuY3Rpb24gKHJuZCkge1xuICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJuZC5pZCA9PT0gZ3JvdXAzTm9kZXNbazFdLmlkO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKGZvdW5kTmQudHlwZS5pbmNsdWRlcygnUm91dGVyJykpIHtcbiAgICAgICAgICAgICAgICAgICAgbG5rLnN0YXR1cyA9ICBmb3VuZE5kLm9ubGluZSA9PT0gJ1llcycgPyAxIDogMDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsbmsuc3RhdHVzID0gZ2V0U2VydmljZVRvRW5kcG9pbnRMaW5rU3RhdGUoZ3JvdXAzTm9kZXNbazFdLCBncm91cDROb2Rlc1trMF0pO1xuICAgICAgICAgICAgICAgICAgICBsbmsud2VpZ2h0ID0gZ2V0V2VpZ2h0KGxuay5zdGF0dXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByb290T2IuYWRkTGluayhsbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc2VydmljZUNvbmZpZ0FsaWFzKGNvbmZpZ3MpIHtcbiAgICAgICAgICBsZXQgaW50ZXJjZXB0ID0gW107XG4gICAgICAgICAgXy5pc0FycmF5KGNvbmZpZ3MpICYmIGNvbmZpZ3MuZm9yRWFjaCggKGNvbmYpID0+IHtcbiAgICAgICAgICAgICBsZXQgYWRkcmVzc2VzID0gJyc7XG4gICAgICAgICAgICAgbGV0IHBvcnRzID0gJyc7XG4gICAgICAgICAgICBpZiAoY29uZi5kYXRhLmFkZHJlc3Nlcykge1xuICAgICAgICAgICAgICAgYWRkcmVzc2VzID0gY29uZi5kYXRhLmFkZHJlc3Nlcy50b1N0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgIGFkZHJlc3NlcyA9IGNvbmYuZGF0YS5hZGRyZXNzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5pc0FycmF5KGNvbmYuZGF0YS5wb3J0UmFuZ2VzKSApIHtcbiAgICAgICAgICAgICAgICBjb25mLmRhdGEucG9ydFJhbmdlcy5mb3JFYWNoKCAocG9ydHNKc29uKSA9PiB7XG4gICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwb3J0c0pzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcG9ydHMgPSBwb3J0cyArIGtleSArJzonK3BvcnRzSnNvbltrZXldICsnICcgO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgIHBvcnRzID0gcG9ydHMgKyAnOyc7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBvcnRzID0gIGNvbmYuZGF0YS5wb3J0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW50ZXJjZXB0LnB1c2goYWRkcmVzc2VzKTtcbiAgICAgICAgICAgIGludGVyY2VwdC5wdXNoKHBvcnRzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gaW50ZXJjZXB0O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZmluZEVuZHBvaW50KGVuZHBvaW50SWQsIGVuZHBvaW50cykge1xuICAgICAgICAgICAgbGV0IG5vZGUgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGVuZHBvaW50SWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVQb2ludCA9IGVuZHBvaW50cy5maW5kKCBmdW5jdGlvbiAoZXIpIHtcbiAgICAgICAgICAgICAgICAgcmV0dXJuIGVyLmlkID09PSBlbmRwb2ludElkO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChlUG9pbnQpIHtcbiAgICAgICAgICAgICAgICBub2RlID0gY3JlYXRlRW5kcG9pbnQoZVBvaW50KTtcbiAgICAgICAgICAgICAgICBub2RlLnR5cGUgPSAnSG9zdGVkIElkZW50aXR5JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBub2RlO1xuICAgICAgICB9IC8vIGVuZCBvZiBmaW5kRW5kcG9pbnRcblxuICAgICAgICBmdW5jdGlvbiBjcmVhdGVFbmRwb2ludChlUG9pbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBuZXcgTm9kZSgpO1xuICAgICAgICAgICAgbm9kZS5pZCA9IGVQb2ludC5pZDtcbiAgICAgICAgICAgIG5vZGUubmFtZSA9IGVQb2ludC5uYW1lO1xuICAgICAgICAgICAgbm9kZS50eXBlID0gJ0lkZW50aXR5JztcbiAgICAgICAgICAgIGlmIChfLmhhcyhlUG9pbnQsJ2VkZ2VSb3V0ZXJDb25uZWN0aW9uU3RhdHVzJykgKSB7XG4gICAgICAgICAgICAgIG5vZGUucm91dGVyQ29ubmVjdGlvbiA9IGVQb2ludC5lZGdlUm91dGVyQ29ubmVjdGlvblN0YXR1cyA9PT0gJ29mZmxpbmUnID8gJ05vJyA6ICdZZXMnO1xuICAgICAgICAgICAgICBub2RlLmFwaVNlc3Npb24gPSAgbm9kZS5yb3V0ZXJDb25uZWN0aW9uO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbm9kZS5yb3V0ZXJDb25uZWN0aW9uID0gZVBvaW50WydoYXNFZGdlUm91dGVyQ29ubmVjdGlvbiddID09PSBmYWxzZSA/ICdObycgOiAnWWVzJztcbiAgICAgICAgICAgICAgbm9kZS5hcGlTZXNzaW9uID0gIGVQb2ludFsnaGFzQXBpU2Vzc2lvbiddID09PSBmYWxzZSA/ICdObycgOiAnWWVzJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBub2RlLm9zID0gZVBvaW50LmVudkluZm8/IGVQb2ludC5lbnZJbmZvLm9zIDogJyc7XG4gICAgICAgICAgICAgbm9kZS5tZmFFbmFibGVkID0gZVBvaW50LmlzTWZhRW5hYmxlZDtcbiAgICAgICAgICAgICBub2RlLnN0YXR1cyA9IGVQb2ludC5lbnZJbmZvICYmIGVQb2ludC5lbnZJbmZvLm9zICE9PSBudWxsID8gJ1JlZ2lzdGVyZWQnIDogJ1VuLVJlZ2lzdGVyZWQnO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBjcmVhdGVFUk5vZGUoZXJvdXRlcikge1xuICAgICAgICAgICAgY29uc3Qgbm9kZU9iID0gbmV3IE5vZGUoKTtcbiAgICAgICAgICAgIG5vZGVPYi5pZCA9IGVyb3V0ZXIuaWQ7XG4gICAgICAgICAgICBub2RlT2IubmFtZSA9IGVyb3V0ZXIubmFtZTtcbiAgICAgICAgICAgIG5vZGVPYi5zdGF0dXMgPSBlcm91dGVyLmlzVmVyaWZpZWQgPT09IHRydWU/ICdSZWdpc3RlcmVkJzonVW4tUmVnaXN0ZXJlZCc7XG4gICAgICAgICAgICBub2RlT2Iub25saW5lID0gZXJvdXRlci5pc09ubGluZSA9PT0gZmFsc2UgPyAnTm8nIDogJ1llcyc7XG4gICAgICAgICAgICBub2RlT2IudHVubmVsZXJFbmFibGVkID0gZXJvdXRlci5pc1R1bm5lbGVyRW5hYmxlZCA9PT0gZmFsc2UgPyAnTm8nIDogJ1llcyc7XG4gICAgICAgICAgICBub2RlT2IudHlwZSA9ICdFZGdlUm91dGVyJztcbiAgICAgICAgICAgIHJldHVybiBub2RlT2I7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBmaW5kRWRnZVJvdXRlckZvcklkKHJvdXRlcklkLCBlZGdlcm91dGVycykge1xuICAgICAgICAgICAgY29uc3QgZXJvdXRlciA9IGVkZ2Vyb3V0ZXJzLmZpbmQoKGVyKSA9PiB7XG4gICAgICAgICAgICAgIC8vICBpZiAoZXIuaWQgPT09IHJvdXRlcklkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlci5pZCA9PT0gcm91dGVySWQ7XG4gICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGVyb3V0ZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlRVJOb2RlKGVyb3V0ZXIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBlbmQgb2YgZmluZEVkZ2VSb3V0ZXJGb3JJZFxuXG4gICAgICAgIGZ1bmN0aW9uIGdldEVuZHBvaW50VG9Sb3V0ZXJMaW5rU3RhdGUoZW5kcG9pbnROb2RlLCByb3V0ZXJOb2RlKSB7XG4gICAgICAgICAgICBsZXQgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIGlmIChyb3V0ZXJOb2RlLnN0YXR1cyA9PT0gJ0VSUk9SJykge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZHBvaW50Tm9kZS5zdGF0dXMgPT09ICdVbi1SZWdpc3RlcmVkJykge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IC0xO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlbmRwb2ludE5vZGUuYXBpU2Vzc2lvbiA9PT0gJ05vJykge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZHBvaW50Tm9kZS5yb3V0ZXJDb25uZWN0aW9uID09PSAnTm8nKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gLTE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJvdXRlck5vZGUub25saW5lID09PSAnWWVzJyAmJiBlbmRwb2ludE5vZGUucm91dGVyQ29ubmVjdGlvbiA9PT0gJ1llcycpIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsaW5rc3RhdGUgPSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBsaW5rc3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRTZXJ2aWNlVG9FbmRwb2ludExpbmtTdGF0ZShlbmRwb2ludE5vZGUsIHNlcnZpY2VOb2RlKSB7XG4gICAgICAgICAgICBsZXQgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIGlmIChlbmRwb2ludE5vZGUuc3RhdHVzID09PSAnVW4tUmVnaXN0ZXJlZCcgfHwgc2VydmljZU5vZGUuaW50ZXJjZXB0LmluY2x1ZGVzKCdObycpKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gLTE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVuZHBvaW50Tm9kZS5hcGlTZXNzaW9uID09PSAnTm8nKSB7XG4gICAgICAgICAgICAgICAgbGlua3N0YXRlID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kcG9pbnROb2RlLnN0YXR1cyA9PT0gJ1JlZ2lzdGVyZWQnICYmIGVuZHBvaW50Tm9kZS5yb3V0ZXJDb25uZWN0aW9uID09PSAnWWVzJykge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpbmtzdGF0ZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbGlua3N0YXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0V2VpZ2h0KGxpbmtTdGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxpbmtTdGF0ZSA9PT0gLTEgPyA1IDogMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm9vdE9iO1xuICAgIH0gLy8gZW5kIG9mIE5FVyBGdW5jdGlvblxuXG59XG5cbiBjbGFzcyBSb290SnNvbiB7XG4gICAgICAgIG5vZGVzOmFueSA9IFtdO1xuICAgICAgICBsaW5rczphbnkgPSBbXTtcbiAgICAgICAgYWRkTm9kZSAobmV3T2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm91bmRPYmogPSB0aGlzLm5vZGVzLmZpbmQoIGZ1bmN0aW9uIChuZCkge1xuICAgICAgICAgICAgICAgICAgIC8vIGlmIChuZC5pZCA9PT0gbmV3T2JqZWN0LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgIC8vIG5kID0gbmV3T2JqZWN0O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5kLmlkID09PSBuZXdPYmplY3QuaWQ7XG4gICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kT2JqKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZXMucHVzaChuZXdPYmplY3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmVwbGFjZU5vZGUgKG5ld09iamVjdCkge1xuICAgICAgICAgICAgICBjb25zdCBpbmR4ID0gdGhpcy5ub2Rlcy5maW5kSW5kZXgobmQgPT4gbmQuaWQgPT09IG5ld09iamVjdC5pZCk7XG4gICAgICAgICAgICAgICAgaWYgKGluZHggPj0gMCkge1xuICAgICAgICAgICAgICAgICB0aGlzLm5vZGVzW2luZHhdID0gbmV3T2JqZWN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICBhZGRMaW5rIChuZXdPYmplY3QpIHtcbiAgICAgICAgICAgdGhpcy5saW5rcy5wdXNoKG5ld09iamVjdCk7XG4gICAgICAgIH07XG5cbiB9XG4iXX0=
|