@commercetools-frontend/application-shell 20.9.4 → 20.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{application-entry-point-211fb17a.cjs.dev.js → application-entry-point-4b134bcb.cjs.dev.js} +4 -7
- package/dist/{application-entry-point-7b4ee9ee.cjs.prod.js → application-entry-point-83ea80e3.cjs.prod.js} +4 -7
- package/dist/{application-entry-point-5f0f015e.esm.js → application-entry-point-b7c5325e.esm.js} +4 -7
- package/dist/commercetools-frontend-application-shell.cjs.dev.js +2 -2
- package/dist/commercetools-frontend-application-shell.cjs.prod.js +2 -2
- package/dist/commercetools-frontend-application-shell.esm.js +2 -2
- package/dist/declarations/src/apollo-links/error-link.d.ts +2 -2
- package/dist/declarations/src/apollo-links/header-link.d.ts +3 -3
- package/dist/declarations/src/apollo-links/index.d.ts +4 -4
- package/dist/declarations/src/apollo-links/token-retry-link.d.ts +3 -3
- package/dist/declarations/src/apollo-links/utils.d.ts +10 -10
- package/dist/declarations/src/components/app-bar/app-bar.d.ts +12 -12
- package/dist/declarations/src/components/app-bar/index.d.ts +1 -1
- package/dist/declarations/src/components/application-entry-point/application-entry-point.d.ts +9 -9
- package/dist/declarations/src/components/application-entry-point/index.d.ts +1 -1
- package/dist/declarations/src/components/application-loader/application-loader.d.ts +8 -8
- package/dist/declarations/src/components/application-loader/index.d.ts +1 -1
- package/dist/declarations/src/components/application-shell/application-shell.d.ts +39 -39
- package/dist/declarations/src/components/application-shell/index.d.ts +1 -1
- package/dist/declarations/src/components/application-shell/redirect-to-login.d.ts +5 -5
- package/dist/declarations/src/components/application-shell/redirect-to-logout.d.ts +6 -6
- package/dist/declarations/src/components/application-shell-provider/application-shell-provider.d.ts +22 -22
- package/dist/declarations/src/components/application-shell-provider/global-styles.d.ts +2 -2
- package/dist/declarations/src/components/application-shell-provider/index.d.ts +1 -1
- package/dist/declarations/src/components/application-shell-provider/use-coerced-environment-values.d.ts +28 -28
- package/dist/declarations/src/components/application-shell-provider/utils.d.ts +1 -1
- package/dist/declarations/src/components/authenticated/am-i-logged-in.d.ts +13 -13
- package/dist/declarations/src/components/authenticated/authenticated.d.ts +16 -16
- package/dist/declarations/src/components/authenticated/has-cached-authentication-state.d.ts +2 -2
- package/dist/declarations/src/components/authenticated/helpers.d.ts +8 -8
- package/dist/declarations/src/components/authenticated/index.d.ts +1 -1
- package/dist/declarations/src/components/authenticated/oidc-callback-error-page.d.ts +12 -12
- package/dist/declarations/src/components/authenticated/oidc-callback.d.ts +11 -11
- package/dist/declarations/src/components/authenticated/types.d.ts +6 -6
- package/dist/declarations/src/components/back-to-project/back-to-project.d.ts +8 -8
- package/dist/declarations/src/components/back-to-project/index.d.ts +1 -1
- package/dist/declarations/src/components/back-to-project/messages.d.ts +7 -7
- package/dist/declarations/src/components/configure-intl-provider/configure-intl-provider.d.ts +12 -12
- package/dist/declarations/src/components/configure-intl-provider/index.d.ts +1 -1
- package/dist/declarations/src/components/error-apologizer/error-apologizer.d.ts +5 -5
- package/dist/declarations/src/components/error-apologizer/index.d.ts +1 -1
- package/dist/declarations/src/components/error-apologizer/messages.d.ts +11 -11
- package/dist/declarations/src/components/error-boundary/error-boundary.d.ts +20 -20
- package/dist/declarations/src/components/error-boundary/index.d.ts +1 -1
- package/dist/declarations/src/components/fetch-project/fetch-project.d.ts +18 -18
- package/dist/declarations/src/components/fetch-project/index.d.ts +1 -1
- package/dist/declarations/src/components/fetch-user/fetch-user.d.ts +16 -16
- package/dist/declarations/src/components/fetch-user/index.d.ts +1 -1
- package/dist/declarations/src/components/gtm-application-tracker/gtm-application-tracker.d.ts +10 -10
- package/dist/declarations/src/components/gtm-application-tracker/index.d.ts +1 -1
- package/dist/declarations/src/components/gtm-booter/gtm-booter.d.ts +20 -20
- package/dist/declarations/src/components/gtm-booter/index.d.ts +2 -2
- package/dist/declarations/src/components/gtm-user-logout-tracker/gtm-user-logout-tracker.d.ts +5 -5
- package/dist/declarations/src/components/gtm-user-logout-tracker/index.d.ts +1 -1
- package/dist/declarations/src/components/gtm-user-tracker/gtm-user-tracker.d.ts +10 -10
- package/dist/declarations/src/components/gtm-user-tracker/index.d.ts +1 -1
- package/dist/declarations/src/components/inject-reducers/index.d.ts +1 -1
- package/dist/declarations/src/components/inject-reducers/inject-reducers.d.ts +14 -14
- package/dist/declarations/src/components/loading-placeholder/index.d.ts +1 -1
- package/dist/declarations/src/components/loading-placeholder/loading-placeholder.d.ts +10 -10
- package/dist/declarations/src/components/locale-switcher/index.d.ts +1 -1
- package/dist/declarations/src/components/locale-switcher/locale-switcher.d.ts +23 -23
- package/dist/declarations/src/components/navbar/index.d.ts +1 -1
- package/dist/declarations/src/components/navbar/messages.d.ts +7 -7
- package/dist/declarations/src/components/navbar/navbar.d.ts +29 -29
- package/dist/declarations/src/components/navbar/non-nullable.d.ts +1 -1
- package/dist/declarations/src/components/navbar/use-loading-menu-layout-effect.d.ts +2 -2
- package/dist/declarations/src/components/navbar/use-navbar-state-manager.d.ts +67 -67
- package/dist/declarations/src/components/project-container/index.d.ts +1 -1
- package/dist/declarations/src/components/project-container/messages.d.ts +7 -7
- package/dist/declarations/src/components/project-container/project-container.d.ts +18 -18
- package/dist/declarations/src/components/project-data-locale/index.d.ts +1 -1
- package/dist/declarations/src/components/project-data-locale/project-data-locale.d.ts +14 -14
- package/dist/declarations/src/components/project-expired/index.d.ts +6 -6
- package/dist/declarations/src/components/project-expired/messages.d.ts +11 -11
- package/dist/declarations/src/components/project-expired/project-expired.d.ts +5 -5
- package/dist/declarations/src/components/project-not-found/index.d.ts +6 -6
- package/dist/declarations/src/components/project-not-found/messages.d.ts +15 -15
- package/dist/declarations/src/components/project-not-found/project-not-found.d.ts +5 -5
- package/dist/declarations/src/components/project-not-initialized/index.d.ts +6 -6
- package/dist/declarations/src/components/project-not-initialized/messages.d.ts +11 -11
- package/dist/declarations/src/components/project-not-initialized/project-not-initialized.d.ts +5 -5
- package/dist/declarations/src/components/project-suspended/index.d.ts +8 -8
- package/dist/declarations/src/components/project-suspended/messages.d.ts +15 -15
- package/dist/declarations/src/components/project-suspended/project-suspended.d.ts +8 -8
- package/dist/declarations/src/components/project-switcher/index.d.ts +1 -1
- package/dist/declarations/src/components/project-switcher/messages.d.ts +28 -28
- package/dist/declarations/src/components/project-switcher/project-switcher.d.ts +18 -18
- package/dist/declarations/src/components/quick-access/butler/butler.d.ts +14 -14
- package/dist/declarations/src/components/quick-access/butler/index.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/butler-command/butler-command.d.ts +24 -24
- package/dist/declarations/src/components/quick-access/butler-command/index.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/butler-container/butler-container.d.ts +6 -6
- package/dist/declarations/src/components/quick-access/butler-container/index.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/constants.d.ts +24 -24
- package/dist/declarations/src/components/quick-access/create-commands.d.ts +13 -13
- package/dist/declarations/src/components/quick-access/history-entries.d.ts +3 -3
- package/dist/declarations/src/components/quick-access/index.d.ts +8 -8
- package/dist/declarations/src/components/quick-access/messages.d.ts +247 -247
- package/dist/declarations/src/components/quick-access/pim-indexer-states.d.ts +6 -6
- package/dist/declarations/src/components/quick-access/quick-access.d.ts +12 -12
- package/dist/declarations/src/components/quick-access/sub-commands.d.ts +17 -17
- package/dist/declarations/src/components/quick-access/tracking-events.d.ts +8 -8
- package/dist/declarations/src/components/quick-access/types.d.ts +31 -31
- package/dist/declarations/src/components/quick-access/utils.d.ts +5 -5
- package/dist/declarations/src/components/redirect-to-project-create/index.d.ts +1 -1
- package/dist/declarations/src/components/redirect-to-project-create/redirect-to-project-create.d.ts +5 -5
- package/dist/declarations/src/components/redirector/index.d.ts +1 -1
- package/dist/declarations/src/components/redirector/redirector.d.ts +22 -22
- package/dist/declarations/src/components/requests-in-flight-loader/constants.d.ts +1 -1
- package/dist/declarations/src/components/requests-in-flight-loader/index.d.ts +2 -2
- package/dist/declarations/src/components/requests-in-flight-loader/messages.d.ts +8 -8
- package/dist/declarations/src/components/requests-in-flight-loader/reducer.d.ts +4 -4
- package/dist/declarations/src/components/requests-in-flight-loader/requests-in-flight-loader.d.ts +6 -6
- package/dist/declarations/src/components/requests-in-flight-loader/types.d.ts +9 -9
- package/dist/declarations/src/components/route-catch-all/index.d.ts +1 -1
- package/dist/declarations/src/components/route-catch-all/route-catch-all.d.ts +2 -2
- package/dist/declarations/src/components/service-page-project-switcher/index.d.ts +1 -1
- package/dist/declarations/src/components/service-page-project-switcher/service-page-project-switcher.d.ts +5 -5
- package/dist/declarations/src/components/setup-flop-flip-provider/index.d.ts +1 -1
- package/dist/declarations/src/components/setup-flop-flip-provider/setup-flop-flip-provider.d.ts +17 -17
- package/dist/declarations/src/components/user-settings-menu/index.d.ts +1 -1
- package/dist/declarations/src/components/user-settings-menu/messages.d.ts +28 -28
- package/dist/declarations/src/components/user-settings-menu/user-settings-menu.d.ts +23 -23
- package/dist/declarations/src/components/version-tracker/actions.d.ts +4 -4
- package/dist/declarations/src/components/version-tracker/index.d.ts +1 -1
- package/dist/declarations/src/components/version-tracker/version-tracker.d.ts +5 -5
- package/dist/declarations/src/configure-apollo.d.ts +7 -7
- package/dist/declarations/src/configure-store.d.ts +19 -19
- package/dist/declarations/src/constants.d.ts +46 -46
- package/dist/declarations/src/feature-toggles.d.ts +1 -1
- package/dist/declarations/src/hooks/apollo-hooks/apollo-hooks.d.ts +13 -13
- package/dist/declarations/src/hooks/apollo-hooks/index.d.ts +1 -1
- package/dist/declarations/src/hooks/use-all-menu-feature-toggles/index.d.ts +1 -1
- package/dist/declarations/src/hooks/use-all-menu-feature-toggles/use-all-menu-feature-toggles.d.ts +11 -11
- package/dist/declarations/src/hooks/use-applications-menu/index.d.ts +1 -1
- package/dist/declarations/src/hooks/use-applications-menu/use-applications-menu.d.ts +14 -14
- package/dist/declarations/src/index.d.ts +16 -16
- package/dist/declarations/src/middleware/hide-notifications.d.ts +3 -3
- package/dist/declarations/src/middleware/logger.d.ts +3 -3
- package/dist/declarations/src/test-utils/index.d.ts +1 -1
- package/dist/declarations/src/test-utils/test-utils.d.ts +68 -68
- package/dist/declarations/src/track-performance.d.ts +2 -2
- package/dist/declarations/src/tracking-event-list.d.ts +19 -19
- package/dist/declarations/src/types/generated/ctp.d.ts +9582 -9273
- package/dist/declarations/src/types/generated/mc.d.ts +746 -746
- package/dist/declarations/src/types/generated/proxy.d.ts +148 -148
- package/dist/declarations/src/types/generated/settings.d.ts +3258 -3258
- package/dist/declarations/src/utils/apollo-client-runtime-cache.d.ts +5 -5
- package/dist/declarations/src/utils/apollo-context.d.ts +23 -23
- package/dist/declarations/src/utils/get-correlation-id/get-correlation-id.d.ts +3 -3
- package/dist/declarations/src/utils/get-correlation-id/index.d.ts +1 -1
- package/dist/declarations/src/utils/get-mc-api-url/get-mc-api-url.d.ts +8 -8
- package/dist/declarations/src/utils/get-mc-api-url/index.d.ts +1 -1
- package/dist/declarations/src/utils/get-previous-project-key/get-previous-project-key.d.ts +2 -2
- package/dist/declarations/src/utils/get-previous-project-key/index.d.ts +1 -1
- package/dist/declarations/src/utils/gtm.d.ts +27 -27
- package/dist/declarations/src/utils/index.d.ts +8 -8
- package/dist/declarations/src/utils/location/index.d.ts +1 -1
- package/dist/declarations/src/utils/location/location.d.ts +5 -5
- package/dist/declarations/src/utils/logger.d.ts +10 -10
- package/dist/declarations/src/utils/oidc-storage.d.ts +11 -11
- package/dist/declarations/src/utils/select-project-key-from-local-storage/index.d.ts +1 -1
- package/dist/declarations/src/utils/select-project-key-from-local-storage/select-project-key-from-local-storage.d.ts +1 -1
- package/dist/declarations/src/utils/select-project-key-from-url/index.d.ts +1 -1
- package/dist/declarations/src/utils/select-project-key-from-url/select-project-key-from-url.d.ts +1 -1
- package/dist/declarations/src/utils/select-team-id-from-local-storage/index.d.ts +1 -1
- package/dist/declarations/src/utils/select-team-id-from-local-storage/select-team-id-from-local-storage.d.ts +1 -1
- package/dist/declarations/src/utils/select-user-id/index.d.ts +1 -1
- package/dist/declarations/src/utils/select-user-id/select-user-id.d.ts +1 -1
- package/dist/declarations/src/utils/setup-global-error-listener/index.d.ts +1 -1
- package/dist/declarations/src/utils/setup-global-error-listener/setup-global-error-listener.d.ts +1 -1
- package/dist/declarations/src/version.d.ts +2 -2
- package/dist/{index-b47dceae.esm.js → index-577c7a43.esm.js} +47 -40
- package/dist/{index-dcdc1fa1.cjs.dev.js → index-82a5ea23.cjs.dev.js} +46 -39
- package/dist/{index-a3f44394.cjs.prod.js → index-8605a9e1.cjs.prod.js} +36 -29
- package/dist/{project-expired-e3f298fe.cjs.dev.js → project-expired-4a4db9c8.cjs.dev.js} +3 -3
- package/dist/{project-expired-ebc3e633.esm.js → project-expired-55c51196.esm.js} +3 -3
- package/dist/{project-expired-71eaf3ac.cjs.prod.js → project-expired-5603cf9b.cjs.prod.js} +3 -3
- package/dist/{project-not-found-bd416369.cjs.dev.js → project-not-found-33567915.cjs.dev.js} +3 -3
- package/dist/{project-not-found-8e9e186b.esm.js → project-not-found-efa7e5a7.esm.js} +3 -3
- package/dist/{project-not-found-471a350c.cjs.prod.js → project-not-found-f325728d.cjs.prod.js} +3 -3
- package/dist/{project-not-initialized-f0707436.esm.js → project-not-initialized-36c1617d.esm.js} +3 -3
- package/dist/{project-not-initialized-22679d64.cjs.prod.js → project-not-initialized-68192fda.cjs.prod.js} +3 -3
- package/dist/{project-not-initialized-49d5d546.cjs.dev.js → project-not-initialized-d396896e.cjs.dev.js} +3 -3
- package/dist/{project-suspended-5d927085.cjs.dev.js → project-suspended-61a15b65.cjs.dev.js} +3 -3
- package/dist/{project-suspended-925bc5a1.esm.js → project-suspended-69502d1e.esm.js} +3 -3
- package/dist/{project-suspended-f34ad2ab.cjs.prod.js → project-suspended-e43ce7c2.cjs.prod.js} +3 -3
- package/dist/{quick-access-3466d7a2.esm.js → quick-access-1f9e885b.esm.js} +2 -2
- package/dist/{quick-access-2fa543f8.cjs.prod.js → quick-access-2e6398f7.cjs.prod.js} +2 -2
- package/dist/{quick-access-6b1fa05c.cjs.dev.js → quick-access-57979158.cjs.dev.js} +2 -2
- package/dist/{service-page-project-switcher-67fe65c2.esm.js → service-page-project-switcher-013404f5.esm.js} +1 -1
- package/dist/{service-page-project-switcher-daec9d91.cjs.prod.js → service-page-project-switcher-8efe2817.cjs.prod.js} +1 -1
- package/dist/{service-page-project-switcher-c320f886.cjs.dev.js → service-page-project-switcher-ef90ae95.cjs.dev.js} +1 -1
- package/package.json +34 -34
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +1 -1
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +1 -1
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var applicationEntryPoint = require('./application-entry-point-
|
|
3
|
+
var applicationEntryPoint = require('./application-entry-point-4b134bcb.cjs.dev.js');
|
|
4
4
|
var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
|
|
5
5
|
var _styled = require('@emotion/styled/base');
|
|
6
6
|
var _pt = require('prop-types');
|
|
@@ -828,7 +828,7 @@ var Redirector = function Redirector(props) {
|
|
|
828
828
|
var searchQuery = _objectSpread$e(_objectSpread$e({}, (_props$queryParams = props.queryParams) !== null && _props$queryParams !== void 0 ? _props$queryParams : {}), (_enhancedLocation$que = enhancedLocation.query) !== null && _enhancedLocation$que !== void 0 ? _enhancedLocation$que : {});
|
|
829
829
|
|
|
830
830
|
var targetUrlObject = new _URL__default['default'](originUrl);
|
|
831
|
-
targetUrlObject.pathname = props.to;
|
|
831
|
+
targetUrlObject.pathname = props.to || targetUrlObject.pathname;
|
|
832
832
|
targetUrlObject.search = "?".concat(qss.encode(searchQuery));
|
|
833
833
|
var targetUrl = targetUrlObject.toString();
|
|
834
834
|
react.useEffect(function () {
|
|
@@ -927,7 +927,11 @@ var OidcCallback = function OidcCallback(props) {
|
|
|
927
927
|
errorMessage = 'Invalid client session (missing sessionToken)';
|
|
928
928
|
}
|
|
929
929
|
} catch (err) {
|
|
930
|
-
|
|
930
|
+
if (err instanceof Error) {
|
|
931
|
+
errorMessage = err.message;
|
|
932
|
+
} else {
|
|
933
|
+
errorMessage = 'Unknown error';
|
|
934
|
+
}
|
|
931
935
|
}
|
|
932
936
|
|
|
933
937
|
if (!errorMessage) {
|
|
@@ -2523,19 +2527,19 @@ LocaleSwitcher.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
2523
2527
|
} : {};
|
|
2524
2528
|
|
|
2525
2529
|
var ProjectNotFound = /*#__PURE__*/react.lazy(function () {
|
|
2526
|
-
return Promise.resolve().then(function () { return require('./project-not-found-
|
|
2530
|
+
return Promise.resolve().then(function () { return require('./project-not-found-33567915.cjs.dev.js'
|
|
2527
2531
|
/* webpackChunkName: "project-not-found" */
|
|
2528
2532
|
); });
|
|
2529
2533
|
});
|
|
2530
2534
|
|
|
2531
2535
|
var ProjectExpired = /*#__PURE__*/react.lazy(function () {
|
|
2532
|
-
return Promise.resolve().then(function () { return require('./project-expired-
|
|
2536
|
+
return Promise.resolve().then(function () { return require('./project-expired-4a4db9c8.cjs.dev.js'
|
|
2533
2537
|
/* webpackChunkName: "project-expired" */
|
|
2534
2538
|
); });
|
|
2535
2539
|
});
|
|
2536
2540
|
|
|
2537
2541
|
var ProjectNotInitialized = /*#__PURE__*/react.lazy(function () {
|
|
2538
|
-
return Promise.resolve().then(function () { return require('./project-not-initialized-
|
|
2542
|
+
return Promise.resolve().then(function () { return require('./project-not-initialized-d396896e.cjs.dev.js'
|
|
2539
2543
|
/* webpackChunkName: "project-not-initialized" */
|
|
2540
2544
|
); });
|
|
2541
2545
|
});
|
|
@@ -2584,7 +2588,7 @@ var RedirectToProjectCreate = function RedirectToProjectCreate() {
|
|
|
2584
2588
|
RedirectToProjectCreate.displayName = 'RedirectToProjectCreate';
|
|
2585
2589
|
|
|
2586
2590
|
var ProjectSuspended = /*#__PURE__*/react.lazy(function () {
|
|
2587
|
-
return Promise.resolve().then(function () { return require('./project-suspended-
|
|
2591
|
+
return Promise.resolve().then(function () { return require('./project-suspended-61a15b65.cjs.dev.js'
|
|
2588
2592
|
/* webpackChunkName: "project-suspended" */
|
|
2589
2593
|
); });
|
|
2590
2594
|
});
|
|
@@ -3338,7 +3342,8 @@ var IconSwitcher = function IconSwitcher(_ref) {
|
|
|
3338
3342
|
|
|
3339
3343
|
default:
|
|
3340
3344
|
return jsxRuntime.jsx("img", {
|
|
3341
|
-
src: MissingImageSvg__default['default']
|
|
3345
|
+
src: MissingImageSvg__default['default'],
|
|
3346
|
+
alt: "missing icon"
|
|
3342
3347
|
});
|
|
3343
3348
|
}
|
|
3344
3349
|
};
|
|
@@ -3584,22 +3589,24 @@ MenuLabel.propTypes = {
|
|
|
3584
3589
|
};
|
|
3585
3590
|
|
|
3586
3591
|
var ApplicationMenu = function ApplicationMenu(props) {
|
|
3587
|
-
var _context6, _context7;
|
|
3592
|
+
var _context5, _context6, _context7;
|
|
3588
3593
|
|
|
3594
|
+
var isMainMenuRouteActive = Boolean(reactRouterDom.matchPath(props.location.pathname, {
|
|
3595
|
+
path: _concatInstanceProperty__default['default'](_context5 = "/".concat(props.projectKey, "/")).call(_context5, props.menu.uriPath),
|
|
3596
|
+
exact: false,
|
|
3597
|
+
strict: false
|
|
3598
|
+
}));
|
|
3589
3599
|
var hasSubmenu = _Array$isArray__default['default'](props.menu.submenu) && props.menu.submenu.length > 0;
|
|
3590
|
-
|
|
3591
|
-
|
|
3592
|
-
|
|
3593
|
-
|
|
3600
|
+
react.useEffect(function () {
|
|
3601
|
+
// On first render, check which menu is active for the current application and expand
|
|
3602
|
+
// the submenu automatically unless the all navbar is collapsed or there are no submenu links.
|
|
3603
|
+
if (props.isMenuOpen && isMainMenuRouteActive && hasSubmenu) {
|
|
3604
|
+
props.handleToggleItem();
|
|
3605
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
3594
3606
|
|
|
3595
|
-
|
|
3596
|
-
path: _concatInstanceProperty__default['default'](_context5 = "/".concat(props.projectKey, "/")).call(_context5, link),
|
|
3597
|
-
exact: false,
|
|
3598
|
-
strict: false
|
|
3599
|
-
});
|
|
3600
|
-
return Boolean(match);
|
|
3601
|
-
};
|
|
3607
|
+
}, [props.isMenuOpen]); // <-- (re)run this only when the all menu expands
|
|
3602
3608
|
|
|
3609
|
+
var namesOfMenuVisibilitiesOfAllSubmenus = hasSubmenu ? getMenuVisibilitiesOfSubmenus(props.menu) : getMenuVisibilityOfMainmenu(props.menu);
|
|
3603
3610
|
var isMainMenuItemALink = // 1. When the navbar is collapsed
|
|
3604
3611
|
!props.isMenuOpen || // 2. When there is no submenu
|
|
3605
3612
|
!hasSubmenu || // 3. When the submenu group is active/visible
|
|
@@ -3632,7 +3639,7 @@ var ApplicationMenu = function ApplicationMenu(props) {
|
|
|
3632
3639
|
children: jsxRuntime.jsx(IconSwitcher, {
|
|
3633
3640
|
icon: props.menu.icon,
|
|
3634
3641
|
size: "scale",
|
|
3635
|
-
color: getIconColor(props.isActive || isMainMenuRouteActive
|
|
3642
|
+
color: getIconColor(props.isActive || isMainMenuRouteActive, Boolean(props.menu.shouldRenderDivider))
|
|
3636
3643
|
})
|
|
3637
3644
|
}), jsxRuntime.jsx("div", {
|
|
3638
3645
|
className: styles.title,
|
|
@@ -3708,7 +3715,7 @@ ApplicationMenu.displayName = 'ApplicationMenu';
|
|
|
3708
3715
|
var NavBarLayout = /*#__PURE__*/react.forwardRef(function (props, ref) {
|
|
3709
3716
|
return jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
3710
3717
|
children: [jsxRuntime.jsx(react$2.Global, {
|
|
3711
|
-
styles: /*#__PURE__*/react$2.css(compiledStyles.global, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:NavBarLayout;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5hdmJhci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNmlCbUIiLCJmaWxlIjoibmF2YmFyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUm91dGVDb21wb25lbnRQcm9wcyB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHR5cGUge1xuICBUQXBwbGljYXRpb25Db250ZXh0LFxuICBUTm9ybWFsaXplZE1lbnVWaXNpYmlsaXRpZXMsXG4gIFROb3JtYWxpemVkUGVybWlzc2lvbnMsXG4gIFROb3JtYWxpemVkQWN0aW9uUmlnaHRzLFxuICBUTm9ybWFsaXplZERhdGFGZW5jZXMsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hQcm9qZWN0UXVlcnkgfSBmcm9tICcuLi8uLi90eXBlcy9nZW5lcmF0ZWQvbWMnO1xuaW1wb3J0IHR5cGUge1xuICBURGF0YUZlbmNlLFxuICBUQWN0aW9uUmlnaHQsXG4gIFRBcHBsaWNhdGlvbnNNZW51LFxuICBUTG9jYWxpemVkRmllbGQsXG4gIFROYXZiYXJNZW51LFxufSBmcm9tICcuLi8uLi90eXBlcy9nZW5lcmF0ZWQvcHJveHknO1xuXG5pbXBvcnQge1xuICBmb3J3YXJkUmVmLFxuICBNb3VzZUV2ZW50SGFuZGxlcixcbiAgUmVhY3ROb2RlLFxuICBTeW50aGV0aWNFdmVudCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlIH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgeyBOYXZMaW5rLCBtYXRjaFBhdGgsIHVzZUxvY2F0aW9uIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgeyBUb2dnbGVGZWF0dXJlIH0gZnJvbSAnQGZsb3BmbGlwL3JlYWN0LWJyb2FkY2FzdCc7XG5pbXBvcnQgeyBHbG9iYWwsIGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHtcbiAgQmFja0ljb24sXG4gIFRyZWVTdHJ1Y3R1cmVJY29uLFxuICBVc2VyRmlsbGVkSWNvbixcbiAgU3BlZWRvbWV0ZXJJY29uLFxuICBUYWdNdWx0aUljb24sXG4gIENhcnRJY29uLFxuICBCb3hJY29uLFxuICBHZWFySWNvbixcbiAgU3VwcG9ydEljb24sXG4gIFdvcmxkSWNvbixcbiAgSGVhcnRJY29uLFxuICBQYXBlcmNsaXBJY29uLFxuICBQbHVnaW5JY29uLFxuICBSb2NrZXRJY29uLFxuICBTdGFySWNvbixcbiAgQ29ubmVjdGVkU3F1YXJlSWNvbixcbiAgTGlzdFdpdGhTZWFyY2hJY29uLFxufSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgSW5saW5lU3ZnIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zL2lubGluZS1zdmcnO1xuaW1wb3J0IE1pc3NpbmdJbWFnZVN2ZyBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hc3NldHMvaW1hZ2VzL2RpYWdvbmFsLWxpbmUuc3ZnJztcbmltcG9ydCB7XG4gIE5PX1ZBTFVFX0ZBTExCQUNLLFxuICBTVVBQT1JUX1BPUlRBTF9VUkwsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBub3JtYWxpemVBbGxBcHBsaWVkQWN0aW9uUmlnaHRzLFxuICBub3JtYWxpemVBbGxBcHBsaWVkRGF0YUZlbmNlcyxcbiAgbm9ybWFsaXplQWxsQXBwbGllZE1lbnVWaXNpYmlsaXRpZXMsXG4gIG5vcm1hbGl6ZUFsbEFwcGxpZWRQZXJtaXNzaW9ucyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBSZXN0cmljdGVkQnlQZXJtaXNzaW9ucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3Blcm1pc3Npb25zJztcbmltcG9ydCB7IGxvY2F0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9jYXRpb24nO1xuaW1wb3J0IHsgR3RtQ29udGV4dCB9IGZyb20gJy4uL2d0bS1ib290ZXInO1xuaW1wb3J0IExvYWRpbmdQbGFjZWhvbGRlciBmcm9tICcuLi9sb2FkaW5nLXBsYWNlaG9sZGVyJztcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuL21lc3NhZ2VzJztcbmltcG9ydCB1c2VMb2FkaW5nTWVudUxheW91dEVmZmVjdCBmcm9tICcuL3VzZS1sb2FkaW5nLW1lbnUtbGF5b3V0LWVmZmVjdCc7XG5pbXBvcnQgdXNlTmF2YmFyU3RhdGVNYW5hZ2VyIGZyb20gJy4vdXNlLW5hdmJhci1zdGF0ZS1tYW5hZ2VyJztcbmltcG9ydCBub25OdWxsYWJsZSBmcm9tICcuL25vbi1udWxsYWJsZSc7XG4vLyBodHRwczovL2JhYmVsanMuaW8vYmxvZy8yMDE3LzA5LzExL3plcm8tY29uZmlnLXdpdGgtYmFiZWwtbWFjcm9zXG5pbXBvcnQgY29tcGlsZWRTdHlsZXMgZnJvbSAvKiBwcmV2YWwgKi8gJy4vbmF2YmFyLnN0eWxlcyc7XG5cbmNvbnN0IHN0eWxlcyA9IGNvbXBpbGVkU3R5bGVzLmpzb25NYXA7XG5cbnR5cGUgVFByb2plY3RQZXJtaXNzaW9ucyA9IHtcbiAgcGVybWlzc2lvbnM6IFROb3JtYWxpemVkUGVybWlzc2lvbnMgfCBudWxsO1xuICBhY3Rpb25SaWdodHM6IFROb3JtYWxpemVkQWN0aW9uUmlnaHRzIHwgbnVsbDtcbiAgZGF0YUZlbmNlczogVE5vcm1hbGl6ZWREYXRhRmVuY2VzIHwgbnVsbDtcbn07XG5cbi8qXG48RGF0YU1lbnUgZGF0YT17W119PlxuICA8TWVudUdyb3VwPlxuICAgIDxNZW51SXRlbT5cbiAgICAgIDxNZW51SXRlbUxpbmsgbGlua1RvPVwiL2Zvb1wiPihpY29uKSBQcm9kdWN0czwvTWVudUl0ZW1MaW5rPlxuICAgICAgPE1lbnVHcm91cD5cbiAgICAgICAgPE1lbnVJdGVtTGluayBsaW5rVG89XCIvZm9vL25ld1wiPkFkZCBwcm9kdWN0PC9NZW51SXRlbUxpbms+XG4gICAgICA8L01lbnVHcm91cD5cbiAgICA8L01lbnVJdGVtPlxuICA8L01lbnVHcm91cD5cbiAgPE1lbnVFeHBhbmRlci8+XG48L0RhdGFNZW51PlxuKi9cblxudHlwZSBJY29uUHJvcHMgPSBQYXJhbWV0ZXJzPHR5cGVvZiBCYWNrSWNvbj5bMF07XG50eXBlIEljb25Td2l0Y2hlclByb3BzID0geyBpY29uOiBzdHJpbmcgfSAmIEljb25Qcm9wcztcbi8vIFRoZSBpY29uIGlzIGV4cGVjdGVkIHRvIGJlIHRoZSBgc3ZnYCBkb2N1bWVudCBhcyBhIHN0cmluZy5cbi8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBwdXJwb3Nlcywgd2Ugc3RpbGwgc3VwcG9ydCB0aGUgbGVnYWN5IFwiaWNvbiBuYW1lXCIsXG4vLyB3aGljaCB3ZSB0aGVuIG1hcCB0byBvbmUgb2YgdGhlIHByZS1kZWZpbmVkIGljb25zLlxuLy8gRXZlbnR1YWxseSwgd2Ugd2FudCB0byBnZXQgcmlkIG9mIHRoaXMgXCJzd2l0Y2hcIiBsb2dpYy5cbmNvbnN0IEljb25Td2l0Y2hlciA9ICh7IGljb24sIC4uLmljb25Qcm9wcyB9OiBJY29uU3dpdGNoZXJQcm9wcykgPT4ge1xuICBpZiAoaWNvbi5pbmNsdWRlcygnPHN2ZycpKSB7XG4gICAgcmV0dXJuIDxJbmxpbmVTdmcgZGF0YT17aWNvbn0gey4uLmljb25Qcm9wc30gLz47XG4gIH1cbiAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZm9yIGFwcHMgdXNpbmcgdGhlIFwiaWNvbiBuYW1lXCIuXG4gIHN3aXRjaCAoaWNvbikge1xuICAgIC8vIEFwcGxpY2F0aW9uIGljb25zXG4gICAgY2FzZSAnVHJlZVN0cnVjdHVyZUljb24nOlxuICAgICAgcmV0dXJuIDxUcmVlU3RydWN0dXJlSWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICBjYXNlICdVc2VyRmlsbGVkSWNvbic6XG4gICAgICByZXR1cm4gPFVzZXJGaWxsZWRJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1NwZWVkb21ldGVySWNvbic6XG4gICAgICByZXR1cm4gPFNwZWVkb21ldGVySWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICBjYXNlICdUYWdNdWx0aUljb24nOlxuICAgICAgcmV0dXJuIDxUYWdNdWx0aUljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgY2FzZSAnQ2FydEljb24nOlxuICAgICAgcmV0dXJuIDxDYXJ0SWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICBjYXNlICdCb3hJY29uJzpcbiAgICAgIHJldHVybiA8Qm94SWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICBjYXNlICdHZWFySWNvbic6XG4gICAgICByZXR1cm4gPEdlYXJJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ0xpc3RXaXRoU2VhcmNoSWNvbic6XG4gICAgICByZXR1cm4gPExpc3RXaXRoU2VhcmNoSWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICAvLyBDdXN0b20gYXBwbGljYXRpb24gaWNvbnMgc2V0XG4gICAgY2FzZSAnSGVhcnRJY29uJzpcbiAgICAgIHJldHVybiA8SGVhcnRJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1BhcGVyY2xpcEljb24nOlxuICAgICAgcmV0dXJuIDxQYXBlcmNsaXBJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1BsdWdpbkljb24nOlxuICAgICAgcmV0dXJuIDxQbHVnaW5JY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1JvY2tldEljb24nOlxuICAgICAgcmV0dXJuIDxSb2NrZXRJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1N0YXJJY29uJzpcbiAgICAgIHJldHVybiA8U3Rhckljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgY2FzZSAnQ29ubmVjdGVkU3F1YXJlSWNvbic6XG4gICAgICByZXR1cm4gPENvbm5lY3RlZFNxdWFyZUljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgY2FzZSAnV29ybGRJY29uJzpcbiAgICAgIHJldHVybiA8V29ybGRJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gPGltZyBzcmM9e01pc3NpbmdJbWFnZVN2Z30gLz47XG4gIH1cbn07XG5JY29uU3dpdGNoZXIuZGlzcGxheU5hbWUgPSAnSWNvblN3aXRjaGVyJztcblxudHlwZSBNZW51RXhwYW5kZXJQcm9wcyA9IHtcbiAgaXNWaXNpYmxlOiBib29sZWFuO1xuICBvbkNsaWNrOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG59O1xuY29uc3QgTWVudUV4cGFuZGVyID0gKHByb3BzOiBNZW51RXhwYW5kZXJQcm9wcykgPT4gKFxuICA8bGlcbiAgICBrZXk9XCJleHBhbmRlclwiXG4gICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHN0eWxlc1snbGlzdC1pdGVtJ10sIHN0eWxlcy5leHBhbmRlciwge1xuICAgICAgW3N0eWxlcy5oaWRkZW5dOiAhcHJvcHMuaXNWaXNpYmxlLFxuICAgIH0pfVxuICA+XG4gICAgPGRpdlxuICAgICAgb25DbGljaz17cHJvcHMub25DbGlja31cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydleHBhbmQtaWNvbiddfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJtZW51LWV4cGFuZGVyXCJcbiAgICA+XG4gICAgICB7LypcbiAgICAgICAgRklYTUU6IGRlZmluZSBob3ZlciBlZmZlY3QuXG4gICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21tZXJjZXRvb2xzL21lcmNoYW50LWNlbnRlci1mcm9udGVuZC9pc3N1ZXMvMjIxNlxuICAgICAgKi99XG4gICAgICA8QmFja0ljb24gY29sb3I9XCJzdXJmYWNlXCIgc2l6ZT1cImJpZ1wiIC8+XG4gICAgPC9kaXY+XG4gIDwvbGk+XG4pO1xuTWVudUV4cGFuZGVyLmRpc3BsYXlOYW1lID0gJ01lbnVFeHBhbmRlcic7XG5cbnR5cGUgTWVudUdyb3VwUHJvcHMgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGxldmVsOiAxIHwgMjtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuY29uc3QgTWVudUdyb3VwID0gKHByb3BzOiBNZW51R3JvdXBQcm9wcykgPT4ge1xuICBjb25zdCBpc1N1Ymxpc3RBY3RpdmVXaGlsZUlzTWVudUV4cGFuZGVkID1cbiAgICBwcm9wcy5sZXZlbCA9PT0gMiAmJiBwcm9wcy5pc0FjdGl2ZSAmJiBwcm9wcy5pc0V4cGFuZGVkO1xuICBjb25zdCBpc1N1Ymxpc3RBY3RpdmVXaGlsZUlzTWVudUNvbGxhcHNlZCA9XG4gICAgcHJvcHMubGV2ZWwgPT09IDIgJiYgcHJvcHMuaXNBY3RpdmUgJiYgIXByb3BzLmlzRXhwYW5kZWQ7XG4gIHJldHVybiAoXG4gICAgPHVsXG4gICAgICBpZD17YCR7cHJvcHMuaWR9LWdyb3VwYH1cbiAgICAgIGRhdGEtdGVzdGlkPXtgJHtwcm9wcy5pZH0tZ3JvdXBgfVxuICAgICAgcm9sZT1cIm1lbnVcIlxuICAgICAgYXJpYS1leHBhbmRlZD17XG4gICAgICAgIGlzU3VibGlzdEFjdGl2ZVdoaWxlSXNNZW51RXhwYW5kZWQgfHxcbiAgICAgICAgaXNTdWJsaXN0QWN0aXZlV2hpbGVJc01lbnVDb2xsYXBzZWRcbiAgICAgIH1cbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgeyBbc3R5bGVzLmxpc3RdOiBwcm9wcy5sZXZlbCA9PT0gMSB9LFxuICAgICAgICB7IFtzdHlsZXMuc3VibGlzdF06IHByb3BzLmxldmVsID09PSAyIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzWydzdWJsaXN0LW5vLWNoaWxkcmVuJ11dOiBwcm9wcy5sZXZlbCA9PT0gMiAmJiAhcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzWydzdWJsaXN0LWV4cGFuZGVkX19hY3RpdmUnXV06XG4gICAgICAgICAgICBpc1N1Ymxpc3RBY3RpdmVXaGlsZUlzTWVudUV4cGFuZGVkLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlc1snc3VibGlzdC1jb2xsYXBzZWRfX2FjdGl2ZSddXTpcbiAgICAgICAgICAgIGlzU3VibGlzdEFjdGl2ZVdoaWxlSXNNZW51Q29sbGFwc2VkLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgW3N0eWxlcy5zdWJsaXN0X19pbmFjdGl2ZV06ICFpc1N1Ymxpc3RBY3RpdmVXaGlsZUlzTWVudUNvbGxhcHNlZCxcbiAgICAgICAgfVxuICAgICAgKX1cbiAgICA+XG4gICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgPC91bD5cbiAgKTtcbn07XG5NZW51R3JvdXAuZGlzcGxheU5hbWUgPSAnTWVudUdyb3VwJztcblxudHlwZSBNZW51SXRlbVByb3BzID0ge1xuICBoYXNTdWJtZW51OiBib29sZWFuO1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgaXNNZW51T3BlbjogYm9vbGVhbjtcbiAgb25DbGljazogTW91c2VFdmVudEhhbmRsZXI8SFRNTEVsZW1lbnQ+O1xuICBvbk1vdXNlRW50ZXI/OiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRWxlbWVudD47XG4gIG9uTW91c2VMZWF2ZT86IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50PjtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn07XG5jb25zdCBNZW51SXRlbSA9IChwcm9wczogTWVudUl0ZW1Qcm9wcykgPT4gKFxuICA8bGlcbiAgICByb2xlPVwibWVudS1pdGVtXCJcbiAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoc3R5bGVzWydsaXN0LWl0ZW0nXSwge1xuICAgICAgW3N0eWxlcy5pdGVtX19hY3RpdmVdOiBwcm9wcy5pc0FjdGl2ZSxcbiAgICAgIFtzdHlsZXNbJ2l0ZW1fbWVudS1jb2xsYXBzZWQnXV06ICFwcm9wcy5pc01lbnVPcGVuLFxuICAgICAgW3N0eWxlc1snaXRlbV9fbm8tc3VibWVudSddXTogIXByb3BzLmhhc1N1Ym1lbnUsXG4gICAgfSl9XG4gICAgb25DbGljaz17cHJvcHMub25DbGlja31cbiAgICBvbk1vdXNlRW50ZXI9e3Byb3BzLm9uTW91c2VFbnRlcn1cbiAgICBvbk1vdXNlTGVhdmU9e3Byb3BzLm9uTW91c2VMZWF2ZX1cbiAgPlxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2l0ZW0tbGluayddfT57cHJvcHMuY2hpbGRyZW59PC9kaXY+XG4gIDwvbGk+XG4pO1xuTWVudUl0ZW0uZGlzcGxheU5hbWUgPSAnTWVudUl0ZW0nO1xuXG50eXBlIE1lbnVJdGVtTGlua1Byb3BzID0ge1xuICBsaW5rVG8/OiBzdHJpbmc7XG4gIGV4YWN0TWF0Y2g6IGJvb2xlYW47XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIG9uQ2xpY2s/OiA8VHJhY2tGbj4oXG4gICAgZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxBbmNob3JFbGVtZW50PixcbiAgICB0cmFjazogVHJhY2tGblxuICApID0+IHZvaWQ7XG4gIHVzZUZ1bGxSZWRpcmVjdHNGb3JMaW5rcz86IGJvb2xlYW47XG59O1xuY29uc3QgbWVudUl0ZW1MaW5rRGVmYXVsdFByb3BzOiBQaWNrPE1lbnVJdGVtTGlua1Byb3BzLCAnZXhhY3RNYXRjaCc+ID0ge1xuICBleGFjdE1hdGNoOiBmYWxzZSxcbn07XG5jb25zdCBNZW51SXRlbUxpbmsgPSAocHJvcHM6IE1lbnVJdGVtTGlua1Byb3BzKSA9PiB7XG4gIGNvbnN0IGd0bVRyYWNraW5nID0gdXNlQ29udGV4dChHdG1Db250ZXh0KTtcbiAgY29uc3QgcmVkaXJlY3RUbyA9ICh0YXJnZXRVcmw6IHN0cmluZykgPT4gbG9jYXRpb24ucmVwbGFjZSh0YXJnZXRVcmwpO1xuICBpZiAocHJvcHMubGlua1RvKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxOYXZMaW5rXG4gICAgICAgIHRvPXtwcm9wcy5saW5rVG99XG4gICAgICAgIGV4YWN0PXtwcm9wcy5leGFjdE1hdGNofVxuICAgICAgICBhY3RpdmVDbGFzc05hbWU9e3N0eWxlcy5oaWdobGlnaHRlZH1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ3RleHQtbGluayddfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAocHJvcHMubGlua1RvICYmIHByb3BzLnVzZUZ1bGxSZWRpcmVjdHNGb3JMaW5rcykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJlZGlyZWN0VG8ocHJvcHMubGlua1RvKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHByb3BzLm9uQ2xpY2spIHtcbiAgICAgICAgICAgIGV2ZW50LnBlcnNpc3QoKTtcbiAgICAgICAgICAgIHByb3BzLm9uQ2xpY2s8dHlwZW9mIGd0bVRyYWNraW5nLnRyYWNrPihldmVudCwgZ3RtVHJhY2tpbmcudHJhY2spO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgPC9OYXZMaW5rPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIDw+e3Byb3BzLmNoaWxkcmVufTwvPjtcbn07XG5NZW51SXRlbUxpbmsuZGlzcGxheU5hbWUgPSAnTWVudUl0ZW1MaW5rJztcbk1lbnVJdGVtTGluay5kZWZhdWx0UHJvcHMgPSBtZW51SXRlbUxpbmtEZWZhdWx0UHJvcHM7XG5cbi8vIFRoaXMgY29tcG9uZW50IGp1c3QgcmVuZGVyIHR3byBkaXZzIHdpdGggYm9yZGVycyBpbiBvcmRlciB0byBkaWZmZXJlbnRpYXRlXG4vLyB0aGUgc2V0dGluZ3MgcGx1Z2luIGZyb20gdGhlIG90aGVyIG9uZXNcbmNvbnN0IE1lbnVJdGVtRGl2aWRlciA9ICgpID0+IChcbiAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZGl2aWRlci1maXJzdC1pdGVtJ119PlxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2RpdmlkZXItc2Vjb25kLWl0ZW0nXX0gLz5cbiAgPC9kaXY+XG4pO1xuTWVudUl0ZW1EaXZpZGVyLmRpc3BsYXlOYW1lID0gJ01lbnVJdGVtRGl2aWRlcic7XG5cbi8vIFRoaXMgY29tcG9uZW50IHdyYXBzIGA8UmVzdHJpY3RlZEJ5UGVybWlzc2lvbnM+YFxuLy8gYW5kIHRoZSBgPFRvZ2dsZUZlYXR1cmU+YCBjb21wb25lbnRzLiBIb3dldmVyLCBpdCdzIG5lY2Vzc2FyeSB0byBoYXZlIGl0IGFzXG4vLyB0aGUgYDxUb2dnbGVGZWF0dXJlPmAgd3JhcHBlciBzaG91bGQgYmUgcmVuZGVyZWQgb25seSBpZiB0aGUgYGZlYXR1cmVUb2dnbGVgXG4vLyBwcm9wIGlzIGRlZmluZWQuIFRoaXMgaXMgYmVjYXVzZSBgPFRvZ2dsZUZlYXR1cmU+YCB3aWxsIG5vdCByZW5kZXIgYW55XG4vLyBjaGlsZHJlbiBpZiB0aGUgZmxhZyBpcyBtaXNzaW5nL25vdCBmb3VuZC5cbmNvbnN0IGlzRXZlcnlNZW51VmlzaWJpbGl0eVNldFRvSGlkZGVuID0gKFxuICBtZW51VmlzaWJpbGl0aWVzPzogVE5vcm1hbGl6ZWRNZW51VmlzaWJpbGl0aWVzIHwgbnVsbCxcbiAgbmFtZXNPZk1lbnVWaXNpYmlsaXRpZXM/OiBzdHJpbmdbXVxuKSA9PlxuICBBcnJheS5pc0FycmF5KG5hbWVzT2ZNZW51VmlzaWJpbGl0aWVzKSAmJlxuICBuYW1lc09mTWVudVZpc2liaWxpdGllcy5sZW5ndGggPiAwICYmXG4gIG5hbWVzT2ZNZW51VmlzaWJpbGl0aWVzLmV2ZXJ5KFxuICAgIChuYW1lT2ZNZW51VmlzaWJpbGl0eSkgPT5cbiAgICAgIG1lbnVWaXNpYmlsaXRpZXMgJiYgbWVudVZpc2liaWxpdGllc1tuYW1lT2ZNZW51VmlzaWJpbGl0eV0gPT09IHRydWVcbiAgKTtcblxudHlwZSBSZXN0cmljdGVkTWVudUl0ZW1Qcm9wcyA9IHtcbiAgZmVhdHVyZVRvZ2dsZT86IHN0cmluZztcbiAgbmFtZXNPZk1lbnVWaXNpYmlsaXRpZXM/OiBzdHJpbmdbXTtcbiAgcHJvamVjdFBlcm1pc3Npb25zOiBUUHJvamVjdFBlcm1pc3Npb25zO1xuICBtZW51VmlzaWJpbGl0aWVzOiBUTm9ybWFsaXplZE1lbnVWaXNpYmlsaXRpZXMgfCBudWxsO1xuICBrZXlPZk1lbnVJdGVtOiBzdHJpbmc7XG4gIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgYWN0aW9uUmlnaHRzPzogVEFjdGlvblJpZ2h0W107XG4gIGRhdGFGZW5jZXM/OiBURGF0YUZlbmNlW107XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59O1xuY29uc3QgcmVzdHJpY3RlZE1lbnVJdGVtRGVmYXVsdFByb3BzOiBQaWNrPFxuICBSZXN0cmljdGVkTWVudUl0ZW1Qcm9wcyxcbiAgJ3Blcm1pc3Npb25zJ1xuPiA9IHtcbiAgcGVybWlzc2lvbnM6IFtdLFxufTtcbmNvbnN0IFJlc3RyaWN0ZWRNZW51SXRlbSA9IChwcm9wczogUmVzdHJpY3RlZE1lbnVJdGVtUHJvcHMpID0+IHtcbiAgLy8gTk9URTogQ3VzdG9tIGFwcGxpY2F0aW9uIGFyZSBhY3RpdmF0ZWQvZGVhY3RpdmF0ZWQgd2hpbGUgdGhlaXJcbiAgLy8gdmlzaWJpbGl0eSBpcyBub3QgY29udHJvbGxlZCB2aWEgYSB2aXNpYmlpbGl0eSBvdmVyd3JpdGUuXG4gIGlmIChcbiAgICBpc0V2ZXJ5TWVudVZpc2liaWxpdHlTZXRUb0hpZGRlbihcbiAgICAgIHByb3BzLm1lbnVWaXNpYmlsaXRpZXMsXG4gICAgICBwcm9wcy5uYW1lc09mTWVudVZpc2liaWxpdGllc1xuICAgIClcbiAgKVxuICAgIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHBlcm1pc3Npb25zV3JhcHBlciA9XG4gICAgKEFycmF5LmlzQXJyYXkocHJvcHMucGVybWlzc2lvbnMpICYmIHByb3BzLnBlcm1pc3Npb25zLmxlbmd0aCA+IDApIHx8XG4gICAgKEFycmF5LmlzQXJyYXkocHJvcHMuZGF0YUZlbmNlcykgJiYgcHJvcHMuZGF0YUZlbmNlcy5sZW5ndGggPiAwKSA/IChcbiAgICAgIDxSZXN0cmljdGVkQnlQZXJtaXNzaW9uc1xuICAgICAgICBwZXJtaXNzaW9ucz17cHJvcHMucGVybWlzc2lvbnN9XG4gICAgICAgIGFjdGlvblJpZ2h0cz17cHJvcHMuYWN0aW9uUmlnaHRzfVxuICAgICAgICBkYXRhRmVuY2VzPXtwcm9wcy5kYXRhRmVuY2VzfVxuICAgICAgICBzZWxlY3REYXRhRmVuY2VEYXRhPXsoZGVtYW5kZWREYXRhRmVuY2UpID0+IHtcbiAgICAgICAgICBzd2l0Y2ggKGRlbWFuZGVkRGF0YUZlbmNlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3N0b3JlJzpcbiAgICAgICAgICAgICAgcmV0dXJuIGRlbWFuZGVkRGF0YUZlbmNlLmFjdHVhbERhdGFGZW5jZVZhbHVlcztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgLy8gQWx3YXlzIGNoZWNrIHRoYXQgc29tZSBvZiB0aGUgZ2l2ZW4gcGVybWlzc2lvbnMgbWF0Y2guXG4gICAgICAgIHNob3VsZE1hdGNoU29tZVBlcm1pc3Npb25zPXt0cnVlfVxuICAgICAgICBwcm9qZWN0UGVybWlzc2lvbnM9e3Byb3BzLnByb2plY3RQZXJtaXNzaW9uc31cbiAgICAgID5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgPC9SZXN0cmljdGVkQnlQZXJtaXNzaW9ucz5cbiAgICApIDogKFxuICAgICAgPD57cHJvcHMuY2hpbGRyZW59PC8+XG4gICAgKTtcblxuICBpZiAocHJvcHMuZmVhdHVyZVRvZ2dsZSkge1xuICAgIHJldHVybiAoXG4gICAgICA8VG9nZ2xlRmVhdHVyZSBmbGFnPXtwcm9wcy5mZWF0dXJlVG9nZ2xlfT5cbiAgICAgICAge3Blcm1pc3Npb25zV3JhcHBlcn1cbiAgICAgIDwvVG9nZ2xlRmVhdHVyZT5cbiAgICApO1xuICB9XG4gIHJldHVybiBwZXJtaXNzaW9uc1dyYXBwZXI7XG59O1xuUmVzdHJpY3RlZE1lbnVJdGVtLmRpc3BsYXlOYW1lID0gJ1Jlc3RyaWN0ZWRNZW51SXRlbSc7XG5SZXN0cmljdGVkTWVudUl0ZW0uZGVmYXVsdFByb3BzID0gcmVzdHJpY3RlZE1lbnVJdGVtRGVmYXVsdFByb3BzO1xuXG5leHBvcnQgY29uc3QgZ2V0SWNvbkNvbG9yID0gKFxuICBpc0FjdGl2ZTogYm9vbGVhbixcbiAgaXNBbHRlcm5hdGl2ZVRoZW1lOiBib29sZWFuXG4pID0+IHtcbiAgaWYgKGlzQWN0aXZlKSByZXR1cm4gJ3ByaW1hcnk0MCc7XG4gIHJldHVybiBpc0FsdGVybmF0aXZlVGhlbWUgPyAnbmV1dHJhbDYwJyA6ICdzdXJmYWNlJztcbn07XG5cbmNvbnN0IGdldE1lbnVWaXNpYmlsaXRpZXNPZlN1Ym1lbnVzID0gKG1lbnU6IFROYXZiYXJNZW51KSA9PlxuICBtZW51LnN1Ym1lbnUubWFwKChzdWJtZW51KSA9PiBzdWJtZW51Lm1lbnVWaXNpYmlsaXR5KS5maWx0ZXIobm9uTnVsbGFibGUpO1xuY29uc3QgZ2V0TWVudVZpc2liaWxpdHlPZk1haW5tZW51ID0gKG1lbnU6IFROYXZiYXJNZW51KSA9PlxuICBtZW51Lm1lbnVWaXNpYmlsaXR5ID8gW21lbnUubWVudVZpc2liaWxpdHldIDogW107XG5cbnR5cGUgTWVudUxhYmVsUHJvcHMgPSB7XG4gIGxhYmVsQWxsTG9jYWxlczogVExvY2FsaXplZEZpZWxkW107XG4gIGRlZmF1bHRMYWJlbD86IHN0cmluZztcbiAgYXBwbGljYXRpb25Mb2NhbGU6IHN0cmluZztcbn07XG5jb25zdCBNZW51TGFiZWwgPSAocHJvcHM6IE1lbnVMYWJlbFByb3BzKSA9PiB7XG4gIGNvbnN0IGxvY2FsaXplZExhYmVsID0gcHJvcHMubGFiZWxBbGxMb2NhbGVzLmZpbmQoKGxvYykgPT5cbiAgICBwcm9wcy5hcHBsaWNhdGlvbkxvY2FsZS5zdGFydHNXaXRoKGxvYy5sb2NhbGUpXG4gICk7XG4gIGlmIChsb2NhbGl6ZWRMYWJlbCkgcmV0dXJuIDw+e2xvY2FsaXplZExhYmVsLnZhbHVlfTwvPjtcbiAgaWYgKHByb3BzLmRlZmF1bHRMYWJlbCkgcmV0dXJuIDw+e3Byb3BzLmRlZmF1bHRMYWJlbH08Lz47XG4gIHJldHVybiA8PntOT19WQUxVRV9GQUxMQkFDS308Lz47XG59O1xuXG50eXBlIEFwcGxpY2F0aW9uTWVudVByb3BzID0ge1xuICBsb2NhdGlvbjogUm91dGVDb21wb25lbnRQcm9wc1snbG9jYXRpb24nXTtcbiAgbWVudTogVE5hdmJhck1lbnUgJiB7XG4gICAgLy8gZGVyaXZlcyBmcm9tIGBwcm9qZWN0RXh0ZW5zaW9uc1F1ZXJ5Lmluc3RhbGxlZEFwcGxpY2F0aW9ucy5hcHBsaWNhdGlvbi5tZW51YFxuICAgIGRlZmF1bHRMYWJlbD86IHN0cmluZztcbiAgfTtcbiAgaXNBY3RpdmU6IGJvb2xlYW47XG4gIGlzTWVudU9wZW46IGJvb2xlYW47XG4gIHNob3VsZENsb3NlTWVudUZseTogTW91c2VFdmVudEhhbmRsZXI8SFRNTEVsZW1lbnQ+O1xuICBwcm9qZWN0UGVybWlzc2lvbnM6IFRQcm9qZWN0UGVybWlzc2lvbnM7XG4gIG1lbnVWaXNpYmlsaXRpZXM6IFROb3JtYWxpemVkTWVudVZpc2liaWxpdGllcyB8IG51bGw7XG4gIGhhbmRsZVRvZ2dsZUl0ZW06ICgpID0+IHZvaWQ7XG4gIGFwcGxpY2F0aW9uTG9jYWxlOiBzdHJpbmc7XG4gIHByb2plY3RLZXk6IHN0cmluZztcbiAgdXNlRnVsbFJlZGlyZWN0c0ZvckxpbmtzOiBib29sZWFuO1xuICBvbk1lbnVJdGVtQ2xpY2s/OiBNZW51SXRlbUxpbmtQcm9wc1snb25DbGljayddO1xufTtcbmNvbnN0IEFwcGxpY2F0aW9uTWVudSA9IChwcm9wczogQXBwbGljYXRpb25NZW51UHJvcHMpID0+IHtcbiAgY29uc3QgaGFzU3VibWVudSA9XG4gICAgQXJyYXkuaXNBcnJheShwcm9wcy5tZW51LnN1Ym1lbnUpICYmIHByb3BzLm1lbnUuc3VibWVudS5sZW5ndGggPiAwO1xuICBjb25zdCBuYW1lc09mTWVudVZpc2liaWxpdGllc09mQWxsU3VibWVudXMgPSBoYXNTdWJtZW51XG4gICAgPyBnZXRNZW51VmlzaWJpbGl0aWVzT2ZTdWJtZW51cyhwcm9wcy5tZW51KVxuICAgIDogZ2V0TWVudVZpc2liaWxpdHlPZk1haW5tZW51KHByb3BzLm1lbnUpO1xuXG4gIGNvbnN0IGlzTWFpbk1lbnVSb3V0ZUFjdGl2ZSA9IChsaW5rOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBtYXRjaCA9IG1hdGNoUGF0aChwcm9wcy5sb2NhdGlvbi5wYXRobmFtZSwge1xuICAgICAgcGF0aDogYC8ke3Byb3BzLnByb2plY3RLZXl9LyR7bGlua31gLFxuICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgc3RyaWN0OiBmYWxzZSxcbiAgICB9KTtcbiAgICByZXR1cm4gQm9vbGVhbihtYXRjaCk7XG4gIH07XG5cbiAgY29uc3QgaXNNYWluTWVudUl0ZW1BTGluayA9XG4gICAgLy8gMS4gV2hlbiB0aGUgbmF2YmFyIGlzIGNvbGxhcHNlZFxuICAgICFwcm9wcy5pc01lbnVPcGVuIHx8XG4gICAgLy8gMi4gV2hlbiB0aGVyZSBpcyBubyBzdWJtZW51XG4gICAgIWhhc1N1Ym1lbnUgfHxcbiAgICAvLyAzLiBXaGVuIHRoZSBzdWJtZW51IGdyb3VwIGlzIGFjdGl2ZS92aXNpYmxlXG4gICAgcHJvcHMuaXNBY3RpdmU7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3Byb3BzLm1lbnUuc2hvdWxkUmVuZGVyRGl2aWRlciAmJiA8TWVudUl0ZW1EaXZpZGVyIC8+fVxuXG4gICAgICA8UmVzdHJpY3RlZE1lbnVJdGVtXG4gICAgICAgIGtleT17cHJvcHMubWVudS5rZXl9XG4gICAgICAgIGtleU9mTWVudUl0ZW09e3Byb3BzLm1lbnUua2V5fVxuICAgICAgICBmZWF0dXJlVG9nZ2xlPXtwcm9wcy5tZW51LmZlYXR1cmVUb2dnbGV9XG4gICAgICAgIHBlcm1pc3Npb25zPXtwcm9wcy5tZW51LnBlcm1pc3Npb25zfVxuICAgICAgICBhY3Rpb25SaWdodHM9e3Byb3BzLm1lbnUuYWN0aW9uUmlnaHRzfVxuICAgICAgICBkYXRhRmVuY2VzPXtwcm9wcy5tZW51LmRhdGFGZW5jZXN9XG4gICAgICAgIHByb2plY3RQZXJtaXNzaW9ucz17cHJvcHMucHJvamVjdFBlcm1pc3Npb25zfVxuICAgICAgICBtZW51VmlzaWJpbGl0aWVzPXtwcm9wcy5tZW51VmlzaWJpbGl0aWVzfVxuICAgICAgICBuYW1lc09mTWVudVZpc2liaWxpdGllcz17bmFtZXNPZk1lbnVWaXNpYmlsaXRpZXNPZkFsbFN1Ym1lbnVzfVxuICAgICAgPlxuICAgICAgICA8TWVudUl0ZW1cbiAgICAgICAgICBoYXNTdWJtZW51PXtoYXNTdWJtZW51fVxuICAgICAgICAgIGlzQWN0aXZlPXtwcm9wcy5pc0FjdGl2ZX1cbiAgICAgICAgICBpc01lbnVPcGVuPXtwcm9wcy5pc01lbnVPcGVufVxuICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLmhhbmRsZVRvZ2dsZUl0ZW19XG4gICAgICAgICAgb25Nb3VzZUVudGVyPXtwcm9wcy5pc01lbnVPcGVuID8gdW5kZWZpbmVkIDogcHJvcHMuaGFuZGxlVG9nZ2xlSXRlbX1cbiAgICAgICAgICBvbk1vdXNlTGVhdmU9e3Byb3BzLmlzTWVudU9wZW4gPyB1bmRlZmluZWQgOiBwcm9wcy5zaG91bGRDbG9zZU1lbnVGbHl9XG4gICAgICAgID5cbiAgICAgICAgICA8TWVudUl0ZW1MaW5rXG4gICAgICAgICAgICBsaW5rVG89e1xuICAgICAgICAgICAgICBpc01haW5NZW51SXRlbUFMaW5rXG4gICAgICAgICAgICAgICAgPyBgLyR7cHJvcHMucHJvamVjdEtleX0vJHtwcm9wcy5tZW51LnVyaVBhdGh9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1c2VGdWxsUmVkaXJlY3RzRm9yTGlua3M9e3Byb3BzLnVzZUZ1bGxSZWRpcmVjdHNGb3JMaW5rc31cbiAgICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydpdGVtLWljb24tdGV4dCddfT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5pY29ufT5cbiAgICAgICAgICAgICAgICA8SWNvblN3aXRjaGVyXG4gICAgICAgICAgICAgICAgICBpY29uPXtwcm9wcy5tZW51Lmljb259XG4gICAgICAgICAgICAgICAgICBzaXplPVwic2NhbGVcIlxuICAgICAgICAgICAgICAgICAgY29sb3I9e2dldEljb25Db2xvcihcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuaXNBY3RpdmUgfHwgaXNNYWluTWVudVJvdXRlQWN0aXZlKHByb3BzLm1lbnUudXJpUGF0aCksXG4gICAgICAgICAgICAgICAgICAgIEJvb2xlYW4ocHJvcHMubWVudS5zaG91bGRSZW5kZXJEaXZpZGVyKVxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfVxuICAgICAgICAgICAgICAgIGFyaWEtb3ducz17YCR7cHJvcHMubWVudS5rZXl9LWdyb3VwYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxNZW51TGFiZWxcbiAgICAgICAgICAgICAgICAgIGxhYmVsQWxsTG9jYWxlcz17cHJvcHMubWVudS5sYWJlbEFsbExvY2FsZXN9XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0TGFiZWw9e3Byb3BzLm1lbnUuZGVmYXVsdExhYmVsfVxuICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e3Byb3BzLmFwcGxpY2F0aW9uTG9jYWxlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9NZW51SXRlbUxpbms+XG4gICAgICAgICAgPE1lbnVHcm91cFxuICAgICAgICAgICAgaWQ9e3Byb3BzLm1lbnUua2V5fVxuICAgICAgICAgICAgbGV2ZWw9ezJ9XG4gICAgICAgICAgICBpc0FjdGl2ZT17cHJvcHMuaXNBY3RpdmV9XG4gICAgICAgICAgICBpc0V4cGFuZGVkPXtwcm9wcy5pc01lbnVPcGVufVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtoYXNTdWJtZW51XG4gICAgICAgICAgICAgID8gcHJvcHMubWVudS5zdWJtZW51Lm1hcCgoc3VibWVudSkgPT4gKFxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRNZW51SXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e2Ake3Byb3BzLm1lbnUua2V5fS1zdWJtZW51LSR7c3VibWVudS5rZXl9YH1cbiAgICAgICAgICAgICAgICAgICAga2V5T2ZNZW51SXRlbT17c3VibWVudS5rZXl9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVUb2dnbGU9e3N1Ym1lbnUuZmVhdHVyZVRvZ2dsZX1cbiAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnM9e3N1Ym1lbnUucGVybWlzc2lvbnN9XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvblJpZ2h0cz17c3VibWVudS5hY3Rpb25SaWdodHN9XG4gICAgICAgICAgICAgICAgICAgIGRhdGFGZW5jZXM9e3N1Ym1lbnUuZGF0YUZlbmNlc31cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdFBlcm1pc3Npb25zPXtwcm9wcy5wcm9qZWN0UGVybWlzc2lvbnN9XG4gICAgICAgICAgICAgICAgICAgIG1lbnVWaXNpYmlsaXRpZXM9e3Byb3BzLm1lbnVWaXNpYmlsaXRpZXN9XG4gICAgICAgICAgICAgICAgICAgIG5hbWVzT2ZNZW51VmlzaWJpbGl0aWVzPXtcbiAgICAgICAgICAgICAgICAgICAgICBzdWJtZW51Lm1lbnVWaXNpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgICAgICA/IFtzdWJtZW51Lm1lbnVWaXNpYmlsaXR5XVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3NOYW1lPXtzdHlsZXNbJ3N1Ymxpc3QtaXRlbSddfT5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRleHR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1lbnVJdGVtTGlua1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rVG89e2AvJHtwcm9wcy5wcm9qZWN0S2V5fS8ke3N1Ym1lbnUudXJpUGF0aH1gfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdE1hdGNoPXt0cnVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VGdWxsUmVkaXJlY3RzRm9yTGlua3M9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnVzZUZ1bGxSZWRpcmVjdHNGb3JMaW5rc1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE1lbnVMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQWxsTG9jYWxlcz17c3VibWVudS5sYWJlbEFsbExvY2FsZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e3Byb3BzLmFwcGxpY2F0aW9uTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9NZW51SXRlbUxpbms+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICA6IG51bGx9XG4gICAgICAgICAgPC9NZW51R3JvdXA+XG4gICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICA8L1Jlc3RyaWN0ZWRNZW51SXRlbT5cbiAgICA8Lz5cbiAgKTtcbn07XG5BcHBsaWNhdGlvbk1lbnUuZGlzcGxheU5hbWUgPSAnQXBwbGljYXRpb25NZW51JztcblxudHlwZSBOYXZCYXJMYXlvdXRQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn07XG5jb25zdCBOYXZCYXJMYXlvdXQgPSBmb3J3YXJkUmVmPEhUTUxFbGVtZW50LCBOYXZCYXJMYXlvdXRQcm9wcz4oXG4gIChwcm9wcywgcmVmKSA9PiAoXG4gICAgPD5cbiAgICAgIDxHbG9iYWxcbiAgICAgICAgc3R5bGVzPXtjc3NgXG4gICAgICAgICAgJHtjb21waWxlZFN0eWxlcy5nbG9iYWx9XG4gICAgICAgIGB9XG4gICAgICAvPlxuICAgICAgPG5hdlxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2xlZnQtbmF2aWdhdGlvbiddfVxuICAgICAgICBkYXRhLXRlc3Q9XCJsZWZ0LW5hdmlnYXRpb25cIlxuICAgICAgICBkYXRhLXRlc3RpZD1cImxlZnQtbmF2aWdhdGlvblwiXG4gICAgICAgIGRhdGEtdHJhY2stY29tcG9uZW50PVwiTmF2aWdhdGlvblwiXG4gICAgICA+XG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgIDwvbmF2PlxuICAgIDwvPlxuICApXG4pO1xuTmF2QmFyTGF5b3V0LmRpc3BsYXlOYW1lID0gJ05hdkJhckxheW91dCc7XG5cbnR5cGUgTmF2YmFyUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBwbGljYXRpb25Mb2NhbGU6IHN0cmluZztcbiAgcHJvamVjdEtleTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgcHJvamVjdDogVEZldGNoUHJvamVjdFF1ZXJ5Wydwcm9qZWN0J107XG4gIG9uTWVudUl0ZW1DbGljaz86IE1lbnVJdGVtTGlua1Byb3BzWydvbkNsaWNrJ107XG4gIERFVl9PTkxZX19sb2FkTmF2YmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ25hdkJhciddPjtcbn07XG5jb25zdCBOYXZCYXIgPSA8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PihcbiAgcHJvcHM6IE5hdmJhclByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4pID0+IHtcbiAgY29uc3Qge1xuICAgIG5hdkJhck5vZGUsXG4gICAgaXNNZW51T3BlbixcbiAgICBpc0V4cGFuZGVyVmlzaWJsZSxcbiAgICBhY3RpdmVJdGVtSW5kZXgsXG4gICAgaGFuZGxlVG9nZ2xlSXRlbSxcbiAgICBoYW5kbGVUb2dnbGVNZW51LFxuICAgIHNob3VsZENsb3NlTWVudUZseSxcbiAgICBhbGxBcHBsaWNhdGlvbk5hdmJhck1lbnUsXG4gIH0gPSB1c2VOYXZiYXJTdGF0ZU1hbmFnZXIoe1xuICAgIGVudmlyb25tZW50OiBwcm9wcy5lbnZpcm9ubWVudCxcbiAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc6IHByb3BzLkRFVl9PTkxZX19sb2FkTmF2YmFyTWVudUNvbmZpZyxcbiAgfSk7XG4gIGNvbnN0IHVzZUZ1bGxSZWRpcmVjdHNGb3JMaW5rcyA9IEJvb2xlYW4oXG4gICAgcHJvcHMuZW52aXJvbm1lbnQudXNlRnVsbFJlZGlyZWN0c0ZvckxpbmtzXG4gICk7XG4gIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcblxuICBjb25zdCBwcm9qZWN0UGVybWlzc2lvbnM6IFRQcm9qZWN0UGVybWlzc2lvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBwZXJtaXNzaW9uczogbm9ybWFsaXplQWxsQXBwbGllZFBlcm1pc3Npb25zKFxuICAgICAgICBwcm9wcy5wcm9qZWN0Py5hbGxQZXJtaXNzaW9uc0ZvckFsbEFwcGxpY2F0aW9ucy5hbGxBcHBsaWVkUGVybWlzc2lvbnNcbiAgICAgICksXG4gICAgICBhY3Rpb25SaWdodHM6IG5vcm1hbGl6ZUFsbEFwcGxpZWRBY3Rpb25SaWdodHMoXG4gICAgICAgIHByb3BzLnByb2plY3Q/LmFsbFBlcm1pc3Npb25zRm9yQWxsQXBwbGljYXRpb25zLmFsbEFwcGxpZWRBY3Rpb25SaWdodHNcbiAgICAgICksXG4gICAgICBkYXRhRmVuY2VzOiBub3JtYWxpemVBbGxBcHBsaWVkRGF0YUZlbmNlcyhcbiAgICAgICAgcHJvcHMucHJvamVjdD8uYWxsUGVybWlzc2lvbnNGb3JBbGxBcHBsaWNhdGlvbnMuYWxsQXBwbGllZERhdGFGZW5jZXNcbiAgICAgICksXG4gICAgfSksXG4gICAgW3Byb3BzLnByb2plY3RdXG4gICk7XG4gIGNvbnN0IG1lbnVWaXNpYmlsaXRpZXMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBub3JtYWxpemVBbGxBcHBsaWVkTWVudVZpc2liaWxpdGllcyhcbiAgICAgICAgcHJvcHMucHJvamVjdD8uYWxsUGVybWlzc2lvbnNGb3JBbGxBcHBsaWNhdGlvbnNcbiAgICAgICAgICAuYWxsQXBwbGllZE1lbnVWaXNpYmlsaXRpZXNcbiAgICAgICksXG4gICAgW3Byb3BzLnByb2plY3RdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8TmF2QmFyTGF5b3V0IHJlZj17bmF2QmFyTm9kZX0+XG4gICAgICA8TWVudUdyb3VwIGlkPVwibWFpblwiIGxldmVsPXsxfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snc2Nyb2xsYWJsZS1tZW51J119PlxuICAgICAgICAgIHthbGxBcHBsaWNhdGlvbk5hdmJhck1lbnUubWFwKChtZW51KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZW51VHlwZSA9ICdzY3JvbGxhYmxlJztcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IGAke21lbnVUeXBlfS0ke21lbnUua2V5fWA7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8QXBwbGljYXRpb25NZW51XG4gICAgICAgICAgICAgICAga2V5PXttZW51LmtleX1cbiAgICAgICAgICAgICAgICBsb2NhdGlvbj17bG9jYXRpb259XG4gICAgICAgICAgICAgICAgbWVudT17bWVudX1cbiAgICAgICAgICAgICAgICBpc0FjdGl2ZT17YWN0aXZlSXRlbUluZGV4ID09PSBpdGVtSW5kZXh9XG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlSXRlbT17KCkgPT4gaGFuZGxlVG9nZ2xlSXRlbShpdGVtSW5kZXgpfVxuICAgICAgICAgICAgICAgIGlzTWVudU9wZW49e2lzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgc2hvdWxkQ2xvc2VNZW51Rmx5PXtzaG91bGRDbG9zZU1lbnVGbHl9XG4gICAgICAgICAgICAgICAgcHJvamVjdFBlcm1pc3Npb25zPXtwcm9qZWN0UGVybWlzc2lvbnN9XG4gICAgICAgICAgICAgICAgbWVudVZpc2liaWxpdGllcz17bWVudVZpc2liaWxpdGllc31cbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17cHJvcHMuYXBwbGljYXRpb25Mb2NhbGV9XG4gICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvcHMucHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICB1c2VGdWxsUmVkaXJlY3RzRm9yTGlua3M9e3VzZUZ1bGxSZWRpcmVjdHNGb3JMaW5rc31cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydmaXhlZC1tZW51J119PlxuICAgICAgICAgIDxNZW51SXRlbVxuICAgICAgICAgICAgaGFzU3VibWVudT17ZmFsc2V9XG4gICAgICAgICAgICBpc0FjdGl2ZT17ZmFsc2V9XG4gICAgICAgICAgICBpc01lbnVPcGVuPXtpc01lbnVPcGVufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVJdGVtKCdmaXhlZC1zdXBwb3J0Jyk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgb25Nb3VzZUVudGVyPXtcbiAgICAgICAgICAgICAgaXNNZW51T3BlbiA/IHVuZGVmaW5lZCA6ICgpID0+IGhhbmRsZVRvZ2dsZUl0ZW0oJ2ZpeGVkLXN1cHBvcnQnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXtpc01lbnVPcGVuID8gdW5kZWZpbmVkIDogc2hvdWxkQ2xvc2VNZW51Rmx5fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGhyZWY9e1NVUFBPUlRfUE9SVEFMX1VSTH1cbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ2l0ZW0taWNvbi10ZXh0J119PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuaWNvbn0+XG4gICAgICAgICAgICAgICAgICA8U3VwcG9ydEljb25cbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNjYWxlXCJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9e2dldEljb25Db2xvcihcbiAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVJdGVtSW5kZXggPT09ICdmaXhlZC1zdXBwb3J0JyxcbiAgICAgICAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzWydOYXZCYXIuTUNTdXBwb3J0LnRpdGxlJ119IC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgPE1lbnVFeHBhbmRlclxuICAgICAgICAgICAgaXNWaXNpYmxlPXtpc0V4cGFuZGVyVmlzaWJsZX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZU1lbnV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L01lbnVHcm91cD5cbiAgICA8L05hdkJhckxheW91dD5cbiAgKTtcbn07XG5OYXZCYXIuZGlzcGxheU5hbWUgPSAnTmF2QmFyJztcblxuZXhwb3J0IGRlZmF1bHQgTmF2QmFyO1xuXG5leHBvcnQgY29uc3QgTG9hZGluZ05hdkJhciA9ICgpID0+IHtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgdXNlTG9hZGluZ01lbnVMYXlvdXRFZmZlY3QoKTtcbiAgcmV0dXJuIChcbiAgICA8TmF2QmFyTGF5b3V0IHJlZj17cmVmfT5cbiAgICAgIDxNZW51R3JvdXAgaWQ9XCJtYWluXCIgbGV2ZWw9ezF9PlxuICAgICAgICA8PlxuICAgICAgICAgIHtBcnJheS5mcm9tKG5ldyBBcnJheSg1KSkubWFwKChfLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgIGhhc1N1Ym1lbnU9e2ZhbHNlfVxuICAgICAgICAgICAgICBpc01lbnVPcGVuPXtmYWxzZX1cbiAgICAgICAgICAgICAgaXNBY3RpdmU9e2ZhbHNlfVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB1bmRlZmluZWR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1snbG9hZGluZy1kb3QtY29udGFpbmVyJ119XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2Bkb3QtY29udGFpbmVyLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMb2FkaW5nUGxhY2Vob2xkZXIgc2hhcGU9XCJkb3RcIiBzaXplPVwibVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC8+XG4gICAgICA8L01lbnVHcm91cD5cbiAgICA8L05hdkJhckxheW91dD5cbiAgKTtcbn07XG5Mb2FkaW5nTmF2QmFyLmRpc3BsYXlOYW1lID0gJ0xvYWRpbmdOYXZCYXInO1xuIl19 */")
|
|
3718
|
+
styles: /*#__PURE__*/react$2.css(compiledStyles.global, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:NavBarLayout;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5hdmJhci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc2pCbUIiLCJmaWxlIjoibmF2YmFyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUm91dGVDb21wb25lbnRQcm9wcyB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHR5cGUge1xuICBUQXBwbGljYXRpb25Db250ZXh0LFxuICBUTm9ybWFsaXplZE1lbnVWaXNpYmlsaXRpZXMsXG4gIFROb3JtYWxpemVkUGVybWlzc2lvbnMsXG4gIFROb3JtYWxpemVkQWN0aW9uUmlnaHRzLFxuICBUTm9ybWFsaXplZERhdGFGZW5jZXMsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hQcm9qZWN0UXVlcnkgfSBmcm9tICcuLi8uLi90eXBlcy9nZW5lcmF0ZWQvbWMnO1xuaW1wb3J0IHR5cGUge1xuICBURGF0YUZlbmNlLFxuICBUQWN0aW9uUmlnaHQsXG4gIFRBcHBsaWNhdGlvbnNNZW51LFxuICBUTG9jYWxpemVkRmllbGQsXG4gIFROYXZiYXJNZW51LFxufSBmcm9tICcuLi8uLi90eXBlcy9nZW5lcmF0ZWQvcHJveHknO1xuXG5pbXBvcnQge1xuICBmb3J3YXJkUmVmLFxuICBNb3VzZUV2ZW50SGFuZGxlcixcbiAgUmVhY3ROb2RlLFxuICBTeW50aGV0aWNFdmVudCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEZvcm1hdHRlZE1lc3NhZ2UgfSBmcm9tICdyZWFjdC1pbnRsJztcbmltcG9ydCB7IE5hdkxpbmssIG1hdGNoUGF0aCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IFRvZ2dsZUZlYXR1cmUgfSBmcm9tICdAZmxvcGZsaXAvcmVhY3QtYnJvYWRjYXN0JztcbmltcG9ydCB7IEdsb2JhbCwgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQge1xuICBCYWNrSWNvbixcbiAgVHJlZVN0cnVjdHVyZUljb24sXG4gIFVzZXJGaWxsZWRJY29uLFxuICBTcGVlZG9tZXRlckljb24sXG4gIFRhZ011bHRpSWNvbixcbiAgQ2FydEljb24sXG4gIEJveEljb24sXG4gIEdlYXJJY29uLFxuICBTdXBwb3J0SWNvbixcbiAgV29ybGRJY29uLFxuICBIZWFydEljb24sXG4gIFBhcGVyY2xpcEljb24sXG4gIFBsdWdpbkljb24sXG4gIFJvY2tldEljb24sXG4gIFN0YXJJY29uLFxuICBDb25uZWN0ZWRTcXVhcmVJY29uLFxuICBMaXN0V2l0aFNlYXJjaEljb24sXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCBJbmxpbmVTdmcgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMvaW5saW5lLXN2Zyc7XG5pbXBvcnQgTWlzc2luZ0ltYWdlU3ZnIGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2Fzc2V0cy9pbWFnZXMvZGlhZ29uYWwtbGluZS5zdmcnO1xuaW1wb3J0IHtcbiAgTk9fVkFMVUVfRkFMTEJBQ0ssXG4gIFNVUFBPUlRfUE9SVEFMX1VSTCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIG5vcm1hbGl6ZUFsbEFwcGxpZWRBY3Rpb25SaWdodHMsXG4gIG5vcm1hbGl6ZUFsbEFwcGxpZWREYXRhRmVuY2VzLFxuICBub3JtYWxpemVBbGxBcHBsaWVkTWVudVZpc2liaWxpdGllcyxcbiAgbm9ybWFsaXplQWxsQXBwbGllZFBlcm1pc3Npb25zLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1zaGVsbC1jb25uZWN0b3JzJztcbmltcG9ydCB7IFJlc3RyaWN0ZWRCeVBlcm1pc3Npb25zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgbG9jYXRpb24gfSBmcm9tICcuLi8uLi91dGlscy9sb2NhdGlvbic7XG5pbXBvcnQgeyBHdG1Db250ZXh0IH0gZnJvbSAnLi4vZ3RtLWJvb3Rlcic7XG5pbXBvcnQgTG9hZGluZ1BsYWNlaG9sZGVyIGZyb20gJy4uL2xvYWRpbmctcGxhY2Vob2xkZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4vbWVzc2FnZXMnO1xuaW1wb3J0IHVzZUxvYWRpbmdNZW51TGF5b3V0RWZmZWN0IGZyb20gJy4vdXNlLWxvYWRpbmctbWVudS1sYXlvdXQtZWZmZWN0JztcbmltcG9ydCB1c2VOYXZiYXJTdGF0ZU1hbmFnZXIgZnJvbSAnLi91c2UtbmF2YmFyLXN0YXRlLW1hbmFnZXInO1xuaW1wb3J0IG5vbk51bGxhYmxlIGZyb20gJy4vbm9uLW51bGxhYmxlJztcbi8vIGh0dHBzOi8vYmFiZWxqcy5pby9ibG9nLzIwMTcvMDkvMTEvemVyby1jb25maWctd2l0aC1iYWJlbC1tYWNyb3NcbmltcG9ydCBjb21waWxlZFN0eWxlcyBmcm9tIC8qIHByZXZhbCAqLyAnLi9uYXZiYXIuc3R5bGVzJztcblxuY29uc3Qgc3R5bGVzID0gY29tcGlsZWRTdHlsZXMuanNvbk1hcDtcblxudHlwZSBUUHJvamVjdFBlcm1pc3Npb25zID0ge1xuICBwZXJtaXNzaW9uczogVE5vcm1hbGl6ZWRQZXJtaXNzaW9ucyB8IG51bGw7XG4gIGFjdGlvblJpZ2h0czogVE5vcm1hbGl6ZWRBY3Rpb25SaWdodHMgfCBudWxsO1xuICBkYXRhRmVuY2VzOiBUTm9ybWFsaXplZERhdGFGZW5jZXMgfCBudWxsO1xufTtcblxuLypcbjxEYXRhTWVudSBkYXRhPXtbXX0+XG4gIDxNZW51R3JvdXA+XG4gICAgPE1lbnVJdGVtPlxuICAgICAgPE1lbnVJdGVtTGluayBsaW5rVG89XCIvZm9vXCI+KGljb24pIFByb2R1Y3RzPC9NZW51SXRlbUxpbms+XG4gICAgICA8TWVudUdyb3VwPlxuICAgICAgICA8TWVudUl0ZW1MaW5rIGxpbmtUbz1cIi9mb28vbmV3XCI+QWRkIHByb2R1Y3Q8L01lbnVJdGVtTGluaz5cbiAgICAgIDwvTWVudUdyb3VwPlxuICAgIDwvTWVudUl0ZW0+XG4gIDwvTWVudUdyb3VwPlxuICA8TWVudUV4cGFuZGVyLz5cbjwvRGF0YU1lbnU+XG4qL1xuXG50eXBlIEljb25Qcm9wcyA9IFBhcmFtZXRlcnM8dHlwZW9mIEJhY2tJY29uPlswXTtcbnR5cGUgSWNvblN3aXRjaGVyUHJvcHMgPSB7IGljb246IHN0cmluZyB9ICYgSWNvblByb3BzO1xuLy8gVGhlIGljb24gaXMgZXhwZWN0ZWQgdG8gYmUgdGhlIGBzdmdgIGRvY3VtZW50IGFzIGEgc3RyaW5nLlxuLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHB1cnBvc2VzLCB3ZSBzdGlsbCBzdXBwb3J0IHRoZSBsZWdhY3kgXCJpY29uIG5hbWVcIixcbi8vIHdoaWNoIHdlIHRoZW4gbWFwIHRvIG9uZSBvZiB0aGUgcHJlLWRlZmluZWQgaWNvbnMuXG4vLyBFdmVudHVhbGx5LCB3ZSB3YW50IHRvIGdldCByaWQgb2YgdGhpcyBcInN3aXRjaFwiIGxvZ2ljLlxuY29uc3QgSWNvblN3aXRjaGVyID0gKHsgaWNvbiwgLi4uaWNvblByb3BzIH06IEljb25Td2l0Y2hlclByb3BzKSA9PiB7XG4gIGlmIChpY29uLmluY2x1ZGVzKCc8c3ZnJykpIHtcbiAgICByZXR1cm4gPElubGluZVN2ZyBkYXRhPXtpY29ufSB7Li4uaWNvblByb3BzfSAvPjtcbiAgfVxuICAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgYXBwcyB1c2luZyB0aGUgXCJpY29uIG5hbWVcIi5cbiAgc3dpdGNoIChpY29uKSB7XG4gICAgLy8gQXBwbGljYXRpb24gaWNvbnNcbiAgICBjYXNlICdUcmVlU3RydWN0dXJlSWNvbic6XG4gICAgICByZXR1cm4gPFRyZWVTdHJ1Y3R1cmVJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1VzZXJGaWxsZWRJY29uJzpcbiAgICAgIHJldHVybiA8VXNlckZpbGxlZEljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgY2FzZSAnU3BlZWRvbWV0ZXJJY29uJzpcbiAgICAgIHJldHVybiA8U3BlZWRvbWV0ZXJJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ1RhZ011bHRpSWNvbic6XG4gICAgICByZXR1cm4gPFRhZ011bHRpSWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICBjYXNlICdDYXJ0SWNvbic6XG4gICAgICByZXR1cm4gPENhcnRJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ0JveEljb24nOlxuICAgICAgcmV0dXJuIDxCb3hJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIGNhc2UgJ0dlYXJJY29uJzpcbiAgICAgIHJldHVybiA8R2Vhckljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgY2FzZSAnTGlzdFdpdGhTZWFyY2hJY29uJzpcbiAgICAgIHJldHVybiA8TGlzdFdpdGhTZWFyY2hJY29uIHsuLi5pY29uUHJvcHN9IC8+O1xuICAgIC8vIEN1c3RvbSBhcHBsaWNhdGlvbiBpY29ucyBzZXRcbiAgICBjYXNlICdIZWFydEljb24nOlxuICAgICAgcmV0dXJuIDxIZWFydEljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgY2FzZSAnUGFwZXJjbGlwSWNvbic6XG4gICAgICByZXR1cm4gPFBhcGVyY2xpcEljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgY2FzZSAnUGx1Z2luSWNvbic6XG4gICAgICByZXR1cm4gPFBsdWdpbkljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgY2FzZSAnUm9ja2V0SWNvbic6XG4gICAgICByZXR1cm4gPFJvY2tldEljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgY2FzZSAnU3Rhckljb24nOlxuICAgICAgcmV0dXJuIDxTdGFySWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICBjYXNlICdDb25uZWN0ZWRTcXVhcmVJY29uJzpcbiAgICAgIHJldHVybiA8Q29ubmVjdGVkU3F1YXJlSWNvbiB7Li4uaWNvblByb3BzfSAvPjtcbiAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBjYXNlICdXb3JsZEljb24nOlxuICAgICAgcmV0dXJuIDxXb3JsZEljb24gey4uLmljb25Qcm9wc30gLz47XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiA8aW1nIHNyYz17TWlzc2luZ0ltYWdlU3ZnfSBhbHQ9XCJtaXNzaW5nIGljb25cIiAvPjtcbiAgfVxufTtcbkljb25Td2l0Y2hlci5kaXNwbGF5TmFtZSA9ICdJY29uU3dpdGNoZXInO1xuXG50eXBlIE1lbnVFeHBhbmRlclByb3BzID0ge1xuICBpc1Zpc2libGU6IGJvb2xlYW47XG4gIG9uQ2xpY2s6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50Pjtcbn07XG5jb25zdCBNZW51RXhwYW5kZXIgPSAocHJvcHM6IE1lbnVFeHBhbmRlclByb3BzKSA9PiAoXG4gIDxsaVxuICAgIGtleT1cImV4cGFuZGVyXCJcbiAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoc3R5bGVzWydsaXN0LWl0ZW0nXSwgc3R5bGVzLmV4cGFuZGVyLCB7XG4gICAgICBbc3R5bGVzLmhpZGRlbl06ICFwcm9wcy5pc1Zpc2libGUsXG4gICAgfSl9XG4gID5cbiAgICA8ZGl2XG4gICAgICBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2V4cGFuZC1pY29uJ119XG4gICAgICBkYXRhLXRlc3RpZD1cIm1lbnUtZXhwYW5kZXJcIlxuICAgID5cbiAgICAgIHsvKlxuICAgICAgICBGSVhNRTogZGVmaW5lIGhvdmVyIGVmZmVjdC5cbiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2NvbW1lcmNldG9vbHMvbWVyY2hhbnQtY2VudGVyLWZyb250ZW5kL2lzc3Vlcy8yMjE2XG4gICAgICAqL31cbiAgICAgIDxCYWNrSWNvbiBjb2xvcj1cInN1cmZhY2VcIiBzaXplPVwiYmlnXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9saT5cbik7XG5NZW51RXhwYW5kZXIuZGlzcGxheU5hbWUgPSAnTWVudUV4cGFuZGVyJztcblxudHlwZSBNZW51R3JvdXBQcm9wcyA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbGV2ZWw6IDEgfCAyO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5jb25zdCBNZW51R3JvdXAgPSAocHJvcHM6IE1lbnVHcm91cFByb3BzKSA9PiB7XG4gIGNvbnN0IGlzU3VibGlzdEFjdGl2ZVdoaWxlSXNNZW51RXhwYW5kZWQgPVxuICAgIHByb3BzLmxldmVsID09PSAyICYmIHByb3BzLmlzQWN0aXZlICYmIHByb3BzLmlzRXhwYW5kZWQ7XG4gIGNvbnN0IGlzU3VibGlzdEFjdGl2ZVdoaWxlSXNNZW51Q29sbGFwc2VkID1cbiAgICBwcm9wcy5sZXZlbCA9PT0gMiAmJiBwcm9wcy5pc0FjdGl2ZSAmJiAhcHJvcHMuaXNFeHBhbmRlZDtcbiAgcmV0dXJuIChcbiAgICA8dWxcbiAgICAgIGlkPXtgJHtwcm9wcy5pZH0tZ3JvdXBgfVxuICAgICAgZGF0YS10ZXN0aWQ9e2Ake3Byb3BzLmlkfS1ncm91cGB9XG4gICAgICByb2xlPVwibWVudVwiXG4gICAgICBhcmlhLWV4cGFuZGVkPXtcbiAgICAgICAgaXNTdWJsaXN0QWN0aXZlV2hpbGVJc01lbnVFeHBhbmRlZCB8fFxuICAgICAgICBpc1N1Ymxpc3RBY3RpdmVXaGlsZUlzTWVudUNvbGxhcHNlZFxuICAgICAgfVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKFxuICAgICAgICB7IFtzdHlsZXMubGlzdF06IHByb3BzLmxldmVsID09PSAxIH0sXG4gICAgICAgIHsgW3N0eWxlcy5zdWJsaXN0XTogcHJvcHMubGV2ZWwgPT09IDIgfSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXNbJ3N1Ymxpc3Qtbm8tY2hpbGRyZW4nXV06IHByb3BzLmxldmVsID09PSAyICYmICFwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFtzdHlsZXNbJ3N1Ymxpc3QtZXhwYW5kZWRfX2FjdGl2ZSddXTpcbiAgICAgICAgICAgIGlzU3VibGlzdEFjdGl2ZVdoaWxlSXNNZW51RXhwYW5kZWQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzWydzdWJsaXN0LWNvbGxhcHNlZF9fYWN0aXZlJ11dOlxuICAgICAgICAgICAgaXNTdWJsaXN0QWN0aXZlV2hpbGVJc01lbnVDb2xsYXBzZWQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBbc3R5bGVzLnN1Ymxpc3RfX2luYWN0aXZlXTogIWlzU3VibGlzdEFjdGl2ZVdoaWxlSXNNZW51Q29sbGFwc2VkLFxuICAgICAgICB9XG4gICAgICApfVxuICAgID5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L3VsPlxuICApO1xufTtcbk1lbnVHcm91cC5kaXNwbGF5TmFtZSA9ICdNZW51R3JvdXAnO1xuXG50eXBlIE1lbnVJdGVtUHJvcHMgPSB7XG4gIGhhc1N1Ym1lbnU6IGJvb2xlYW47XG4gIGlzQWN0aXZlOiBib29sZWFuO1xuICBpc01lbnVPcGVuOiBib29sZWFuO1xuICBvbkNsaWNrOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRWxlbWVudD47XG4gIG9uTW91c2VFbnRlcj86IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50PjtcbiAgb25Nb3VzZUxlYXZlPzogTW91c2VFdmVudEhhbmRsZXI8SFRNTEVsZW1lbnQ+O1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufTtcbmNvbnN0IE1lbnVJdGVtID0gKHByb3BzOiBNZW51SXRlbVByb3BzKSA9PiAoXG4gIDxsaVxuICAgIHJvbGU9XCJtZW51LWl0ZW1cIlxuICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhzdHlsZXNbJ2xpc3QtaXRlbSddLCB7XG4gICAgICBbc3R5bGVzLml0ZW1fX2FjdGl2ZV06IHByb3BzLmlzQWN0aXZlLFxuICAgICAgW3N0eWxlc1snaXRlbV9tZW51LWNvbGxhcHNlZCddXTogIXByb3BzLmlzTWVudU9wZW4sXG4gICAgICBbc3R5bGVzWydpdGVtX19uby1zdWJtZW51J11dOiAhcHJvcHMuaGFzU3VibWVudSxcbiAgICB9KX1cbiAgICBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfVxuICAgIG9uTW91c2VFbnRlcj17cHJvcHMub25Nb3VzZUVudGVyfVxuICAgIG9uTW91c2VMZWF2ZT17cHJvcHMub25Nb3VzZUxlYXZlfVxuICA+XG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snaXRlbS1saW5rJ119Pntwcm9wcy5jaGlsZHJlbn08L2Rpdj5cbiAgPC9saT5cbik7XG5NZW51SXRlbS5kaXNwbGF5TmFtZSA9ICdNZW51SXRlbSc7XG5cbnR5cGUgTWVudUl0ZW1MaW5rUHJvcHMgPSB7XG4gIGxpbmtUbz86IHN0cmluZztcbiAgZXhhY3RNYXRjaDogYm9vbGVhbjtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgb25DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgdXNlRnVsbFJlZGlyZWN0c0ZvckxpbmtzPzogYm9vbGVhbjtcbn07XG5jb25zdCBtZW51SXRlbUxpbmtEZWZhdWx0UHJvcHM6IFBpY2s8TWVudUl0ZW1MaW5rUHJvcHMsICdleGFjdE1hdGNoJz4gPSB7XG4gIGV4YWN0TWF0Y2g6IGZhbHNlLFxufTtcbmNvbnN0IE1lbnVJdGVtTGluayA9IChwcm9wczogTWVudUl0ZW1MaW5rUHJvcHMpID0+IHtcbiAgY29uc3QgZ3RtVHJhY2tpbmcgPSB1c2VDb250ZXh0KEd0bUNvbnRleHQpO1xuICBjb25zdCByZWRpcmVjdFRvID0gKHRhcmdldFVybDogc3RyaW5nKSA9PiBsb2NhdGlvbi5yZXBsYWNlKHRhcmdldFVybCk7XG4gIGlmIChwcm9wcy5saW5rVG8pIHtcbiAgICByZXR1cm4gKFxuICAgICAgPE5hdkxpbmtcbiAgICAgICAgdG89e3Byb3BzLmxpbmtUb31cbiAgICAgICAgZXhhY3Q9e3Byb3BzLmV4YWN0TWF0Y2h9XG4gICAgICAgIGFjdGl2ZUNsYXNzTmFtZT17c3R5bGVzLmhpZ2hsaWdodGVkfVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1sndGV4dC1saW5rJ119XG4gICAgICAgIG9uQ2xpY2s9eyhldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChwcm9wcy5saW5rVG8gJiYgcHJvcHMudXNlRnVsbFJlZGlyZWN0c0ZvckxpbmtzKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmVkaXJlY3RUbyhwcm9wcy5saW5rVG8pO1xuICAgICAgICAgIH0gZWxzZSBpZiAocHJvcHMub25DbGljaykge1xuICAgICAgICAgICAgZXZlbnQucGVyc2lzdCgpO1xuICAgICAgICAgICAgcHJvcHMub25DbGljazx0eXBlb2YgZ3RtVHJhY2tpbmcudHJhY2s+KGV2ZW50LCBndG1UcmFja2luZy50cmFjayk7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICA8L05hdkxpbms+XG4gICAgKTtcbiAgfVxuICByZXR1cm4gPD57cHJvcHMuY2hpbGRyZW59PC8+O1xufTtcbk1lbnVJdGVtTGluay5kaXNwbGF5TmFtZSA9ICdNZW51SXRlbUxpbmsnO1xuTWVudUl0ZW1MaW5rLmRlZmF1bHRQcm9wcyA9IG1lbnVJdGVtTGlua0RlZmF1bHRQcm9wcztcblxuLy8gVGhpcyBjb21wb25lbnQganVzdCByZW5kZXIgdHdvIGRpdnMgd2l0aCBib3JkZXJzIGluIG9yZGVyIHRvIGRpZmZlcmVudGlhdGVcbi8vIHRoZSBzZXR0aW5ncyBwbHVnaW4gZnJvbSB0aGUgb3RoZXIgb25lc1xuY29uc3QgTWVudUl0ZW1EaXZpZGVyID0gKCkgPT4gKFxuICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydkaXZpZGVyLWZpcnN0LWl0ZW0nXX0+XG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZGl2aWRlci1zZWNvbmQtaXRlbSddfSAvPlxuICA8L2Rpdj5cbik7XG5NZW51SXRlbURpdmlkZXIuZGlzcGxheU5hbWUgPSAnTWVudUl0ZW1EaXZpZGVyJztcblxuLy8gVGhpcyBjb21wb25lbnQgd3JhcHMgYDxSZXN0cmljdGVkQnlQZXJtaXNzaW9ucz5gXG4vLyBhbmQgdGhlIGA8VG9nZ2xlRmVhdHVyZT5gIGNvbXBvbmVudHMuIEhvd2V2ZXIsIGl0J3MgbmVjZXNzYXJ5IHRvIGhhdmUgaXQgYXNcbi8vIHRoZSBgPFRvZ2dsZUZlYXR1cmU+YCB3cmFwcGVyIHNob3VsZCBiZSByZW5kZXJlZCBvbmx5IGlmIHRoZSBgZmVhdHVyZVRvZ2dsZWBcbi8vIHByb3AgaXMgZGVmaW5lZC4gVGhpcyBpcyBiZWNhdXNlIGA8VG9nZ2xlRmVhdHVyZT5gIHdpbGwgbm90IHJlbmRlciBhbnlcbi8vIGNoaWxkcmVuIGlmIHRoZSBmbGFnIGlzIG1pc3Npbmcvbm90IGZvdW5kLlxuY29uc3QgaXNFdmVyeU1lbnVWaXNpYmlsaXR5U2V0VG9IaWRkZW4gPSAoXG4gIG1lbnVWaXNpYmlsaXRpZXM/OiBUTm9ybWFsaXplZE1lbnVWaXNpYmlsaXRpZXMgfCBudWxsLFxuICBuYW1lc09mTWVudVZpc2liaWxpdGllcz86IHN0cmluZ1tdXG4pID0+XG4gIEFycmF5LmlzQXJyYXkobmFtZXNPZk1lbnVWaXNpYmlsaXRpZXMpICYmXG4gIG5hbWVzT2ZNZW51VmlzaWJpbGl0aWVzLmxlbmd0aCA+IDAgJiZcbiAgbmFtZXNPZk1lbnVWaXNpYmlsaXRpZXMuZXZlcnkoXG4gICAgKG5hbWVPZk1lbnVWaXNpYmlsaXR5KSA9PlxuICAgICAgbWVudVZpc2liaWxpdGllcyAmJiBtZW51VmlzaWJpbGl0aWVzW25hbWVPZk1lbnVWaXNpYmlsaXR5XSA9PT0gdHJ1ZVxuICApO1xuXG50eXBlIFJlc3RyaWN0ZWRNZW51SXRlbVByb3BzID0ge1xuICBmZWF0dXJlVG9nZ2xlPzogc3RyaW5nO1xuICBuYW1lc09mTWVudVZpc2liaWxpdGllcz86IHN0cmluZ1tdO1xuICBwcm9qZWN0UGVybWlzc2lvbnM6IFRQcm9qZWN0UGVybWlzc2lvbnM7XG4gIG1lbnVWaXNpYmlsaXRpZXM6IFROb3JtYWxpemVkTWVudVZpc2liaWxpdGllcyB8IG51bGw7XG4gIGtleU9mTWVudUl0ZW06IHN0cmluZztcbiAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBhY3Rpb25SaWdodHM/OiBUQWN0aW9uUmlnaHRbXTtcbiAgZGF0YUZlbmNlcz86IFREYXRhRmVuY2VbXTtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn07XG5jb25zdCByZXN0cmljdGVkTWVudUl0ZW1EZWZhdWx0UHJvcHM6IFBpY2s8XG4gIFJlc3RyaWN0ZWRNZW51SXRlbVByb3BzLFxuICAncGVybWlzc2lvbnMnXG4+ID0ge1xuICBwZXJtaXNzaW9uczogW10sXG59O1xuY29uc3QgUmVzdHJpY3RlZE1lbnVJdGVtID0gKHByb3BzOiBSZXN0cmljdGVkTWVudUl0ZW1Qcm9wcykgPT4ge1xuICAvLyBOT1RFOiBDdXN0b20gYXBwbGljYXRpb24gYXJlIGFjdGl2YXRlZC9kZWFjdGl2YXRlZCB3aGlsZSB0aGVpclxuICAvLyB2aXNpYmlsaXR5IGlzIG5vdCBjb250cm9sbGVkIHZpYSBhIHZpc2liaWlsaXR5IG92ZXJ3cml0ZS5cbiAgaWYgKFxuICAgIGlzRXZlcnlNZW51VmlzaWJpbGl0eVNldFRvSGlkZGVuKFxuICAgICAgcHJvcHMubWVudVZpc2liaWxpdGllcyxcbiAgICAgIHByb3BzLm5hbWVzT2ZNZW51VmlzaWJpbGl0aWVzXG4gICAgKVxuICApXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcGVybWlzc2lvbnNXcmFwcGVyID1cbiAgICAoQXJyYXkuaXNBcnJheShwcm9wcy5wZXJtaXNzaW9ucykgJiYgcHJvcHMucGVybWlzc2lvbnMubGVuZ3RoID4gMCkgfHxcbiAgICAoQXJyYXkuaXNBcnJheShwcm9wcy5kYXRhRmVuY2VzKSAmJiBwcm9wcy5kYXRhRmVuY2VzLmxlbmd0aCA+IDApID8gKFxuICAgICAgPFJlc3RyaWN0ZWRCeVBlcm1pc3Npb25zXG4gICAgICAgIHBlcm1pc3Npb25zPXtwcm9wcy5wZXJtaXNzaW9uc31cbiAgICAgICAgYWN0aW9uUmlnaHRzPXtwcm9wcy5hY3Rpb25SaWdodHN9XG4gICAgICAgIGRhdGFGZW5jZXM9e3Byb3BzLmRhdGFGZW5jZXN9XG4gICAgICAgIHNlbGVjdERhdGFGZW5jZURhdGE9eyhkZW1hbmRlZERhdGFGZW5jZSkgPT4ge1xuICAgICAgICAgIHN3aXRjaCAoZGVtYW5kZWREYXRhRmVuY2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnc3RvcmUnOlxuICAgICAgICAgICAgICByZXR1cm4gZGVtYW5kZWREYXRhRmVuY2UuYWN0dWFsRGF0YUZlbmNlVmFsdWVzO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICAvLyBBbHdheXMgY2hlY2sgdGhhdCBzb21lIG9mIHRoZSBnaXZlbiBwZXJtaXNzaW9ucyBtYXRjaC5cbiAgICAgICAgc2hvdWxkTWF0Y2hTb21lUGVybWlzc2lvbnM9e3RydWV9XG4gICAgICAgIHByb2plY3RQZXJtaXNzaW9ucz17cHJvcHMucHJvamVjdFBlcm1pc3Npb25zfVxuICAgICAgPlxuICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICA8L1Jlc3RyaWN0ZWRCeVBlcm1pc3Npb25zPlxuICAgICkgOiAoXG4gICAgICA8Pntwcm9wcy5jaGlsZHJlbn08Lz5cbiAgICApO1xuXG4gIGlmIChwcm9wcy5mZWF0dXJlVG9nZ2xlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxUb2dnbGVGZWF0dXJlIGZsYWc9e3Byb3BzLmZlYXR1cmVUb2dnbGV9PlxuICAgICAgICB7cGVybWlzc2lvbnNXcmFwcGVyfVxuICAgICAgPC9Ub2dnbGVGZWF0dXJlPlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHBlcm1pc3Npb25zV3JhcHBlcjtcbn07XG5SZXN0cmljdGVkTWVudUl0ZW0uZGlzcGxheU5hbWUgPSAnUmVzdHJpY3RlZE1lbnVJdGVtJztcblJlc3RyaWN0ZWRNZW51SXRlbS5kZWZhdWx0UHJvcHMgPSByZXN0cmljdGVkTWVudUl0ZW1EZWZhdWx0UHJvcHM7XG5cbmV4cG9ydCBjb25zdCBnZXRJY29uQ29sb3IgPSAoXG4gIGlzQWN0aXZlOiBib29sZWFuLFxuICBpc0FsdGVybmF0aXZlVGhlbWU6IGJvb2xlYW5cbikgPT4ge1xuICBpZiAoaXNBY3RpdmUpIHJldHVybiAncHJpbWFyeTQwJztcbiAgcmV0dXJuIGlzQWx0ZXJuYXRpdmVUaGVtZSA/ICduZXV0cmFsNjAnIDogJ3N1cmZhY2UnO1xufTtcblxuY29uc3QgZ2V0TWVudVZpc2liaWxpdGllc09mU3VibWVudXMgPSAobWVudTogVE5hdmJhck1lbnUpID0+XG4gIG1lbnUuc3VibWVudS5tYXAoKHN1Ym1lbnUpID0+IHN1Ym1lbnUubWVudVZpc2liaWxpdHkpLmZpbHRlcihub25OdWxsYWJsZSk7XG5jb25zdCBnZXRNZW51VmlzaWJpbGl0eU9mTWFpbm1lbnUgPSAobWVudTogVE5hdmJhck1lbnUpID0+XG4gIG1lbnUubWVudVZpc2liaWxpdHkgPyBbbWVudS5tZW51VmlzaWJpbGl0eV0gOiBbXTtcblxudHlwZSBNZW51TGFiZWxQcm9wcyA9IHtcbiAgbGFiZWxBbGxMb2NhbGVzOiBUTG9jYWxpemVkRmllbGRbXTtcbiAgZGVmYXVsdExhYmVsPzogc3RyaW5nO1xuICBhcHBsaWNhdGlvbkxvY2FsZTogc3RyaW5nO1xufTtcbmNvbnN0IE1lbnVMYWJlbCA9IChwcm9wczogTWVudUxhYmVsUHJvcHMpID0+IHtcbiAgY29uc3QgbG9jYWxpemVkTGFiZWwgPSBwcm9wcy5sYWJlbEFsbExvY2FsZXMuZmluZCgobG9jKSA9PlxuICAgIHByb3BzLmFwcGxpY2F0aW9uTG9jYWxlLnN0YXJ0c1dpdGgobG9jLmxvY2FsZSlcbiAgKTtcbiAgaWYgKGxvY2FsaXplZExhYmVsKSByZXR1cm4gPD57bG9jYWxpemVkTGFiZWwudmFsdWV9PC8+O1xuICBpZiAocHJvcHMuZGVmYXVsdExhYmVsKSByZXR1cm4gPD57cHJvcHMuZGVmYXVsdExhYmVsfTwvPjtcbiAgcmV0dXJuIDw+e05PX1ZBTFVFX0ZBTExCQUNLfTwvPjtcbn07XG5cbnR5cGUgQXBwbGljYXRpb25NZW51UHJvcHMgPSB7XG4gIGxvY2F0aW9uOiBSb3V0ZUNvbXBvbmVudFByb3BzWydsb2NhdGlvbiddO1xuICBtZW51OiBUTmF2YmFyTWVudSAmIHtcbiAgICAvLyBkZXJpdmVzIGZyb20gYHByb2plY3RFeHRlbnNpb25zUXVlcnkuaW5zdGFsbGVkQXBwbGljYXRpb25zLmFwcGxpY2F0aW9uLm1lbnVgXG4gICAgZGVmYXVsdExhYmVsPzogc3RyaW5nO1xuICB9O1xuICBpc0FjdGl2ZTogYm9vbGVhbjtcbiAgaXNNZW51T3BlbjogYm9vbGVhbjtcbiAgc2hvdWxkQ2xvc2VNZW51Rmx5OiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRWxlbWVudD47XG4gIHByb2plY3RQZXJtaXNzaW9uczogVFByb2plY3RQZXJtaXNzaW9ucztcbiAgbWVudVZpc2liaWxpdGllczogVE5vcm1hbGl6ZWRNZW51VmlzaWJpbGl0aWVzIHwgbnVsbDtcbiAgaGFuZGxlVG9nZ2xlSXRlbTogKCkgPT4gdm9pZDtcbiAgYXBwbGljYXRpb25Mb2NhbGU6IHN0cmluZztcbiAgcHJvamVjdEtleTogc3RyaW5nO1xuICB1c2VGdWxsUmVkaXJlY3RzRm9yTGlua3M6IGJvb2xlYW47XG4gIG9uTWVudUl0ZW1DbGljaz86IE1lbnVJdGVtTGlua1Byb3BzWydvbkNsaWNrJ107XG59O1xuY29uc3QgQXBwbGljYXRpb25NZW51ID0gKHByb3BzOiBBcHBsaWNhdGlvbk1lbnVQcm9wcykgPT4ge1xuICBjb25zdCBpc01haW5NZW51Um91dGVBY3RpdmUgPSBCb29sZWFuKFxuICAgIG1hdGNoUGF0aChwcm9wcy5sb2NhdGlvbi5wYXRobmFtZSwge1xuICAgICAgcGF0aDogYC8ke3Byb3BzLnByb2plY3RLZXl9LyR7cHJvcHMubWVudS51cmlQYXRofWAsXG4gICAgICBleGFjdDogZmFsc2UsXG4gICAgICBzdHJpY3Q6IGZhbHNlLFxuICAgIH0pXG4gICk7XG4gIGNvbnN0IGhhc1N1Ym1lbnUgPVxuICAgIEFycmF5LmlzQXJyYXkocHJvcHMubWVudS5zdWJtZW51KSAmJiBwcm9wcy5tZW51LnN1Ym1lbnUubGVuZ3RoID4gMDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIE9uIGZpcnN0IHJlbmRlciwgY2hlY2sgd2hpY2ggbWVudSBpcyBhY3RpdmUgZm9yIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uIGFuZCBleHBhbmRcbiAgICAvLyB0aGUgc3VibWVudSBhdXRvbWF0aWNhbGx5IHVubGVzcyB0aGUgYWxsIG5hdmJhciBpcyBjb2xsYXBzZWQgb3IgdGhlcmUgYXJlIG5vIHN1Ym1lbnUgbGlua3MuXG4gICAgaWYgKHByb3BzLmlzTWVudU9wZW4gJiYgaXNNYWluTWVudVJvdXRlQWN0aXZlICYmIGhhc1N1Ym1lbnUpIHtcbiAgICAgIHByb3BzLmhhbmRsZVRvZ2dsZUl0ZW0oKTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbcHJvcHMuaXNNZW51T3Blbl0pOyAvLyA8LS0gKHJlKXJ1biB0aGlzIG9ubHkgd2hlbiB0aGUgYWxsIG1lbnUgZXhwYW5kc1xuXG4gIGNvbnN0IG5hbWVzT2ZNZW51VmlzaWJpbGl0aWVzT2ZBbGxTdWJtZW51cyA9IGhhc1N1Ym1lbnVcbiAgICA/IGdldE1lbnVWaXNpYmlsaXRpZXNPZlN1Ym1lbnVzKHByb3BzLm1lbnUpXG4gICAgOiBnZXRNZW51VmlzaWJpbGl0eU9mTWFpbm1lbnUocHJvcHMubWVudSk7XG5cbiAgY29uc3QgaXNNYWluTWVudUl0ZW1BTGluayA9XG4gICAgLy8gMS4gV2hlbiB0aGUgbmF2YmFyIGlzIGNvbGxhcHNlZFxuICAgICFwcm9wcy5pc01lbnVPcGVuIHx8XG4gICAgLy8gMi4gV2hlbiB0aGVyZSBpcyBubyBzdWJtZW51XG4gICAgIWhhc1N1Ym1lbnUgfHxcbiAgICAvLyAzLiBXaGVuIHRoZSBzdWJtZW51IGdyb3VwIGlzIGFjdGl2ZS92aXNpYmxlXG4gICAgcHJvcHMuaXNBY3RpdmU7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3Byb3BzLm1lbnUuc2hvdWxkUmVuZGVyRGl2aWRlciAmJiA8TWVudUl0ZW1EaXZpZGVyIC8+fVxuXG4gICAgICA8UmVzdHJpY3RlZE1lbnVJdGVtXG4gICAgICAgIGtleT17cHJvcHMubWVudS5rZXl9XG4gICAgICAgIGtleU9mTWVudUl0ZW09e3Byb3BzLm1lbnUua2V5fVxuICAgICAgICBmZWF0dXJlVG9nZ2xlPXtwcm9wcy5tZW51LmZlYXR1cmVUb2dnbGV9XG4gICAgICAgIHBlcm1pc3Npb25zPXtwcm9wcy5tZW51LnBlcm1pc3Npb25zfVxuICAgICAgICBhY3Rpb25SaWdodHM9e3Byb3BzLm1lbnUuYWN0aW9uUmlnaHRzfVxuICAgICAgICBkYXRhRmVuY2VzPXtwcm9wcy5tZW51LmRhdGFGZW5jZXN9XG4gICAgICAgIHByb2plY3RQZXJtaXNzaW9ucz17cHJvcHMucHJvamVjdFBlcm1pc3Npb25zfVxuICAgICAgICBtZW51VmlzaWJpbGl0aWVzPXtwcm9wcy5tZW51VmlzaWJpbGl0aWVzfVxuICAgICAgICBuYW1lc09mTWVudVZpc2liaWxpdGllcz17bmFtZXNPZk1lbnVWaXNpYmlsaXRpZXNPZkFsbFN1Ym1lbnVzfVxuICAgICAgPlxuICAgICAgICA8TWVudUl0ZW1cbiAgICAgICAgICBoYXNTdWJtZW51PXtoYXNTdWJtZW51fVxuICAgICAgICAgIGlzQWN0aXZlPXtwcm9wcy5pc0FjdGl2ZX1cbiAgICAgICAgICBpc01lbnVPcGVuPXtwcm9wcy5pc01lbnVPcGVufVxuICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLmhhbmRsZVRvZ2dsZUl0ZW19XG4gICAgICAgICAgb25Nb3VzZUVudGVyPXtwcm9wcy5pc01lbnVPcGVuID8gdW5kZWZpbmVkIDogcHJvcHMuaGFuZGxlVG9nZ2xlSXRlbX1cbiAgICAgICAgICBvbk1vdXNlTGVhdmU9e3Byb3BzLmlzTWVudU9wZW4gPyB1bmRlZmluZWQgOiBwcm9wcy5zaG91bGRDbG9zZU1lbnVGbHl9XG4gICAgICAgID5cbiAgICAgICAgICA8TWVudUl0ZW1MaW5rXG4gICAgICAgICAgICBsaW5rVG89e1xuICAgICAgICAgICAgICBpc01haW5NZW51SXRlbUFMaW5rXG4gICAgICAgICAgICAgICAgPyBgLyR7cHJvcHMucHJvamVjdEtleX0vJHtwcm9wcy5tZW51LnVyaVBhdGh9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB1c2VGdWxsUmVkaXJlY3RzRm9yTGlua3M9e3Byb3BzLnVzZUZ1bGxSZWRpcmVjdHNGb3JMaW5rc31cbiAgICAgICAgICAgIG9uQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydpdGVtLWljb24tdGV4dCddfT5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5pY29ufT5cbiAgICAgICAgICAgICAgICA8SWNvblN3aXRjaGVyXG4gICAgICAgICAgICAgICAgICBpY29uPXtwcm9wcy5tZW51Lmljb259XG4gICAgICAgICAgICAgICAgICBzaXplPVwic2NhbGVcIlxuICAgICAgICAgICAgICAgICAgY29sb3I9e2dldEljb25Db2xvcihcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuaXNBY3RpdmUgfHwgaXNNYWluTWVudVJvdXRlQWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICBCb29sZWFuKHByb3BzLm1lbnUuc2hvdWxkUmVuZGVyRGl2aWRlcilcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX1cbiAgICAgICAgICAgICAgICBhcmlhLW93bnM9e2Ake3Byb3BzLm1lbnUua2V5fS1ncm91cGB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TWVudUxhYmVsXG4gICAgICAgICAgICAgICAgICBsYWJlbEFsbExvY2FsZXM9e3Byb3BzLm1lbnUubGFiZWxBbGxMb2NhbGVzfVxuICAgICAgICAgICAgICAgICAgZGVmYXVsdExhYmVsPXtwcm9wcy5tZW51LmRlZmF1bHRMYWJlbH1cbiAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtwcm9wcy5hcHBsaWNhdGlvbkxvY2FsZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvTWVudUl0ZW1MaW5rPlxuICAgICAgICAgIDxNZW51R3JvdXBcbiAgICAgICAgICAgIGlkPXtwcm9wcy5tZW51LmtleX1cbiAgICAgICAgICAgIGxldmVsPXsyfVxuICAgICAgICAgICAgaXNBY3RpdmU9e3Byb3BzLmlzQWN0aXZlfVxuICAgICAgICAgICAgaXNFeHBhbmRlZD17cHJvcHMuaXNNZW51T3Blbn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aGFzU3VibWVudVxuICAgICAgICAgICAgICA/IHByb3BzLm1lbnUuc3VibWVudS5tYXAoKHN1Ym1lbnUpID0+IChcbiAgICAgICAgICAgICAgICAgIDxSZXN0cmljdGVkTWVudUl0ZW1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtgJHtwcm9wcy5tZW51LmtleX0tc3VibWVudS0ke3N1Ym1lbnUua2V5fWB9XG4gICAgICAgICAgICAgICAgICAgIGtleU9mTWVudUl0ZW09e3N1Ym1lbnUua2V5fVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlVG9nZ2xlPXtzdWJtZW51LmZlYXR1cmVUb2dnbGV9XG4gICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zPXtzdWJtZW51LnBlcm1pc3Npb25zfVxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25SaWdodHM9e3N1Ym1lbnUuYWN0aW9uUmlnaHRzfVxuICAgICAgICAgICAgICAgICAgICBkYXRhRmVuY2VzPXtzdWJtZW51LmRhdGFGZW5jZXN9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RQZXJtaXNzaW9ucz17cHJvcHMucHJvamVjdFBlcm1pc3Npb25zfVxuICAgICAgICAgICAgICAgICAgICBtZW51VmlzaWJpbGl0aWVzPXtwcm9wcy5tZW51VmlzaWJpbGl0aWVzfVxuICAgICAgICAgICAgICAgICAgICBuYW1lc09mTWVudVZpc2liaWxpdGllcz17XG4gICAgICAgICAgICAgICAgICAgICAgc3VibWVudS5tZW51VmlzaWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBbc3VibWVudS5tZW51VmlzaWJpbGl0eV1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzTmFtZT17c3R5bGVzWydzdWJsaXN0LWl0ZW0nXX0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50ZXh0fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51SXRlbUxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua1RvPXtgLyR7cHJvcHMucHJvamVjdEtleX0vJHtzdWJtZW51LnVyaVBhdGh9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3RNYXRjaD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlRnVsbFJlZGlyZWN0c0ZvckxpbmtzPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy51c2VGdWxsUmVkaXJlY3RzRm9yTGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51TGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEFsbExvY2FsZXM9e3N1Ym1lbnUubGFiZWxBbGxMb2NhbGVzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtwcm9wcy5hcHBsaWNhdGlvbkxvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvTWVudUl0ZW1MaW5rPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgPC9SZXN0cmljdGVkTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgOiBudWxsfVxuICAgICAgICAgIDwvTWVudUdyb3VwPlxuICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgPC9SZXN0cmljdGVkTWVudUl0ZW0+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25NZW51LmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uTWVudSc7XG5cbnR5cGUgTmF2QmFyTGF5b3V0UHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59O1xuY29uc3QgTmF2QmFyTGF5b3V0ID0gZm9yd2FyZFJlZjxIVE1MRWxlbWVudCwgTmF2QmFyTGF5b3V0UHJvcHM+KFxuICAocHJvcHMsIHJlZikgPT4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICR7Y29tcGlsZWRTdHlsZXMuZ2xvYmFsfVxuICAgICAgICBgfVxuICAgICAgLz5cbiAgICAgIDxuYXZcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzWydsZWZ0LW5hdmlnYXRpb24nXX1cbiAgICAgICAgZGF0YS10ZXN0PVwibGVmdC1uYXZpZ2F0aW9uXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJsZWZ0LW5hdmlnYXRpb25cIlxuICAgICAgICBkYXRhLXRyYWNrLWNvbXBvbmVudD1cIk5hdmlnYXRpb25cIlxuICAgICAgPlxuICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICA8L25hdj5cbiAgICA8Lz5cbiAgKVxuKTtcbk5hdkJhckxheW91dC5kaXNwbGF5TmFtZSA9ICdOYXZCYXJMYXlvdXQnO1xuXG50eXBlIE5hdmJhclByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwcGxpY2F0aW9uTG9jYWxlOiBzdHJpbmc7XG4gIHByb2plY3RLZXk6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIHByb2plY3Q6IFRGZXRjaFByb2plY3RRdWVyeVsncHJvamVjdCddO1xuICBvbk1lbnVJdGVtQ2xpY2s/OiBNZW51SXRlbUxpbmtQcm9wc1snb25DbGljayddO1xuICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc/OiAoKSA9PiBQcm9taXNlPFRBcHBsaWNhdGlvbnNNZW51WyduYXZCYXInXT47XG59O1xuY29uc3QgTmF2QmFyID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBOYXZiYXJQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBuYXZCYXJOb2RlLFxuICAgIGlzTWVudU9wZW4sXG4gICAgaXNFeHBhbmRlclZpc2libGUsXG4gICAgYWN0aXZlSXRlbUluZGV4LFxuICAgIGhhbmRsZVRvZ2dsZUl0ZW0sXG4gICAgaGFuZGxlVG9nZ2xlTWVudSxcbiAgICBzaG91bGRDbG9zZU1lbnVGbHksXG4gICAgYWxsQXBwbGljYXRpb25OYXZiYXJNZW51LFxuICB9ID0gdXNlTmF2YmFyU3RhdGVNYW5hZ2VyKHtcbiAgICBlbnZpcm9ubWVudDogcHJvcHMuZW52aXJvbm1lbnQsXG4gICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnOiBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWcsXG4gIH0pO1xuICBjb25zdCB1c2VGdWxsUmVkaXJlY3RzRm9yTGlua3MgPSBCb29sZWFuKFxuICAgIHByb3BzLmVudmlyb25tZW50LnVzZUZ1bGxSZWRpcmVjdHNGb3JMaW5rc1xuICApO1xuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3QgcHJvamVjdFBlcm1pc3Npb25zOiBUUHJvamVjdFBlcm1pc3Npb25zID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgcGVybWlzc2lvbnM6IG5vcm1hbGl6ZUFsbEFwcGxpZWRQZXJtaXNzaW9ucyhcbiAgICAgICAgcHJvcHMucHJvamVjdD8uYWxsUGVybWlzc2lvbnNGb3JBbGxBcHBsaWNhdGlvbnMuYWxsQXBwbGllZFBlcm1pc3Npb25zXG4gICAgICApLFxuICAgICAgYWN0aW9uUmlnaHRzOiBub3JtYWxpemVBbGxBcHBsaWVkQWN0aW9uUmlnaHRzKFxuICAgICAgICBwcm9wcy5wcm9qZWN0Py5hbGxQZXJtaXNzaW9uc0ZvckFsbEFwcGxpY2F0aW9ucy5hbGxBcHBsaWVkQWN0aW9uUmlnaHRzXG4gICAgICApLFxuICAgICAgZGF0YUZlbmNlczogbm9ybWFsaXplQWxsQXBwbGllZERhdGFGZW5jZXMoXG4gICAgICAgIHByb3BzLnByb2plY3Q/LmFsbFBlcm1pc3Npb25zRm9yQWxsQXBwbGljYXRpb25zLmFsbEFwcGxpZWREYXRhRmVuY2VzXG4gICAgICApLFxuICAgIH0pLFxuICAgIFtwcm9wcy5wcm9qZWN0XVxuICApO1xuICBjb25zdCBtZW51VmlzaWJpbGl0aWVzID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgbm9ybWFsaXplQWxsQXBwbGllZE1lbnVWaXNpYmlsaXRpZXMoXG4gICAgICAgIHByb3BzLnByb2plY3Q/LmFsbFBlcm1pc3Npb25zRm9yQWxsQXBwbGljYXRpb25zXG4gICAgICAgICAgLmFsbEFwcGxpZWRNZW51VmlzaWJpbGl0aWVzXG4gICAgICApLFxuICAgIFtwcm9wcy5wcm9qZWN0XVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPE5hdkJhckxheW91dCByZWY9e25hdkJhck5vZGV9PlxuICAgICAgPE1lbnVHcm91cCBpZD1cIm1haW5cIiBsZXZlbD17MX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbJ3Njcm9sbGFibGUtbWVudSddfT5cbiAgICAgICAgICB7YWxsQXBwbGljYXRpb25OYXZiYXJNZW51Lm1hcCgobWVudSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWVudVR5cGUgPSAnc2Nyb2xsYWJsZSc7XG4gICAgICAgICAgICBjb25zdCBpdGVtSW5kZXggPSBgJHttZW51VHlwZX0tJHttZW51LmtleX1gO1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTWVudVxuICAgICAgICAgICAgICAgIGtleT17bWVudS5rZXl9XG4gICAgICAgICAgICAgICAgbG9jYXRpb249e2xvY2F0aW9ufVxuICAgICAgICAgICAgICAgIG1lbnU9e21lbnV9XG4gICAgICAgICAgICAgICAgaXNBY3RpdmU9e2FjdGl2ZUl0ZW1JbmRleCA9PT0gaXRlbUluZGV4fVxuICAgICAgICAgICAgICAgIGhhbmRsZVRvZ2dsZUl0ZW09eygpID0+IGhhbmRsZVRvZ2dsZUl0ZW0oaXRlbUluZGV4KX1cbiAgICAgICAgICAgICAgICBpc01lbnVPcGVuPXtpc01lbnVPcGVufVxuICAgICAgICAgICAgICAgIHNob3VsZENsb3NlTWVudUZseT17c2hvdWxkQ2xvc2VNZW51Rmx5fVxuICAgICAgICAgICAgICAgIHByb2plY3RQZXJtaXNzaW9ucz17cHJvamVjdFBlcm1pc3Npb25zfVxuICAgICAgICAgICAgICAgIG1lbnVWaXNpYmlsaXRpZXM9e21lbnVWaXNpYmlsaXRpZXN9XG4gICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e3Byb3BzLmFwcGxpY2F0aW9uTG9jYWxlfVxuICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb3BzLnByb2plY3RLZXl9XG4gICAgICAgICAgICAgICAgdXNlRnVsbFJlZGlyZWN0c0ZvckxpbmtzPXt1c2VGdWxsUmVkaXJlY3RzRm9yTGlua3N9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1snZml4ZWQtbWVudSddfT5cbiAgICAgICAgICA8TWVudUl0ZW1cbiAgICAgICAgICAgIGhhc1N1Ym1lbnU9e2ZhbHNlfVxuICAgICAgICAgICAgaXNBY3RpdmU9e2ZhbHNlfVxuICAgICAgICAgICAgaXNNZW51T3Blbj17aXNNZW51T3Blbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlSXRlbSgnZml4ZWQtc3VwcG9ydCcpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uTW91c2VFbnRlcj17XG4gICAgICAgICAgICAgIGlzTWVudU9wZW4gPyB1bmRlZmluZWQgOiAoKSA9PiBoYW5kbGVUb2dnbGVJdGVtKCdmaXhlZC1zdXBwb3J0JylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17aXNNZW51T3BlbiA/IHVuZGVmaW5lZCA6IHNob3VsZENsb3NlTWVudUZseX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBocmVmPXtTVVBQT1JUX1BPUlRBTF9VUkx9XG4gICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzWydpdGVtLWljb24tdGV4dCddfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmljb259PlxuICAgICAgICAgICAgICAgICAgPFN1cHBvcnRJY29uXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJzY2FsZVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPXtnZXRJY29uQ29sb3IoXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXRlbUluZGV4ID09PSAnZml4ZWQtc3VwcG9ydCcsXG4gICAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlc1snTmF2QmFyLk1DU3VwcG9ydC50aXRsZSddfSAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgIDxNZW51RXhwYW5kZXJcbiAgICAgICAgICAgIGlzVmlzaWJsZT17aXNFeHBhbmRlclZpc2libGV9XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVUb2dnbGVNZW51fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9NZW51R3JvdXA+XG4gICAgPC9OYXZCYXJMYXlvdXQ+XG4gICk7XG59O1xuTmF2QmFyLmRpc3BsYXlOYW1lID0gJ05hdkJhcic7XG5cbmV4cG9ydCBkZWZhdWx0IE5hdkJhcjtcblxuZXhwb3J0IGNvbnN0IExvYWRpbmdOYXZCYXIgPSAoKSA9PiB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIHVzZUxvYWRpbmdNZW51TGF5b3V0RWZmZWN0KCk7XG4gIHJldHVybiAoXG4gICAgPE5hdkJhckxheW91dCByZWY9e3JlZn0+XG4gICAgICA8TWVudUdyb3VwIGlkPVwibWFpblwiIGxldmVsPXsxfT5cbiAgICAgICAgPD5cbiAgICAgICAgICB7QXJyYXkuZnJvbShuZXcgQXJyYXkoNSkpLm1hcCgoXywgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxNZW51SXRlbVxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICBoYXNTdWJtZW51PXtmYWxzZX1cbiAgICAgICAgICAgICAgaXNNZW51T3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgIGlzQWN0aXZlPXtmYWxzZX1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdW5kZWZpbmVkfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbJ2xvYWRpbmctZG90LWNvbnRhaW5lciddfVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgZG90LWNvbnRhaW5lci0ke2luZGV4fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8TG9hZGluZ1BsYWNlaG9sZGVyIHNoYXBlPVwiZG90XCIgc2l6ZT1cIm1cIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgPC9NZW51R3JvdXA+XG4gICAgPC9OYXZCYXJMYXlvdXQ+XG4gICk7XG59O1xuTG9hZGluZ05hdkJhci5kaXNwbGF5TmFtZSA9ICdMb2FkaW5nTmF2QmFyJztcbiJdfQ== */")
|
|
3712
3719
|
}), jsxRuntime.jsx("nav", {
|
|
3713
3720
|
ref: ref,
|
|
3714
3721
|
className: styles['left-navigation'],
|
|
@@ -3894,7 +3901,7 @@ var pimIndexerStates = {
|
|
|
3894
3901
|
};
|
|
3895
3902
|
|
|
3896
3903
|
var QuickAccess = /*#__PURE__*/react.lazy(function () {
|
|
3897
|
-
return Promise.resolve().then(function () { return require('./quick-access-
|
|
3904
|
+
return Promise.resolve().then(function () { return require('./quick-access-57979158.cjs.dev.js'
|
|
3898
3905
|
/* webpackChunkName: "quick-access" */
|
|
3899
3906
|
); });
|
|
3900
3907
|
});
|
|
@@ -4044,7 +4051,7 @@ var RedirectToLogin = function RedirectToLogin() {
|
|
|
4044
4051
|
|
|
4045
4052
|
applicationEntryPoint.setSessionScope(requestedScope);
|
|
4046
4053
|
return jsxRuntime.jsx(Redirector, {
|
|
4047
|
-
to: "
|
|
4054
|
+
to: "",
|
|
4048
4055
|
origin: (_window$app$__DEVELOP7 = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP7 === void 0 ? void 0 : (_window$app$__DEVELOP8 = _window$app$__DEVELOP7.oidc) === null || _window$app$__DEVELOP8 === void 0 ? void 0 : _window$app$__DEVELOP8.authorizeUrl,
|
|
4049
4056
|
location: location,
|
|
4050
4057
|
queryParams: {
|
|
@@ -4140,17 +4147,17 @@ var MainContainer = _styled__default['default']("main", process.env.NODE_ENV ===
|
|
|
4140
4147
|
} : {
|
|
4141
4148
|
name: "1rdshd",
|
|
4142
4149
|
styles: "grid-column:2;grid-row:3;min-width:0;overflow-x:hidden;overflow-y:scroll;display:flex;flex-direction:column;position:relative",
|
|
4143
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2R3dDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4150
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2R3dDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4144
4151
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4145
4152
|
});
|
|
4146
4153
|
|
|
4147
4154
|
var _ref2 = process.env.NODE_ENV === "production" ? {
|
|
4148
|
-
name: "
|
|
4149
|
-
styles: "flex-grow:1;display:flex;flex-direction:column
|
|
4155
|
+
name: "tlwzvn",
|
|
4156
|
+
styles: "flex-grow:1;display:flex;flex-direction:column;position:relative;>*:not(:first-of-type){flex-grow:1;display:flex;flex-direction:column;}"
|
|
4150
4157
|
} : {
|
|
4151
|
-
name: "
|
|
4152
|
-
styles: "flex-grow:1;display:flex;flex-direction:column
|
|
4153
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5WXNDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4158
|
+
name: "199a1u7-RestrictedApplication",
|
|
4159
|
+
styles: "flex-grow:1;display:flex;flex-direction:column;position:relative;>*:not(:first-of-type){flex-grow:1;display:flex;flex-direction:column;};label:RestrictedApplication;",
|
|
4160
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3WXNDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4154
4161
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4155
4162
|
};
|
|
4156
4163
|
|
|
@@ -4160,7 +4167,7 @@ var _ref3 = process.env.NODE_ENV === "production" ? {
|
|
|
4160
4167
|
} : {
|
|
4161
4168
|
name: "lzvzwe-RestrictedApplication",
|
|
4162
4169
|
styles: "position:relative;grid-row:3;display:flex;flex-direction:column;label:RestrictedApplication;",
|
|
4163
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvVWtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4170
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvVWtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4164
4171
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4165
4172
|
};
|
|
4166
4173
|
|
|
@@ -4170,7 +4177,7 @@ var _ref4 = process.env.NODE_ENV === "production" ? {
|
|
|
4170
4177
|
} : {
|
|
4171
4178
|
name: "16holxm-RestrictedApplication",
|
|
4172
4179
|
styles: "grid-row:2;grid-column:1/3;label:RestrictedApplication;",
|
|
4173
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvVGtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4180
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvVGtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4174
4181
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4175
4182
|
};
|
|
4176
4183
|
|
|
@@ -4180,7 +4187,7 @@ var _ref5 = process.env.NODE_ENV === "production" ? {
|
|
|
4180
4187
|
} : {
|
|
4181
4188
|
name: "1u7ux6j-RestrictedApplication",
|
|
4182
4189
|
styles: "grid-row:1;grid-column:1/3;label:RestrictedApplication;",
|
|
4183
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwUGtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4190
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwUGtDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4184
4191
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4185
4192
|
};
|
|
4186
4193
|
|
|
@@ -4190,7 +4197,7 @@ var _ref6 = process.env.NODE_ENV === "production" ? {
|
|
|
4190
4197
|
} : {
|
|
4191
4198
|
name: "1e0jzpp-RestrictedApplication",
|
|
4192
4199
|
styles: "height:100vh;display:grid;grid-template-rows:auto 43px 1fr;grid-template-columns:auto 1fr;label:RestrictedApplication;",
|
|
4193
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpUGdDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4200
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpUGdDIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5QQUdFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuU0lERX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqOm5vdCg6Zmlyc3Qtb2YtdHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4194
4201
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4195
4202
|
};
|
|
4196
4203
|
|
|
@@ -4371,13 +4378,13 @@ var RestrictedApplication = function RestrictedApplication(props) {
|
|
|
4371
4378
|
children: jsxRuntime.jsx(ApplicationLoader, {})
|
|
4372
4379
|
}) : jsxRuntime.jsxs(MainContainer, {
|
|
4373
4380
|
role: "main",
|
|
4374
|
-
children: [jsxRuntime.jsx(
|
|
4381
|
+
children: [jsxRuntime.jsx(reactNotifications.NotificationsList, {
|
|
4375
4382
|
domain: constants.DOMAINS.PAGE
|
|
4376
4383
|
}), jsxRuntime.jsx(reactNotifications.NotificationsList, {
|
|
4377
4384
|
domain: constants.DOMAINS.SIDE
|
|
4378
|
-
}), jsxRuntime.
|
|
4385
|
+
}), jsxRuntime.jsxs("div", {
|
|
4379
4386
|
css: _ref2,
|
|
4380
|
-
children: jsxRuntime.jsxs(reactRouterDom.Switch, {
|
|
4387
|
+
children: [jsxRuntime.jsx(applicationComponents.PortalsContainer, {}), jsxRuntime.jsxs(reactRouterDom.Switch, {
|
|
4381
4388
|
children: [jsxRuntime.jsx(reactRouterDom.Redirect, {
|
|
4382
4389
|
from: "/profile",
|
|
4383
4390
|
to: "/account/profile"
|
|
@@ -4433,7 +4440,7 @@ var RestrictedApplication = function RestrictedApplication(props) {
|
|
|
4433
4440
|
});
|
|
4434
4441
|
}
|
|
4435
4442
|
})]
|
|
4436
|
-
})
|
|
4443
|
+
})]
|
|
4437
4444
|
})]
|
|
4438
4445
|
})]
|
|
4439
4446
|
})]
|
|
@@ -4454,7 +4461,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
|
|
|
4454
4461
|
} : {
|
|
4455
4462
|
name: "ubxoj4-ApplicationShell",
|
|
4456
4463
|
styles: "#app{height:100%;}.ReactModal__Body--open main{overflow:hidden;};label:ApplicationShell;",
|
|
4457
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErZm1CIiwiZmlsZSI6ImFwcGxpY2F0aW9uLXNoZWxsLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgdHlwZSB7IFRGbGFncyB9IGZyb20gJ0BmbG9wZmxpcC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRDYWNoZU9iamVjdCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBvbGxvRXJyb3IgfSBmcm9tICdAYXBvbGxvL2NsaWVudC9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHR5cGUgeyBUQXBwbGljYXRpb25zTWVudSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9wcm94eSc7XG5pbXBvcnQgdHlwZSB7IFRyYWNraW5nTGlzdCB9IGZyb20gJy4uLy4uL3V0aWxzL2d0bSc7XG5cbmltcG9ydCB7IFJlYWN0Tm9kZSwgU3ludGhldGljRXZlbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgQXBvbGxvQ2xpZW50IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnO1xuaW1wb3J0IHsgR2xvYmFsLCBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICByZXBvcnRFcnJvclRvU2VudHJ5LFxuICBTZW50cnlVc2VyVHJhY2tlcixcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvc2VudHJ5JztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHZlcnNpb24gZnJvbSAnLi4vLi4vdmVyc2lvbic7XG5pbXBvcnQgaW50ZXJuYWxSZWR1eFN0b3JlIGZyb20gJy4uLy4uL2NvbmZpZ3VyZS1zdG9yZSc7XG5pbXBvcnQgeyBzZWxlY3RQcm9qZWN0S2V5RnJvbVVybCwgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlcic7XG5pbXBvcnQgeyBnZXRCcm93c2VyTG9jYWxlIH0gZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXIvdXRpbHMnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBWZXJzaW9uVHJhY2tlciBmcm9tICcuLi92ZXJzaW9uLXRyYWNrZXInO1xuaW1wb3J0IEZldGNoUHJvamVjdCBmcm9tICcuLi9mZXRjaC1wcm9qZWN0JztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IEd0bVVzZXJUcmFja2VyIGZyb20gJy4uL2d0bS11c2VyLXRyYWNrZXInO1xuaW1wb3J0IEd0bUFwcGxpY2F0aW9uVHJhY2tlciBmcm9tICcuLi9ndG0tYXBwbGljYXRpb24tdHJhY2tlcic7XG5pbXBvcnQgTmF2QmFyLCB7IExvYWRpbmdOYXZCYXIgfSBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IEFwcGxpY2F0aW9uTG9hZGVyIGZyb20gJy4uL2FwcGxpY2F0aW9uLWxvYWRlcic7XG5pbXBvcnQgRXJyb3JBcG9sb2dpemVyIGZyb20gJy4uL2Vycm9yLWFwb2xvZ2l6ZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSBmcm9tICcuLi9yZWRpcmVjdC10by1wcm9qZWN0LWNyZWF0ZSc7XG5pbXBvcnQgUXVpY2tBY2Nlc3MgZnJvbSAnLi4vcXVpY2stYWNjZXNzJztcbmltcG9ydCBSZWRpcmVjdFRvTG9naW4gZnJvbSAnLi9yZWRpcmVjdC10by1sb2dpbic7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5cbnR5cGUgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcyBleHRlbmRzIHt9PiA9IHtcbiAgYXBvbGxvQ2xpZW50PzogQXBvbGxvQ2xpZW50PE5vcm1hbGl6ZWRDYWNoZU9iamVjdD47XG4gIC8qKlxuICAgKiBOT1RFOiB0aGUgZW52aXJvbm1lbnQgdmFsdWUgcGFzc2VkIGhlcmUgaXMgdXN1YWxseSBgd2luZG93LmFwcGAuXG4gICAqIFRoaXMgb2JqZWN0IHVzdWFsbHkgY29udGFpbnMgdmFsdWVzIGFzIHN0cmluZyBhbmQgd2lsbCBiZSBcInRyYW5zZm9ybWVkXCJcbiAgICogdG8gYSByZWFsIG9iamVjdCB3aXRoIHByb3BlciBzY2FsYXIgdmFsdWVzIGluIHRoZSBBcHBsaWNhdGlvblNoZWxsLlxuICAgKiBUbyBrZWVwIHRoZSB0eXBlcyBzaW1wbGUsIHdlIGFzc2lnbiBoZXJlIHRoZSBhbHJlYWR5IGNvZXJjZWQgdHlwZSBvYmplY3QuXG4gICAqIFRoaXMgc2hvdWxkIGJlIGZpbmUsIGFzIGNvbnN1bWVycyBvZiB0aGUgYXBwbGljYXRpb24gY2FuIHVzZSB0aGVcbiAgICogYEFwcGxpY2F0aW9uV2luZG93YCB0eXBlIGZyb20gdGhlIGBAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHNgIHBhY2thZ2VcbiAgICogdG8gdHlwZSBjYXN0IGl0OlxuICAgKlxuICAgKiBgYGB0c3hcbiAgICogaW1wb3J0IHsgQXBwbGljYXRpb25XaW5kb3cgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuICAgKlxuICAgKiBkZWNsYXJlIGxldCB3aW5kb3c6IEFwcGxpY2F0aW9uV2luZG93O1xuICAgKlxuICAgKiA8QXBwbGljYXRpb25TaGVsbCBlbnZpcm9ubWVudD17d2luZG93LmFwcH0gLz5cbiAgICogYGBgXG4gICAqL1xuICBlbnZpcm9ubWVudDogVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICB0cmFja2luZ0V2ZW50TGlzdD86IFRyYWNraW5nTGlzdDtcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uUmVnaXN0ZXJFcnJvckxpc3RlbmVyczogKGFyZ3M6IHsgZGlzcGF0Y2g6IERpc3BhdGNoIH0pID0+IHZvaWQ7XG4gIG9uTWVudUl0ZW1DbGljaz86IDxUcmFja0ZuPihcbiAgICBldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LFxuICAgIHRyYWNrOiBUcmFja0ZuXG4gICkgPT4gdm9pZDtcbiAgcmVuZGVyPzogKCkgPT4gSlNYLkVsZW1lbnQ7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICAvLyBPbmx5IGF2YWlsYWJsZSBpbiBkZXZlbG9wbWVudCBtb2RlXG4gIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ2FwcEJhciddPjtcbiAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPzogKCkgPT4gUHJvbWlzZTxUQXBwbGljYXRpb25zTWVudVsnbmF2QmFyJ10+O1xufTtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuY29uc3QgZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IgPSAoZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXSkgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlID09PSAnVU5BVVRIRU5USUNBVEVEJ1xuICApO1xuY29uc3QgZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSAoXG4gIGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ11cbikgPT5cbiAgZ3JhcGhRTEVycm9ycy5maW5kKFxuICAgIChncWxFcnJvcikgPT5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UgJiZcbiAgICAgIC8vIE5PVEU6IFRoZSBDVFAgQVBJIGRvZXMgbm90IHByb3ZpZGUgYW4gZXJyb3IgY29kZSBpbiB0aGlzIGNhc2UuXG4gICAgICBncWxFcnJvci5tZXNzYWdlLmluY2x1ZGVzKCd3YXMgbm90IGZvdW5kLicpXG4gICk7XG5cbmV4cG9ydCBjb25zdCBNYWluQ29udGFpbmVyID0gc3R5bGVkLm1haW5gXG4gIGdyaWQtY29sdW1uOiAyO1xuICBncmlkLXJvdzogMztcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBSZXN0cmljdGVkQXBwbGljYXRpb24gPSA8XG4gIEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fVxuPihcbiAgcHJvcHM6IE9taXQ8XG4gICAgUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz4sXG4gICAgJ2Vudmlyb25tZW50JyB8ICdvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnMnXG4gID5cbikgPT4ge1xuICBjb25zdCBhcHBsaWNhdGlvbkVudmlyb25tZW50ID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiBjb250ZXh0LmVudmlyb25tZW50XG4gICkgYXMgVEFwcGxpY2F0aW9uQ29udGV4dDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDxGZXRjaFVzZXI+XG4gICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdVc2VyLCB1c2VyLCBlcnJvciB9KSA9PiB7XG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIC8vIEluIGNhc2UgdGhlcmUgaXMgYW4gdW5hdXRob3JpemVkIGVycm9yLCB3ZSByZWRpcmVjdCB0byB0aGUgbG9naW4gcGFnZVxuICAgICAgICAgIGlmIChlcnJvci5ncmFwaFFMRXJyb3JzICYmIEFycmF5LmlzQXJyYXkoZXJyb3IuZ3JhcGhRTEVycm9ycykpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VuYXV0aG9yaXplZEVycm9yID0gZ2V0SGFzVW5hdXRob3JpemVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IgfHwgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IpIHtcbiAgICAgICAgICAgICAgbGV0IGxvZ291dFJlYXNvbjpcbiAgICAgICAgICAgICAgICB8IHR5cGVvZiBMT0dPVVRfUkVBU09OU1trZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuICAgICAgICAgIGNvbnN0IHVzZXJMb2NhbGUgPSBnZXRCcm93c2VyTG9jYWxlKHdpbmRvdyk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXt1c2VyTG9jYWxlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVwb3J0RXJyb3JUb1NlbnRyeShlcnJvciwge30pO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyIGxvY2FsZT17bG9jYWxlfSBtZXNzYWdlcz17bWVzc2FnZXN9PlxuICAgICAgICAgICAgICAgICAgICA8RXJyb3JBcG9sb2dpemVyIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9Bc3luY0xvY2FsZURhdGE+XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2plY3RLZXlGcm9tVXJsID0gc2VsZWN0UHJvamVjdEtleUZyb21VcmwobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsvKlxuICAgICAgICAgICAgTk9URTogd2UgZG8gbm90IHdhbnQgdG8gbG9hZCB0aGUgbG9jYWxlIGRhdGEgYXMgbG9uZyBhcyB3ZSBkbyBub3RcbiAgICAgICAgICAgIGtub3cgdGhlIHVzZXIgc2V0dGluZy4gVGhpcyBpcyBpbXBvcnRhbnQgaW4gb3JkZXIgdG8gYXZvaWQgZmxhc2hpbmdcbiAgICAgICAgICAgIG9mIHRyYW5zbGF0ZWQgY29udGVudCBvbiBzdWJzZXF1ZW50IHJlLXJlbmRlcnMuXG4gICAgICAgICAgICBUaGVyZWZvcmUsIGFzIGxvbmcgYXMgdGhlcmUgaXMgbm8gbG9jYWxlLCB0aGUgY2hpbGRyZW4gc2hvdWxkIGNvbnNpZGVyIHVzaW5nIHRoZVxuICAgICAgICAgICAgYGlzTG9hZGluZ2AgcHJvcCB0byBkZWNpZGUgd2hhdCB0byByZW5kZXIuXG4gICAgICAgICAgKi99XG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlciAmJiB1c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFZlcnNpb25UcmFja2VyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIE5PVEU6IHRoZSByZXF1ZXN0cyBpbiBmbGlnaHQgbG9hZGVyIHdpbGwgcmVuZGVyIGEgbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICAgIHNwaW5uZXIgaW50byB0aGUgQXBwQmFyLiAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UmVxdWVzdHNJbkZsaWdodExvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTZW50cnlVc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1Vc2VyVHJhY2tlciB1c2VyPXt1c2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxHdG1BcHBsaWNhdGlvblRyYWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTmFtZT17YXBwbGljYXRpb25FbnZpcm9ubWVudC5hcHBsaWNhdGlvbk5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJCdXNpbmVzc1JvbGU9e3VzZXI/LmJ1c2luZXNzUm9sZX1cbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJhcHBsaWNhdGlvbi1sYXlvdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byA0M3B4IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ2xvYmFsLW5vdGlmaWNhdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXNpZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgdGhlIGxvYWRpbmcgbmF2YmFyIGFzIGxvbmcgYXMgYWxsIHRoZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFzbid0IGJlZW4gbG9hZGVkLCBvciBpZiB0aGUgcHJvamVjdCBkb2VzIG5vdCBleGlzdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ05hdkJhciAvPjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBvcnRhbHNDb250YWluZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBvbmx5IG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGhhdmUgYW4gaW50ZXJtZWRpYXJ5IDxkaXY+IHdyYXBwaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Vmlldz4gY29tcG9uZW50IHRoYXQgaXMgdXNlZCB0byB3cmFwIGV2ZXJ5IGNvbnRlbnQtdmlldy4gVGhpcyBpbnRlcm1lZGlhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gaXMgc29sZWx5IHVzZWQgZm9yIGFkZGluZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgY29udGVudC12aWV3LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGlzIGNvdWxkIGJlIGRvbmUgYnkgcGFzc2luZyB0aGUgdHJhY2tpbmcgY29udGV4dCB0byB0aGUgPFZpZXc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBsZXQgaXQgZG8gdGhlIGxheW91dCwgc28gd2UgY2FuIGF2b2lkIGxheWluZyBvdXIgZnJvbSB0aGUgb3V0c2lkZSBhcyB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBoZXJlLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAqIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG89XCIvYWNjb3VudC9wcm9maWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvYWNjb3VudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYHJlbmRlcmAgZnVuY3Rpb24sIHdlIGFzc3VtZSBpdCdzIG9uZSBvZiB0d28gY2FzZXM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLiBUaGUgYXBwbGljYXRpb24gZG9lcyBub3QgdXNlIGBjaGlsZHJlbmAgYW5kIHRoZXJlZm9yZSBpbXBsZW1lbnRzIHRoZSByb3V0ZXMgaW5jbHVkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgPFJvdXRlQ2F0Y2hBbGw+ICh0aGlzIGlzIHRoZSBcImxlZ2FjeVwiIGJlaGF2aW9yKS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDIuIEl0J3MgdGhlIGFjY291bnQgYXBwbGljYXRpb24sIHdoaWNoIGFsd2F5cyB1c2VzIGByZW5kZXJgIGFuZCB0aGVyZWZvcmUgc2hvdWxkIHJlbmRlciBhcyBub3JtYWwuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW4gY2FzZSB0aGUgQXBwU2hlbGwgdXNlcyB0aGUgYGNoaWxkcmVuYCBmdW5jdGlvbiwgd2UgY2FuIGFsd2F5cyBhc3N1bWUgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaXQncyBhIG5vcm1hbCBDdXN0b20gQXBwbGljYXRpb24gYW5kIHRoYXQgaXQgc2hvdWxkIHRyaWdnZXIgYSBmb3JjZSByZWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnJlbmRlciA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD57cHJvcHMucmVuZGVyKCl9PC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVDYXRjaEFsbCAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey8qIFByb2plY3Qgcm91dGVzICovfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlciAmJiB1c2VyLmRlZmF1bHRQcm9qZWN0S2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXNlcikgcmV0dXJuIDxBcHBsaWNhdGlvbkxvYWRlciAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNQcm9qZWN0S2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPXtgLyR7cHJldmlvdXNQcm9qZWN0S2V5fWB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0PXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiLzpwcm9qZWN0S2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9eyhyb3V0ZXJQcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g9e3JvdXRlclByb3BzLm1hdGNofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbj17cm91dGVyUHJvcHMubG9jYXRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVmZmVjdGl2ZWx5IHJlbmRlcnMgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lmaWMgcGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0Q29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcblJlc3RyaWN0ZWRBcHBsaWNhdGlvbi5kaXNwbGF5TmFtZSA9ICdSZXN0cmljdGVkQXBwbGljYXRpb24nO1xuXG5jb25zdCBBcHBsaWNhdGlvblNoZWxsID0gPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4oXG4gIHByb3BzOiBQcm9wczxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuKSA9PiB7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcHJvcHMub25SZWdpc3RlckVycm9yTGlzdGVuZXJzKHtcbiAgICAgIGRpc3BhdGNoOiBpbnRlcm5hbFJlZHV4U3RvcmUuZGlzcGF0Y2gsXG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbXSk7IC8vIDwtLSBydW4gb25seSBvbmNlLCB3aGVuIGNvbXBvbmVudCBtb3VudHNcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R2xvYmFsXG4gICAgICAgIHN0eWxlcz17Y3NzYFxuICAgICAgICAgICNhcHAge1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAuUmVhY3RNb2RhbF9fQm9keS0tb3BlbiBtYWluIHtcbiAgICAgICAgICAgIC8qIFdoZW4gYSBtb2RhbCBpcyBvcGVuLCB3ZSBzaG91bGQgcHJldmVudCB0aGUgY29udGVudCB0byBiZSBzY3JvbGxhYmxlICovXG4gICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgICA8QXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgIGFwb2xsb0NsaWVudD17cHJvcHMuYXBvbGxvQ2xpZW50fVxuICAgICAgICBlbnZpcm9ubWVudD17cHJvcHMuZW52aXJvbm1lbnR9XG4gICAgICAgIHRyYWNraW5nRXZlbnRMaXN0PXtwcm9wcy50cmFja2luZ0V2ZW50TGlzdH1cbiAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgID5cbiAgICAgICAgeyh7IGlzQXV0aGVudGljYXRlZCB9KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFN3aXRjaD5cbiAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9sb2dvdXRcIj5cbiAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdFRvTG9nb3V0IC8+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICA8UmVzdHJpY3RlZEFwcGxpY2F0aW9uPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGZWF0dXJlRmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVGbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICByZW5kZXI9e3Byb3BzLnJlbmRlcn1cbiAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgICAgICAgICAgb25NZW51SXRlbUNsaWNrPXtwcm9wcy5vbk1lbnVJdGVtQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5ERVZfT05MWV9fbG9hZE5hdmJhck1lbnVDb25maWdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgICAgICAgICAgICA8L1Jlc3RyaWN0ZWRBcHBsaWNhdGlvbj5cbiAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ2luIC8+O1xuICAgICAgICB9fVxuICAgICAgPC9BcHBsaWNhdGlvblNoZWxsUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuQXBwbGljYXRpb25TaGVsbC5kaXNwbGF5TmFtZSA9ICdBcHBsaWNhdGlvblNoZWxsJztcbkFwcGxpY2F0aW9uU2hlbGwudmVyc2lvbiA9IHZlcnNpb247XG5cbmV4cG9ydCBkZWZhdWx0IEFwcGxpY2F0aW9uU2hlbGw7XG4iXX0= */",
|
|
4464
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnZ0JtQiIsImZpbGUiOiJhcHBsaWNhdGlvbi1zaGVsbC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERpc3BhdGNoIH0gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHR5cGUgeyBURmxhZ3MgfSBmcm9tICdAZmxvcGZsaXAvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBOb3JtYWxpemVkQ2FjaGVPYmplY3QgfSBmcm9tICdAYXBvbGxvL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB0eXBlIHsgVEFwcGxpY2F0aW9uc01lbnUgfSBmcm9tICcuLi8uLi90eXBlcy9nZW5lcmF0ZWQvcHJveHknO1xuaW1wb3J0IHR5cGUgeyBUcmFja2luZ0xpc3QgfSBmcm9tICcuLi8uLi91dGlscy9ndG0nO1xuXG5pbXBvcnQgeyBSZWFjdE5vZGUsIFN5bnRoZXRpY0V2ZW50LCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSZWRpcmVjdCwgUm91dGUsIFN3aXRjaCwgdXNlTG9jYXRpb24gfSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7IEFwb2xsb0NsaWVudCB9IGZyb20gJ0BhcG9sbG8vY2xpZW50JztcbmltcG9ydCB7IEdsb2JhbCwgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgcmVwb3J0RXJyb3JUb1NlbnRyeSxcbiAgU2VudHJ5VXNlclRyYWNrZXIsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3NlbnRyeSc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcixcbiAgdXNlQXBwbGljYXRpb25Db250ZXh0LFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1zaGVsbC1jb25uZWN0b3JzJztcbmltcG9ydCB7IFBvcnRhbHNDb250YWluZXIgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnNMaXN0IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvcmVhY3Qtbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgeyBBc3luY0xvY2FsZURhdGEgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB2ZXJzaW9uIGZyb20gJy4uLy4uL3ZlcnNpb24nO1xuaW1wb3J0IGludGVybmFsUmVkdXhTdG9yZSBmcm9tICcuLi8uLi9jb25maWd1cmUtc3RvcmUnO1xuaW1wb3J0IHsgc2VsZWN0UHJvamVjdEtleUZyb21VcmwsIGdldFByZXZpb3VzUHJvamVjdEtleSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCBQcm9qZWN0RGF0YUxvY2FsZSBmcm9tICcuLi9wcm9qZWN0LWRhdGEtbG9jYWxlJztcbmltcG9ydCBBcHBsaWNhdGlvblNoZWxsUHJvdmlkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tc2hlbGwtcHJvdmlkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBGZXRjaFVzZXIgZnJvbSAnLi4vZmV0Y2gtdXNlcic7XG5pbXBvcnQgVmVyc2lvblRyYWNrZXIgZnJvbSAnLi4vdmVyc2lvbi10cmFja2VyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgUHJvamVjdENvbnRhaW5lciBmcm9tICcuLi9wcm9qZWN0LWNvbnRhaW5lcic7XG5pbXBvcnQgU2V0dXBGbG9wRmxpcFByb3ZpZGVyIGZyb20gJy4uL3NldHVwLWZsb3AtZmxpcC1wcm92aWRlcic7XG5pbXBvcnQgUmVxdWVzdHNJbkZsaWdodExvYWRlciBmcm9tICcuLi9yZXF1ZXN0cy1pbi1mbGlnaHQtbG9hZGVyJztcbmltcG9ydCBHdG1Vc2VyVHJhY2tlciBmcm9tICcuLi9ndG0tdXNlci10cmFja2VyJztcbmltcG9ydCBHdG1BcHBsaWNhdGlvblRyYWNrZXIgZnJvbSAnLi4vZ3RtLWFwcGxpY2F0aW9uLXRyYWNrZXInO1xuaW1wb3J0IE5hdkJhciwgeyBMb2FkaW5nTmF2QmFyIH0gZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBSb3V0ZUNhdGNoQWxsIGZyb20gJy4uL3JvdXRlLWNhdGNoLWFsbCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ2luIGZyb20gJy4vcmVkaXJlY3QtdG8tbG9naW4nO1xuaW1wb3J0IFJlZGlyZWN0VG9Mb2dvdXQgZnJvbSAnLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuXG50eXBlIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXMgZXh0ZW5kcyB7fT4gPSB7XG4gIGFwb2xsb0NsaWVudD86IEFwb2xsb0NsaWVudDxOb3JtYWxpemVkQ2FjaGVPYmplY3Q+O1xuICAvKipcbiAgICogTk9URTogdGhlIGVudmlyb25tZW50IHZhbHVlIHBhc3NlZCBoZXJlIGlzIHVzdWFsbHkgYHdpbmRvdy5hcHBgLlxuICAgKiBUaGlzIG9iamVjdCB1c3VhbGx5IGNvbnRhaW5zIHZhbHVlcyBhcyBzdHJpbmcgYW5kIHdpbGwgYmUgXCJ0cmFuc2Zvcm1lZFwiXG4gICAqIHRvIGEgcmVhbCBvYmplY3Qgd2l0aCBwcm9wZXIgc2NhbGFyIHZhbHVlcyBpbiB0aGUgQXBwbGljYXRpb25TaGVsbC5cbiAgICogVG8ga2VlcCB0aGUgdHlwZXMgc2ltcGxlLCB3ZSBhc3NpZ24gaGVyZSB0aGUgYWxyZWFkeSBjb2VyY2VkIHR5cGUgb2JqZWN0LlxuICAgKiBUaGlzIHNob3VsZCBiZSBmaW5lLCBhcyBjb25zdW1lcnMgb2YgdGhlIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlXG4gICAqIGBBcHBsaWNhdGlvbldpbmRvd2AgdHlwZSBmcm9tIHRoZSBgQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzYCBwYWNrYWdlXG4gICAqIHRvIHR5cGUgY2FzdCBpdDpcbiAgICpcbiAgICogYGBgdHN4XG4gICAqIGltcG9ydCB7IEFwcGxpY2F0aW9uV2luZG93IH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvY29uc3RhbnRzJztcbiAgICpcbiAgICogZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcbiAgICpcbiAgICogPEFwcGxpY2F0aW9uU2hlbGwgZW52aXJvbm1lbnQ9e3dpbmRvdy5hcHB9IC8+XG4gICAqIGBgYFxuICAgKi9cbiAgZW52aXJvbm1lbnQ6IFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgdHJhY2tpbmdFdmVudExpc3Q/OiBUcmFja2luZ0xpc3Q7XG4gIGFwcGxpY2F0aW9uTWVzc2FnZXM6IFRBc3luY0xvY2FsZURhdGFQcm9wc1snYXBwbGljYXRpb25NZXNzYWdlcyddO1xuICBvblJlZ2lzdGVyRXJyb3JMaXN0ZW5lcnM6IChhcmdzOiB7IGRpc3BhdGNoOiBEaXNwYXRjaCB9KSA9PiB2b2lkO1xuICBvbk1lbnVJdGVtQ2xpY2s/OiA8VHJhY2tGbj4oXG4gICAgZXZlbnQ6IFN5bnRoZXRpY0V2ZW50PEhUTUxBbmNob3JFbGVtZW50PixcbiAgICB0cmFjazogVHJhY2tGblxuICApID0+IHZvaWQ7XG4gIHJlbmRlcj86ICgpID0+IEpTWC5FbGVtZW50O1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgLy8gT25seSBhdmFpbGFibGUgaW4gZGV2ZWxvcG1lbnQgbW9kZVxuICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc/OiAoKSA9PiBQcm9taXNlPFRBcHBsaWNhdGlvbnNNZW51WydhcHBCYXInXT47XG4gIERFVl9PTkxZX19sb2FkTmF2YmFyTWVudUNvbmZpZz86ICgpID0+IFByb21pc2U8VEFwcGxpY2F0aW9uc01lbnVbJ25hdkJhciddPjtcbn07XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmNvbnN0IGdldEhhc1VuYXV0aG9yaXplZEVycm9yID0gKGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ10pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5leHRlbnNpb25zICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSA9PT0gJ1VOQVVUSEVOVElDQVRFRCdcbiAgKTtcbmNvbnN0IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gKFxuICBncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddXG4pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5tZXNzYWdlICYmXG4gICAgICAvLyBOT1RFOiBUaGUgQ1RQIEFQSSBkb2VzIG5vdCBwcm92aWRlIGFuIGVycm9yIGNvZGUgaW4gdGhpcyBjYXNlLlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZS5pbmNsdWRlcygnd2FzIG5vdCBmb3VuZC4nKVxuICApO1xuXG5leHBvcnQgY29uc3QgTWFpbkNvbnRhaW5lciA9IHN0eWxlZC5tYWluYFxuICBncmlkLWNvbHVtbjogMjtcbiAgZ3JpZC1yb3c6IDM7XG5cbiAgLypcbiAgICBBbGxvdyB0aGUgdGhpcyBmbGV4IGNoaWxkIHRvIGdyb3cgc21hbGxlciB0aGFuIGl0cyBzbWFsbGVzdCBjb250ZW50LlxuICAgIFRoaXMgaXMgbmVlZGVkIHdoZW4gdGhlcmUgaXMgYSByZWFsbHkgd2lkZSB0ZXh0IGluc2lkZSB0aGF0IHdvdWxkIHN0cmV0Y2hcbiAgICB0aGlzIG5vZGUgdG8gYmUgd2lkZXIgdGhhbiB0aGUgcGFyZW50LlxuICAqL1xuICBtaW4td2lkdGg6IDA7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuXG4gIC8qXG4gICAgbGF5b3V0IHRoZSBjaGlsZHJlbi4gVGhlcmUgd2lsbCBhbHdheXMgYmUgdGhlIHBhZ2UgYW5kIHNpZGUgbm90aWZpY2F0aW9uXG4gICAgYWJvdXQgdGhlIGFjdHVhbCBjb250ZW50LiBUaGUgY29udGVudCBzaG91bGQgc3RyZXRjaCB0byBmaWxsIHRoZSByZXN0IG9mXG4gICAgdGhlIHBhZ2UuXG4gICovXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgLypcbiAgICBzZXQgcG9zaXRpb24gdG8gcmVsYXRpdmUgdG8gbGF5b3V0IG5vdGlmaWNhdGlvbnMgYW5kIG1vZGFsc1xuICAqL1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5gO1xuXG5leHBvcnQgY29uc3QgUmVzdHJpY3RlZEFwcGxpY2F0aW9uID0gPFxuICBBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzIGV4dGVuZHMge31cbj4oXG4gIHByb3BzOiBPbWl0PFxuICAgIFByb3BzPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+LFxuICAgICdlbnZpcm9ubWVudCcgfCAnb25SZWdpc3RlckVycm9yTGlzdGVuZXJzJ1xuICA+XG4pID0+IHtcbiAgY29uc3QgYXBwbGljYXRpb25FbnZpcm9ubWVudCA9IHVzZUFwcGxpY2F0aW9uQ29udGV4dChcbiAgICAoY29udGV4dCkgPT4gY29udGV4dC5lbnZpcm9ubWVudFxuICApIGFzIFRBcHBsaWNhdGlvbkNvbnRleHQ8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5bJ2Vudmlyb25tZW50J107XG4gIC8vIFRPRE86IHVzaW5nIHRoaXMgaG9vayB3aWxsIHN1YnNjcmliZSB0aGUgY29tcG9uZW50IHRvIHJvdXRlIHVwZGF0ZXMuXG4gIC8vIFRoaXMgaXMgY3VycmVudGx5IHVzZWZ1bCBmb3IgZGV0ZWN0aW5nIGEgY2hhbmdlIGluIHRoZSBwcm9qZWN0IGtleVxuICAvLyBmcm9tIFVSTCAoXCIvXCIgLS0+IFwiLzpwcm9qZWN0S2V5XCIpLlxuICAvLyBIb3dldmVyLCBldmVyeSByb3V0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIGEgcmUtcmVuZGVyLiBUaGlzIGlzIHByb2JhYmx5XG4gIC8vIG9rLWlzaCBidXQgd2UgbWlnaHQgd2FudCB0byBsb29rIGludG8gYSBtb3JlIHBlcmZvcm1hbnQgc29sdXRpb24uXG4gIGNvbnN0IGxvY2F0aW9uID0gdXNlTG9jYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8RmV0Y2hVc2VyPlxuICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nVXNlciwgdXNlciwgZXJyb3IgfSkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBJbiBjYXNlIHRoZXJlIGlzIGFuIHVuYXV0aG9yaXplZCBlcnJvciwgd2UgcmVkaXJlY3QgdG8gdGhlIGxvZ2luIHBhZ2VcbiAgICAgICAgICBpZiAoZXJyb3IuZ3JhcGhRTEVycm9ycyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmdyYXBoUUxFcnJvcnMpKSB7XG4gICAgICAgICAgICBjb25zdCBoYXNVbmF1dGhvcml6ZWRFcnJvciA9IGdldEhhc1VuYXV0aG9yaXplZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yIHx8IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKSB7XG4gICAgICAgICAgICAgIGxldCBsb2dvdXRSZWFzb246XG4gICAgICAgICAgICAgICAgfCB0eXBlb2YgTE9HT1VUX1JFQVNPTlNba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXIgJiYgdXNlci5sYW5ndWFnZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nTG9jYWxlRGF0YSwgbG9jYWxlLCBtZXNzYWdlcyB9KSA9PiAoXG4gICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlclxuICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gbm90IHdhbnQgdG8gcGFzcyB0aGUgbGFuZ3VhZ2UgYXMgbG9uZyBhcyB0aGUgbG9jYWxlIGRhdGFcbiAgICAgICAgICAgICAgICAgIC8vIGlzIG5vdCBsb2FkZWQuXG4gICAgICAgICAgICAgICAgICB7Li4uKGlzTG9hZGluZ0xvY2FsZURhdGEgPyB7fSA6IHsgbG9jYWxlLCBtZXNzYWdlcyB9KX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U2V0dXBGbG9wRmxpcFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICBsZENsaWVudFNpZGVJZD17YXBwbGljYXRpb25FbnZpcm9ubWVudC5sZENsaWVudFNpZGVJZH1cbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxWZXJzaW9uVHJhY2tlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBOT1RFOiB0aGUgcmVxdWVzdHMgaW4gZmxpZ2h0IGxvYWRlciB3aWxsIHJlbmRlciBhIGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyIGludG8gdGhlIEFwcEJhci4gKi99XG4gICAgICAgICAgICAgICAgICAgICAgPFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U2VudHJ5VXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtVXNlclRyYWNrZXIgdXNlcj17dXNlcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8R3RtQXBwbGljYXRpb25UcmFja2VyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnQuYXBwbGljYXRpb25OYW1lfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyQnVzaW5lc3NSb2xlPXt1c2VyPy5idXNpbmVzc1JvbGV9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYXBwbGljYXRpb24tbGF5b3V0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gNDNweCAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7XG4gICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdsb2JhbC1ub3RpZmljYXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5HTE9CQUx9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc1Byb2plY3RMb2FkaW5nLCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9hZGluZyB8fCAhcHJvamVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIHByb2plY3QgY29udGV4dCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3aGVuIHRoZSBwcm9qZWN0IGlzIGV4cGlyZWQgb3Igc3Vwc2VuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkVXNlUHJvamVjdENvbnRleHQgPSAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2plY3Quc3VzcGVuc2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0LnN1c3BlbnNpb24uaXNBY3RpdmUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5leHBpcnkgJiYgcHJvamVjdC5leHBpcnkuaXNBY3RpdmUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkVXNlUHJvamVjdENvbnRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPFF1aWNrQWNjZXNzIC8+O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0RGF0YUxvY2FsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVzPXtwcm9qZWN0Lmxhbmd1YWdlc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlOiBkYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3REYXRhTG9jYWxlPXtkYXRhTG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFF1aWNrQWNjZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlUHJvamVjdERhdGFMb2NhbGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdERhdGFMb2NhbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJoZWFkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwQmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWRBcHBiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLkRFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImFzaWRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIDxOYXZCYXI+IHNob3VsZCBvbmx5IGJlIHJlbmRlcmVkIHdpdGhpbiBhIHByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LCB0aGVyZWZvcmUgd2hlbiB0aGVyZSBpcyBhIGBwcm9qZWN0S2V5YC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBgcHJvamVjdEtleWAgaW4gdGhlIFVSTCAoZS5nLiBgL2FjY291bnRgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcm91dGVzKSwgd2UgZG9uJ3QgcmVuZGVyIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHdlIGFsc28gXCJjYWNoZVwiIHRoZSBgcHJvamVjdEtleWAgaW4gbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byBcInJlLWh5ZHJhdGVcIiB0aGUgVVJMXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gKGUuZyB3aGVuIHlvdSBnbyB0byBgL2AsIHRoZXJlIHNob3VsZCBiZSBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVkaXJlY3QgdG8gYC86cHJvamVjdEtleWApLiBUaGVyZWZvcmUsIHdlIHNob3VsZCBub3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWx5IG9uIHRoZSB2YWx1ZSBpbiBsb2NhbFN0b3JhZ2UgdG8gZGV0ZXJtaW5lIHdoaWNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYHByb2plY3RLZXlgIGlzIGN1cnJlbnRseSB1c2VkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvamVjdEtleUZyb21VcmwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmV0Y2hQcm9qZWN0IHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nUHJvamVjdCwgcHJvamVjdCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBsb2FkaW5nIG5hdmJhciBhcyBsb25nIGFzIGFsbCB0aGUgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhc24ndCBiZWVuIGxvYWRlZCwgb3IgaWYgdGhlIHByb2plY3QgZG9lcyBub3QgZXhpc3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdOYXZCYXIgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiBkbyBub3QgcGFzcyB0aGUgYHByb2plY3RgIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwZXJtaXNzaW9ucyBmb3IgdGhlIE5hdmJhciBhcmUgcmVzb2x2ZWQgc2VwYXJhdGVseSwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgZGlmZmVyZW50IFJlYWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOYXZCYXI8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbkxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb2plY3RLZXlGcm9tVXJsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Q9e3Byb2plY3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLkRFVl9PTkxZX19sb2FkTmF2YmFyTWVudUNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvPVwiL2FjY291bnQvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgJiYgdXNlci5kZWZhdWx0UHJvamVjdEtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5PVEU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIGhhcyBub3QgYmVlbiBsb2FkZWQgYSBsb2FkaW5nIHNwaW5uZXIgaXMgc2hvd24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyBub3Qgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBub3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgdXNlciB3aWxsIGJlIHByb21wdGVkIHRvIGNyZWF0ZSBvbmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIEdpdmVuIHRoZSB1c2VyIHdhcyB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVkaXJlY3QgdG8gdGhhdCBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXVzZXIpIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1cIi86cHJvamVjdEtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsocm91dGVyUHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyPEFkZGl0aW9uYWxFbnZpcm9ubWVudFByb3BlcnRpZXM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoPXtyb3V0ZXJQcm9wcy5tYXRjaH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb249e3JvdXRlclByb3BzLmxvY2F0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBlZmZlY3RpdmVseSByZW5kZXJzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGlsZHJlbiwgd2hpY2ggaXMgdGhlIGFwcGxpY2F0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUHJvamVjdENvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Td2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgPC9TZXR1cEZsb3BGbGlwUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0FzeW5jTG9jYWxlRGF0YT5cbiAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICA8L0ZldGNoVXNlcj5cbiAgKTtcbn07XG5SZXN0cmljdGVkQXBwbGljYXRpb24uZGlzcGxheU5hbWUgPSAnUmVzdHJpY3RlZEFwcGxpY2F0aW9uJztcblxuY29uc3QgQXBwbGljYXRpb25TaGVsbCA9IDxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzIGV4dGVuZHMge30+KFxuICBwcm9wczogUHJvcHM8QWRkaXRpb25hbEVudmlyb25tZW50UHJvcGVydGllcz5cbikgPT4ge1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHByb3BzLm9uUmVnaXN0ZXJFcnJvckxpc3RlbmVycyh7XG4gICAgICBkaXNwYXRjaDogaW50ZXJuYWxSZWR1eFN0b3JlLmRpc3BhdGNoLFxuICAgIH0pO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pOyAvLyA8LS0gcnVuIG9ubHkgb25jZSwgd2hlbiBjb21wb25lbnQgbW91bnRzXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEdsb2JhbFxuICAgICAgICBzdHlsZXM9e2Nzc2BcbiAgICAgICAgICAjYXBwIHtcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLlJlYWN0TW9kYWxfX0JvZHktLW9wZW4gbWFpbiB7XG4gICAgICAgICAgICAvKiBXaGVuIGEgbW9kYWwgaXMgb3Blbiwgd2Ugc2hvdWxkIHByZXZlbnQgdGhlIGNvbnRlbnQgdG8gYmUgc2Nyb2xsYWJsZSAqL1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICAvPlxuICAgICAgPEFwcGxpY2F0aW9uU2hlbGxQcm92aWRlcjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICBhcG9sbG9DbGllbnQ9e3Byb3BzLmFwb2xsb0NsaWVudH1cbiAgICAgICAgZW52aXJvbm1lbnQ9e3Byb3BzLmVudmlyb25tZW50fVxuICAgICAgICB0cmFja2luZ0V2ZW50TGlzdD17cHJvcHMudHJhY2tpbmdFdmVudExpc3R9XG4gICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICA+XG4gICAgICAgIHsoeyBpc0F1dGhlbnRpY2F0ZWQgfSkgPT4ge1xuICAgICAgICAgIGlmIChpc0F1dGhlbnRpY2F0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9XCIvbG9nb3V0XCI+XG4gICAgICAgICAgICAgICAgICA8UmVkaXJlY3RUb0xvZ291dCAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgPFJvdXRlPlxuICAgICAgICAgICAgICAgICAgPFJlc3RyaWN0ZWRBcHBsaWNhdGlvbjxBZGRpdGlvbmFsRW52aXJvbm1lbnRQcm9wZXJ0aWVzPlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmVhdHVyZUZsYWdzPXtwcm9wcy5kZWZhdWx0RmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlRmxhZ3M9e3Byb3BzLmZlYXR1cmVGbGFnc31cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXtwcm9wcy5yZW5kZXJ9XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBERVZfT05MWV9fbG9hZEFwcGJhck1lbnVDb25maWc9e1xuICAgICAgICAgICAgICAgICAgICAgIHByb3BzLkRFVl9PTkxZX19sb2FkQXBwYmFyTWVudUNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIERFVl9PTkxZX19sb2FkTmF2YmFyTWVudUNvbmZpZz17XG4gICAgICAgICAgICAgICAgICAgICAgcHJvcHMuREVWX09OTFlfX2xvYWROYXZiYXJNZW51Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgICAgICAgICAgPC9SZXN0cmljdGVkQXBwbGljYXRpb24+XG4gICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgPC9Td2l0Y2g+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dpbiAvPjtcbiAgICAgICAgfX1cbiAgICAgIDwvQXBwbGljYXRpb25TaGVsbFByb3ZpZGVyPlxuICAgIDwvPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGwuZGlzcGxheU5hbWUgPSAnQXBwbGljYXRpb25TaGVsbCc7XG5BcHBsaWNhdGlvblNoZWxsLnZlcnNpb24gPSB2ZXJzaW9uO1xuXG5leHBvcnQgZGVmYXVsdCBBcHBsaWNhdGlvblNoZWxsO1xuIl19 */",
|
|
4458
4465
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
4459
4466
|
};
|
|
4460
4467
|
|