@commercetools-frontend/application-shell 24.10.0 → 24.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/{application-entry-point-c87294b0.cjs.dev.js → application-entry-point-18d8fba0.cjs.dev.js} +7 -4
  2. package/dist/{application-entry-point-10a5e1a5.esm.js → application-entry-point-1b23fb6b.esm.js} +6 -4
  3. package/dist/{application-entry-point-8c4b8e53.cjs.prod.js → application-entry-point-74a06151.cjs.prod.js} +4 -3
  4. package/dist/commercetools-frontend-application-shell.cjs.dev.js +12 -11
  5. package/dist/commercetools-frontend-application-shell.cjs.prod.js +12 -11
  6. package/dist/commercetools-frontend-application-shell.esm.js +12 -11
  7. package/dist/{custom-view-dev-host-5039dc1d.esm.js → custom-view-dev-host-091163ea.esm.js} +20 -16
  8. package/dist/{custom-view-dev-host-b5e3a16a.cjs.dev.js → custom-view-dev-host-17daf42a.cjs.dev.js} +21 -16
  9. package/dist/{custom-view-dev-host-21561a3a.cjs.prod.js → custom-view-dev-host-a682a499.cjs.prod.js} +21 -16
  10. package/dist/declarations-connectors/src/index.d.ts +1 -1
  11. package/dist/declarations-connectors/src/utils/index.d.ts +1 -0
  12. package/dist/declarations-connectors/src/utils/select-user-language-from-storage/index.d.ts +1 -0
  13. package/dist/declarations-connectors/src/utils/select-user-language-from-storage/select-user-language-from-storage.d.ts +1 -0
  14. package/dist/{index-17f02024.cjs.dev.js → index-1d1cc31f.cjs.dev.js} +225 -368
  15. package/dist/{index-e4de734f.esm.js → index-1dadca21.esm.js} +227 -368
  16. package/dist/{index-614accc4.cjs.dev.js → index-25183095.cjs.dev.js} +2 -2
  17. package/dist/{index-11b385bb.cjs.prod.js → index-3cfc1f1e.cjs.prod.js} +213 -348
  18. package/dist/{index-245e2980.cjs.prod.js → index-52c724ed.cjs.prod.js} +2 -2
  19. package/dist/{index-86039df7.esm.js → index-5aaa33bb.esm.js} +2 -2
  20. package/dist/{navbar-022383bd.cjs.dev.js → navbar-586f7774.cjs.dev.js} +111 -92
  21. package/dist/{navbar-844d350d.esm.js → navbar-88e0fd1f.esm.js} +110 -92
  22. package/dist/{navbar-acc2cd1b.cjs.prod.js → navbar-93183a2d.cjs.prod.js} +111 -92
  23. package/dist/oidc-258fc018.cjs.prod.js +115 -0
  24. package/dist/oidc-35e8e62a.esm.js +100 -0
  25. package/dist/oidc-87d116c1.cjs.dev.js +115 -0
  26. package/dist/{oidc-callback-c014b1b0.esm.js → oidc-callback-019d623d.esm.js} +16 -14
  27. package/dist/{oidc-callback-ad64d7f6.cjs.dev.js → oidc-callback-47743232.cjs.dev.js} +16 -14
  28. package/dist/{oidc-callback-9beece27.cjs.prod.js → oidc-callback-6bdb3c6f.cjs.prod.js} +16 -14
  29. package/dist/{project-container-3e3c7013.cjs.dev.js → project-container-2245f020.cjs.dev.js} +53 -19
  30. package/dist/{project-container-e11b2fc6.esm.js → project-container-7fce9e66.esm.js} +52 -19
  31. package/dist/{project-container-f1710162.cjs.prod.js → project-container-954dbf0f.cjs.prod.js} +53 -19
  32. package/dist/{project-expired-39589063.esm.js → project-expired-1b0845c5.esm.js} +12 -11
  33. package/dist/{project-expired-f29e6d47.cjs.dev.js → project-expired-c941b592.cjs.dev.js} +12 -11
  34. package/dist/{project-expired-59169760.cjs.prod.js → project-expired-ee8b232c.cjs.prod.js} +12 -11
  35. package/dist/{project-not-found-88730a64.esm.js → project-not-found-340217f6.esm.js} +11 -10
  36. package/dist/{project-not-found-d968ede6.cjs.dev.js → project-not-found-9b7cfe88.cjs.dev.js} +11 -10
  37. package/dist/{project-not-found-625f0e91.cjs.prod.js → project-not-found-9cee9625.cjs.prod.js} +11 -10
  38. package/dist/{project-not-initialized-6d69541c.esm.js → project-not-initialized-55fd8df4.esm.js} +12 -11
  39. package/dist/{project-not-initialized-22d54dab.cjs.prod.js → project-not-initialized-7a058b68.cjs.prod.js} +12 -11
  40. package/dist/{project-not-initialized-f346dc17.cjs.dev.js → project-not-initialized-7b3843a3.cjs.dev.js} +12 -11
  41. package/dist/{project-suspended-d48e7d51.cjs.prod.js → project-suspended-12618898.cjs.prod.js} +11 -10
  42. package/dist/{project-suspended-be2e3265.esm.js → project-suspended-529b09d6.esm.js} +11 -10
  43. package/dist/{project-suspended-6a886974.cjs.dev.js → project-suspended-78e94b85.cjs.dev.js} +11 -10
  44. package/dist/{redirect-to-login-12f467b8.cjs.prod.js → redirect-to-login-3e4a6434.cjs.prod.js} +13 -10
  45. package/dist/{redirect-to-login-3bee13ba.cjs.dev.js → redirect-to-login-66ea895a.cjs.dev.js} +13 -10
  46. package/dist/{redirect-to-login-2944c890.esm.js → redirect-to-login-edbfacbc.esm.js} +13 -10
  47. package/dist/{redirect-to-logout-645e12ca.cjs.prod.js → redirect-to-logout-52a7810f.cjs.prod.js} +14 -12
  48. package/dist/{redirect-to-logout-0196921c.esm.js → redirect-to-logout-5d5fc361.esm.js} +14 -12
  49. package/dist/{redirect-to-logout-477ea146.cjs.dev.js → redirect-to-logout-b331b037.cjs.dev.js} +14 -12
  50. package/dist/{redirector-72ccfbc2.cjs.dev.js → redirector-0efdd994.cjs.dev.js} +4 -3
  51. package/dist/{redirector-d856975f.esm.js → redirector-656c6ee7.esm.js} +4 -3
  52. package/dist/{redirector-0c72d0a4.cjs.prod.js → redirector-c858d578.cjs.prod.js} +4 -3
  53. package/dist/{requests-in-flight-loader-82b93073.esm.js → requests-in-flight-loader-20021ccc.esm.js} +11 -10
  54. package/dist/{requests-in-flight-loader-08cfa2ce.cjs.prod.js → requests-in-flight-loader-64d2e12d.cjs.prod.js} +11 -10
  55. package/dist/{requests-in-flight-loader-fb6a69f6.cjs.dev.js → requests-in-flight-loader-83cab813.cjs.dev.js} +11 -10
  56. package/dist/{service-page-project-switcher-2d65c6f7.cjs.dev.js → service-page-project-switcher-49dabe13.cjs.dev.js} +1 -1
  57. package/dist/{service-page-project-switcher-1e41f587.esm.js → service-page-project-switcher-6cdd506b.esm.js} +1 -1
  58. package/dist/{service-page-project-switcher-2746dbcc.cjs.prod.js → service-page-project-switcher-f1b43eb7.cjs.prod.js} +1 -1
  59. package/dist/{use-applications-menu-823a2492.cjs.dev.js → use-applications-menu-48d924bd.cjs.prod.js} +47 -39
  60. package/dist/{use-applications-menu-14a5a1f4.cjs.prod.js → use-applications-menu-7f548a7a.cjs.dev.js} +47 -39
  61. package/dist/{use-applications-menu-1514af11.esm.js → use-applications-menu-b871849c.esm.js} +44 -37
  62. package/dist/{user-settings-menu-d75f4958.cjs.prod.js → user-settings-menu-6660f508.cjs.prod.js} +29 -22
  63. package/dist/{user-settings-menu-f98bea89.esm.js → user-settings-menu-afa82f2a.esm.js} +29 -22
  64. package/dist/{user-settings-menu-6113cdd3.cjs.dev.js → user-settings-menu-f5c74042.cjs.dev.js} +29 -22
  65. package/package.json +22 -22
  66. package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.dev.js +2 -1
  67. package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.prod.js +2 -1
  68. package/ssr/dist/commercetools-frontend-application-shell-ssr.esm.js +2 -1
  69. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +26 -22
  70. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +26 -22
  71. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +20 -17
  72. package/dist/oidc-8827f9fe.cjs.dev.js +0 -98
  73. package/dist/oidc-b2520905.esm.js +0 -84
  74. package/dist/oidc-d74e6aa2.cjs.prod.js +0 -98
  75. package/dist/quick-access-67db2a39.cjs.dev.js +0 -1893
  76. package/dist/quick-access-8c34e976.esm.js +0 -1865
  77. package/dist/quick-access-9001b324.cjs.prod.js +0 -1875
@@ -2,7 +2,7 @@
2
2
 
3
3
  var react = require('react');
4
4
  var reactRouterDom = require('react-router-dom');
5
- var index = require('./index-614accc4.cjs.dev.js');
5
+ var index = require('./index-25183095.cjs.dev.js');
6
6
  var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
7
7
  var _styled = require('@emotion/styled/base');
8
8
  var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
@@ -23,8 +23,9 @@ var constants = require('@commercetools-frontend/constants');
23
23
  var i18n = require('@commercetools-frontend/i18n');
24
24
  var reactNotifications = require('@commercetools-frontend/react-notifications');
25
25
  var sentry = require('@commercetools-frontend/sentry');
26
- var oidc = require('./oidc-8827f9fe.cjs.dev.js');
26
+ var oidc = require('./oidc-87d116c1.cjs.dev.js');
27
27
  require('@babel/runtime-corejs3/core-js-stable/url');
28
+ var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
28
29
  var designSystem = require('@commercetools-uikit/design-system');
29
30
  var Spacings = require('@commercetools-uikit/spacings');
30
31
  var reactIntl = require('react-intl');
@@ -32,6 +33,7 @@ var FlatButton = require('@commercetools-uikit/flat-button');
32
33
  var icons = require('@commercetools-uikit/icons');
33
34
  var location = require('./location-c835b8df.cjs.dev.js');
34
35
  var jsxRuntime = require('@emotion/react/jsx-runtime');
36
+ var _taggedTemplateLiteral = require('@babel/runtime-corejs3/helpers/taggedTemplateLiteral');
35
37
  var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
36
38
  var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
37
39
  var memoize = require('memoize-one');
@@ -43,13 +45,6 @@ var CTLogoSVG = require('@commercetools-frontend/assets/images/ct-logo.svg');
43
45
  var LoadingSpinner = require('@commercetools-uikit/loading-spinner');
44
46
  var history = require('@commercetools-frontend/browser-history');
45
47
  var l10n = require('@commercetools-frontend/l10n');
46
- var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
47
- var _Reflect$construct = require('@babel/runtime-corejs3/core-js-stable/reflect/construct');
48
- var _classCallCheck = require('@babel/runtime-corejs3/helpers/classCallCheck');
49
- var _createClass = require('@babel/runtime-corejs3/helpers/createClass');
50
- var _possibleConstructorReturn = require('@babel/runtime-corejs3/helpers/possibleConstructorReturn');
51
- var _getPrototypeOf = require('@babel/runtime-corejs3/helpers/getPrototypeOf');
52
- var _inherits = require('@babel/runtime-corejs3/helpers/inherits');
53
48
  require('@babel/runtime-corejs3/core-js-stable/instance/index-of');
54
49
  var _sliceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/slice');
55
50
  var _Object$fromEntries = require('@babel/runtime-corejs3/core-js-stable/object/from-entries');
@@ -61,7 +56,14 @@ var launchdarklyAdapter = require('@flopflip/launchdarkly-adapter');
61
56
  var reactBroadcast = require('@flopflip/react-broadcast');
62
57
  var types = require('@flopflip/types');
63
58
  var reactRedux = require('react-redux');
59
+ var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
64
60
  var _startsWithInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
61
+ var _Reflect$construct = require('@babel/runtime-corejs3/core-js-stable/reflect/construct');
62
+ var _classCallCheck = require('@babel/runtime-corejs3/helpers/classCallCheck');
63
+ var _createClass = require('@babel/runtime-corejs3/helpers/createClass');
64
+ var _possibleConstructorReturn = require('@babel/runtime-corejs3/helpers/possibleConstructorReturn');
65
+ var _getPrototypeOf = require('@babel/runtime-corejs3/helpers/getPrototypeOf');
66
+ var _inherits = require('@babel/runtime-corejs3/helpers/inherits');
65
67
  var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
66
68
  require('@commercetools-uikit/design-system/materials/resets.css');
67
69
  var ssr = require('@commercetools-frontend/application-config/ssr');
@@ -85,6 +87,7 @@ var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachIns
85
87
  var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
86
88
  var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
87
89
  var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
90
+ var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
88
91
  var Spacings__default = /*#__PURE__*/_interopDefault(Spacings);
89
92
  var FlatButton__default = /*#__PURE__*/_interopDefault(FlatButton);
90
93
  var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
@@ -95,19 +98,19 @@ var Text__default = /*#__PURE__*/_interopDefault(Text);
95
98
  var CTLogoSVG__default = /*#__PURE__*/_interopDefault(CTLogoSVG);
96
99
  var LoadingSpinner__default = /*#__PURE__*/_interopDefault(LoadingSpinner);
97
100
  var history__default = /*#__PURE__*/_interopDefault(history);
98
- var _Reflect$construct__default = /*#__PURE__*/_interopDefault(_Reflect$construct);
99
101
  var _sliceInstanceProperty__default = /*#__PURE__*/_interopDefault(_sliceInstanceProperty);
100
102
  var _Object$fromEntries__default = /*#__PURE__*/_interopDefault(_Object$fromEntries);
101
103
  var _flagsInstanceProperty__default = /*#__PURE__*/_interopDefault(_flagsInstanceProperty);
102
104
  var _startsWithInstanceProperty__default = /*#__PURE__*/_interopDefault(_startsWithInstanceProperty);
105
+ var _Reflect$construct__default = /*#__PURE__*/_interopDefault(_Reflect$construct);
103
106
  var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
104
107
  var _JSON$stringify__default = /*#__PURE__*/_interopDefault(_JSON$stringify);
105
108
  var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
106
109
 
107
110
  // NOTE: This string will be replaced on build time with the package version.
108
- var version = "24.10.0";
111
+ var version = "24.12.0";
109
112
 
110
- const RequestsInFlightLoader = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./requests-in-flight-loader-fb6a69f6.cjs.dev.js' /* webpackChunkName: "requests-in-flight-loader" */); }));
113
+ const RequestsInFlightLoader = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./requests-in-flight-loader-83cab813.cjs.dev.js' /* webpackChunkName: "requests-in-flight-loader" */); }));
111
114
 
112
115
  // Attempt to load the `projectKey` from localStorage
113
116
  function selectProjectKeyFromLocalStorage() {
@@ -133,7 +136,7 @@ var messages$1 = reactIntl.defineMessages({
133
136
  * A full page reload is needed as the user's project may have changed (deletions and/or additions).
134
137
  * As a result the project and user queries need refetching.
135
138
  */
136
- const redirectToProject = key => location.location.replace(`/${key}`);
139
+ const redirectToProject = key => location.location.replace("/".concat(key));
137
140
  const BackToProject = props => {
138
141
  const intl = reactIntl.useIntl();
139
142
  return jsxRuntime.jsx(FlatButton__default["default"], {
@@ -144,14 +147,8 @@ const BackToProject = props => {
144
147
  };
145
148
  BackToProject.displayName = 'BackToProject';
146
149
 
147
- const animationPulse = react$1.keyframes`
148
- 0% {
149
- background-color: ${designSystem.customProperties.colorNeutral};
150
- }
151
- 100% {
152
- background-color: ${designSystem.customProperties.colorNeutral95};
153
- }
154
- `;
150
+ var _templateObject;
151
+ const animationPulse = react$1.keyframes(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n 0% {\n background-color: ", ";\n }\n 100% {\n background-color: ", ";\n }\n"])), designSystem.customProperties.colorNeutral, designSystem.customProperties.colorNeutral95);
155
152
  const getWidthBySize = props => {
156
153
  switch (props.shape) {
157
154
  case 'dot':
@@ -254,7 +251,7 @@ var messages = reactIntl.defineMessages({
254
251
  const _excluded$3 = ["children"];
255
252
  function ownKeys$a(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
256
253
  function _objectSpread$a(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$a(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$a(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
257
- function _EMOTION_STRINGIFIED_CSS_ERROR__$4() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
254
+ function _EMOTION_STRINGIFIED_CSS_ERROR__$3() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
258
255
  var ProjectsQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "FetchUserProjects" }, variableDefinitions: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", alias: { kind: "Name", value: "user" }, name: { kind: "Name", value: "me" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "projects" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "total" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "results" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "name" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "suspension" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "isActive" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "expiry" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "isActive" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "isProductionProject" }, arguments: [], directives: [] }] } }] } }] } }] } }], loc: { start: 0, end: 258, source: { body: "query FetchUserProjects {\n user: me {\n id\n projects {\n total\n results {\n name\n key\n suspension {\n isActive\n }\n expiry {\n isActive\n }\n isProductionProject\n }\n }\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
259
256
  const PROJECT_SWITCHER_LABEL_ID = 'project-switcher-label';
260
257
  const ValueContainer = _ref2 => {
@@ -281,7 +278,7 @@ var _ref$2 = process.env.NODE_ENV === "production" ? {
281
278
  } : {
282
279
  name: "1wvu9ea-ProjectSwitcherOption",
283
280
  styles: "flex:1;word-wrap:break-word;label:ProjectSwitcherOption;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2plY3Qtc3dpdGNoZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlGa0IiLCJmaWxlIjoicHJvamVjdC1zd2l0Y2hlci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdtZW1vaXplLW9uZSc7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlLCB1c2VJbnRsIH0gZnJvbSAncmVhY3QtaW50bCc7XG5pbXBvcnQgdHlwZSB7XG4gIE9wdGlvblByb3BzLFxuICBWYWx1ZUNvbnRhaW5lclByb3BzLFxuICBNZW51TGlzdFByb3BzLFxuICBDb250cm9sUHJvcHMsXG59IGZyb20gJ3JlYWN0LXNlbGVjdCc7XG5pbXBvcnQgeyBjb21wb25lbnRzIH0gZnJvbSAncmVhY3Qtc2VsZWN0JztcbmltcG9ydCB7IFByb2plY3RTdGFtcCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgdXNlTWNRdWVyeSxcbiAgb2lkY1N0b3JhZ2UsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHR5cGUgeyBBcHBsaWNhdGlvbldpbmRvdyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBHUkFQSFFMX1RBUkdFVFMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IEFjY2Vzc2libGVIaWRkZW4gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvYWNjZXNzaWJsZS1oaWRkZW4nO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgU2VsZWN0SW5wdXQsIHsgVE9wdGlvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NlbGVjdC1pbnB1dCc7XG5pbXBvcnQgU3BhY2luZ3MgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvc3BhY2luZ3MnO1xuaW1wb3J0IFRleHQgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvdGV4dCc7XG5pbXBvcnQgdHlwZSB7XG4gIFRQcm9qZWN0LFxuICBURmV0Y2hVc2VyUHJvamVjdHNRdWVyeSxcbiAgVEZldGNoVXNlclByb2plY3RzUXVlcnlWYXJpYWJsZXMsXG59IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBsb2NhdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL2xvY2F0aW9uJztcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuL21lc3NhZ2VzJztcbmltcG9ydCBQcm9qZWN0c1F1ZXJ5IGZyb20gJy4vcHJvamVjdC1zd2l0Y2hlci5tYy5ncmFwaHFsJztcblxuZGVjbGFyZSBsZXQgd2luZG93OiBBcHBsaWNhdGlvbldpbmRvdztcblxudHlwZSBQcm9wcyA9IHtcbiAgcHJvamVjdEtleT86IHN0cmluZztcbn07XG50eXBlIE9wdGlvblR5cGUgPSBQaWNrPFxuICBUUHJvamVjdCxcbiAgJ2tleScgfCAnbmFtZScgfCAnc3VzcGVuc2lvbicgfCAnZXhwaXJ5JyB8ICdpc1Byb2R1Y3Rpb25Qcm9qZWN0J1xuPiAmXG4gIFRPcHRpb247XG5cbmNvbnN0IFBST0pFQ1RfU1dJVENIRVJfTEFCRUxfSUQgPSAncHJvamVjdC1zd2l0Y2hlci1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBWYWx1ZUNvbnRhaW5lciA9ICh7XG4gIGNoaWxkcmVuLFxuICAuLi5yZXN0UHJvcHNcbn06IFZhbHVlQ29udGFpbmVyUHJvcHM8VE9wdGlvbj4pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8VGV4dC5Cb2R5IGZvbnRXZWlnaHQ9XCJtZWRpdW1cIiBhcz1cInNwYW5cIj5cbiAgICAgIDxTZWxlY3RJbnB1dC5WYWx1ZUNvbnRhaW5lciB7Li4ucmVzdFByb3BzfT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9TZWxlY3RJbnB1dC5WYWx1ZUNvbnRhaW5lcj5cbiAgICA8L1RleHQuQm9keT5cbiAgKTtcbn07XG5cbnR5cGUgVFByb2plY3RTdGFtcHNMaXN0UHJvcHMgPSBQaWNrPFxuICBUUHJvamVjdCxcbiAgJ2lzUHJvZHVjdGlvblByb2plY3QnIHwgJ3N1c3BlbnNpb24nIHwgJ2V4cGlyeSdcbj47XG5jb25zdCBQcm9qZWN0U3RhbXBzTGlzdCA9IChwcm9wczogVFByb2plY3RTdGFtcHNMaXN0UHJvcHMpID0+IChcbiAgPFNwYWNpbmdzLlN0YWNrIHNjYWxlPVwieHNcIiBhbGlnbkl0ZW1zPVwiZmxleC1lbmRcIj5cbiAgICB7cHJvcHMuaXNQcm9kdWN0aW9uUHJvamVjdCAmJiA8UHJvamVjdFN0YW1wLklzUHJvZHVjdGlvbiAvPn1cbiAgICB7cHJvcHMuc3VzcGVuc2lvbiAmJiBwcm9wcy5zdXNwZW5zaW9uLmlzQWN0aXZlICYmIChcbiAgICAgIDxQcm9qZWN0U3RhbXAuSXNTdXNwZW5kZWQgLz5cbiAgICApfVxuICAgIHtwcm9wcy5leHBpcnkgJiYgcHJvcHMuZXhwaXJ5LmlzQWN0aXZlICYmIDxQcm9qZWN0U3RhbXAuSXNFeHBpcmVkIC8+fVxuICAgIHtwcm9wcy5leHBpcnkgJiYgQm9vbGVhbihwcm9wcy5leHBpcnkuZGF5c0xlZnQpICYmIChcbiAgICAgIDxQcm9qZWN0U3RhbXAuV2lsbEV4cGlyZSBkYXlzTGVmdD17cHJvcHMuZXhwaXJ5LmRheXNMZWZ0IX0gLz5cbiAgICApfVxuICA8L1NwYWNpbmdzLlN0YWNrPlxuKTtcblxuZXhwb3J0IGNvbnN0IFByb2plY3RTd2l0Y2hlck9wdGlvbiA9IChwcm9wczogT3B0aW9uUHJvcHM8VE9wdGlvbj4pID0+IHtcbiAgY29uc3QgcHJvamVjdCA9IHByb3BzLmRhdGEgYXMgT3B0aW9uVHlwZTtcblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3RJbnB1dC5PcHRpb24gey4uLnByb3BzfT5cbiAgICAgIDxTcGFjaW5ncy5JbmxpbmUgc2NhbGU9XCJ4c1wiIGp1c3RpZnlDb250ZW50PVwic3BhY2UtYmV0d2VlblwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgICAgIGB9XG4gICAgICAgID5cbiAgICAgICAgICA8VGV4dC5Cb2R5XG4gICAgICAgICAgICBmb250V2VpZ2h0PVwibWVkaXVtXCJcbiAgICAgICAgICAgIHRvbmU9e3Byb3BzLmlzRGlzYWJsZWQgPyAndGVydGlhcnknIDogJ2luaGVyaXQnfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtwcm9qZWN0Lm5hbWV9XG4gICAgICAgICAgPC9UZXh0LkJvZHk+XG4gICAgICAgICAgPFRleHQuQ2FwdGlvbiB0b25lPXtwcm9wcy5pc0Rpc2FibGVkID8gJ3RlcnRpYXJ5JyA6ICdzZWNvbmRhcnknfT5cbiAgICAgICAgICAgIHtwcm9qZWN0LmtleX1cbiAgICAgICAgICA8L1RleHQuQ2FwdGlvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPFByb2plY3RTdGFtcHNMaXN0XG4gICAgICAgICAgaXNQcm9kdWN0aW9uUHJvamVjdD17cHJvamVjdC5pc1Byb2R1Y3Rpb25Qcm9qZWN0fVxuICAgICAgICAgIHN1c3BlbnNpb249e3Byb2plY3Quc3VzcGVuc2lvbn1cbiAgICAgICAgICBleHBpcnk9e3Byb2plY3QuZXhwaXJ5fVxuICAgICAgICAvPlxuICAgICAgPC9TcGFjaW5ncy5JbmxpbmU+XG4gICAgPC9TZWxlY3RJbnB1dC5PcHRpb24+XG4gICk7XG59O1xuXG5jb25zdCBtYXBQcm9qZWN0c1RvT3B0aW9ucyA9IG1lbW9pemUoKHByb2plY3RzKSA9PiB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgbGFiZWw6IDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5wcm9qZWN0c0xhYmVsfSAvPixcbiAgICAgIG9wdGlvbnM6IHByb2plY3RzLm1hcCgocHJvamVjdDogVFByb2plY3QpID0+ICh7XG4gICAgICAgIGtleTogcHJvamVjdC5rZXksXG4gICAgICAgIG5hbWU6IHByb2plY3QubmFtZSxcbiAgICAgICAgbGFiZWw6IHByb2plY3QubmFtZSxcbiAgICAgICAgdmFsdWU6IHByb2plY3Qua2V5LFxuICAgICAgICBzdXNwZW5zaW9uOiBwcm9qZWN0LnN1c3BlbnNpb24sXG4gICAgICAgIGV4cGlyeTogcHJvamVjdC5leHBpcnksXG4gICAgICAgIGlzUHJvZHVjdGlvblByb2plY3Q6IHByb2plY3QuaXNQcm9kdWN0aW9uUHJvamVjdCxcbiAgICAgIH0pKSxcbiAgICB9LFxuICBdO1xufSk7XG5cbmNvbnN0IEN1c3RvbU1lbnVMaXN0ID0gKHByb3BzOiBNZW51TGlzdFByb3BzPFRPcHRpb24+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxjb21wb25lbnRzLk1lbnVMaXN0IHsuLi5wcm9wc30+e3Byb3BzLmNoaWxkcmVufTwvY29tcG9uZW50cy5NZW51TGlzdD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IENvbnRyb2wgPSAocHJvcHM6IENvbnRyb2xQcm9wczxUT3B0aW9uPikgPT4gKFxuICA8Y29tcG9uZW50cy5Db250cm9sXG4gICAgey4uLnByb3BzfVxuICAgIGNzcz17Y3NzYFxuICAgICAgbWluLXdpZHRoOiAke2Rlc2lnblRva2Vucy5jb25zdHJhaW50M307XG4gICAgYH1cbiAgPlxuICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgPC9jb21wb25lbnRzLkNvbnRyb2w+XG4pO1xuXG5jb25zdCByZWRpcmVjdFRvID0gKHRhcmdldFVybDogc3RyaW5nKSA9PiBsb2NhdGlvbi5yZXBsYWNlKHRhcmdldFVybCk7XG5cbmNvbnN0IFByb2plY3RTd2l0Y2hlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgeyBsb2FkaW5nLCBkYXRhIH0gPSB1c2VNY1F1ZXJ5PFxuICAgIFRGZXRjaFVzZXJQcm9qZWN0c1F1ZXJ5LFxuICAgIFRGZXRjaFVzZXJQcm9qZWN0c1F1ZXJ5VmFyaWFibGVzXG4gID4oUHJvamVjdHNRdWVyeSwge1xuICAgIGNvbnRleHQ6IHtcbiAgICAgIHRhcmdldDogR1JBUEhRTF9UQVJHRVRTLk1FUkNIQU5UX0NFTlRFUl9CQUNLRU5ELFxuICAgIH0sXG4gIH0pO1xuXG4gIGlmIChsb2FkaW5nKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8QWNjZXNzaWJsZUhpZGRlbj5cbiAgICAgICAgPHNwYW4gaWQ9e1BST0pFQ1RfU1dJVENIRVJfTEFCRUxfSUR9PlxuICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5wcm9qZWN0c0xhYmVsfSAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L0FjY2Vzc2libGVIaWRkZW4+XG4gICAgICA8U2VsZWN0SW5wdXRcbiAgICAgICAgdmFsdWU9e3Byb3BzLnByb2plY3RLZXkgfHwgJyd9XG4gICAgICAgIG5hbWU9XCJwcm9qZWN0LXN3aXRjaGVyXCJcbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtQUk9KRUNUX1NXSVRDSEVSX0xBQkVMX0lEfVxuICAgICAgICBvbkNoYW5nZT17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRQcm9qZWN0S2V5ID0gZXZlbnQudGFyZ2V0LnZhbHVlIGFzIHN0cmluZztcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRQcm9qZWN0S2V5ICE9PSBwcm9wcy5wcm9qZWN0S2V5KSB7XG4gICAgICAgICAgICBpZiAod2luZG93LmFwcC5fX0RFVkVMT1BNRU5UX18/Lm9pZGM/LmF1dGhvcml6ZVVybCkge1xuICAgICAgICAgICAgICBvaWRjU3RvcmFnZS5zZXRBY3RpdmVQcm9qZWN0S2V5KHNlbGVjdGVkUHJvamVjdEtleSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFdlIHNpbXBseSByZWRpcmVjdCB0byBhIFwibmV3XCIgYnJvd3NlciBwYWdlLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZVxuICAgICAgICAgICAgLy8gaGlzdG9yeSByb3V0ZXIuIFRoaXMgd2lsbCBzaW1wbGlmeSBhIGxvdCBvZiB0aGluZ3MgYW5kIGF2b2lkIHBvc3NpYmxlXG4gICAgICAgICAgICAvLyBwcm9ibGVtcyBsaWtlIGUuZy4gcmVzZXR0aW5nIHRoZSBzdG9yZS9zdGF0ZS5cbiAgICAgICAgICAgIHJlZGlyZWN0VG8oYC8ke3NlbGVjdGVkUHJvamVjdEtleX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIG9wdGlvbnM9e1xuICAgICAgICAgIChkYXRhICYmXG4gICAgICAgICAgICBkYXRhLnVzZXIgJiZcbiAgICAgICAgICAgIG1hcFByb2plY3RzVG9PcHRpb25zKGRhdGEudXNlci5wcm9qZWN0cy5yZXN1bHRzKSkgfHxcbiAgICAgICAgICBbXVxuICAgICAgICB9XG4gICAgICAgIGlzT3B0aW9uRGlzYWJsZWQ9eyhvcHRpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBwcm9qZWN0ID0gb3B0aW9uIGFzIE9wdGlvblR5cGU7XG4gICAgICAgICAgcmV0dXJuIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSB8fCBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZTtcbiAgICAgICAgfX1cbiAgICAgICAgY29tcG9uZW50cz17e1xuICAgICAgICAgIE9wdGlvbjogUHJvamVjdFN3aXRjaGVyT3B0aW9uLFxuICAgICAgICAgIFZhbHVlQ29udGFpbmVyLFxuICAgICAgICAgIE1lbnVMaXN0OiBDdXN0b21NZW51TGlzdCxcbiAgICAgICAgICBDb250cm9sLFxuICAgICAgICB9fVxuICAgICAgICBpc0NsZWFyYWJsZT17ZmFsc2V9XG4gICAgICAgIGJhY2tzcGFjZVJlbW92ZXNWYWx1ZT17ZmFsc2V9XG4gICAgICAgIHBsYWNlaG9sZGVyPXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuc2VhcmNoUGxhY2Vob2xkZXIpfVxuICAgICAgICBub09wdGlvbnNNZXNzYWdlPXsoKSA9PiBpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMubm9SZXN1bHRzKX1cbiAgICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQ9eydhdXRvJ31cbiAgICAgICAgYXBwZWFyYW5jZT1cInF1aWV0XCJcbiAgICAgICAgbWF4TWVudUhlaWdodD17MzgwfVxuICAgICAgICBtYXhNZW51V2lkdGg9ezh9XG4gICAgICAgIG1pbk1lbnVXaWR0aD17OH1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuUHJvamVjdFN3aXRjaGVyLmRpc3BsYXlOYW1lID0gJ1Byb2plY3RTd2l0Y2hlcic7XG5cbmV4cG9ydCBkZWZhdWx0IFByb2plY3RTd2l0Y2hlcjtcbiJdfQ== */",
284
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$4
281
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$3
285
282
  };
286
283
  const ProjectSwitcherOption = props => {
287
284
  const project = props.data;
@@ -356,14 +353,15 @@ const ProjectSwitcher = props => {
356
353
  onChange: event => {
357
354
  const selectedProjectKey = event.target.value;
358
355
  if (selectedProjectKey !== props.projectKey) {
359
- if (window.app.__DEVELOPMENT__?.oidc?.authorizeUrl) {
356
+ var _window$app$__DEVELOP;
357
+ if ((_window$app$__DEVELOP = window.app.__DEVELOPMENT__) !== null && _window$app$__DEVELOP !== void 0 && (_window$app$__DEVELOP = _window$app$__DEVELOP.oidc) !== null && _window$app$__DEVELOP !== void 0 && _window$app$__DEVELOP.authorizeUrl) {
360
358
  applicationShellConnectors.oidcStorage.setActiveProjectKey(selectedProjectKey);
361
359
  }
362
360
 
363
361
  // We simply redirect to a "new" browser page, instead of using the
364
362
  // history router. This will simplify a lot of things and avoid possible
365
363
  // problems like e.g. resetting the store/state.
366
- redirectTo(`/${selectedProjectKey}`);
364
+ redirectTo("/".concat(selectedProjectKey));
367
365
  }
368
366
  },
369
367
  options: data && data.user && mapProjectsToOptions(data.user.projects.results) || [],
@@ -394,16 +392,16 @@ ProjectSwitcher.displayName = 'ProjectSwitcher';
394
392
  // eslint-disable-next-line import/prefer-default-export
395
393
  const REQUESTS_IN_FLIGHT_LOADER_DOM_ID = 'loader-for-requests-in-flight';
396
394
 
397
- const UserSettingsMenu = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./user-settings-menu-6113cdd3.cjs.dev.js' /* webpackChunkName: "user-settings-menu" */); }));
395
+ const UserSettingsMenu = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./user-settings-menu-f5c74042.cjs.dev.js' /* webpackChunkName: "user-settings-menu" */); }));
398
396
 
399
- function _EMOTION_STRINGIFIED_CSS_ERROR__$3() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
397
+ function _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
400
398
  var _ref$1 = process.env.NODE_ENV === "production" ? {
401
399
  name: "zjik7",
402
400
  styles: "display:flex"
403
401
  } : {
404
402
  name: "183miex-AppBar",
405
403
  styles: "display:flex;label:AppBar;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlIZ0IiLCJmaWxlIjoiYXBwLWJhci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBQcm9qZWN0U3RhbXAgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB7IGRlc2lnblRva2VucyBhcyB1aWtpdERlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IFNwYWNpbmdzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NwYWNpbmdzJztcbmltcG9ydCB7IENPTlRBSU5FUlMsIERJTUVOU0lPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQmFja1RvUHJvamVjdCBmcm9tICcuLi9iYWNrLXRvLXByb2plY3QnO1xuaW1wb3J0IExvYWRpbmdQbGFjZWhvbGRlciBmcm9tICcuLi9sb2FkaW5nLXBsYWNlaG9sZGVyJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5pbXBvcnQgeyBSRVFVRVNUU19JTl9GTElHSFRfTE9BREVSX0RPTV9JRCB9IGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXIvY29uc3RhbnRzJztcbmltcG9ydCBVc2VyU2V0dGluZ3NNZW51IGZyb20gJy4uL3VzZXItc2V0dGluZ3MtbWVudSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHVzZXI6IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5Wyd1c2VyJ107XG4gIHByb2plY3RLZXlGcm9tVXJsPzogc3RyaW5nO1xufTtcblxuY29uc3QgQXBwQmFyID0gKHByb3BzOiBQcm9wcykgPT4ge1xuICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPSBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgcHJvcHMudXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aWtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAke0RJTUVOU0lPTlMuaGVhZGVyfTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgei1pbmRleDogMjAwMDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGB9XG4gICAgICBkYXRhLXRlc3Q9XCJ0b3AtbmF2aWdhdGlvblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmc1NX07XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibVwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmczMH07XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cInJlY3RcIiBzaXplPVwic1wiIC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFRoZSBgPFByb2plY3RTd2l0Y2hlcj5gIHNob3VsZCBiZSByZW5kZXJlZCBvbmx5IGlmIHRoZVxuICAgICAgICAgICAgICAvLyB1c2VyIGlzIGZldGNoZWQgYW5kIHRoZSB1c2VyIGhhcyBwcm9qZWN0cyB3aGlsZSB0aGUgYXBwIHJ1bnMgaW4gYW4gcHJvamVjdCBjb250ZXh0LlxuICAgICAgICAgICAgICBpZiAocHJvcHMudXNlci5wcm9qZWN0cy50b3RhbCA+IDAgJiYgcHJvcHMucHJvamVjdEtleUZyb21VcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2plY3QgPSBwcm9wcy51c2VyLnByb2plY3RzLnJlc3VsdHMuZmluZChcbiAgICAgICAgICAgICAgICAgIChwcm9qZWN0KSA9PiBwcm9qZWN0LmtleSA9PT0gcHJvcHMucHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkUHJvamVjdD8uaXNQcm9kdWN0aW9uUHJvamVjdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTdGFtcC5Jc1Byb2R1Y3Rpb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIGBwcm9qZWN0S2V5YCBwYXJhbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcGRvd24gd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBidXQgbm8gcHJvamVjdCB3aWxsIGJlIHNlbGVjdGVkLlxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZmluZSBiZWNhc2UgdGhlIHVzZXIgaGFzIHN0aWxsIHRoZSBwb3NzaWJpbGl0eSB0byBcInN3aXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb3BzLnByb2plY3RLZXlGcm9tVXJsIHx8IHByZXZpb3VzUHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFwcm9wcy51c2VyLmRlZmF1bHRQcm9qZWN0S2V5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxCYWNrVG9Qcm9qZWN0IHByb2plY3RLZXk9e3ByZXZpb3VzUHJvamVjdEtleX0gLz47XG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgey8qIFRoaXMgbm9kZSBpcyB1c2VkIGJ5IGEgcmVhY3QgcG9ydGFsICovfVxuICAgICAgICAgICAgPGRpdiBpZD17Q09OVEFJTkVSUy5MT0NBTEVfU1dJVENIRVJ9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgaWQ9e1JFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEfVxuICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxFRlRfT0ZfUFJPRklMRX0+PC9kaXY+XG4gICAgICAgIHtwcm9wcy51c2VyID8gKFxuICAgICAgICAgIDxVc2VyU2V0dGluZ3NNZW51XG4gICAgICAgICAgICBsYW5ndWFnZT17cHJvcHMudXNlci5sYW5ndWFnZX1cbiAgICAgICAgICAgIGZpcnN0TmFtZT17cHJvcHMudXNlci5maXJzdE5hbWV9XG4gICAgICAgICAgICBsYXN0TmFtZT17cHJvcHMudXNlci5sYXN0TmFtZX1cbiAgICAgICAgICAgIGdyYXZhdGFySGFzaD17cHJvcHMudXNlci5ncmF2YXRhckhhc2h9XG4gICAgICAgICAgICBlbWFpbD17cHJvcHMudXNlci5lbWFpbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMb2FkaW5nUGxhY2Vob2xkZXIgc2hhcGU9XCJkb3RcIiBzaXplPVwibFwiIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5BcHBCYXIuZGlzcGxheU5hbWUgPSAnQXBwQmFyJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwQmFyO1xuIl19 */",
406
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$3
404
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2
407
405
  };
408
406
  var _ref2$1 = process.env.NODE_ENV === "production" ? {
409
407
  name: "36bnqj",
@@ -411,7 +409,7 @@ var _ref2$1 = process.env.NODE_ENV === "production" ? {
411
409
  } : {
412
410
  name: "p3e2aw-AppBar",
413
411
  styles: "display:flex;flex:1;label:AppBar;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdHc0IiLCJmaWxlIjoiYXBwLWJhci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBQcm9qZWN0U3RhbXAgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB7IGRlc2lnblRva2VucyBhcyB1aWtpdERlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IFNwYWNpbmdzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NwYWNpbmdzJztcbmltcG9ydCB7IENPTlRBSU5FUlMsIERJTUVOU0lPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQmFja1RvUHJvamVjdCBmcm9tICcuLi9iYWNrLXRvLXByb2plY3QnO1xuaW1wb3J0IExvYWRpbmdQbGFjZWhvbGRlciBmcm9tICcuLi9sb2FkaW5nLXBsYWNlaG9sZGVyJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5pbXBvcnQgeyBSRVFVRVNUU19JTl9GTElHSFRfTE9BREVSX0RPTV9JRCB9IGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXIvY29uc3RhbnRzJztcbmltcG9ydCBVc2VyU2V0dGluZ3NNZW51IGZyb20gJy4uL3VzZXItc2V0dGluZ3MtbWVudSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHVzZXI6IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5Wyd1c2VyJ107XG4gIHByb2plY3RLZXlGcm9tVXJsPzogc3RyaW5nO1xufTtcblxuY29uc3QgQXBwQmFyID0gKHByb3BzOiBQcm9wcykgPT4ge1xuICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPSBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgcHJvcHMudXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aWtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAke0RJTUVOU0lPTlMuaGVhZGVyfTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgei1pbmRleDogMjAwMDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGB9XG4gICAgICBkYXRhLXRlc3Q9XCJ0b3AtbmF2aWdhdGlvblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmc1NX07XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibVwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmczMH07XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cInJlY3RcIiBzaXplPVwic1wiIC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFRoZSBgPFByb2plY3RTd2l0Y2hlcj5gIHNob3VsZCBiZSByZW5kZXJlZCBvbmx5IGlmIHRoZVxuICAgICAgICAgICAgICAvLyB1c2VyIGlzIGZldGNoZWQgYW5kIHRoZSB1c2VyIGhhcyBwcm9qZWN0cyB3aGlsZSB0aGUgYXBwIHJ1bnMgaW4gYW4gcHJvamVjdCBjb250ZXh0LlxuICAgICAgICAgICAgICBpZiAocHJvcHMudXNlci5wcm9qZWN0cy50b3RhbCA+IDAgJiYgcHJvcHMucHJvamVjdEtleUZyb21VcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2plY3QgPSBwcm9wcy51c2VyLnByb2plY3RzLnJlc3VsdHMuZmluZChcbiAgICAgICAgICAgICAgICAgIChwcm9qZWN0KSA9PiBwcm9qZWN0LmtleSA9PT0gcHJvcHMucHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkUHJvamVjdD8uaXNQcm9kdWN0aW9uUHJvamVjdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTdGFtcC5Jc1Byb2R1Y3Rpb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIGBwcm9qZWN0S2V5YCBwYXJhbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcGRvd24gd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBidXQgbm8gcHJvamVjdCB3aWxsIGJlIHNlbGVjdGVkLlxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZmluZSBiZWNhc2UgdGhlIHVzZXIgaGFzIHN0aWxsIHRoZSBwb3NzaWJpbGl0eSB0byBcInN3aXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb3BzLnByb2plY3RLZXlGcm9tVXJsIHx8IHByZXZpb3VzUHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFwcm9wcy51c2VyLmRlZmF1bHRQcm9qZWN0S2V5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxCYWNrVG9Qcm9qZWN0IHByb2plY3RLZXk9e3ByZXZpb3VzUHJvamVjdEtleX0gLz47XG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgey8qIFRoaXMgbm9kZSBpcyB1c2VkIGJ5IGEgcmVhY3QgcG9ydGFsICovfVxuICAgICAgICAgICAgPGRpdiBpZD17Q09OVEFJTkVSUy5MT0NBTEVfU1dJVENIRVJ9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgaWQ9e1JFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEfVxuICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxFRlRfT0ZfUFJPRklMRX0+PC9kaXY+XG4gICAgICAgIHtwcm9wcy51c2VyID8gKFxuICAgICAgICAgIDxVc2VyU2V0dGluZ3NNZW51XG4gICAgICAgICAgICBsYW5ndWFnZT17cHJvcHMudXNlci5sYW5ndWFnZX1cbiAgICAgICAgICAgIGZpcnN0TmFtZT17cHJvcHMudXNlci5maXJzdE5hbWV9XG4gICAgICAgICAgICBsYXN0TmFtZT17cHJvcHMudXNlci5sYXN0TmFtZX1cbiAgICAgICAgICAgIGdyYXZhdGFySGFzaD17cHJvcHMudXNlci5ncmF2YXRhckhhc2h9XG4gICAgICAgICAgICBlbWFpbD17cHJvcHMudXNlci5lbWFpbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMb2FkaW5nUGxhY2Vob2xkZXIgc2hhcGU9XCJkb3RcIiBzaXplPVwibFwiIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5BcHBCYXIuZGlzcGxheU5hbWUgPSAnQXBwQmFyJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwQmFyO1xuIl19 */",
414
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$3
412
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2
415
413
  };
416
414
  var _ref3$1 = process.env.NODE_ENV === "production" ? {
417
415
  name: "w3f7al",
@@ -419,10 +417,11 @@ var _ref3$1 = process.env.NODE_ENV === "production" ? {
419
417
  } : {
420
418
  name: "1ebvy0g-AppBar",
421
419
  styles: "height:22px;label:AppBar;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZFZ0MiLCJmaWxlIjoiYXBwLWJhci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBQcm9qZWN0U3RhbXAgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB7IGRlc2lnblRva2VucyBhcyB1aWtpdERlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IFNwYWNpbmdzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NwYWNpbmdzJztcbmltcG9ydCB7IENPTlRBSU5FUlMsIERJTUVOU0lPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQmFja1RvUHJvamVjdCBmcm9tICcuLi9iYWNrLXRvLXByb2plY3QnO1xuaW1wb3J0IExvYWRpbmdQbGFjZWhvbGRlciBmcm9tICcuLi9sb2FkaW5nLXBsYWNlaG9sZGVyJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5pbXBvcnQgeyBSRVFVRVNUU19JTl9GTElHSFRfTE9BREVSX0RPTV9JRCB9IGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXIvY29uc3RhbnRzJztcbmltcG9ydCBVc2VyU2V0dGluZ3NNZW51IGZyb20gJy4uL3VzZXItc2V0dGluZ3MtbWVudSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHVzZXI6IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5Wyd1c2VyJ107XG4gIHByb2plY3RLZXlGcm9tVXJsPzogc3RyaW5nO1xufTtcblxuY29uc3QgQXBwQmFyID0gKHByb3BzOiBQcm9wcykgPT4ge1xuICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPSBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgcHJvcHMudXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aWtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAke0RJTUVOU0lPTlMuaGVhZGVyfTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgei1pbmRleDogMjAwMDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGB9XG4gICAgICBkYXRhLXRlc3Q9XCJ0b3AtbmF2aWdhdGlvblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmc1NX07XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibVwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmczMH07XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cInJlY3RcIiBzaXplPVwic1wiIC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFRoZSBgPFByb2plY3RTd2l0Y2hlcj5gIHNob3VsZCBiZSByZW5kZXJlZCBvbmx5IGlmIHRoZVxuICAgICAgICAgICAgICAvLyB1c2VyIGlzIGZldGNoZWQgYW5kIHRoZSB1c2VyIGhhcyBwcm9qZWN0cyB3aGlsZSB0aGUgYXBwIHJ1bnMgaW4gYW4gcHJvamVjdCBjb250ZXh0LlxuICAgICAgICAgICAgICBpZiAocHJvcHMudXNlci5wcm9qZWN0cy50b3RhbCA+IDAgJiYgcHJvcHMucHJvamVjdEtleUZyb21VcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2plY3QgPSBwcm9wcy51c2VyLnByb2plY3RzLnJlc3VsdHMuZmluZChcbiAgICAgICAgICAgICAgICAgIChwcm9qZWN0KSA9PiBwcm9qZWN0LmtleSA9PT0gcHJvcHMucHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkUHJvamVjdD8uaXNQcm9kdWN0aW9uUHJvamVjdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTdGFtcC5Jc1Byb2R1Y3Rpb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIGBwcm9qZWN0S2V5YCBwYXJhbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcGRvd24gd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBidXQgbm8gcHJvamVjdCB3aWxsIGJlIHNlbGVjdGVkLlxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZmluZSBiZWNhc2UgdGhlIHVzZXIgaGFzIHN0aWxsIHRoZSBwb3NzaWJpbGl0eSB0byBcInN3aXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb3BzLnByb2plY3RLZXlGcm9tVXJsIHx8IHByZXZpb3VzUHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFwcm9wcy51c2VyLmRlZmF1bHRQcm9qZWN0S2V5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxCYWNrVG9Qcm9qZWN0IHByb2plY3RLZXk9e3ByZXZpb3VzUHJvamVjdEtleX0gLz47XG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgey8qIFRoaXMgbm9kZSBpcyB1c2VkIGJ5IGEgcmVhY3QgcG9ydGFsICovfVxuICAgICAgICAgICAgPGRpdiBpZD17Q09OVEFJTkVSUy5MT0NBTEVfU1dJVENIRVJ9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgaWQ9e1JFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEfVxuICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxFRlRfT0ZfUFJPRklMRX0+PC9kaXY+XG4gICAgICAgIHtwcm9wcy51c2VyID8gKFxuICAgICAgICAgIDxVc2VyU2V0dGluZ3NNZW51XG4gICAgICAgICAgICBsYW5ndWFnZT17cHJvcHMudXNlci5sYW5ndWFnZX1cbiAgICAgICAgICAgIGZpcnN0TmFtZT17cHJvcHMudXNlci5maXJzdE5hbWV9XG4gICAgICAgICAgICBsYXN0TmFtZT17cHJvcHMudXNlci5sYXN0TmFtZX1cbiAgICAgICAgICAgIGdyYXZhdGFySGFzaD17cHJvcHMudXNlci5ncmF2YXRhckhhc2h9XG4gICAgICAgICAgICBlbWFpbD17cHJvcHMudXNlci5lbWFpbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMb2FkaW5nUGxhY2Vob2xkZXIgc2hhcGU9XCJkb3RcIiBzaXplPVwibFwiIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5BcHBCYXIuZGlzcGxheU5hbWUgPSAnQXBwQmFyJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwQmFyO1xuIl19 */",
422
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$3
420
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2
423
421
  };
424
422
  const AppBar = props => {
425
- const previousProjectKey = getPreviousProjectKey(props.user?.defaultProjectKey ?? undefined);
423
+ var _props$user$defaultPr, _props$user;
424
+ const previousProjectKey = getPreviousProjectKey((_props$user$defaultPr = (_props$user = props.user) === null || _props$user === void 0 ? void 0 : _props$user.defaultProjectKey) !== null && _props$user$defaultPr !== void 0 ? _props$user$defaultPr : undefined);
426
425
  return jsxRuntime.jsxs("div", {
427
426
  css: /*#__PURE__*/react$1.css("background-color:", designSystem.designTokens.colorSurface, ";box-shadow:0px 2px 5px 0px rgba(0, 0, 0, 0.15);padding:0 40px;min-height:", oidc.DIMENSIONS.header, ";position:relative;width:100%;z-index:20000;display:flex;align-items:center;justify-content:space-between;" + (process.env.NODE_ENV === "production" ? "" : ";label:AppBar;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlCYyIsImZpbGUiOiJhcHAtYmFyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IFByb2plY3RTdGFtcCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIGFzIHVpa2l0RGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgU3BhY2luZ3MgZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvc3BhY2luZ3MnO1xuaW1wb3J0IHsgQ09OVEFJTkVSUywgRElNRU5TSU9OUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCBCYWNrVG9Qcm9qZWN0IGZyb20gJy4uL2JhY2stdG8tcHJvamVjdCc7XG5pbXBvcnQgTG9hZGluZ1BsYWNlaG9sZGVyIGZyb20gJy4uL2xvYWRpbmctcGxhY2Vob2xkZXInO1xuaW1wb3J0IFByb2plY3RTd2l0Y2hlciBmcm9tICcuLi9wcm9qZWN0LXN3aXRjaGVyJztcbmltcG9ydCB7IFJFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEIH0gZnJvbSAnLi4vcmVxdWVzdHMtaW4tZmxpZ2h0LWxvYWRlci9jb25zdGFudHMnO1xuaW1wb3J0IFVzZXJTZXR0aW5nc01lbnUgZnJvbSAnLi4vdXNlci1zZXR0aW5ncy1tZW51JztcblxudHlwZSBQcm9wcyA9IHtcbiAgdXNlcjogVEZldGNoTG9nZ2VkSW5Vc2VyUXVlcnlbJ3VzZXInXTtcbiAgcHJvamVjdEtleUZyb21Vcmw/OiBzdHJpbmc7XG59O1xuXG5jb25zdCBBcHBCYXIgPSAocHJvcHM6IFByb3BzKSA9PiB7XG4gIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9IGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICBwcm9wcy51c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNzcz17Y3NzYFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Vpa2l0RGVzaWduVG9rZW5zLmNvbG9yU3VyZmFjZX07XG4gICAgICAgIGJveC1zaGFkb3c6IDBweCAycHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgICAgICBwYWRkaW5nOiAwIDQwcHg7XG4gICAgICAgIG1pbi1oZWlnaHQ6ICR7RElNRU5TSU9OUy5oZWFkZXJ9O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB6LWluZGV4OiAyMDAwMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgYH1cbiAgICAgIGRhdGEtdGVzdD1cInRvcC1uYXZpZ2F0aW9uXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICR7dWlraXREZXNpZ25Ub2tlbnMuc3BhY2luZzU1fTtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxTcGFjaW5ncy5JbmxpbmUgc2NhbGU9XCJtXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICBnYXA6ICR7dWlraXREZXNpZ25Ub2tlbnMuc3BhY2luZzMwfTtcbiAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcHJvcHMudXNlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiA8TG9hZGluZ1BsYWNlaG9sZGVyIHNoYXBlPVwicmVjdFwiIHNpemU9XCJzXCIgLz47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy8gVGhlIGA8UHJvamVjdFN3aXRjaGVyPmAgc2hvdWxkIGJlIHJlbmRlcmVkIG9ubHkgaWYgdGhlXG4gICAgICAgICAgICAgIC8vIHVzZXIgaXMgZmV0Y2hlZCBhbmQgdGhlIHVzZXIgaGFzIHByb2plY3RzIHdoaWxlIHRoZSBhcHAgcnVucyBpbiBhbiBwcm9qZWN0IGNvbnRleHQuXG4gICAgICAgICAgICAgIGlmIChwcm9wcy51c2VyLnByb2plY3RzLnRvdGFsID4gMCAmJiBwcm9wcy5wcm9qZWN0S2V5RnJvbVVybCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUHJvamVjdCA9IHByb3BzLnVzZXIucHJvamVjdHMucmVzdWx0cy5maW5kKFxuICAgICAgICAgICAgICAgICAgKHByb2plY3QpID0+IHByb2plY3Qua2V5ID09PSBwcm9wcy5wcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICBnYXA6ICR7dWlraXREZXNpZ25Ub2tlbnMuc3BhY2luZzIwfTtcbiAgICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7c2VsZWN0ZWRQcm9qZWN0Py5pc1Byb2R1Y3Rpb25Qcm9qZWN0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UHJvamVjdFN0YW1wLklzUHJvZHVjdGlvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8UHJvamVjdFN3aXRjaGVyXG4gICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBpZiB0aGUgYHByb2plY3RLZXlgIHBhcmFtXG4gICAgICAgICAgICAgICAgICAgICAgLy8gaXMgaW5jbHVkZWQgaW4gdGhlIGxpc3Qgb2YgcHJvamVjdHMuIEluIHN1Y2ggY2FzZVxuICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBkcm9wZG93biB3aWxsIHN0aWxsIGJlIHJlbmRlcmVkIGJ1dCBubyBwcm9qZWN0IHdpbGwgYmUgc2VsZWN0ZWQuXG4gICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmaW5lIGJlY2FzZSB0aGUgdXNlciBoYXMgc3RpbGwgdGhlIHBvc3NpYmlsaXR5IHRvIFwic3dpdGNoXCJcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0byBhIHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvcHMucHJvamVjdEtleUZyb21VcmwgfHwgcHJldmlvdXNQcm9qZWN0S2V5fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIuZGVmYXVsdFByb2plY3RLZXkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICByZXR1cm4gPEJhY2tUb1Byb2plY3QgcHJvamVjdEtleT17cHJldmlvdXNQcm9qZWN0S2V5fSAvPjtcbiAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICB7LyogVGhpcyBub2RlIGlzIHVzZWQgYnkgYSByZWFjdCBwb3J0YWwgKi99XG4gICAgICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxPQ0FMRV9TV0lUQ0hFUn0gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8U3BhY2luZ3MuSW5saW5lPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBpZD17UkVRVUVTVFNfSU5fRkxJR0hUX0xPQURFUl9ET01fSUR9XG4gICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TcGFjaW5ncy5JbmxpbmU+XG4gICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9e0NPTlRBSU5FUlMuTEVGVF9PRl9QUk9GSUxFfT48L2Rpdj5cbiAgICAgICAge3Byb3BzLnVzZXIgPyAoXG4gICAgICAgICAgPFVzZXJTZXR0aW5nc01lbnVcbiAgICAgICAgICAgIGxhbmd1YWdlPXtwcm9wcy51c2VyLmxhbmd1YWdlfVxuICAgICAgICAgICAgZmlyc3ROYW1lPXtwcm9wcy51c2VyLmZpcnN0TmFtZX1cbiAgICAgICAgICAgIGxhc3ROYW1lPXtwcm9wcy51c2VyLmxhc3ROYW1lfVxuICAgICAgICAgICAgZ3JhdmF0YXJIYXNoPXtwcm9wcy51c2VyLmdyYXZhdGFySGFzaH1cbiAgICAgICAgICAgIGVtYWlsPXtwcm9wcy51c2VyLmVtYWlsfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cImRvdFwiIHNpemU9XCJsXCIgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcbkFwcEJhci5kaXNwbGF5TmFtZSA9ICdBcHBCYXInO1xuXG5leHBvcnQgZGVmYXVsdCBBcHBCYXI7XG4iXX0= */"),
428
427
  "data-test": "top-navigation",
@@ -447,7 +446,7 @@ const AppBar = props => {
447
446
  const selectedProject = _findInstanceProperty__default["default"](_context = props.user.projects.results).call(_context, project => project.key === props.projectKeyFromUrl);
448
447
  return jsxRuntime.jsxs("div", {
449
448
  css: /*#__PURE__*/react$1.css("display:flex;gap:", designSystem.designTokens.spacing20, ";align-items:center;" + (process.env.NODE_ENV === "production" ? "" : ";label:AppBar;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC1iYXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFFNEIiLCJmaWxlIjoiYXBwLWJhci50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBQcm9qZWN0U3RhbXAgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1jb21wb25lbnRzJztcbmltcG9ydCB7IGRlc2lnblRva2VucyBhcyB1aWtpdERlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IFNwYWNpbmdzIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L3NwYWNpbmdzJztcbmltcG9ydCB7IENPTlRBSU5FUlMsIERJTUVOU0lPTlMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeSB9IGZyb20gJy4uLy4uL3R5cGVzL2dlbmVyYXRlZC9tYyc7XG5pbXBvcnQgeyBnZXRQcmV2aW91c1Byb2plY3RLZXkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgQmFja1RvUHJvamVjdCBmcm9tICcuLi9iYWNrLXRvLXByb2plY3QnO1xuaW1wb3J0IExvYWRpbmdQbGFjZWhvbGRlciBmcm9tICcuLi9sb2FkaW5nLXBsYWNlaG9sZGVyJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5pbXBvcnQgeyBSRVFVRVNUU19JTl9GTElHSFRfTE9BREVSX0RPTV9JRCB9IGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXIvY29uc3RhbnRzJztcbmltcG9ydCBVc2VyU2V0dGluZ3NNZW51IGZyb20gJy4uL3VzZXItc2V0dGluZ3MtbWVudSc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIHVzZXI6IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5Wyd1c2VyJ107XG4gIHByb2plY3RLZXlGcm9tVXJsPzogc3RyaW5nO1xufTtcblxuY29uc3QgQXBwQmFyID0gKHByb3BzOiBQcm9wcykgPT4ge1xuICBjb25zdCBwcmV2aW91c1Byb2plY3RLZXkgPSBnZXRQcmV2aW91c1Byb2plY3RLZXkoXG4gICAgcHJvcHMudXNlcj8uZGVmYXVsdFByb2plY3RLZXkgPz8gdW5kZWZpbmVkXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjc3M9e2Nzc2BcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aWtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMnB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICAgICAgcGFkZGluZzogMCA0MHB4O1xuICAgICAgICBtaW4taGVpZ2h0OiAke0RJTUVOU0lPTlMuaGVhZGVyfTtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgei1pbmRleDogMjAwMDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGB9XG4gICAgICBkYXRhLXRlc3Q9XCJ0b3AtbmF2aWdhdGlvblwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmc1NX07XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8U3BhY2luZ3MuSW5saW5lIHNjYWxlPVwibVwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmczMH07XG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgICBgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXByb3BzLnVzZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gPExvYWRpbmdQbGFjZWhvbGRlciBzaGFwZT1cInJlY3RcIiBzaXplPVwic1wiIC8+O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFRoZSBgPFByb2plY3RTd2l0Y2hlcj5gIHNob3VsZCBiZSByZW5kZXJlZCBvbmx5IGlmIHRoZVxuICAgICAgICAgICAgICAvLyB1c2VyIGlzIGZldGNoZWQgYW5kIHRoZSB1c2VyIGhhcyBwcm9qZWN0cyB3aGlsZSB0aGUgYXBwIHJ1bnMgaW4gYW4gcHJvamVjdCBjb250ZXh0LlxuICAgICAgICAgICAgICBpZiAocHJvcHMudXNlci5wcm9qZWN0cy50b3RhbCA+IDAgJiYgcHJvcHMucHJvamVjdEtleUZyb21VcmwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFByb2plY3QgPSBwcm9wcy51c2VyLnByb2plY3RzLnJlc3VsdHMuZmluZChcbiAgICAgICAgICAgICAgICAgIChwcm9qZWN0KSA9PiBwcm9qZWN0LmtleSA9PT0gcHJvcHMucHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgZ2FwOiAke3Vpa2l0RGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkUHJvamVjdD8uaXNQcm9kdWN0aW9uUHJvamVjdCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTdGFtcC5Jc1Byb2R1Y3Rpb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPFByb2plY3RTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gY2hlY2sgaWYgdGhlIGBwcm9qZWN0S2V5YCBwYXJhbVxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgZHJvcGRvd24gd2lsbCBzdGlsbCBiZSByZW5kZXJlZCBidXQgbm8gcHJvamVjdCB3aWxsIGJlIHNlbGVjdGVkLlxuICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZmluZSBiZWNhc2UgdGhlIHVzZXIgaGFzIHN0aWxsIHRoZSBwb3NzaWJpbGl0eSB0byBcInN3aXRjaFwiXG4gICAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXk9e3Byb3BzLnByb2plY3RLZXlGcm9tVXJsIHx8IHByZXZpb3VzUHJvamVjdEtleX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKCFwcm9wcy51c2VyLmRlZmF1bHRQcm9qZWN0S2V5KSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIDxCYWNrVG9Qcm9qZWN0IHByb2plY3RLZXk9e3ByZXZpb3VzUHJvamVjdEtleX0gLz47XG4gICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgey8qIFRoaXMgbm9kZSBpcyB1c2VkIGJ5IGEgcmVhY3QgcG9ydGFsICovfVxuICAgICAgICAgICAgPGRpdiBpZD17Q09OVEFJTkVSUy5MT0NBTEVfU1dJVENIRVJ9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgaWQ9e1JFUVVFU1RTX0lOX0ZMSUdIVF9MT0FERVJfRE9NX0lEfVxuICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICA8L1NwYWNpbmdzLklubGluZT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPXtDT05UQUlORVJTLkxFRlRfT0ZfUFJPRklMRX0+PC9kaXY+XG4gICAgICAgIHtwcm9wcy51c2VyID8gKFxuICAgICAgICAgIDxVc2VyU2V0dGluZ3NNZW51XG4gICAgICAgICAgICBsYW5ndWFnZT17cHJvcHMudXNlci5sYW5ndWFnZX1cbiAgICAgICAgICAgIGZpcnN0TmFtZT17cHJvcHMudXNlci5maXJzdE5hbWV9XG4gICAgICAgICAgICBsYXN0TmFtZT17cHJvcHMudXNlci5sYXN0TmFtZX1cbiAgICAgICAgICAgIGdyYXZhdGFySGFzaD17cHJvcHMudXNlci5ncmF2YXRhckhhc2h9XG4gICAgICAgICAgICBlbWFpbD17cHJvcHMudXNlci5lbWFpbH1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxMb2FkaW5nUGxhY2Vob2xkZXIgc2hhcGU9XCJkb3RcIiBzaXplPVwibFwiIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5BcHBCYXIuZGlzcGxheU5hbWUgPSAnQXBwQmFyJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwQmFyO1xuIl19 */"),
450
- children: [selectedProject?.isProductionProject && jsxRuntime.jsx("div", {
449
+ children: [(selectedProject === null || selectedProject === void 0 ? void 0 : selectedProject.isProductionProject) && jsxRuntime.jsx("div", {
451
450
  css: _ref3$1,
452
451
  children: jsxRuntime.jsx(applicationComponents.ProjectStamp.IsProduction, {})
453
452
  }), jsxRuntime.jsx(ProjectSwitcher
@@ -590,207 +589,11 @@ const FetchUser = props => {
590
589
  };
591
590
  FetchUser.displayName = 'FetchUser';
592
591
 
593
- const Navbar = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./navbar-022383bd.cjs.dev.js' /* webpackChunkName: "navbar" */); }));
594
-
595
- const ProjectContainer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./project-container-3e3c7013.cjs.dev.js' /* webpackChunkName: "project-container" */); }));
596
-
597
- const getSelectedDataLocaleForProject = projectLocales => {
598
- const cachedDataLocale = window.localStorage.getItem(constants.STORAGE_KEYS.SELECTED_DATA_LOCALE);
599
- // Make sure the cached locale is listed in the selected project
600
- const isCachedDataLocaleIncludedInProjectLanguages = _includesInstanceProperty__default["default"](projectLocales).call(projectLocales, cachedDataLocale || '');
601
- if (cachedDataLocale && isCachedDataLocaleIncludedInProjectLanguages) return cachedDataLocale;
602
- // Pick the first locale from the list
603
- const defaultDataLocaleForProject = projectLocales[0];
604
- // Cache it
605
- window.localStorage.setItem(constants.STORAGE_KEYS.SELECTED_DATA_LOCALE, defaultDataLocaleForProject);
606
- return defaultDataLocaleForProject;
607
- };
608
- const ProjectDataLocale = props => {
609
- const _useState = react.useState(getSelectedDataLocaleForProject(props.locales)),
610
- _useState2 = _slicedToArray(_useState, 2),
611
- locale = _useState2[0],
612
- setLocale = _useState2[1];
613
- const handleSetProjectDataLocale = react.useCallback(locale => {
614
- setLocale(locale);
615
- // Cache it
616
- window.localStorage.setItem(constants.STORAGE_KEYS.SELECTED_DATA_LOCALE, locale);
617
- }, []);
618
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
619
- children: props.children({
620
- locale,
621
- setProjectDataLocale: handleSetProjectDataLocale
622
- })
623
- });
624
- };
625
- ProjectDataLocale.displayName = 'ProjectDataLocale';
626
-
627
- function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
628
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function () { return !!t; })(); }
629
- let ErrorBoundary = /*#__PURE__*/function (_Component) {
630
- function ErrorBoundary() {
631
- var _this;
632
- _classCallCheck(this, ErrorBoundary);
633
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
634
- args[_key] = arguments[_key];
635
- }
636
- _this = _callSuper(this, ErrorBoundary, [...args]);
637
- _this.state = {
638
- hasError: false
639
- };
640
- return _this;
641
- }
642
- _inherits(ErrorBoundary, _Component);
643
- return _createClass(ErrorBoundary, [{
644
- key: "componentDidUpdate",
645
- value: function componentDidUpdate(prevProps) {
646
- const hasRouteChanged = prevProps.pathname !== this.props.pathname;
647
- this.setState(prevState => hasRouteChanged && prevState.hasError ? {
648
- hasError: false
649
- } : null);
650
- }
651
- }, {
652
- key: "componentDidCatch",
653
- value: function componentDidCatch(error, errorInfo) {
654
- // Note: In development mode componentDidCatch is not based on try-catch
655
- // to catch exceptions. Thus exceptions caught here will also be caught in
656
- // the global `error` event listener (setup-global-error-listener.js).
657
- // see: https://github.com/facebook/react/issues/10474
658
- sentry.reportErrorToSentry(error, {
659
- extra: errorInfo
660
- });
661
- }
662
- }, {
663
- key: "render",
664
- value: function render() {
665
- if (this.state.hasError) {
666
- return jsxRuntime.jsx(ErrorApologizer, {});
667
- }
668
- return jsxRuntime.jsx(jsxRuntime.Fragment, {
669
- children: this.props.children
670
- });
671
- }
672
- }], [{
673
- key: "getDerivedStateFromError",
674
- value: function getDerivedStateFromError(/* error */
675
- ) {
676
- // Update state so the next render will show the fallback UI.
677
- return {
678
- hasError: true
679
- };
680
- }
681
- }]);
682
- }(react.Component);
683
-
684
- function _EMOTION_STRINGIFIED_CSS_ERROR__$2() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
685
- const ButlerContainer = /*#__PURE__*/_styled__default["default"]("div", process.env.NODE_ENV === "production" ? {
686
- target: "e1fuwyk10"
687
- } : {
688
- target: "e1fuwyk10",
689
- label: "ButlerContainer"
690
- })(process.env.NODE_ENV === "production" ? {
691
- name: "xvk698",
692
- styles: "position:absolute;left:0;bottom:0;top:0;right:0;background-color:rgba(0, 0, 0, 0.35);z-index:20001"
693
- } : {
694
- name: "xvk698",
695
- styles: "position:absolute;left:0;bottom:0;top:0;right:0;background-color:rgba(0, 0, 0, 0.35);z-index:20001/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb250YWluZXIudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVrQyIsImZpbGUiOiJidXRsZXItY29udGFpbmVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcblxuY29uc3QgQnV0bGVyQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG4gIHotaW5kZXg6IDIwMDAxO1xuYDtcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyQ29udGFpbmVyO1xuIl19 */",
696
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__$2
697
- });
698
-
699
- var pimIndexerStates = {
700
- // we did not check yet
701
- UNCHECKED: 'UNCHECKED',
702
- // the project is indexed by pim-indexer
703
- INDEXED: 'INDEXED',
704
- // the project is not indexed by pim-indexer
705
- NOT_INDEXED: 'NOT_INDEXED'
706
- };
592
+ const Navbar = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./navbar-586f7774.cjs.dev.js' /* webpackChunkName: "navbar" */); }));
707
593
 
708
- const QuickAccess = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./quick-access-67db2a39.cjs.dev.js' /* webpackChunkName: "quick-access" */); }));
709
- const QuickAccessTrigger = props => {
710
- const _useState = react.useState(false),
711
- _useState2 = _slicedToArray(_useState, 2),
712
- isVisible = _useState2[0],
713
- setIsVisible = _useState2[1];
714
- const open = react.useCallback(() => {
715
- setIsVisible(true);
716
- }, []);
717
- const close = react.useCallback(() => {
718
- setIsVisible(false);
719
- }, []);
720
- // We store the information of whether a project is indexed by pim-indexer,
721
- // to avoid having to refetch that information every time Quick Access is
722
- // opened. We can't move the information to the quick-access.js component
723
- // as that component unmounts and would lose its state.
724
- //
725
- // We need to know whether a project is indexed by pim-indexer to know
726
- // whether we should query pim-search or whether we can skip that request.
727
- //
728
- // We don't need to update this information when the project key changes,
729
- // as changing a project always results in a full page reload anyways.
730
- const _useState3 = react.useState(pimIndexerStates.UNCHECKED),
731
- _useState4 = _slicedToArray(_useState3, 2),
732
- pimIndexerState = _useState4[0],
733
- setPimIndexerState = _useState4[1];
734
- const handlePimIndexerStateChange = react.useCallback(nextPimIndexerState => {
735
- setPimIndexerState(nextPimIndexerState);
736
- }, []);
737
- const keyHandler = react.useCallback(event => {
738
- const hotKey = 'f';
739
- // avoid interfering with any key combinations using modifier keys
740
- if (event.ctrlKey || event.altKey || event.shiftKey || event.metaKey) return;
741
-
742
- // Let users close QuickAccess by pressing Escape
743
- if (event.key === 'Escape' && event.target.id === 'quick-access-search-input') {
744
- close();
745
- return;
746
- }
747
-
748
- // Avoid interfering with any other elements. We only
749
- // open the QuickAccess when nothing was focused, so target is document.body
750
- if (event.target !== document.body &&
751
- // tabIndex="-1" has a special meaning
752
- // It will make the element focusable, while hiding it from the
753
- // navigation. It is typically used for modals and overlays.
754
- // react-modal uses it for example. We want to treat those elements
755
- // similar to document.body.
756
- // See https://stackoverflow.com/a/32912224
757
- event.target.getAttribute('tabindex') !== '-1' &&
758
- // Do not prevent Quick Access from opening when a link has focus
759
- event.target.nodeName !== 'A') return;
760
- if (event.key === hotKey) {
761
- if (!isVisible) {
762
- // prevent the letter from appearing in the search input when
763
- // it is the key press that lead to opening Quick Access
764
- event.preventDefault();
765
- }
766
- open();
767
- }
768
- return;
769
- }, [close, isVisible, open]);
770
- react.useEffect(() => {
771
- document.addEventListener('keydown', keyHandler);
772
- return () => {
773
- document.removeEventListener('keydown', keyHandler);
774
- };
775
- }, [keyHandler]);
776
- if (!isVisible) return null;
777
- return jsxRuntime.jsx(ErrorBoundary, {
778
- children: jsxRuntime.jsx(react.Suspense, {
779
- fallback: jsxRuntime.jsx(ButlerContainer, {
780
- tabIndex: -1
781
- }),
782
- children: jsxRuntime.jsx(QuickAccess, {
783
- pimIndexerState: pimIndexerState,
784
- onPimIndexerStateChange: handlePimIndexerStateChange,
785
- onClose: close,
786
- onChangeProjectDataLocale: props.onChangeProjectDataLocale
787
- })
788
- })
789
- });
790
- };
791
- QuickAccessTrigger.displayName = 'QuickAccessTrigger';
594
+ const ProjectContainer = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./project-container-2245f020.cjs.dev.js' /* webpackChunkName: "project-container" */); }));
792
595
 
793
- const RedirectToLogout = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-logout-477ea146.cjs.dev.js' /* webpackChunkName: "redirect-to-logout" */); }));
596
+ const RedirectToLogout = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-logout-b331b037.cjs.dev.js' /* webpackChunkName: "redirect-to-logout" */); }));
794
597
 
795
598
  const RedirectToProjectCreate = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-project-create-f4f01842.cjs.dev.js' /* webpackChunkName: "redirect-to-project-create" */); }));
796
599
 
@@ -802,15 +605,16 @@ var AllFeaturesQuery = { kind: "Document", definitions: [{ kind: "OperationDefin
802
605
  // is no need to be concerned about security.
803
606
  const ldClientSideIdProduction = '5979d95f6040390cd07b5e01';
804
607
  function getUserContextForLaunchDarklyAdapter(user, projectKey) {
608
+ var _user$launchdarklyTra, _user$launchdarklyTra2, _user$launchdarklyTra3, _user$launchdarklyTra4, _user$launchdarklyTra5;
805
609
  return {
806
610
  kind: 'user',
807
- key: user?.id,
808
- project: projectKey ?? '',
809
- id: user?.launchdarklyTrackingId ?? '',
810
- team: user?.launchdarklyTrackingTeam ?? [],
811
- group: user?.launchdarklyTrackingGroup ?? '',
812
- subgroup: user?.launchdarklyTrackingSubgroup ?? '',
813
- cloudEnvironment: user?.launchdarklyTrackingCloudEnvironment ?? ''
611
+ key: user === null || user === void 0 ? void 0 : user.id,
612
+ project: projectKey !== null && projectKey !== void 0 ? projectKey : '',
613
+ id: (_user$launchdarklyTra = user === null || user === void 0 ? void 0 : user.launchdarklyTrackingId) !== null && _user$launchdarklyTra !== void 0 ? _user$launchdarklyTra : '',
614
+ team: (_user$launchdarklyTra2 = user === null || user === void 0 ? void 0 : user.launchdarklyTrackingTeam) !== null && _user$launchdarklyTra2 !== void 0 ? _user$launchdarklyTra2 : [],
615
+ group: (_user$launchdarklyTra3 = user === null || user === void 0 ? void 0 : user.launchdarklyTrackingGroup) !== null && _user$launchdarklyTra3 !== void 0 ? _user$launchdarklyTra3 : '',
616
+ subgroup: (_user$launchdarklyTra4 = user === null || user === void 0 ? void 0 : user.launchdarklyTrackingSubgroup) !== null && _user$launchdarklyTra4 !== void 0 ? _user$launchdarklyTra4 : '',
617
+ cloudEnvironment: (_user$launchdarklyTra5 = user === null || user === void 0 ? void 0 : user.launchdarklyTrackingCloudEnvironment) !== null && _user$launchdarklyTra5 !== void 0 ? _user$launchdarklyTra5 : ''
814
618
  };
815
619
  }
816
620
  const parseFlags = fetchedFlags => {
@@ -842,47 +646,51 @@ const SetupFlopFlipProvider = props => {
842
646
  }
843
647
  }, [enableLongLivedFeatureFlags]);
844
648
  const defaultFlags = react.useMemo(() => _objectSpread$9(_objectSpread$9({}, constants.featureFlags.DEFAULT_FLAGS), props.defaultFlags), [props.defaultFlags]);
845
- const adapterArgs = react.useMemo(() => ({
846
- user: {
847
- key: props.user?.id
848
- },
849
- launchdarkly: {
850
- cacheIdentifier: types.cacheIdentifiers.local,
851
- cacheMode: getCacheMode(types.adapterIdentifiers.launchdarkly),
852
- sdk: {
853
- // Allow to overwrite the client ID, passed via the `additionalEnv` properties
854
- // of the application config.
855
- // This is mostly useful for internal usage on our staging environments.
856
- clientSideId: props.ldClientSideId ?? ldClientSideIdProduction,
857
- clientOptions: {
858
- sendEventsOnlyForVariation: true
859
- }
860
- },
861
- flags,
862
- context: getUserContextForLaunchDarklyAdapter(props.user, props.projectKey)
863
- },
864
- http: {
865
- // polling interval set to 15 minutes
866
- pollingIntervalMs: 1000 * 60 * 15,
867
- cacheIdentifier: types.cacheIdentifiers.local,
868
- cacheMode: getCacheMode(types.adapterIdentifiers.http),
649
+ const adapterArgs = react.useMemo(() => {
650
+ var _props$user, _props$ldClientSideId, _props$user2;
651
+ return {
869
652
  user: {
870
- key: props.user?.id
653
+ key: (_props$user = props.user) === null || _props$user === void 0 ? void 0 : _props$user.id
871
654
  },
872
- execute: async adapterArgs => {
873
- const response = await apolloClient.query({
874
- query: AllFeaturesQuery,
875
- errorPolicy: 'ignore',
876
- fetchPolicy: 'network-only',
877
- context: {
878
- target: constants.GRAPHQL_TARGETS.MERCHANT_CENTER_BACKEND,
879
- projectKey: adapterArgs.user?.project
655
+ launchdarkly: {
656
+ cacheIdentifier: types.cacheIdentifiers.local,
657
+ cacheMode: getCacheMode(types.adapterIdentifiers.launchdarkly),
658
+ sdk: {
659
+ // Allow to overwrite the client ID, passed via the `additionalEnv` properties
660
+ // of the application config.
661
+ // This is mostly useful for internal usage on our staging environments.
662
+ clientSideId: (_props$ldClientSideId = props.ldClientSideId) !== null && _props$ldClientSideId !== void 0 ? _props$ldClientSideId : ldClientSideIdProduction,
663
+ clientOptions: {
664
+ sendEventsOnlyForVariation: true
880
665
  }
881
- });
882
- return parseFlags(response.data);
666
+ },
667
+ flags,
668
+ context: getUserContextForLaunchDarklyAdapter(props.user, props.projectKey)
669
+ },
670
+ http: {
671
+ // polling interval set to 15 minutes
672
+ pollingIntervalMs: 1000 * 60 * 15,
673
+ cacheIdentifier: types.cacheIdentifiers.local,
674
+ cacheMode: getCacheMode(types.adapterIdentifiers.http),
675
+ user: {
676
+ key: (_props$user2 = props.user) === null || _props$user2 === void 0 ? void 0 : _props$user2.id
677
+ },
678
+ execute: async adapterArgs => {
679
+ var _adapterArgs$user;
680
+ const response = await apolloClient.query({
681
+ query: AllFeaturesQuery,
682
+ errorPolicy: 'ignore',
683
+ fetchPolicy: 'network-only',
684
+ context: {
685
+ target: constants.GRAPHQL_TARGETS.MERCHANT_CENTER_BACKEND,
686
+ projectKey: (_adapterArgs$user = adapterArgs.user) === null || _adapterArgs$user === void 0 ? void 0 : _adapterArgs$user.project
687
+ }
688
+ });
689
+ return parseFlags(response.data);
690
+ }
883
691
  }
884
- }
885
- }), [apolloClient, flags, props.ldClientSideId, props.projectKey, props.user]);
692
+ };
693
+ }, [apolloClient, flags, props.ldClientSideId, props.projectKey, props.user]);
886
694
 
887
695
  /**
888
696
  * The `<ApplicationShell />` tests itself. When it does so it can not setup and use
@@ -940,7 +748,7 @@ const MainContainer = /*#__PURE__*/_styled__default["default"]("main", process.e
940
748
  styles: "grid-column:2/3;grid-row:3/4;min-width:0;overflow-x:hidden;overflow-y:scroll;display:flex;flex-direction:column;position:relative"
941
749
  } : {
942
750
  name: "evthls",
943
- styles: "grid-column:2/3;grid-row:3/4;min-width:0;overflow-x:hidden;overflow-y:scroll;display:flex;flex-direction:column;position:relative/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBFd0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHR5cGUgVEFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHtcbiAgcmVwb3J0RXJyb3JUb1NlbnRyeSxcbiAgU2VudHJ5VXNlclRyYWNrZXIsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3NlbnRyeSc7XG5pbXBvcnQgeyBESU1FTlNJT05TLCBOQVZCQVIgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgRmV0Y2hVc2VyIGZyb20gJy4uL2ZldGNoLXVzZXInO1xuaW1wb3J0IE5hdkJhciBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IFByb2plY3RDb250YWluZXIgZnJvbSAnLi4vcHJvamVjdC1jb250YWluZXInO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMi80O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTG9hZGluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uV2hlbkV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPVwiL2FjY291bnQvcHJvZmlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17dHJ1ZX0gcGF0aD1cIi9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXtmYWxzZX0gcGF0aD1cIi86cHJvamVjdEtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */",
751
+ styles: "grid-column:2/3;grid-row:3/4;min-width:0;overflow-x:hidden;overflow-y:scroll;display:flex;flex-direction:column;position:relative/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBFd0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgQXBwbGljYXRpb25Mb2FkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tbG9hZGVyJztcbmltcG9ydCB7IGdldEJyb3dzZXJMb2NhbGUgfSBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlci91dGlscyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBSZWRpcmVjdFRvTG9nb3V0IGZyb20gJy4uL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgZnJvbSAnLi4vcmVxdWVzdHMtaW4tZmxpZ2h0LWxvYWRlcic7XG5pbXBvcnQgUm91dGVDYXRjaEFsbCBmcm9tICcuLi9yb3V0ZS1jYXRjaC1hbGwnO1xuaW1wb3J0IFNldHVwRmxvcEZsaXBQcm92aWRlciBmcm9tICcuLi9zZXR1cC1mbG9wLWZsaXAtcHJvdmlkZXInO1xuaW1wb3J0IFRoZW1lU3dpdGNoZXIgZnJvbSAnLi4vdGhlbWUtc3dpdGNoZXInO1xuXG50eXBlIFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wcyA9IHtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBhcHBsaWNhdGlvbk1lc3NhZ2VzOiBUQXN5bmNMb2NhbGVEYXRhUHJvcHNbJ2FwcGxpY2F0aW9uTWVzc2FnZXMnXTtcbiAgb25NZW51SXRlbUNsaWNrPzogKGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHZvaWQ7XG4gIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz86IGJvb2xlYW47XG4gIHJlbmRlcj86ICgpID0+IEpTWC5FbGVtZW50O1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IGdldEhhc1VuYXV0aG9yaXplZEVycm9yID0gKGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ10pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5leHRlbnNpb25zICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSA9PT0gJ1VOQVVUSEVOVElDQVRFRCdcbiAgKTtcbmNvbnN0IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gKFxuICBncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddXG4pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5tZXNzYWdlICYmXG4gICAgICAvLyBOT1RFOiBUaGUgQ1RQIEFQSSBkb2VzIG5vdCBwcm92aWRlIGFuIGVycm9yIGNvZGUgaW4gdGhpcyBjYXNlLlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZS5pbmNsdWRlcygnd2FzIG5vdCBmb3VuZC4nKVxuICApO1xuXG5leHBvcnQgY29uc3QgTWFpbkNvbnRhaW5lciA9IHN0eWxlZC5tYWluYFxuICBncmlkLWNvbHVtbjogMi8zO1xuICBncmlkLXJvdzogMy80O1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkID0gKFxuICBwcm9wczogVEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGlvblByb3BzXG4pID0+IHtcbiAgY29uc3QgYXBwbGljYXRpb25FbnZpcm9ubWVudCA9IHVzZUFwcGxpY2F0aW9uQ29udGV4dChcbiAgICAoY29udGV4dCkgPT4gY29udGV4dC5lbnZpcm9ubWVudFxuICApIGFzIFRBcHBsaWNhdGlvbkNvbnRleHQ8e30+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICB9Pih7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZixcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZixcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RmV0Y2hVc2VyPlxuICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nVXNlciwgdXNlciwgZXJyb3IgfSkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBJbiBjYXNlIHRoZXJlIGlzIGFuIHVuYXV0aG9yaXplZCBlcnJvciwgd2UgcmVkaXJlY3QgdG8gdGhlIGxvZ2luIHBhZ2VcbiAgICAgICAgICBpZiAoZXJyb3IuZ3JhcGhRTEVycm9ycyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmdyYXBoUUxFcnJvcnMpKSB7XG4gICAgICAgICAgICBjb25zdCBoYXNVbmF1dGhvcml6ZWRFcnJvciA9IGdldEhhc1VuYXV0aG9yaXplZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yIHx8IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKSB7XG4gICAgICAgICAgICAgIGxldCBsb2dvdXRSZWFzb246XG4gICAgICAgICAgICAgICAgfCAodHlwZW9mIExPR09VVF9SRUFTT05TKVtrZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcblxuICAgICAgICAvLyBDaGVjayBpZiB1c2VyIGlzIGN0IHN0YWZmLCBhbmQgaWYgc28gZ2V0IGxhbmd1YWdlIHNlbGVjdGVkIHZpYSBzdGFmZiBiYXIgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAgICAgIGNvbnN0IHN0YWZmQmFyTGFuZ3VhZ2UgPVxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdjb21tZXJjZXRvb2xzJyB8fFxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdtYWlsb3NhdXInXG4gICAgICAgICAgICA/IHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlKClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVc2VyOiBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeVsndXNlciddIHwgdW5kZWZpbmVkID0gdXNlclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgICAvLyBzZXQgdGhlIHN0YWZmIGJhciBsYW5ndWFnZSBpZiBhcHBsaWNhYmxlXG4gICAgICAgICAgICAgIGxhbmd1YWdlOiBzdGFmZkJhckxhbmd1YWdlID8/IHVzZXIubGFuZ3VhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXtub3JtYWxpemVkVXNlcj8ubGFuZ3VhZ2V9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ0xvY2FsZURhdGEsIGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHBhc3MgdGhlIGxhbmd1YWdlIGFzIGxvbmcgYXMgdGhlIGxvY2FsZSBkYXRhXG4gICAgICAgICAgICAgICAgICAvLyBpcyBub3QgbG9hZGVkLlxuICAgICAgICAgICAgICAgICAgey4uLihpc0xvYWRpbmdMb2NhbGVEYXRhID8ge30gOiB7IGxvY2FsZSwgbWVzc2FnZXMgfSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFNldHVwRmxvcEZsaXBQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e25vcm1hbGl6ZWRVc2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDIvNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xvYWRpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3Q7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25XaGVuRXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89XCIvYWNjb3VudC9wcm9maWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXt0cnVlfSBwYXRoPVwiL1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRVc2VyPy5kZWZhdWx0UHJvamVjdEtleSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9ybWFsaXplZFVzZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e2ZhbHNlfSBwYXRoPVwiLzpwcm9qZWN0S2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */",
944
752
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
945
753
  });
946
754
 
@@ -953,7 +761,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
953
761
  styles: "flex-grow:1;display:flex;flex-direction:column;position:relative;>*:not(:first-of-type){flex-grow:1;display:flex;flex-direction:column;}"
954
762
  } : {
955
763
  name: "1y4p4ln-ApplicationShellAuthenticated",
956
- styles: "flex-grow:1;display:flex;flex-direction:column;position:relative;>*:not(:first-of-type){flex-grow:1;display:flex;flex-direction:column;};label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlXc0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHR5cGUgVEFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHtcbiAgcmVwb3J0RXJyb3JUb1NlbnRyeSxcbiAgU2VudHJ5VXNlclRyYWNrZXIsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3NlbnRyeSc7XG5pbXBvcnQgeyBESU1FTlNJT05TLCBOQVZCQVIgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgRmV0Y2hVc2VyIGZyb20gJy4uL2ZldGNoLXVzZXInO1xuaW1wb3J0IE5hdkJhciBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IFByb2plY3RDb250YWluZXIgZnJvbSAnLi4vcHJvamVjdC1jb250YWluZXInO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMi80O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTG9hZGluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uV2hlbkV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPVwiL2FjY291bnQvcHJvZmlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17dHJ1ZX0gcGF0aD1cIi9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXtmYWxzZX0gcGF0aD1cIi86cHJvamVjdEtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */",
764
+ styles: "flex-grow:1;display:flex;flex-direction:column;position:relative;>*:not(:first-of-type){flex-grow:1;display:flex;flex-direction:column;};label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9Vc0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgQXBwbGljYXRpb25Mb2FkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tbG9hZGVyJztcbmltcG9ydCB7IGdldEJyb3dzZXJMb2NhbGUgfSBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlci91dGlscyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBSZWRpcmVjdFRvTG9nb3V0IGZyb20gJy4uL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgZnJvbSAnLi4vcmVxdWVzdHMtaW4tZmxpZ2h0LWxvYWRlcic7XG5pbXBvcnQgUm91dGVDYXRjaEFsbCBmcm9tICcuLi9yb3V0ZS1jYXRjaC1hbGwnO1xuaW1wb3J0IFNldHVwRmxvcEZsaXBQcm92aWRlciBmcm9tICcuLi9zZXR1cC1mbG9wLWZsaXAtcHJvdmlkZXInO1xuaW1wb3J0IFRoZW1lU3dpdGNoZXIgZnJvbSAnLi4vdGhlbWUtc3dpdGNoZXInO1xuXG50eXBlIFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wcyA9IHtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBhcHBsaWNhdGlvbk1lc3NhZ2VzOiBUQXN5bmNMb2NhbGVEYXRhUHJvcHNbJ2FwcGxpY2F0aW9uTWVzc2FnZXMnXTtcbiAgb25NZW51SXRlbUNsaWNrPzogKGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHZvaWQ7XG4gIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz86IGJvb2xlYW47XG4gIHJlbmRlcj86ICgpID0+IEpTWC5FbGVtZW50O1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IGdldEhhc1VuYXV0aG9yaXplZEVycm9yID0gKGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ10pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5leHRlbnNpb25zICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSA9PT0gJ1VOQVVUSEVOVElDQVRFRCdcbiAgKTtcbmNvbnN0IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gKFxuICBncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddXG4pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5tZXNzYWdlICYmXG4gICAgICAvLyBOT1RFOiBUaGUgQ1RQIEFQSSBkb2VzIG5vdCBwcm92aWRlIGFuIGVycm9yIGNvZGUgaW4gdGhpcyBjYXNlLlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZS5pbmNsdWRlcygnd2FzIG5vdCBmb3VuZC4nKVxuICApO1xuXG5leHBvcnQgY29uc3QgTWFpbkNvbnRhaW5lciA9IHN0eWxlZC5tYWluYFxuICBncmlkLWNvbHVtbjogMi8zO1xuICBncmlkLXJvdzogMy80O1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkID0gKFxuICBwcm9wczogVEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGlvblByb3BzXG4pID0+IHtcbiAgY29uc3QgYXBwbGljYXRpb25FbnZpcm9ubWVudCA9IHVzZUFwcGxpY2F0aW9uQ29udGV4dChcbiAgICAoY29udGV4dCkgPT4gY29udGV4dC5lbnZpcm9ubWVudFxuICApIGFzIFRBcHBsaWNhdGlvbkNvbnRleHQ8e30+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICB9Pih7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZixcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZixcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RmV0Y2hVc2VyPlxuICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nVXNlciwgdXNlciwgZXJyb3IgfSkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBJbiBjYXNlIHRoZXJlIGlzIGFuIHVuYXV0aG9yaXplZCBlcnJvciwgd2UgcmVkaXJlY3QgdG8gdGhlIGxvZ2luIHBhZ2VcbiAgICAgICAgICBpZiAoZXJyb3IuZ3JhcGhRTEVycm9ycyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmdyYXBoUUxFcnJvcnMpKSB7XG4gICAgICAgICAgICBjb25zdCBoYXNVbmF1dGhvcml6ZWRFcnJvciA9IGdldEhhc1VuYXV0aG9yaXplZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yIHx8IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKSB7XG4gICAgICAgICAgICAgIGxldCBsb2dvdXRSZWFzb246XG4gICAgICAgICAgICAgICAgfCAodHlwZW9mIExPR09VVF9SRUFTT05TKVtrZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcblxuICAgICAgICAvLyBDaGVjayBpZiB1c2VyIGlzIGN0IHN0YWZmLCBhbmQgaWYgc28gZ2V0IGxhbmd1YWdlIHNlbGVjdGVkIHZpYSBzdGFmZiBiYXIgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAgICAgIGNvbnN0IHN0YWZmQmFyTGFuZ3VhZ2UgPVxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdjb21tZXJjZXRvb2xzJyB8fFxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdtYWlsb3NhdXInXG4gICAgICAgICAgICA/IHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlKClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVc2VyOiBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeVsndXNlciddIHwgdW5kZWZpbmVkID0gdXNlclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgICAvLyBzZXQgdGhlIHN0YWZmIGJhciBsYW5ndWFnZSBpZiBhcHBsaWNhYmxlXG4gICAgICAgICAgICAgIGxhbmd1YWdlOiBzdGFmZkJhckxhbmd1YWdlID8/IHVzZXIubGFuZ3VhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXtub3JtYWxpemVkVXNlcj8ubGFuZ3VhZ2V9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ0xvY2FsZURhdGEsIGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHBhc3MgdGhlIGxhbmd1YWdlIGFzIGxvbmcgYXMgdGhlIGxvY2FsZSBkYXRhXG4gICAgICAgICAgICAgICAgICAvLyBpcyBub3QgbG9hZGVkLlxuICAgICAgICAgICAgICAgICAgey4uLihpc0xvYWRpbmdMb2NhbGVEYXRhID8ge30gOiB7IGxvY2FsZSwgbWVzc2FnZXMgfSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFNldHVwRmxvcEZsaXBQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e25vcm1hbGl6ZWRVc2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDIvNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xvYWRpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3Q7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25XaGVuRXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89XCIvYWNjb3VudC9wcm9maWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXt0cnVlfSBwYXRoPVwiL1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRVc2VyPy5kZWZhdWx0UHJvamVjdEtleSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9ybWFsaXplZFVzZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e2ZhbHNlfSBwYXRoPVwiLzpwcm9qZWN0S2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */",
957
765
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
958
766
  };
959
767
  var _ref2 = process.env.NODE_ENV === "production" ? {
@@ -961,7 +769,7 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
961
769
  styles: "grid-column:1/2;grid-row:2/4;overflow:hidden"
962
770
  } : {
963
771
  name: "b768-ApplicationShellAuthenticated",
964
- styles: "grid-column:1/2;grid-row:2/4;overflow:hidden;label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtTa0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHR5cGUgVEFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHtcbiAgcmVwb3J0RXJyb3JUb1NlbnRyeSxcbiAgU2VudHJ5VXNlclRyYWNrZXIsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3NlbnRyeSc7XG5pbXBvcnQgeyBESU1FTlNJT05TLCBOQVZCQVIgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgRmV0Y2hVc2VyIGZyb20gJy4uL2ZldGNoLXVzZXInO1xuaW1wb3J0IE5hdkJhciBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IFByb2plY3RDb250YWluZXIgZnJvbSAnLi4vcHJvamVjdC1jb250YWluZXInO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMi80O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTG9hZGluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uV2hlbkV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPVwiL2FjY291bnQvcHJvZmlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17dHJ1ZX0gcGF0aD1cIi9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXtmYWxzZX0gcGF0aD1cIi86cHJvamVjdEtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */",
772
+ styles: "grid-column:1/2;grid-row:2/4;overflow:hidden;label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFRa0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgQXBwbGljYXRpb25Mb2FkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tbG9hZGVyJztcbmltcG9ydCB7IGdldEJyb3dzZXJMb2NhbGUgfSBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlci91dGlscyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBSZWRpcmVjdFRvTG9nb3V0IGZyb20gJy4uL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgZnJvbSAnLi4vcmVxdWVzdHMtaW4tZmxpZ2h0LWxvYWRlcic7XG5pbXBvcnQgUm91dGVDYXRjaEFsbCBmcm9tICcuLi9yb3V0ZS1jYXRjaC1hbGwnO1xuaW1wb3J0IFNldHVwRmxvcEZsaXBQcm92aWRlciBmcm9tICcuLi9zZXR1cC1mbG9wLWZsaXAtcHJvdmlkZXInO1xuaW1wb3J0IFRoZW1lU3dpdGNoZXIgZnJvbSAnLi4vdGhlbWUtc3dpdGNoZXInO1xuXG50eXBlIFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wcyA9IHtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBhcHBsaWNhdGlvbk1lc3NhZ2VzOiBUQXN5bmNMb2NhbGVEYXRhUHJvcHNbJ2FwcGxpY2F0aW9uTWVzc2FnZXMnXTtcbiAgb25NZW51SXRlbUNsaWNrPzogKGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHZvaWQ7XG4gIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz86IGJvb2xlYW47XG4gIHJlbmRlcj86ICgpID0+IEpTWC5FbGVtZW50O1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IGdldEhhc1VuYXV0aG9yaXplZEVycm9yID0gKGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ10pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5leHRlbnNpb25zICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSA9PT0gJ1VOQVVUSEVOVElDQVRFRCdcbiAgKTtcbmNvbnN0IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gKFxuICBncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddXG4pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5tZXNzYWdlICYmXG4gICAgICAvLyBOT1RFOiBUaGUgQ1RQIEFQSSBkb2VzIG5vdCBwcm92aWRlIGFuIGVycm9yIGNvZGUgaW4gdGhpcyBjYXNlLlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZS5pbmNsdWRlcygnd2FzIG5vdCBmb3VuZC4nKVxuICApO1xuXG5leHBvcnQgY29uc3QgTWFpbkNvbnRhaW5lciA9IHN0eWxlZC5tYWluYFxuICBncmlkLWNvbHVtbjogMi8zO1xuICBncmlkLXJvdzogMy80O1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkID0gKFxuICBwcm9wczogVEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGlvblByb3BzXG4pID0+IHtcbiAgY29uc3QgYXBwbGljYXRpb25FbnZpcm9ubWVudCA9IHVzZUFwcGxpY2F0aW9uQ29udGV4dChcbiAgICAoY29udGV4dCkgPT4gY29udGV4dC5lbnZpcm9ubWVudFxuICApIGFzIFRBcHBsaWNhdGlvbkNvbnRleHQ8e30+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICB9Pih7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZixcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZixcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RmV0Y2hVc2VyPlxuICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nVXNlciwgdXNlciwgZXJyb3IgfSkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBJbiBjYXNlIHRoZXJlIGlzIGFuIHVuYXV0aG9yaXplZCBlcnJvciwgd2UgcmVkaXJlY3QgdG8gdGhlIGxvZ2luIHBhZ2VcbiAgICAgICAgICBpZiAoZXJyb3IuZ3JhcGhRTEVycm9ycyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmdyYXBoUUxFcnJvcnMpKSB7XG4gICAgICAgICAgICBjb25zdCBoYXNVbmF1dGhvcml6ZWRFcnJvciA9IGdldEhhc1VuYXV0aG9yaXplZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yIHx8IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKSB7XG4gICAgICAgICAgICAgIGxldCBsb2dvdXRSZWFzb246XG4gICAgICAgICAgICAgICAgfCAodHlwZW9mIExPR09VVF9SRUFTT05TKVtrZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcblxuICAgICAgICAvLyBDaGVjayBpZiB1c2VyIGlzIGN0IHN0YWZmLCBhbmQgaWYgc28gZ2V0IGxhbmd1YWdlIHNlbGVjdGVkIHZpYSBzdGFmZiBiYXIgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAgICAgIGNvbnN0IHN0YWZmQmFyTGFuZ3VhZ2UgPVxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdjb21tZXJjZXRvb2xzJyB8fFxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdtYWlsb3NhdXInXG4gICAgICAgICAgICA/IHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlKClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVc2VyOiBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeVsndXNlciddIHwgdW5kZWZpbmVkID0gdXNlclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgICAvLyBzZXQgdGhlIHN0YWZmIGJhciBsYW5ndWFnZSBpZiBhcHBsaWNhYmxlXG4gICAgICAgICAgICAgIGxhbmd1YWdlOiBzdGFmZkJhckxhbmd1YWdlID8/IHVzZXIubGFuZ3VhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXtub3JtYWxpemVkVXNlcj8ubGFuZ3VhZ2V9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ0xvY2FsZURhdGEsIGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHBhc3MgdGhlIGxhbmd1YWdlIGFzIGxvbmcgYXMgdGhlIGxvY2FsZSBkYXRhXG4gICAgICAgICAgICAgICAgICAvLyBpcyBub3QgbG9hZGVkLlxuICAgICAgICAgICAgICAgICAgey4uLihpc0xvYWRpbmdMb2NhbGVEYXRhID8ge30gOiB7IGxvY2FsZSwgbWVzc2FnZXMgfSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFNldHVwRmxvcEZsaXBQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e25vcm1hbGl6ZWRVc2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDIvNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xvYWRpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3Q7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25XaGVuRXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89XCIvYWNjb3VudC9wcm9maWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXt0cnVlfSBwYXRoPVwiL1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRVc2VyPy5kZWZhdWx0UHJvamVjdEtleSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9ybWFsaXplZFVzZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e2ZhbHNlfSBwYXRoPVwiLzpwcm9qZWN0S2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */",
965
773
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
966
774
  };
967
775
  var _ref3 = process.env.NODE_ENV === "production" ? {
@@ -969,7 +777,7 @@ var _ref3 = process.env.NODE_ENV === "production" ? {
969
777
  styles: "grid-row:'2/3';grid-column:'2/3'"
970
778
  } : {
971
779
  name: "arpkii-ApplicationShellAuthenticated",
972
- styles: "grid-row:'2/3';grid-column:'2/3';label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNSa0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHR5cGUgVEFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHtcbiAgcmVwb3J0RXJyb3JUb1NlbnRyeSxcbiAgU2VudHJ5VXNlclRyYWNrZXIsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3NlbnRyeSc7XG5pbXBvcnQgeyBESU1FTlNJT05TLCBOQVZCQVIgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgRmV0Y2hVc2VyIGZyb20gJy4uL2ZldGNoLXVzZXInO1xuaW1wb3J0IE5hdkJhciBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IFByb2plY3RDb250YWluZXIgZnJvbSAnLi4vcHJvamVjdC1jb250YWluZXInO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMi80O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTG9hZGluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uV2hlbkV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPVwiL2FjY291bnQvcHJvZmlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17dHJ1ZX0gcGF0aD1cIi9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXtmYWxzZX0gcGF0aD1cIi86cHJvamVjdEtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */",
780
+ styles: "grid-row:'2/3';grid-column:'2/3';label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXlQa0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgQXBwbGljYXRpb25Mb2FkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tbG9hZGVyJztcbmltcG9ydCB7IGdldEJyb3dzZXJMb2NhbGUgfSBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlci91dGlscyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBSZWRpcmVjdFRvTG9nb3V0IGZyb20gJy4uL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgZnJvbSAnLi4vcmVxdWVzdHMtaW4tZmxpZ2h0LWxvYWRlcic7XG5pbXBvcnQgUm91dGVDYXRjaEFsbCBmcm9tICcuLi9yb3V0ZS1jYXRjaC1hbGwnO1xuaW1wb3J0IFNldHVwRmxvcEZsaXBQcm92aWRlciBmcm9tICcuLi9zZXR1cC1mbG9wLWZsaXAtcHJvdmlkZXInO1xuaW1wb3J0IFRoZW1lU3dpdGNoZXIgZnJvbSAnLi4vdGhlbWUtc3dpdGNoZXInO1xuXG50eXBlIFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wcyA9IHtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBhcHBsaWNhdGlvbk1lc3NhZ2VzOiBUQXN5bmNMb2NhbGVEYXRhUHJvcHNbJ2FwcGxpY2F0aW9uTWVzc2FnZXMnXTtcbiAgb25NZW51SXRlbUNsaWNrPzogKGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHZvaWQ7XG4gIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz86IGJvb2xlYW47XG4gIHJlbmRlcj86ICgpID0+IEpTWC5FbGVtZW50O1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IGdldEhhc1VuYXV0aG9yaXplZEVycm9yID0gKGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ10pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5leHRlbnNpb25zICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSA9PT0gJ1VOQVVUSEVOVElDQVRFRCdcbiAgKTtcbmNvbnN0IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gKFxuICBncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddXG4pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5tZXNzYWdlICYmXG4gICAgICAvLyBOT1RFOiBUaGUgQ1RQIEFQSSBkb2VzIG5vdCBwcm92aWRlIGFuIGVycm9yIGNvZGUgaW4gdGhpcyBjYXNlLlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZS5pbmNsdWRlcygnd2FzIG5vdCBmb3VuZC4nKVxuICApO1xuXG5leHBvcnQgY29uc3QgTWFpbkNvbnRhaW5lciA9IHN0eWxlZC5tYWluYFxuICBncmlkLWNvbHVtbjogMi8zO1xuICBncmlkLXJvdzogMy80O1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkID0gKFxuICBwcm9wczogVEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGlvblByb3BzXG4pID0+IHtcbiAgY29uc3QgYXBwbGljYXRpb25FbnZpcm9ubWVudCA9IHVzZUFwcGxpY2F0aW9uQ29udGV4dChcbiAgICAoY29udGV4dCkgPT4gY29udGV4dC5lbnZpcm9ubWVudFxuICApIGFzIFRBcHBsaWNhdGlvbkNvbnRleHQ8e30+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICB9Pih7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZixcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZixcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RmV0Y2hVc2VyPlxuICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nVXNlciwgdXNlciwgZXJyb3IgfSkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBJbiBjYXNlIHRoZXJlIGlzIGFuIHVuYXV0aG9yaXplZCBlcnJvciwgd2UgcmVkaXJlY3QgdG8gdGhlIGxvZ2luIHBhZ2VcbiAgICAgICAgICBpZiAoZXJyb3IuZ3JhcGhRTEVycm9ycyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmdyYXBoUUxFcnJvcnMpKSB7XG4gICAgICAgICAgICBjb25zdCBoYXNVbmF1dGhvcml6ZWRFcnJvciA9IGdldEhhc1VuYXV0aG9yaXplZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yIHx8IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKSB7XG4gICAgICAgICAgICAgIGxldCBsb2dvdXRSZWFzb246XG4gICAgICAgICAgICAgICAgfCAodHlwZW9mIExPR09VVF9SRUFTT05TKVtrZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcblxuICAgICAgICAvLyBDaGVjayBpZiB1c2VyIGlzIGN0IHN0YWZmLCBhbmQgaWYgc28gZ2V0IGxhbmd1YWdlIHNlbGVjdGVkIHZpYSBzdGFmZiBiYXIgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAgICAgIGNvbnN0IHN0YWZmQmFyTGFuZ3VhZ2UgPVxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdjb21tZXJjZXRvb2xzJyB8fFxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdtYWlsb3NhdXInXG4gICAgICAgICAgICA/IHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlKClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVc2VyOiBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeVsndXNlciddIHwgdW5kZWZpbmVkID0gdXNlclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgICAvLyBzZXQgdGhlIHN0YWZmIGJhciBsYW5ndWFnZSBpZiBhcHBsaWNhYmxlXG4gICAgICAgICAgICAgIGxhbmd1YWdlOiBzdGFmZkJhckxhbmd1YWdlID8/IHVzZXIubGFuZ3VhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXtub3JtYWxpemVkVXNlcj8ubGFuZ3VhZ2V9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ0xvY2FsZURhdGEsIGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHBhc3MgdGhlIGxhbmd1YWdlIGFzIGxvbmcgYXMgdGhlIGxvY2FsZSBkYXRhXG4gICAgICAgICAgICAgICAgICAvLyBpcyBub3QgbG9hZGVkLlxuICAgICAgICAgICAgICAgICAgey4uLihpc0xvYWRpbmdMb2NhbGVEYXRhID8ge30gOiB7IGxvY2FsZSwgbWVzc2FnZXMgfSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFNldHVwRmxvcEZsaXBQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e25vcm1hbGl6ZWRVc2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDIvNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xvYWRpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3Q7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25XaGVuRXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89XCIvYWNjb3VudC9wcm9maWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXt0cnVlfSBwYXRoPVwiL1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRVc2VyPy5kZWZhdWx0UHJvamVjdEtleSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9ybWFsaXplZFVzZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e2ZhbHNlfSBwYXRoPVwiLzpwcm9qZWN0S2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */",
973
781
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
974
782
  };
975
783
  var _ref4 = process.env.NODE_ENV === "production" ? {
@@ -977,7 +785,7 @@ var _ref4 = process.env.NODE_ENV === "production" ? {
977
785
  styles: "grid-row:1;grid-column:1/3"
978
786
  } : {
979
787
  name: "u4fwut-ApplicationShellAuthenticated",
980
- styles: "grid-row:1;grid-column:1/3;label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZOa0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHR5cGUgVEFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHtcbiAgcmVwb3J0RXJyb3JUb1NlbnRyeSxcbiAgU2VudHJ5VXNlclRyYWNrZXIsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3NlbnRyeSc7XG5pbXBvcnQgeyBESU1FTlNJT05TLCBOQVZCQVIgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgRmV0Y2hVc2VyIGZyb20gJy4uL2ZldGNoLXVzZXInO1xuaW1wb3J0IE5hdkJhciBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IFByb2plY3RDb250YWluZXIgZnJvbSAnLi4vcHJvamVjdC1jb250YWluZXInO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMi80O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTG9hZGluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uV2hlbkV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPVwiL2FjY291bnQvcHJvZmlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17dHJ1ZX0gcGF0aD1cIi9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXtmYWxzZX0gcGF0aD1cIi86cHJvamVjdEtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */",
788
+ styles: "grid-row:1;grid-column:1/3;label:ApplicationShellAuthenticated;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStPa0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgQXBwbGljYXRpb25Mb2FkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tbG9hZGVyJztcbmltcG9ydCB7IGdldEJyb3dzZXJMb2NhbGUgfSBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlci91dGlscyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBSZWRpcmVjdFRvTG9nb3V0IGZyb20gJy4uL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgZnJvbSAnLi4vcmVxdWVzdHMtaW4tZmxpZ2h0LWxvYWRlcic7XG5pbXBvcnQgUm91dGVDYXRjaEFsbCBmcm9tICcuLi9yb3V0ZS1jYXRjaC1hbGwnO1xuaW1wb3J0IFNldHVwRmxvcEZsaXBQcm92aWRlciBmcm9tICcuLi9zZXR1cC1mbG9wLWZsaXAtcHJvdmlkZXInO1xuaW1wb3J0IFRoZW1lU3dpdGNoZXIgZnJvbSAnLi4vdGhlbWUtc3dpdGNoZXInO1xuXG50eXBlIFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wcyA9IHtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBhcHBsaWNhdGlvbk1lc3NhZ2VzOiBUQXN5bmNMb2NhbGVEYXRhUHJvcHNbJ2FwcGxpY2F0aW9uTWVzc2FnZXMnXTtcbiAgb25NZW51SXRlbUNsaWNrPzogKGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHZvaWQ7XG4gIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz86IGJvb2xlYW47XG4gIHJlbmRlcj86ICgpID0+IEpTWC5FbGVtZW50O1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IGdldEhhc1VuYXV0aG9yaXplZEVycm9yID0gKGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ10pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5leHRlbnNpb25zICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSA9PT0gJ1VOQVVUSEVOVElDQVRFRCdcbiAgKTtcbmNvbnN0IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gKFxuICBncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddXG4pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5tZXNzYWdlICYmXG4gICAgICAvLyBOT1RFOiBUaGUgQ1RQIEFQSSBkb2VzIG5vdCBwcm92aWRlIGFuIGVycm9yIGNvZGUgaW4gdGhpcyBjYXNlLlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZS5pbmNsdWRlcygnd2FzIG5vdCBmb3VuZC4nKVxuICApO1xuXG5leHBvcnQgY29uc3QgTWFpbkNvbnRhaW5lciA9IHN0eWxlZC5tYWluYFxuICBncmlkLWNvbHVtbjogMi8zO1xuICBncmlkLXJvdzogMy80O1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkID0gKFxuICBwcm9wczogVEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGlvblByb3BzXG4pID0+IHtcbiAgY29uc3QgYXBwbGljYXRpb25FbnZpcm9ubWVudCA9IHVzZUFwcGxpY2F0aW9uQ29udGV4dChcbiAgICAoY29udGV4dCkgPT4gY29udGV4dC5lbnZpcm9ubWVudFxuICApIGFzIFRBcHBsaWNhdGlvbkNvbnRleHQ8e30+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICB9Pih7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZixcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZixcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RmV0Y2hVc2VyPlxuICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nVXNlciwgdXNlciwgZXJyb3IgfSkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBJbiBjYXNlIHRoZXJlIGlzIGFuIHVuYXV0aG9yaXplZCBlcnJvciwgd2UgcmVkaXJlY3QgdG8gdGhlIGxvZ2luIHBhZ2VcbiAgICAgICAgICBpZiAoZXJyb3IuZ3JhcGhRTEVycm9ycyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmdyYXBoUUxFcnJvcnMpKSB7XG4gICAgICAgICAgICBjb25zdCBoYXNVbmF1dGhvcml6ZWRFcnJvciA9IGdldEhhc1VuYXV0aG9yaXplZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yIHx8IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKSB7XG4gICAgICAgICAgICAgIGxldCBsb2dvdXRSZWFzb246XG4gICAgICAgICAgICAgICAgfCAodHlwZW9mIExPR09VVF9SRUFTT05TKVtrZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcblxuICAgICAgICAvLyBDaGVjayBpZiB1c2VyIGlzIGN0IHN0YWZmLCBhbmQgaWYgc28gZ2V0IGxhbmd1YWdlIHNlbGVjdGVkIHZpYSBzdGFmZiBiYXIgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAgICAgIGNvbnN0IHN0YWZmQmFyTGFuZ3VhZ2UgPVxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdjb21tZXJjZXRvb2xzJyB8fFxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdtYWlsb3NhdXInXG4gICAgICAgICAgICA/IHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlKClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVc2VyOiBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeVsndXNlciddIHwgdW5kZWZpbmVkID0gdXNlclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgICAvLyBzZXQgdGhlIHN0YWZmIGJhciBsYW5ndWFnZSBpZiBhcHBsaWNhYmxlXG4gICAgICAgICAgICAgIGxhbmd1YWdlOiBzdGFmZkJhckxhbmd1YWdlID8/IHVzZXIubGFuZ3VhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXtub3JtYWxpemVkVXNlcj8ubGFuZ3VhZ2V9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ0xvY2FsZURhdGEsIGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHBhc3MgdGhlIGxhbmd1YWdlIGFzIGxvbmcgYXMgdGhlIGxvY2FsZSBkYXRhXG4gICAgICAgICAgICAgICAgICAvLyBpcyBub3QgbG9hZGVkLlxuICAgICAgICAgICAgICAgICAgey4uLihpc0xvYWRpbmdMb2NhbGVEYXRhID8ge30gOiB7IGxvY2FsZSwgbWVzc2FnZXMgfSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFNldHVwRmxvcEZsaXBQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e25vcm1hbGl6ZWRVc2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDIvNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xvYWRpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3Q7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25XaGVuRXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89XCIvYWNjb3VudC9wcm9maWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXt0cnVlfSBwYXRoPVwiL1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRVc2VyPy5kZWZhdWx0UHJvamVjdEtleSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9ybWFsaXplZFVzZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e2ZhbHNlfSBwYXRoPVwiLzpwcm9qZWN0S2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */",
981
789
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
982
790
  };
983
791
  const ApplicationShellAuthenticated = props => {
@@ -1014,6 +822,7 @@ const ApplicationShellAuthenticated = props => {
1014
822
  }
1015
823
  // Since we do not know the locale of the user, we pick it from the
1016
824
  // user's browser to attempt to match the language for the correct translations.
825
+
1017
826
  const userLocale = getBrowserLocale(window);
1018
827
  return jsxRuntime.jsx(i18n.AsyncLocaleData, {
1019
828
  locale: userLocale,
@@ -1031,11 +840,18 @@ const ApplicationShellAuthenticated = props => {
1031
840
  });
1032
841
  }
1033
842
  const projectKeyFromUrl = applicationShellConnectors.selectProjectKeyFromUrl(location.pathname);
843
+
844
+ // Check if user is ct staff, and if so get language selected via staff bar from local storage
845
+ const staffBarLanguage = (user === null || user === void 0 ? void 0 : user.launchdarklyTrackingGroup) === 'commercetools' || (user === null || user === void 0 ? void 0 : user.launchdarklyTrackingGroup) === 'mailosaur' ? applicationShellConnectors.selectUserLanguageFromStorage() : undefined;
846
+ const normalizedUser = user ? _objectSpread$8(_objectSpread$8({}, user), {}, {
847
+ // set the staff bar language if applicable
848
+ language: staffBarLanguage !== null && staffBarLanguage !== void 0 ? staffBarLanguage : user.language
849
+ }) : undefined;
1034
850
  return jsxRuntime.jsx(applicationShellConnectors.ApplicationContextProvider, {
1035
- user: user,
851
+ user: normalizedUser,
1036
852
  environment: applicationEnvironment,
1037
853
  children: jsxRuntime.jsx(i18n.AsyncLocaleData, {
1038
- locale: user?.language,
854
+ locale: normalizedUser === null || normalizedUser === void 0 ? void 0 : normalizedUser.language,
1039
855
  applicationMessages: props.applicationMessages,
1040
856
  children: _ref7 => {
1041
857
  let isLoadingLocaleData = _ref7.isLoading,
@@ -1049,16 +865,16 @@ const ApplicationShellAuthenticated = props => {
1049
865
  messages
1050
866
  }), {}, {
1051
867
  children: jsxRuntime.jsx(SetupFlopFlipProvider, {
1052
- user: user,
868
+ user: normalizedUser,
1053
869
  projectKey: projectKeyFromUrl,
1054
870
  ldClientSideId: applicationEnvironment.ldClientSideId,
1055
871
  flags: props.featureFlags,
1056
872
  defaultFlags: props.defaultFeatureFlags,
1057
873
  children: jsxRuntime.jsxs(jsxRuntime.Fragment, {
1058
874
  children: [jsxRuntime.jsx(ThemeSwitcher, {}), jsxRuntime.jsx(RequestsInFlightLoader, {}), jsxRuntime.jsx(sentry.SentryUserTracker, {
1059
- user: user ?? undefined
875
+ user: normalizedUser
1060
876
  }), jsxRuntime.jsxs("div", {
1061
- css: /*#__PURE__*/react$1.css("height:100vh;display:grid;grid-template-rows:auto ", oidc.DIMENSIONS.header, " 1fr;grid-template-columns:min-content 1fr;" + (process.env.NODE_ENV === "production" ? "" : ";label:ApplicationShellAuthenticated;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtOZ0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHR5cGUgVEFwcGxpY2F0aW9uQ29udGV4dCxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tc2hlbGwtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBET01BSU5TLCBMT0dPVVRfUkVBU09OUyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFRBc3luY0xvY2FsZURhdGFQcm9wcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgQXN5bmNMb2NhbGVEYXRhIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvaTE4bic7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zTGlzdCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3JlYWN0LW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHtcbiAgcmVwb3J0RXJyb3JUb1NlbnRyeSxcbiAgU2VudHJ5VXNlclRyYWNrZXIsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3NlbnRyeSc7XG5pbXBvcnQgeyBESU1FTlNJT05TLCBOQVZCQVIgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0UHJldmlvdXNQcm9qZWN0S2V5IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IEFwcEJhciBmcm9tICcuLi9hcHAtYmFyJztcbmltcG9ydCBBcHBsaWNhdGlvbkxvYWRlciBmcm9tICcuLi9hcHBsaWNhdGlvbi1sb2FkZXInO1xuaW1wb3J0IHsgZ2V0QnJvd3NlckxvY2FsZSB9IGZyb20gJy4uL2FwcGxpY2F0aW9uLXNoZWxsLXByb3ZpZGVyL3V0aWxzJztcbmltcG9ydCBDb25maWd1cmVJbnRsUHJvdmlkZXIgZnJvbSAnLi4vY29uZmlndXJlLWludGwtcHJvdmlkZXInO1xuaW1wb3J0IEVycm9yQXBvbG9naXplciBmcm9tICcuLi9lcnJvci1hcG9sb2dpemVyJztcbmltcG9ydCBGZXRjaFByb2plY3QgZnJvbSAnLi4vZmV0Y2gtcHJvamVjdCc7XG5pbXBvcnQgRmV0Y2hVc2VyIGZyb20gJy4uL2ZldGNoLXVzZXInO1xuaW1wb3J0IE5hdkJhciBmcm9tICcuLi9uYXZiYXInO1xuaW1wb3J0IFByb2plY3RDb250YWluZXIgZnJvbSAnLi4vcHJvamVjdC1jb250YWluZXInO1xuaW1wb3J0IFByb2plY3REYXRhTG9jYWxlIGZyb20gJy4uL3Byb2plY3QtZGF0YS1sb2NhbGUnO1xuaW1wb3J0IFF1aWNrQWNjZXNzIGZyb20gJy4uL3F1aWNrLWFjY2Vzcyc7XG5pbXBvcnQgUmVkaXJlY3RUb0xvZ291dCBmcm9tICcuLi9yZWRpcmVjdC10by1sb2dvdXQnO1xuaW1wb3J0IFJlZGlyZWN0VG9Qcm9qZWN0Q3JlYXRlIGZyb20gJy4uL3JlZGlyZWN0LXRvLXByb2plY3QtY3JlYXRlJztcbmltcG9ydCBSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIGZyb20gJy4uL3JlcXVlc3RzLWluLWZsaWdodC1sb2FkZXInO1xuaW1wb3J0IFJvdXRlQ2F0Y2hBbGwgZnJvbSAnLi4vcm91dGUtY2F0Y2gtYWxsJztcbmltcG9ydCBTZXR1cEZsb3BGbGlwUHJvdmlkZXIgZnJvbSAnLi4vc2V0dXAtZmxvcC1mbGlwLXByb3ZpZGVyJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4uL3RoZW1lLXN3aXRjaGVyJztcblxudHlwZSBUQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0aW9uUHJvcHMgPSB7XG4gIGZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgZGVmYXVsdEZlYXR1cmVGbGFncz86IFRGbGFncztcbiAgYXBwbGljYXRpb25NZXNzYWdlczogVEFzeW5jTG9jYWxlRGF0YVByb3BzWydhcHBsaWNhdGlvbk1lc3NhZ2VzJ107XG4gIG9uTWVudUl0ZW1DbGljaz86IChldmVudDogU3ludGhldGljRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+KSA9PiB2b2lkO1xuICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s/OiBib29sZWFuO1xuICByZW5kZXI/OiAoKSA9PiBKU1guRWxlbWVudDtcbiAgY2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59O1xuXG5jb25zdCBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvciA9IChncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucyAmJlxuICAgICAgZ3FsRXJyb3IuZXh0ZW5zaW9ucy5jb2RlICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgPT09ICdVTkFVVEhFTlRJQ0FURUQnXG4gICk7XG5jb25zdCBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvciA9IChcbiAgZ3JhcGhRTEVycm9yczogQXBvbGxvRXJyb3JbJ2dyYXBoUUxFcnJvcnMnXVxuKSA9PlxuICBncmFwaFFMRXJyb3JzLmZpbmQoXG4gICAgKGdxbEVycm9yKSA9PlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZSAmJlxuICAgICAgLy8gTk9URTogVGhlIENUUCBBUEkgZG9lcyBub3QgcHJvdmlkZSBhbiBlcnJvciBjb2RlIGluIHRoaXMgY2FzZS5cbiAgICAgIGdxbEVycm9yLm1lc3NhZ2UuaW5jbHVkZXMoJ3dhcyBub3QgZm91bmQuJylcbiAgKTtcblxuZXhwb3J0IGNvbnN0IE1haW5Db250YWluZXIgPSBzdHlsZWQubWFpbmBcbiAgZ3JpZC1jb2x1bW46IDIvMztcbiAgZ3JpZC1yb3c6IDMvNDtcblxuICAvKlxuICAgIEFsbG93IHRoZSB0aGlzIGZsZXggY2hpbGQgdG8gZ3JvdyBzbWFsbGVyIHRoYW4gaXRzIHNtYWxsZXN0IGNvbnRlbnQuXG4gICAgVGhpcyBpcyBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIHJlYWxseSB3aWRlIHRleHQgaW5zaWRlIHRoYXQgd291bGQgc3RyZXRjaFxuICAgIHRoaXMgbm9kZSB0byBiZSB3aWRlciB0aGFuIHRoZSBwYXJlbnQuXG4gICovXG4gIG1pbi13aWR0aDogMDtcbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG5cbiAgLypcbiAgICBsYXlvdXQgdGhlIGNoaWxkcmVuLiBUaGVyZSB3aWxsIGFsd2F5cyBiZSB0aGUgcGFnZSBhbmQgc2lkZSBub3RpZmljYXRpb25cbiAgICBhYm91dCB0aGUgYWN0dWFsIGNvbnRlbnQuIFRoZSBjb250ZW50IHNob3VsZCBzdHJldGNoIHRvIGZpbGwgdGhlIHJlc3Qgb2ZcbiAgICB0aGUgcGFnZS5cbiAgKi9cbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblxuICAvKlxuICAgIHNldCBwb3NpdGlvbiB0byByZWxhdGl2ZSB0byBsYXlvdXQgbm90aWZpY2F0aW9ucyBhbmQgbW9kYWxzXG4gICovXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgcmVuZGVyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgaXMgY29uc2lkZXJlZCBcImF1dGhlbnRpY2F0ZWRcIlxuICogYW5kIGNvbnRhaW5zIHRoZSBcInJlc3RyaWN0ZWRcIiBhcHBsaWNhdGlvbiBwYXJ0LlxuICovXG5cbmV4cG9ydCBjb25zdCBBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRlZCA9IChcbiAgcHJvcHM6IFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wc1xuKSA9PiB7XG4gIGNvbnN0IGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSB1c2VBcHBsaWNhdGlvbkNvbnRleHQoXG4gICAgKGNvbnRleHQpID0+IGNvbnRleHQuZW52aXJvbm1lbnRcbiAgKSBhcyBUQXBwbGljYXRpb25Db250ZXh0PHt9PlsnZW52aXJvbm1lbnQnXTtcbiAgLy8gVE9ETzogdXNpbmcgdGhpcyBob29rIHdpbGwgc3Vic2NyaWJlIHRoZSBjb21wb25lbnQgdG8gcm91dGUgdXBkYXRlcy5cbiAgLy8gVGhpcyBpcyBjdXJyZW50bHkgdXNlZnVsIGZvciBkZXRlY3RpbmcgYSBjaGFuZ2UgaW4gdGhlIHByb2plY3Qga2V5XG4gIC8vIGZyb20gVVJMIChcIi9cIiAtLT4gXCIvOnByb2plY3RLZXlcIikuXG4gIC8vIEhvd2V2ZXIsIGV2ZXJ5IHJvdXRlIGNoYW5nZSB3aWxsIHRyaWdnZXIgYSByZS1yZW5kZXIuIFRoaXMgaXMgcHJvYmFibHlcbiAgLy8gb2staXNoIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGxvb2sgaW50byBhIG1vcmUgcGVyZm9ybWFudCBzb2x1dGlvbi5cbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuXG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBub3RpZmljYXRpb25zUGFnZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IGxheW91dFJlZnMgPSB1c2VSZWY8e1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICAgIG5vdGlmaWNhdGlvbnNQYWdlUmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPjtcbiAgfT4oe1xuICAgIG5vdGlmaWNhdGlvbnNHbG9iYWxSZWYsXG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWYsXG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPEZldGNoVXNlcj5cbiAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1VzZXIsIHVzZXIsIGVycm9yIH0pID0+IHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgLy8gSW4gY2FzZSB0aGVyZSBpcyBhbiB1bmF1dGhvcml6ZWQgZXJyb3IsIHdlIHJlZGlyZWN0IHRvIHRoZSBsb2dpbiBwYWdlXG4gICAgICAgICAgaWYgKGVycm9yLmdyYXBoUUxFcnJvcnMgJiYgQXJyYXkuaXNBcnJheShlcnJvci5ncmFwaFFMRXJyb3JzKSkge1xuICAgICAgICAgICAgY29uc3QgaGFzVW5hdXRob3JpemVkRXJyb3IgPSBnZXRIYXNVbmF1dGhvcml6ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gZ2V0SGFzVXNlckJlZW5EZWxldGVkRXJyb3IoXG4gICAgICAgICAgICAgIGVycm9yLmdyYXBoUUxFcnJvcnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvciB8fCBoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcikge1xuICAgICAgICAgICAgICBsZXQgbG9nb3V0UmVhc29uOlxuICAgICAgICAgICAgICAgIHwgKHR5cGVvZiBMT0dPVVRfUkVBU09OUylba2V5b2YgdHlwZW9mIExPR09VVF9SRUFTT05TXVxuICAgICAgICAgICAgICAgIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICBpZiAoaGFzVW5hdXRob3JpemVkRXJyb3IpXG4gICAgICAgICAgICAgICAgbG9nb3V0UmVhc29uID0gTE9HT1VUX1JFQVNPTlMuVU5BVVRIT1JJWkVEO1xuICAgICAgICAgICAgICBlbHNlIGlmIChoYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5ERUxFVEVEO1xuICAgICAgICAgICAgICByZXR1cm4gPFJlZGlyZWN0VG9Mb2dvdXQgcmVhc29uPXtsb2dvdXRSZWFzb259IC8+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBTaW5jZSB3ZSBkbyBub3Qga25vdyB0aGUgbG9jYWxlIG9mIHRoZSB1c2VyLCB3ZSBwaWNrIGl0IGZyb20gdGhlXG4gICAgICAgICAgLy8gdXNlcidzIGJyb3dzZXIgdG8gYXR0ZW1wdCB0byBtYXRjaCB0aGUgbGFuZ3VhZ2UgZm9yIHRoZSBjb3JyZWN0IHRyYW5zbGF0aW9ucy5cbiAgICAgICAgICBjb25zdCB1c2VyTG9jYWxlID0gZ2V0QnJvd3NlckxvY2FsZSh3aW5kb3cpO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7LypcbiAgICAgICAgICAgIE5PVEU6IHdlIGRvIG5vdCB3YW50IHRvIGxvYWQgdGhlIGxvY2FsZSBkYXRhIGFzIGxvbmcgYXMgd2UgZG8gbm90XG4gICAgICAgICAgICBrbm93IHRoZSB1c2VyIHNldHRpbmcuIFRoaXMgaXMgaW1wb3J0YW50IGluIG9yZGVyIHRvIGF2b2lkIGZsYXNoaW5nXG4gICAgICAgICAgICBvZiB0cmFuc2xhdGVkIGNvbnRlbnQgb24gc3Vic2VxdWVudCByZS1yZW5kZXJzLlxuICAgICAgICAgICAgVGhlcmVmb3JlLCBhcyBsb25nIGFzIHRoZXJlIGlzIG5vIGxvY2FsZSwgdGhlIGNoaWxkcmVuIHNob3VsZCBjb25zaWRlciB1c2luZyB0aGVcbiAgICAgICAgICAgIGBpc0xvYWRpbmdgIHByb3AgdG8gZGVjaWRlIHdoYXQgdG8gcmVuZGVyLlxuICAgICAgICAgICovfVxuICAgICAgICAgICAgPEFzeW5jTG9jYWxlRGF0YVxuICAgICAgICAgICAgICBsb2NhbGU9e3VzZXI/Lmxhbmd1YWdlfVxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1lc3NhZ2VzPXtwcm9wcy5hcHBsaWNhdGlvbk1lc3NhZ2VzfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdMb2NhbGVEYXRhLCBsb2NhbGUsIG1lc3NhZ2VzIH0pID0+IChcbiAgICAgICAgICAgICAgICA8Q29uZmlndXJlSW50bFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBwYXNzIHRoZSBsYW5ndWFnZSBhcyBsb25nIGFzIHRoZSBsb2NhbGUgZGF0YVxuICAgICAgICAgICAgICAgICAgLy8gaXMgbm90IGxvYWRlZC5cbiAgICAgICAgICAgICAgICAgIHsuLi4oaXNMb2FkaW5nTG9jYWxlRGF0YSA/IHt9IDogeyBsb2NhbGUsIG1lc3NhZ2VzIH0pfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxTZXR1cEZsb3BGbGlwUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e3VzZXIgPz8gdW5kZWZpbmVkfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIDxRdWlja0FjY2VzcyAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzUHJvamVjdExvYWRpbmcsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1Byb2plY3RMb2FkaW5nIHx8ICFwcm9qZWN0KSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdXNlZCBvdXRzaWRlIG9mIGEgcHJvamVjdCBjb250ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdoZW4gdGhlIHByb2plY3QgaXMgZXhwaXJlZCBvciBzdXBzZW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRVc2VQcm9qZWN0Q29udGV4dCA9ICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvamVjdC5zdXNwZW5zaW9uICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3Quc3VzcGVuc2lvbi5pc0FjdGl2ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9qZWN0LmV4cGlyeSAmJiBwcm9qZWN0LmV4cGlyeS5pc0FjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG91bGRVc2VQcm9qZWN0Q29udGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UXVpY2tBY2Nlc3MgLz47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3REYXRhTG9jYWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZXM9e3Byb2plY3QubGFuZ3VhZ2VzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU6IGRhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e3VzZXJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdERhdGFMb2NhbGU9e2RhdGFMb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UXVpY2tBY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2VQcm9qZWN0RGF0YUxvY2FsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UHJvamVjdERhdGFMb2NhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Qcm9qZWN0RGF0YUxvY2FsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsPXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8YXNpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1jb2x1bW46IDEvMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMi80O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSA8TmF2QmFyPiBzaG91bGQgb25seSBiZSByZW5kZXJlZCB3aXRoaW4gYSBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGV4dCwgdGhlcmVmb3JlIHdoZW4gdGhlcmUgaXMgYSBgcHJvamVjdEtleWAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gYHByb2plY3RLZXlgIGluIHRoZSBVUkwgKGUuZy4gYC9hY2NvdW50YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJvdXRlcyksIHdlIGRvbid0IHJlbmRlciBpdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1RFOiB3ZSBhbHNvIFwiY2FjaGVcIiB0aGUgYHByb2plY3RLZXlgIGluIGxvY2FsU3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gXCJyZS1oeWRyYXRlXCIgdGhlIFVSTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvY2F0aW9uIChlLmcgd2hlbiB5b3UgZ28gdG8gYC9gLCB0aGVyZSBzaG91bGQgYmUgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIGAvOnByb2plY3RLZXlgKS4gVGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVseSBvbiB0aGUgdmFsdWUgaW4gbG9jYWxTdG9yYWdlIHRvIGRldGVybWluZSB3aGljaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGBwcm9qZWN0S2V5YCBpcyBjdXJyZW50bHkgdXNlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb2plY3RLZXlGcm9tVXJsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZldGNoUHJvamVjdCBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ1Byb2plY3QsIHByb2plY3QgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTG9hZGluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdVc2VyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdMb2NhbGVEYXRhIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmdQcm9qZWN0IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbG9jYWxlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhcHJvamVjdDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj17dXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IGRvIG5vdCBwYXNzIHRoZSBgcHJvamVjdGAgaW50byB0aGUgYXBwbGljYXRpb24gY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBlcm1pc3Npb25zIGZvciB0aGUgTmF2YmFyIGFyZSByZXNvbHZlZCBzZXBhcmF0ZWx5LCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgUmVhY3QgY29udGV4dC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5hdkJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdD17cHJvamVjdH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1lbnVJdGVtQ2xpY2s9e3Byb3BzLm9uTWVudUl0ZW1DbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmV0Y2hQcm9qZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FzaWRlPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nVXNlciB8fCBpc0xvYWRpbmdMb2NhbGVEYXRhID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBsaWNhdGlvbkxvYWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L01haW5Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TWFpbkNvbnRhaW5lciByb2xlPVwibWFpblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcmVmPXtub3RpZmljYXRpb25zUGFnZVJlZn0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlBBR0V9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPE5vdGlmaWNhdGlvbnNMaXN0IGRvbWFpbj17RE9NQUlOUy5TSURFfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgaGF2ZSBhbiBpbnRlcm1lZGlhcnkgPGRpdj4gd3JhcHBpbmcgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaWV3PiBjb21wb25lbnQgdGhhdCBpcyB1c2VkIHRvIHdyYXAgZXZlcnkgY29udGVudC12aWV3LiBUaGlzIGludGVybWVkaWFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiBpcyBzb2xlbHkgdXNlZCBmb3IgYWRkaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSBjb250ZW50LXZpZXcuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIHRoaXMgY291bGQgYmUgZG9uZSBieSBwYXNzaW5nIHRoZSB0cmFja2luZyBjb250ZXh0IHRvIHRoZSA8Vmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxldCBpdCBkbyB0aGUgbGF5b3V0LCBzbyB3ZSBjYW4gYXZvaWQgbGF5aW5nIG91ciBmcm9tIHRoZSBvdXRzaWRlIGFzIHdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ICo6bm90KDpmaXJzdC1vZi10eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UG9ydGFsc0NvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17bGF5b3V0UmVmc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wPXtESU1FTlNJT05TLmhlYWRlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TGVmdD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0T25FeHBhbmRlZE1lbnU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2plY3RLZXlGcm9tVXJsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IE5BVkJBUi53aWR0aExlZnROYXZpZ2F0aW9uV2hlbkV4cGFuZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3dpdGNoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVwiL3Byb2ZpbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17KCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlZGlyZWN0IHRvPVwiL2FjY291bnQvcHJvZmlsZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD1cIi9hY2NvdW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgcmVuZGVyYCBmdW5jdGlvbiwgd2UgYXNzdW1lIGl0J3Mgb25lIG9mIHR3byBjYXNlczpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDEuIFRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCB1c2UgYGNoaWxkcmVuYCBhbmQgdGhlcmVmb3JlIGltcGxlbWVudHMgdGhlIHJvdXRlcyBpbmNsdWRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSA8Um91dGVDYXRjaEFsbD4gKHRoaXMgaXMgdGhlIFwibGVnYWN5XCIgYmVoYXZpb3IpLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMi4gSXQncyB0aGUgYWNjb3VudCBhcHBsaWNhdGlvbiwgd2hpY2ggYWx3YXlzIHVzZXMgYHJlbmRlcmAgYW5kIHRoZXJlZm9yZSBzaG91bGQgcmVuZGVyIGFzIG5vcm1hbC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBJbiBjYXNlIHRoZSBBcHBTaGVsbCB1c2VzIHRoZSBgY2hpbGRyZW5gIGZ1bmN0aW9uLCB3ZSBjYW4gYWx3YXlzIGFzc3VtZSB0aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpdCdzIGEgbm9ybWFsIEN1c3RvbSBBcHBsaWNhdGlvbiBhbmQgdGhhdCBpdCBzaG91bGQgdHJpZ2dlciBhIGZvcmNlIHJlbG9hZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMucmVuZGVyID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pntwcm9wcy5yZW5kZXIoKX08Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZUNhdGNoQWxsIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogUHJvamVjdCByb3V0ZXMgKi99XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdD17dHJ1ZX0gcGF0aD1cIi9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzUHJvamVjdEtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFByZXZpb3VzUHJvamVjdEtleShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5kZWZhdWx0UHJvamVjdEtleSA/PyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOT1RFOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciBoYXMgbm90IGJlZW4gbG9hZGVkIGEgbG9hZGluZyBzcGlubmVyIGlzIHNob3duLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgbm90IHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgbm9yIGhhcyBhIGRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgcHJvamVjdCwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCB0byBjcmVhdGUgb25lLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBHaXZlbiB0aGUgdXNlciB3YXMgd29ya2luZyBvbiBhIHByb2plY3QgcHJldmlvdXNseSBvciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlZGlyZWN0IHRvIHRoYXQgcHJvamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1c2VyKSByZXR1cm4gPEFwcGxpY2F0aW9uTG9hZGVyIC8+O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1Byb2plY3RLZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89e2AvJHtwcmV2aW91c1Byb2plY3RLZXl9YH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Sb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXtmYWxzZX0gcGF0aD1cIi86cHJvamVjdEtleVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQcm9qZWN0Q29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXt1c2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */"),
877
+ css: /*#__PURE__*/react$1.css("height:100vh;display:grid;grid-template-rows:auto ", oidc.DIMENSIONS.header, " 1fr;grid-template-columns:min-content 1fr;" + (process.env.NODE_ENV === "production" ? "" : ";label:ApplicationShellAuthenticated;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcGxpY2F0aW9uLXNoZWxsLWF1dGhlbnRpY2F0ZWQudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9PZ0MiLCJmaWxlIjoiYXBwbGljYXRpb24tc2hlbGwtYXV0aGVudGljYXRlZC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKU1gsXG4gIHR5cGUgUmVhY3ROb2RlLFxuICB0eXBlIFJlZk9iamVjdCxcbiAgdHlwZSBTeW50aGV0aWNFdmVudCxcbiAgdXNlUmVmLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgdHlwZSB7IEFwb2xsb0Vycm9yIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvZXJyb3JzJztcbmltcG9ydCB0eXBlIHsgVEZsYWdzIH0gZnJvbSAnQGZsb3BmbGlwL3R5cGVzJztcbmltcG9ydCB7IFJlZGlyZWN0LCBSb3V0ZSwgU3dpdGNoLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgUG9ydGFsc0NvbnRhaW5lciB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXIsXG4gIHNlbGVjdFByb2plY3RLZXlGcm9tVXJsLFxuICB1c2VBcHBsaWNhdGlvbkNvbnRleHQsXG4gIHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlLFxuICB0eXBlIFRBcHBsaWNhdGlvbkNvbnRleHQsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLXNoZWxsLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgRE9NQUlOUywgTE9HT1VUX1JFQVNPTlMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBUQXN5bmNMb2NhbGVEYXRhUHJvcHMgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9pMThuJztcbmltcG9ydCB7IEFzeW5jTG9jYWxlRGF0YSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2kxOG4nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc0xpc3QgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9yZWFjdC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIHJlcG9ydEVycm9yVG9TZW50cnksXG4gIFNlbnRyeVVzZXJUcmFja2VyLFxufSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9zZW50cnknO1xuaW1wb3J0IHsgRElNRU5TSU9OUywgTkFWQkFSIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRGZXRjaExvZ2dlZEluVXNlclF1ZXJ5IH0gZnJvbSAnLi4vLi4vdHlwZXMvZ2VuZXJhdGVkL21jJztcbmltcG9ydCB7IGdldFByZXZpb3VzUHJvamVjdEtleSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCBBcHBCYXIgZnJvbSAnLi4vYXBwLWJhcic7XG5pbXBvcnQgQXBwbGljYXRpb25Mb2FkZXIgZnJvbSAnLi4vYXBwbGljYXRpb24tbG9hZGVyJztcbmltcG9ydCB7IGdldEJyb3dzZXJMb2NhbGUgfSBmcm9tICcuLi9hcHBsaWNhdGlvbi1zaGVsbC1wcm92aWRlci91dGlscyc7XG5pbXBvcnQgQ29uZmlndXJlSW50bFByb3ZpZGVyIGZyb20gJy4uL2NvbmZpZ3VyZS1pbnRsLXByb3ZpZGVyJztcbmltcG9ydCBFcnJvckFwb2xvZ2l6ZXIgZnJvbSAnLi4vZXJyb3ItYXBvbG9naXplcic7XG5pbXBvcnQgRmV0Y2hQcm9qZWN0IGZyb20gJy4uL2ZldGNoLXByb2plY3QnO1xuaW1wb3J0IEZldGNoVXNlciBmcm9tICcuLi9mZXRjaC11c2VyJztcbmltcG9ydCBOYXZCYXIgZnJvbSAnLi4vbmF2YmFyJztcbmltcG9ydCBQcm9qZWN0Q29udGFpbmVyIGZyb20gJy4uL3Byb2plY3QtY29udGFpbmVyJztcbmltcG9ydCBSZWRpcmVjdFRvTG9nb3V0IGZyb20gJy4uL3JlZGlyZWN0LXRvLWxvZ291dCc7XG5pbXBvcnQgUmVkaXJlY3RUb1Byb2plY3RDcmVhdGUgZnJvbSAnLi4vcmVkaXJlY3QtdG8tcHJvamVjdC1jcmVhdGUnO1xuaW1wb3J0IFJlcXVlc3RzSW5GbGlnaHRMb2FkZXIgZnJvbSAnLi4vcmVxdWVzdHMtaW4tZmxpZ2h0LWxvYWRlcic7XG5pbXBvcnQgUm91dGVDYXRjaEFsbCBmcm9tICcuLi9yb3V0ZS1jYXRjaC1hbGwnO1xuaW1wb3J0IFNldHVwRmxvcEZsaXBQcm92aWRlciBmcm9tICcuLi9zZXR1cC1mbG9wLWZsaXAtcHJvdmlkZXInO1xuaW1wb3J0IFRoZW1lU3dpdGNoZXIgZnJvbSAnLi4vdGhlbWUtc3dpdGNoZXInO1xuXG50eXBlIFRBcHBsaWNhdGlvblNoZWxsQXV0aGVudGljYXRpb25Qcm9wcyA9IHtcbiAgZmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBkZWZhdWx0RmVhdHVyZUZsYWdzPzogVEZsYWdzO1xuICBhcHBsaWNhdGlvbk1lc3NhZ2VzOiBUQXN5bmNMb2NhbGVEYXRhUHJvcHNbJ2FwcGxpY2F0aW9uTWVzc2FnZXMnXTtcbiAgb25NZW51SXRlbUNsaWNrPzogKGV2ZW50OiBTeW50aGV0aWNFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHZvaWQ7XG4gIGRpc2FibGVSb3V0ZVBlcm1pc3Npb25DaGVjaz86IGJvb2xlYW47XG4gIHJlbmRlcj86ICgpID0+IEpTWC5FbGVtZW50O1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IGdldEhhc1VuYXV0aG9yaXplZEVycm9yID0gKGdyYXBoUUxFcnJvcnM6IEFwb2xsb0Vycm9yWydncmFwaFFMRXJyb3JzJ10pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5leHRlbnNpb25zICYmXG4gICAgICBncWxFcnJvci5leHRlbnNpb25zLmNvZGUgJiZcbiAgICAgIGdxbEVycm9yLmV4dGVuc2lvbnMuY29kZSA9PT0gJ1VOQVVUSEVOVElDQVRFRCdcbiAgKTtcbmNvbnN0IGdldEhhc1VzZXJCZWVuRGVsZXRlZEVycm9yID0gKFxuICBncmFwaFFMRXJyb3JzOiBBcG9sbG9FcnJvclsnZ3JhcGhRTEVycm9ycyddXG4pID0+XG4gIGdyYXBoUUxFcnJvcnMuZmluZChcbiAgICAoZ3FsRXJyb3IpID0+XG4gICAgICBncWxFcnJvci5tZXNzYWdlICYmXG4gICAgICAvLyBOT1RFOiBUaGUgQ1RQIEFQSSBkb2VzIG5vdCBwcm92aWRlIGFuIGVycm9yIGNvZGUgaW4gdGhpcyBjYXNlLlxuICAgICAgZ3FsRXJyb3IubWVzc2FnZS5pbmNsdWRlcygnd2FzIG5vdCBmb3VuZC4nKVxuICApO1xuXG5leHBvcnQgY29uc3QgTWFpbkNvbnRhaW5lciA9IHN0eWxlZC5tYWluYFxuICBncmlkLWNvbHVtbjogMi8zO1xuICBncmlkLXJvdzogMy80O1xuXG4gIC8qXG4gICAgQWxsb3cgdGhlIHRoaXMgZmxleCBjaGlsZCB0byBncm93IHNtYWxsZXIgdGhhbiBpdHMgc21hbGxlc3QgY29udGVudC5cbiAgICBUaGlzIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGlzIGEgcmVhbGx5IHdpZGUgdGV4dCBpbnNpZGUgdGhhdCB3b3VsZCBzdHJldGNoXG4gICAgdGhpcyBub2RlIHRvIGJlIHdpZGVyIHRoYW4gdGhlIHBhcmVudC5cbiAgKi9cbiAgbWluLXdpZHRoOiAwO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcblxuICAvKlxuICAgIGxheW91dCB0aGUgY2hpbGRyZW4uIFRoZXJlIHdpbGwgYWx3YXlzIGJlIHRoZSBwYWdlIGFuZCBzaWRlIG5vdGlmaWNhdGlvblxuICAgIGFib3V0IHRoZSBhY3R1YWwgY29udGVudC4gVGhlIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gZmlsbCB0aGUgcmVzdCBvZlxuICAgIHRoZSBwYWdlLlxuICAqL1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIC8qXG4gICAgc2V0IHBvc2l0aW9uIHRvIHJlbGF0aXZlIHRvIGxheW91dCBub3RpZmljYXRpb25zIGFuZCBtb2RhbHNcbiAgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuYDtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBpcyByZW5kZXJlZCB3aGVuZXZlciB0aGUgdXNlciBpcyBjb25zaWRlcmVkIFwiYXV0aGVudGljYXRlZFwiXG4gKiBhbmQgY29udGFpbnMgdGhlIFwicmVzdHJpY3RlZFwiIGFwcGxpY2F0aW9uIHBhcnQuXG4gKi9cblxuZXhwb3J0IGNvbnN0IEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkID0gKFxuICBwcm9wczogVEFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGlvblByb3BzXG4pID0+IHtcbiAgY29uc3QgYXBwbGljYXRpb25FbnZpcm9ubWVudCA9IHVzZUFwcGxpY2F0aW9uQ29udGV4dChcbiAgICAoY29udGV4dCkgPT4gY29udGV4dC5lbnZpcm9ubWVudFxuICApIGFzIFRBcHBsaWNhdGlvbkNvbnRleHQ8e30+WydlbnZpcm9ubWVudCddO1xuICAvLyBUT0RPOiB1c2luZyB0aGlzIGhvb2sgd2lsbCBzdWJzY3JpYmUgdGhlIGNvbXBvbmVudCB0byByb3V0ZSB1cGRhdGVzLlxuICAvLyBUaGlzIGlzIGN1cnJlbnRseSB1c2VmdWwgZm9yIGRldGVjdGluZyBhIGNoYW5nZSBpbiB0aGUgcHJvamVjdCBrZXlcbiAgLy8gZnJvbSBVUkwgKFwiL1wiIC0tPiBcIi86cHJvamVjdEtleVwiKS5cbiAgLy8gSG93ZXZlciwgZXZlcnkgcm91dGUgY2hhbmdlIHdpbGwgdHJpZ2dlciBhIHJlLXJlbmRlci4gVGhpcyBpcyBwcm9iYWJseVxuICAvLyBvay1pc2ggYnV0IHdlIG1pZ2h0IHdhbnQgdG8gbG9vayBpbnRvIGEgbW9yZSBwZXJmb3JtYW50IHNvbHV0aW9uLlxuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG5cbiAgY29uc3Qgbm90aWZpY2F0aW9uc0dsb2JhbFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbnNQYWdlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgbGF5b3V0UmVmcyA9IHVzZVJlZjx7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD47XG4gICAgbm90aWZpY2F0aW9uc1BhZ2VSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+O1xuICB9Pih7XG4gICAgbm90aWZpY2F0aW9uc0dsb2JhbFJlZixcbiAgICBub3RpZmljYXRpb25zUGFnZVJlZixcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RmV0Y2hVc2VyPlxuICAgICAgeyh7IGlzTG9hZGluZzogaXNMb2FkaW5nVXNlciwgdXNlciwgZXJyb3IgfSkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBJbiBjYXNlIHRoZXJlIGlzIGFuIHVuYXV0aG9yaXplZCBlcnJvciwgd2UgcmVkaXJlY3QgdG8gdGhlIGxvZ2luIHBhZ2VcbiAgICAgICAgICBpZiAoZXJyb3IuZ3JhcGhRTEVycm9ycyAmJiBBcnJheS5pc0FycmF5KGVycm9yLmdyYXBoUUxFcnJvcnMpKSB7XG4gICAgICAgICAgICBjb25zdCBoYXNVbmF1dGhvcml6ZWRFcnJvciA9IGdldEhhc1VuYXV0aG9yaXplZEVycm9yKFxuICAgICAgICAgICAgICBlcnJvci5ncmFwaFFMRXJyb3JzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgaGFzVXNlckJlZW5EZWxldGVkRXJyb3IgPSBnZXRIYXNVc2VyQmVlbkRlbGV0ZWRFcnJvcihcbiAgICAgICAgICAgICAgZXJyb3IuZ3JhcGhRTEVycm9yc1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGhhc1VuYXV0aG9yaXplZEVycm9yIHx8IGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKSB7XG4gICAgICAgICAgICAgIGxldCBsb2dvdXRSZWFzb246XG4gICAgICAgICAgICAgICAgfCAodHlwZW9mIExPR09VVF9SRUFTT05TKVtrZXlvZiB0eXBlb2YgTE9HT1VUX1JFQVNPTlNdXG4gICAgICAgICAgICAgICAgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGlmIChoYXNVbmF1dGhvcml6ZWRFcnJvcilcbiAgICAgICAgICAgICAgICBsb2dvdXRSZWFzb24gPSBMT0dPVVRfUkVBU09OUy5VTkFVVEhPUklaRUQ7XG4gICAgICAgICAgICAgIGVsc2UgaWYgKGhhc1VzZXJCZWVuRGVsZXRlZEVycm9yKVxuICAgICAgICAgICAgICAgIGxvZ291dFJlYXNvbiA9IExPR09VVF9SRUFTT05TLkRFTEVURUQ7XG4gICAgICAgICAgICAgIHJldHVybiA8UmVkaXJlY3RUb0xvZ291dCByZWFzb249e2xvZ291dFJlYXNvbn0gLz47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFNpbmNlIHdlIGRvIG5vdCBrbm93IHRoZSBsb2NhbGUgb2YgdGhlIHVzZXIsIHdlIHBpY2sgaXQgZnJvbSB0aGVcbiAgICAgICAgICAvLyB1c2VyJ3MgYnJvd3NlciB0byBhdHRlbXB0IHRvIG1hdGNoIHRoZSBsYW5ndWFnZSBmb3IgdGhlIGNvcnJlY3QgdHJhbnNsYXRpb25zLlxuXG4gICAgICAgICAgY29uc3QgdXNlckxvY2FsZSA9IGdldEJyb3dzZXJMb2NhbGUod2luZG93KTtcblxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QXN5bmNMb2NhbGVEYXRhXG4gICAgICAgICAgICAgIGxvY2FsZT17dXNlckxvY2FsZX1cbiAgICAgICAgICAgICAgYXBwbGljYXRpb25NZXNzYWdlcz17cHJvcHMuYXBwbGljYXRpb25NZXNzYWdlc31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgeyh7IGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yVG9TZW50cnkoZXJyb3IsIHt9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPENvbmZpZ3VyZUludGxQcm92aWRlciBsb2NhbGU9e2xvY2FsZX0gbWVzc2FnZXM9e21lc3NhZ2VzfT5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9yQXBvbG9naXplciAvPlxuICAgICAgICAgICAgICAgICAgPC9Db25maWd1cmVJbnRsUHJvdmlkZXI+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9qZWN0S2V5RnJvbVVybCA9IHNlbGVjdFByb2plY3RLZXlGcm9tVXJsKGxvY2F0aW9uLnBhdGhuYW1lKTtcblxuICAgICAgICAvLyBDaGVjayBpZiB1c2VyIGlzIGN0IHN0YWZmLCBhbmQgaWYgc28gZ2V0IGxhbmd1YWdlIHNlbGVjdGVkIHZpYSBzdGFmZiBiYXIgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAgICAgIGNvbnN0IHN0YWZmQmFyTGFuZ3VhZ2UgPVxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdjb21tZXJjZXRvb2xzJyB8fFxuICAgICAgICAgIHVzZXI/LmxhdW5jaGRhcmtseVRyYWNraW5nR3JvdXAgPT09ICdtYWlsb3NhdXInXG4gICAgICAgICAgICA/IHNlbGVjdFVzZXJMYW5ndWFnZUZyb21TdG9yYWdlKClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRVc2VyOiBURmV0Y2hMb2dnZWRJblVzZXJRdWVyeVsndXNlciddIHwgdW5kZWZpbmVkID0gdXNlclxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgICAgICAvLyBzZXQgdGhlIHN0YWZmIGJhciBsYW5ndWFnZSBpZiBhcHBsaWNhYmxlXG4gICAgICAgICAgICAgIGxhbmd1YWdlOiBzdGFmZkJhckxhbmd1YWdlID8/IHVzZXIubGFuZ3VhZ2UsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8QXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXJcbiAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgey8qXG4gICAgICAgICAgICBOT1RFOiB3ZSBkbyBub3Qgd2FudCB0byBsb2FkIHRoZSBsb2NhbGUgZGF0YSBhcyBsb25nIGFzIHdlIGRvIG5vdFxuICAgICAgICAgICAga25vdyB0aGUgdXNlciBzZXR0aW5nLiBUaGlzIGlzIGltcG9ydGFudCBpbiBvcmRlciB0byBhdm9pZCBmbGFzaGluZ1xuICAgICAgICAgICAgb2YgdHJhbnNsYXRlZCBjb250ZW50IG9uIHN1YnNlcXVlbnQgcmUtcmVuZGVycy5cbiAgICAgICAgICAgIFRoZXJlZm9yZSwgYXMgbG9uZyBhcyB0aGVyZSBpcyBubyBsb2NhbGUsIHRoZSBjaGlsZHJlbiBzaG91bGQgY29uc2lkZXIgdXNpbmcgdGhlXG4gICAgICAgICAgICBgaXNMb2FkaW5nYCBwcm9wIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlci5cbiAgICAgICAgICAqL31cbiAgICAgICAgICAgIDxBc3luY0xvY2FsZURhdGFcbiAgICAgICAgICAgICAgbG9jYWxlPXtub3JtYWxpemVkVXNlcj8ubGFuZ3VhZ2V9XG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWVzc2FnZXM9e3Byb3BzLmFwcGxpY2F0aW9uTWVzc2FnZXN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsoeyBpc0xvYWRpbmc6IGlzTG9hZGluZ0xvY2FsZURhdGEsIGxvY2FsZSwgbWVzc2FnZXMgfSkgPT4gKFxuICAgICAgICAgICAgICAgIDxDb25maWd1cmVJbnRsUHJvdmlkZXJcbiAgICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIHBhc3MgdGhlIGxhbmd1YWdlIGFzIGxvbmcgYXMgdGhlIGxvY2FsZSBkYXRhXG4gICAgICAgICAgICAgICAgICAvLyBpcyBub3QgbG9hZGVkLlxuICAgICAgICAgICAgICAgICAgey4uLihpc0xvYWRpbmdMb2NhbGVEYXRhID8ge30gOiB7IGxvY2FsZSwgbWVzc2FnZXMgfSl9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFNldHVwRmxvcEZsaXBQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgIGxkQ2xpZW50U2lkZUlkPXthcHBsaWNhdGlvbkVudmlyb25tZW50LmxkQ2xpZW50U2lkZUlkfVxuICAgICAgICAgICAgICAgICAgICBmbGFncz17cHJvcHMuZmVhdHVyZUZsYWdzfVxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmxhZ3M9e3Byb3BzLmRlZmF1bHRGZWF0dXJlRmxhZ3N9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICB7LyogTk9URTogdGhlIHJlcXVlc3RzIGluIGZsaWdodCBsb2FkZXIgd2lsbCByZW5kZXIgYSBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgICAgc3Bpbm5lciBpbnRvIHRoZSBBcHBCYXIuICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxSZXF1ZXN0c0luRmxpZ2h0TG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNlbnRyeVVzZXJUcmFja2VyIHVzZXI9e25vcm1hbGl6ZWRVc2VyfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gJHtESU1FTlNJT05TLmhlYWRlcn0gMWZyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IDFmcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9e25vdGlmaWNhdGlvbnNHbG9iYWxSZWZ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLXJvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogMS8zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiYWJvdmUtdG9wLW5hdmlnYXRpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLkdMT0JBTH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8aGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtcm93OiAnMi8zJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlkLWNvbHVtbjogJzIvMyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxBcHBCYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXtub3JtYWxpemVkVXNlcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybD17cHJvamVjdEtleUZyb21Vcmx9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGFzaWRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQtY29sdW1uOiAxLzI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZC1yb3c6IDIvNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgPE5hdkJhcj4gc2hvdWxkIG9ubHkgYmUgcmVuZGVyZWQgd2l0aGluIGEgcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRleHQsIHRoZXJlZm9yZSB3aGVuIHRoZXJlIGlzIGEgYHByb2plY3RLZXlgLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGBwcm9qZWN0S2V5YCBpbiB0aGUgVVJMIChlLmcuIGAvYWNjb3VudGBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3V0ZXMpLCB3ZSBkb24ndCByZW5kZXIgaXQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogd2UgYWxzbyBcImNhY2hlXCIgdGhlIGBwcm9qZWN0S2V5YCBpbiBsb2NhbFN0b3JhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgdGhpcyBzaG91bGQgb25seSBiZSB1c2VkIHRvIFwicmUtaHlkcmF0ZVwiIHRoZSBVUkxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhdGlvbiAoZS5nIHdoZW4geW91IGdvIHRvIGAvYCwgdGhlcmUgc2hvdWxkIGJlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWRpcmVjdCB0byBgLzpwcm9qZWN0S2V5YCkuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIG5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbHkgb24gdGhlIHZhbHVlIGluIGxvY2FsU3RvcmFnZSB0byBkZXRlcm1pbmUgd2hpY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBgcHJvamVjdEtleWAgaXMgY3VycmVudGx5IHVzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9qZWN0S2V5RnJvbVVybCkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGZXRjaFByb2plY3QgcHJvamVjdEtleT17cHJvamVjdEtleUZyb21Vcmx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHsgaXNMb2FkaW5nOiBpc0xvYWRpbmdQcm9qZWN0LCBwcm9qZWN0IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xvYWRpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nVXNlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nTG9jYWxlRGF0YSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2FkaW5nUHJvamVjdCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxvY2FsZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXByb2plY3Q7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudD17YXBwbGljYXRpb25FbnZpcm9ubWVudH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogZG8gbm90IHBhc3MgdGhlIGBwcm9qZWN0YCBpbnRvIHRoZSBhcHBsaWNhdGlvbiBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgcGVybWlzc2lvbnMgZm9yIHRoZSBOYXZiYXIgYXJlIHJlc29sdmVkIHNlcGFyYXRlbHksIHdpdGhpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGRpZmZlcmVudCBSZWFjdCBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TmF2QmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25Mb2NhbGU9e2xvY2FsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5PXtwcm9qZWN0S2V5RnJvbVVybH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0PXtwcm9qZWN0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50PXthcHBsaWNhdGlvbkVudmlyb25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUl0ZW1DbGljaz17cHJvcHMub25NZW51SXRlbUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcHBsaWNhdGlvbkNvbnRleHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GZXRjaFByb2plY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSkoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXNpZGU+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmdVc2VyIHx8IGlzTG9hZGluZ0xvY2FsZURhdGEgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFwcGxpY2F0aW9uTG9hZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWFpbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxNYWluQ29udGFpbmVyIHJvbGU9XCJtYWluXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiByZWY9e25vdGlmaWNhdGlvbnNQYWdlUmVmfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb3RpZmljYXRpb25zTGlzdCBkb21haW49e0RPTUFJTlMuUEFHRX0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm90aWZpY2F0aW9uc0xpc3QgZG9tYWluPXtET01BSU5TLlNJREV9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBoYXZlIGFuIGludGVybWVkaWFyeSA8ZGl2PiB3cmFwcGluZyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFZpZXc+IGNvbXBvbmVudCB0aGF0IGlzIHVzZWQgdG8gd3JhcCBldmVyeSBjb250ZW50LXZpZXcuIFRoaXMgaW50ZXJtZWRpYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+IGlzIHNvbGVseSB1c2VkIGZvciBhZGRpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIGNvbnRlbnQtdmlldy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgdGhpcyBjb3VsZCBiZSBkb25lIGJ5IHBhc3NpbmcgdGhlIHRyYWNraW5nIGNvbnRleHQgdG8gdGhlIDxWaWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGV0IGl0IGRvIHRoZSBsYXlvdXQsIHNvIHdlIGNhbiBhdm9pZCBsYXlpbmcgb3VyIGZyb20gdGhlIG91dHNpZGUgYXMgd2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gaGVyZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gKjpub3QoOmZpcnN0LW9mLXR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWdyb3c6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQb3J0YWxzQ29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXtsYXlvdXRSZWZzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3A9e0RJTUVOU0lPTlMuaGVhZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRMZWZ0PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9qZWN0S2V5RnJvbVVybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBOQVZCQVIud2lkdGhMZWZ0TmF2aWdhdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldExlZnRPbkV4cGFuZGVkTWVudT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdEtleUZyb21VcmxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTkFWQkFSLndpZHRoTGVmdE5hdmlnYXRpb25XaGVuRXhwYW5kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzBweCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9XCIvcHJvZmlsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyPXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVkaXJlY3QgdG89XCIvYWNjb3VudC9wcm9maWxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPVwiL2FjY291bnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGByZW5kZXJgIGZ1bmN0aW9uLCB3ZSBhc3N1bWUgaXQncyBvbmUgb2YgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogMS4gVGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHVzZSBgY2hpbGRyZW5gIGFuZCB0aGVyZWZvcmUgaW1wbGVtZW50cyB0aGUgcm91dGVzIGluY2x1ZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIDxSb3V0ZUNhdGNoQWxsPiAodGhpcyBpcyB0aGUgXCJsZWdhY3lcIiBiZWhhdmlvcikuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAyLiBJdCdzIHRoZSBhY2NvdW50IGFwcGxpY2F0aW9uLCB3aGljaCBhbHdheXMgdXNlcyBgcmVuZGVyYCBhbmQgdGhlcmVmb3JlIHNob3VsZCByZW5kZXIgYXMgbm9ybWFsLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluIGNhc2UgdGhlIEFwcFNoZWxsIHVzZXMgdGhlIGBjaGlsZHJlbmAgZnVuY3Rpb24sIHdlIGNhbiBhbHdheXMgYXNzdW1lIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGl0J3MgYSBub3JtYWwgQ3VzdG9tIEFwcGxpY2F0aW9uIGFuZCB0aGF0IGl0IHNob3VsZCB0cmlnZ2VyIGEgZm9yY2UgcmVsb2FkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5yZW5kZXIgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+e3Byb3BzLnJlbmRlcigpfTwvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlQ2F0Y2hBbGwgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsvKiBQcm9qZWN0IHJvdXRlcyAqL31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0PXt0cnVlfSBwYXRoPVwiL1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNQcm9qZWN0S2V5ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJldmlvdXNQcm9qZWN0S2V5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRVc2VyPy5kZWZhdWx0UHJvamVjdEtleSA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTk9URTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgaGFzIG5vdCBiZWVuIGxvYWRlZCBhIGxvYWRpbmcgc3Bpbm5lciBpcyBzaG93bi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIG5vdCB3b3JraW5nIG9uIGEgcHJvamVjdCBwcmV2aW91c2x5IG5vciBoYXMgYSBkZWZhdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgIHByb2plY3QsIHRoZSB1c2VyIHdpbGwgYmUgcHJvbXB0ZWQgdG8gY3JlYXRlIG9uZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgR2l2ZW4gdGhlIHVzZXIgd2FzIHdvcmtpbmcgb24gYSBwcm9qZWN0IHByZXZpb3VzbHkgb3IgaGFzIGEgZGVmYXVsdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICBwcm9qZWN0LCB0aGUgYXBwbGljYXRpb24gd2lsbCByZWRpcmVjdCB0byB0aGF0IHByb2plY3QuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9ybWFsaXplZFVzZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8QXBwbGljYXRpb25Mb2FkZXIgLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByZXZpb3VzUHJvamVjdEtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWRpcmVjdFRvUHJvamVjdENyZWF0ZSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWRpcmVjdCB0bz17YC8ke3ByZXZpb3VzUHJvamVjdEtleX1gfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3Q9e2ZhbHNlfSBwYXRoPVwiLzpwcm9qZWN0S2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFByb2plY3RDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI9e25vcm1hbGl6ZWRVc2VyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQ9e2FwcGxpY2F0aW9uRW52aXJvbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2s9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kaXNhYmxlUm91dGVQZXJtaXNzaW9uQ2hlY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZWZmZWN0aXZlbHkgcmVuZGVycyB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoaWxkcmVuLCB3aGljaCBpcyB0aGUgYXBwbGljYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcj17cHJvcHMucmVuZGVyfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Byb2plY3RDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NYWluQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICA8L1NldHVwRmxvcEZsaXBQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L0NvbmZpZ3VyZUludGxQcm92aWRlcj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQXN5bmNMb2NhbGVEYXRhPlxuICAgICAgICAgIDwvQXBwbGljYXRpb25Db250ZXh0UHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIDwvRmV0Y2hVc2VyPlxuICApO1xufTtcbkFwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkLmRpc3BsYXlOYW1lID0gJ0FwcGxpY2F0aW9uU2hlbGxBdXRoZW50aWNhdGVkJztcblxuZXhwb3J0IGRlZmF1bHQgQXBwbGljYXRpb25TaGVsbEF1dGhlbnRpY2F0ZWQ7XG4iXX0= */"),
1062
878
  children: [jsxRuntime.jsxs("div", {
1063
879
  ref: notificationsGlobalRef,
1064
880
  role: "region",
@@ -1069,43 +885,10 @@ const ApplicationShellAuthenticated = props => {
1069
885
  }), jsxRuntime.jsx(reactNotifications.NotificationsList, {
1070
886
  domain: constants.DOMAINS.GLOBAL
1071
887
  })]
1072
- }), jsxRuntime.jsx(reactRouterDom.Route, {
1073
- children: () => {
1074
- if (!projectKeyFromUrl) return jsxRuntime.jsx(QuickAccessTrigger, {});
1075
- return jsxRuntime.jsx(FetchProject, {
1076
- projectKey: projectKeyFromUrl,
1077
- children: _ref8 => {
1078
- let isProjectLoading = _ref8.isLoading,
1079
- project = _ref8.project;
1080
- if (isProjectLoading || !project) return null;
1081
-
1082
- // when used outside of a project context,
1083
- // or when the project is expired or supsended
1084
- const shouldUseProjectContext = !(project.suspension && project.suspension.isActive || project.expiry && project.expiry.isActive);
1085
- if (!shouldUseProjectContext) return jsxRuntime.jsx(QuickAccessTrigger, {});
1086
- return jsxRuntime.jsx(ProjectDataLocale, {
1087
- locales: project.languages,
1088
- children: _ref9 => {
1089
- let dataLocale = _ref9.locale,
1090
- setProjectDataLocale = _ref9.setProjectDataLocale;
1091
- return jsxRuntime.jsx(applicationShellConnectors.ApplicationContextProvider, {
1092
- user: user,
1093
- project: project,
1094
- projectDataLocale: dataLocale,
1095
- environment: applicationEnvironment,
1096
- children: jsxRuntime.jsx(QuickAccessTrigger, {
1097
- onChangeProjectDataLocale: setProjectDataLocale
1098
- })
1099
- });
1100
- }
1101
- });
1102
- }
1103
- });
1104
- }
1105
888
  }), jsxRuntime.jsx("header", {
1106
889
  css: _ref3,
1107
890
  children: jsxRuntime.jsx(AppBar, {
1108
- user: user,
891
+ user: normalizedUser,
1109
892
  projectKeyFromUrl: projectKeyFromUrl
1110
893
  })
1111
894
  }), jsxRuntime.jsx("aside", {
@@ -1124,12 +907,12 @@ const ApplicationShellAuthenticated = props => {
1124
907
  if (!projectKeyFromUrl) return null;
1125
908
  return jsxRuntime.jsx(FetchProject, {
1126
909
  projectKey: projectKeyFromUrl,
1127
- children: _ref0 => {
1128
- let isLoadingProject = _ref0.isLoading,
1129
- project = _ref0.project;
910
+ children: _ref8 => {
911
+ let isLoadingProject = _ref8.isLoading,
912
+ project = _ref8.project;
1130
913
  const isLoading = isLoadingUser || isLoadingLocaleData || isLoadingProject || !locale || !project;
1131
914
  return jsxRuntime.jsx(applicationShellConnectors.ApplicationContextProvider, {
1132
- user: user,
915
+ user: normalizedUser,
1133
916
  environment: applicationEnvironment
1134
917
  // NOTE: do not pass the `project` into the application context.
1135
918
  // The permissions for the Navbar are resolved separately, within
@@ -1192,8 +975,8 @@ const ApplicationShellAuthenticated = props => {
1192
975
  }), jsxRuntime.jsx(reactRouterDom.Route, {
1193
976
  exact: true,
1194
977
  path: "/",
1195
- children: (() => {
1196
- const previousProjectKey = getPreviousProjectKey(user?.defaultProjectKey ?? undefined);
978
+ children: (_normalizedUser$defau => {
979
+ const previousProjectKey = getPreviousProjectKey((_normalizedUser$defau = normalizedUser === null || normalizedUser === void 0 ? void 0 : normalizedUser.defaultProjectKey) !== null && _normalizedUser$defau !== void 0 ? _normalizedUser$defau : undefined);
1197
980
 
1198
981
  /**
1199
982
  * NOTE:
@@ -1203,17 +986,17 @@ const ApplicationShellAuthenticated = props => {
1203
986
  * Given the user was working on a project previously or has a default
1204
987
  * project, the application will redirect to that project.
1205
988
  */
1206
- if (!user) return jsxRuntime.jsx(ApplicationLoader, {});
989
+ if (!normalizedUser) return jsxRuntime.jsx(ApplicationLoader, {});
1207
990
  if (!previousProjectKey) return jsxRuntime.jsx(RedirectToProjectCreate, {});
1208
991
  return jsxRuntime.jsx(reactRouterDom.Redirect, {
1209
- to: `/${previousProjectKey}`
992
+ to: "/".concat(previousProjectKey)
1210
993
  });
1211
994
  })()
1212
995
  }), jsxRuntime.jsx(reactRouterDom.Route, {
1213
996
  exact: false,
1214
997
  path: "/:projectKey",
1215
998
  children: jsxRuntime.jsx(ProjectContainer, {
1216
- user: user,
999
+ user: normalizedUser,
1217
1000
  environment: applicationEnvironment,
1218
1001
  disableRoutePermissionCheck: props.disableRoutePermissionCheck
1219
1002
  // This effectively renders the
@@ -1382,31 +1165,37 @@ const withoutProjectKeyClaim = scope => {
1382
1165
  return _filterInstanceProperty__default["default"](_context = scope.split(' ')).call(_context, claim => !_startsWithInstanceProperty__default["default"](claim).call(claim, oidc.OIDC_CLAIMS.PROJECT_KEY)).join(' ');
1383
1166
  };
1384
1167
  const hasCachedAuthenticationState = () => {
1385
- if (window.app.__DEVELOPMENT__?.oidc?.authorizeUrl) {
1168
+ var _window$app$__DEVELOP;
1169
+ if ((_window$app$__DEVELOP = window.app.__DEVELOPMENT__) !== null && _window$app$__DEVELOP !== void 0 && (_window$app$__DEVELOP = _window$app$__DEVELOP.oidc) !== null && _window$app$__DEVELOP !== void 0 && _window$app$__DEVELOP.authorizeUrl) {
1386
1170
  try {
1171
+ var _window$app$__DEVELOP8, _window$app$__DEVELOP9, _window$app$__DEVELOP0, _window$app$__DEVELOP1;
1387
1172
  let activeProjectKey = applicationShellConnectors.oidcStorage.getActiveProjectKey();
1388
1173
  if (activeProjectKey) {
1174
+ var _window$app$__DEVELOP2, _window$app$__DEVELOP3, _window$app$__DEVELOP4;
1389
1175
  // GIVEN The application is not requesting a project key,
1390
1176
  // THEN we assume that the application does not need a project context.
1391
1177
  // GIVEN The application is not requesting a project key,
1392
1178
  // THEN we remove the cached project key.
1393
1179
  // This is the case of an application like `account`.
1394
- if (!window.app.__DEVELOPMENT__?.oidc?.initialProjectKey) {
1180
+ if (!((_window$app$__DEVELOP2 = window.app.__DEVELOPMENT__) !== null && _window$app$__DEVELOP2 !== void 0 && (_window$app$__DEVELOP2 = _window$app$__DEVELOP2.oidc) !== null && _window$app$__DEVELOP2 !== void 0 && _window$app$__DEVELOP2.initialProjectKey)) {
1395
1181
  applicationShellConnectors.oidcStorage.removeActiveProjectKey();
1396
1182
  }
1397
1183
 
1398
1184
  // If the project key we had in the storage does not match the one
1399
1185
  // we have in the development config, then we need to discard it and
1400
1186
  // use the one from the development config.
1401
- if (window.app.__DEVELOPMENT__?.oidc?.initialProjectKey && window.app.__DEVELOPMENT__?.oidc?.initialProjectKey !== activeProjectKey) {
1402
- activeProjectKey = window.app.__DEVELOPMENT__?.oidc?.initialProjectKey;
1187
+ if ((_window$app$__DEVELOP3 = window.app.__DEVELOPMENT__) !== null && _window$app$__DEVELOP3 !== void 0 && (_window$app$__DEVELOP3 = _window$app$__DEVELOP3.oidc) !== null && _window$app$__DEVELOP3 !== void 0 && _window$app$__DEVELOP3.initialProjectKey && ((_window$app$__DEVELOP4 = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP4 === void 0 || (_window$app$__DEVELOP4 = _window$app$__DEVELOP4.oidc) === null || _window$app$__DEVELOP4 === void 0 ? void 0 : _window$app$__DEVELOP4.initialProjectKey) !== activeProjectKey) {
1188
+ var _window$app$__DEVELOP5;
1189
+ activeProjectKey = (_window$app$__DEVELOP5 = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP5 === void 0 || (_window$app$__DEVELOP5 = _window$app$__DEVELOP5.oidc) === null || _window$app$__DEVELOP5 === void 0 ? void 0 : _window$app$__DEVELOP5.initialProjectKey;
1403
1190
  applicationShellConnectors.oidcStorage.setActiveProjectKey(activeProjectKey);
1404
1191
  }
1405
1192
  } else {
1406
- if (window.app.__DEVELOPMENT__?.oidc?.initialProjectKey) {
1193
+ var _window$app$__DEVELOP6;
1194
+ if ((_window$app$__DEVELOP6 = window.app.__DEVELOPMENT__) !== null && _window$app$__DEVELOP6 !== void 0 && (_window$app$__DEVELOP6 = _window$app$__DEVELOP6.oidc) !== null && _window$app$__DEVELOP6 !== void 0 && _window$app$__DEVELOP6.initialProjectKey) {
1195
+ var _window$app$__DEVELOP7;
1407
1196
  // Here we store the initial project key in local storage,
1408
1197
  // so that it gets picked up when we initiate the login flow.
1409
- applicationShellConnectors.oidcStorage.setActiveProjectKey(window.app.__DEVELOPMENT__?.oidc?.initialProjectKey);
1198
+ applicationShellConnectors.oidcStorage.setActiveProjectKey((_window$app$__DEVELOP7 = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP7 === void 0 || (_window$app$__DEVELOP7 = _window$app$__DEVELOP7.oidc) === null || _window$app$__DEVELOP7 === void 0 ? void 0 : _window$app$__DEVELOP7.initialProjectKey);
1410
1199
  }
1411
1200
  }
1412
1201
 
@@ -1421,11 +1210,11 @@ const hasCachedAuthenticationState = () => {
1421
1210
  }
1422
1211
  // Rebuild the requested OIDC scope to verify that it didn't change.
1423
1212
  const requestedScope = oidc.buildOidcScope({
1424
- projectKey: activeProjectKey ?? undefined,
1425
- oAuthScopes: window.app.__DEVELOPMENT__?.oidc?.oAuthScopes,
1426
- additionalOAuthScopes: window.app.__DEVELOPMENT__?.oidc?.additionalOAuthScopes,
1427
- teamId: window.app.__DEVELOPMENT__?.oidc?.teamId,
1428
- applicationId: window.app.__DEVELOPMENT__?.oidc?.applicationId
1213
+ projectKey: activeProjectKey !== null && activeProjectKey !== void 0 ? activeProjectKey : undefined,
1214
+ oAuthScopes: (_window$app$__DEVELOP8 = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP8 === void 0 || (_window$app$__DEVELOP8 = _window$app$__DEVELOP8.oidc) === null || _window$app$__DEVELOP8 === void 0 ? void 0 : _window$app$__DEVELOP8.oAuthScopes,
1215
+ additionalOAuthScopes: (_window$app$__DEVELOP9 = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP9 === void 0 || (_window$app$__DEVELOP9 = _window$app$__DEVELOP9.oidc) === null || _window$app$__DEVELOP9 === void 0 ? void 0 : _window$app$__DEVELOP9.additionalOAuthScopes,
1216
+ teamId: (_window$app$__DEVELOP0 = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP0 === void 0 || (_window$app$__DEVELOP0 = _window$app$__DEVELOP0.oidc) === null || _window$app$__DEVELOP0 === void 0 ? void 0 : _window$app$__DEVELOP0.teamId,
1217
+ applicationId: (_window$app$__DEVELOP1 = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP1 === void 0 || (_window$app$__DEVELOP1 = _window$app$__DEVELOP1.oidc) === null || _window$app$__DEVELOP1 === void 0 ? void 0 : _window$app$__DEVELOP1.applicationId
1429
1218
  });
1430
1219
  // Omit the project key from the check. This allows to switch projects
1431
1220
  // without having to log in again.
@@ -1443,11 +1232,12 @@ const hasCachedAuthenticationState = () => {
1443
1232
  return window.localStorage.getItem(constants.STORAGE_KEYS.IS_AUTHENTICATED) === 'true';
1444
1233
  };
1445
1234
 
1446
- const OidcCallback = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./oidc-callback-ad64d7f6.cjs.dev.js' /* webpackChunkName: "oidc-callback" */); }));
1235
+ const OidcCallback = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./oidc-callback-47743232.cjs.dev.js' /* webpackChunkName: "oidc-callback" */); }));
1447
1236
 
1448
1237
  function ownKeys$4(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1449
1238
  function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$4(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$4(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1450
1239
  const Authenticated = props => {
1240
+ var _window$app$__DEVELOP;
1451
1241
  // We attempt to see if the user was already authenticated by looking
1452
1242
  // at the "cached" flag in local storage.
1453
1243
  const cachedAuthenticationState = hasCachedAuthenticationState();
@@ -1461,7 +1251,7 @@ const Authenticated = props => {
1461
1251
 
1462
1252
  // When using the OIDC workflow, we always return false, to trigger
1463
1253
  // the redirect to the login page.
1464
- if (window.app.__DEVELOPMENT__?.oidc?.authorizeUrl) {
1254
+ if ((_window$app$__DEVELOP = window.app.__DEVELOPMENT__) !== null && _window$app$__DEVELOP !== void 0 && (_window$app$__DEVELOP = _window$app$__DEVELOP.oidc) !== null && _window$app$__DEVELOP !== void 0 && _window$app$__DEVELOP.authorizeUrl) {
1465
1255
  return jsxRuntime.jsx(jsxRuntime.Fragment, {
1466
1256
  children: props.render({
1467
1257
  isAuthenticated: false
@@ -1475,13 +1265,13 @@ const Authenticated = props => {
1475
1265
  Authenticated.displayName = 'Authenticated';
1476
1266
  const AuthenticationRoutes = props => jsxRuntime.jsxs(reactRouterDom.Switch, {
1477
1267
  children: [jsxRuntime.jsx(SuspendedRoute, {
1478
- path: `/account/oidc/callback`,
1268
+ path: "/account/oidc/callback",
1479
1269
  children: jsxRuntime.jsx(OidcCallback, {
1480
1270
  locale: props.locale,
1481
1271
  applicationMessages: props.applicationMessages
1482
1272
  })
1483
1273
  }), jsxRuntime.jsx(SuspendedRoute, {
1484
- path: `/:projectKey/:identifier/oidc/callback`,
1274
+ path: "/:projectKey/:identifier/oidc/callback",
1485
1275
  children: jsxRuntime.jsx(OidcCallback, {
1486
1276
  locale: props.locale,
1487
1277
  applicationMessages: props.applicationMessages
@@ -1492,6 +1282,63 @@ const AuthenticationRoutes = props => jsxRuntime.jsxs(reactRouterDom.Switch, {
1492
1282
  });
1493
1283
  AuthenticationRoutes.displayName = 'AuthenticationRoutes';
1494
1284
 
1285
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? _Reflect$construct__default["default"](o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
1286
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function () { return !!t; })(); }
1287
+ let ErrorBoundary = /*#__PURE__*/function (_Component) {
1288
+ function ErrorBoundary() {
1289
+ var _this;
1290
+ _classCallCheck(this, ErrorBoundary);
1291
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1292
+ args[_key] = arguments[_key];
1293
+ }
1294
+ _this = _callSuper(this, ErrorBoundary, [...args]);
1295
+ _this.state = {
1296
+ hasError: false
1297
+ };
1298
+ return _this;
1299
+ }
1300
+ _inherits(ErrorBoundary, _Component);
1301
+ return _createClass(ErrorBoundary, [{
1302
+ key: "componentDidUpdate",
1303
+ value: function componentDidUpdate(prevProps) {
1304
+ const hasRouteChanged = prevProps.pathname !== this.props.pathname;
1305
+ this.setState(prevState => hasRouteChanged && prevState.hasError ? {
1306
+ hasError: false
1307
+ } : null);
1308
+ }
1309
+ }, {
1310
+ key: "componentDidCatch",
1311
+ value: function componentDidCatch(error, errorInfo) {
1312
+ // Note: In development mode componentDidCatch is not based on try-catch
1313
+ // to catch exceptions. Thus exceptions caught here will also be caught in
1314
+ // the global `error` event listener (setup-global-error-listener.js).
1315
+ // see: https://github.com/facebook/react/issues/10474
1316
+ sentry.reportErrorToSentry(error, {
1317
+ extra: errorInfo
1318
+ });
1319
+ }
1320
+ }, {
1321
+ key: "render",
1322
+ value: function render() {
1323
+ if (this.state.hasError) {
1324
+ return jsxRuntime.jsx(ErrorApologizer, {});
1325
+ }
1326
+ return jsxRuntime.jsx(jsxRuntime.Fragment, {
1327
+ children: this.props.children
1328
+ });
1329
+ }
1330
+ }], [{
1331
+ key: "getDerivedStateFromError",
1332
+ value: function getDerivedStateFromError(/* error */
1333
+ ) {
1334
+ // Update state so the next render will show the fallback UI.
1335
+ return {
1336
+ hasError: true
1337
+ };
1338
+ }
1339
+ }]);
1340
+ }(react.Component);
1341
+
1495
1342
  function ownKeys$3(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1496
1343
  function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$3(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$3(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1497
1344
  /**
@@ -1537,7 +1384,10 @@ const useCoercedEnvironmentValues = environment => {
1537
1384
  };
1538
1385
 
1539
1386
  const ApplicationShellProvider = props => {
1540
- const apolloClient = react.useMemo(() => props.apolloClient ?? applicationShellConnectors.createApolloClient(), [props.apolloClient]);
1387
+ const apolloClient = react.useMemo(() => {
1388
+ var _props$apolloClient;
1389
+ return (_props$apolloClient = props.apolloClient) !== null && _props$apolloClient !== void 0 ? _props$apolloClient : applicationShellConnectors.createApolloClient();
1390
+ }, [props.apolloClient]);
1541
1391
  react.useEffect(() => {
1542
1392
  applicationShellConnectors.setCachedApolloClient(apolloClient);
1543
1393
  }, [apolloClient]);
@@ -1588,7 +1438,7 @@ const ApplicationShellProvider = props => {
1588
1438
  };
1589
1439
  ApplicationShellProvider.displayName = 'ApplicationShellProvider';
1590
1440
 
1591
- const RedirectToLogin = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-login-3bee13ba.cjs.dev.js' /* webpackChunkName: "redirect-to-login" */); }));
1441
+ const RedirectToLogin = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./redirect-to-login-66ea895a.cjs.dev.js' /* webpackChunkName: "redirect-to-login" */); }));
1592
1442
 
1593
1443
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
1594
1444
  const styles = process.env.NODE_ENV === "production" ? {
@@ -1616,7 +1466,8 @@ const StrictModeEnablement$1 = props => {
1616
1466
  };
1617
1467
  const ApplicationShell = props => {
1618
1468
  react.useEffect(() => {
1619
- props.onRegisterErrorListeners?.({
1469
+ var _props$onRegisterErro;
1470
+ (_props$onRegisterErro = props.onRegisterErrorListeners) === null || _props$onRegisterErro === void 0 || _props$onRegisterErro.call(props, {
1620
1471
  dispatch: index.internalReduxStore.dispatch
1621
1472
  });
1622
1473
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -1656,14 +1507,18 @@ const ApplicationShell = props => {
1656
1507
  ApplicationShell.displayName = 'ApplicationShell';
1657
1508
  ApplicationShell.version = version;
1658
1509
 
1659
- const CustomViewDevHost = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./custom-view-dev-host-b5e3a16a.cjs.dev.js' /* webpackChunkName: "custom-view-dev-host" */); }));
1510
+ const CustomViewDevHost = /*#__PURE__*/react.lazy(() => Promise.resolve().then(function () { return require('./custom-view-dev-host-17daf42a.cjs.dev.js' /* webpackChunkName: "custom-view-dev-host" */); }));
1660
1511
 
1661
1512
  function CustomViewFlopFlipProvider(props) {
1662
- const adapterArgs = react.useMemo(() => ({
1663
- user: {
1664
- key: props.user?.id
1665
- }
1666
- }), [props.user?.id]);
1513
+ var _props$user2;
1514
+ const adapterArgs = react.useMemo(() => {
1515
+ var _props$user;
1516
+ return {
1517
+ user: {
1518
+ key: (_props$user = props.user) === null || _props$user === void 0 ? void 0 : _props$user.id
1519
+ }
1520
+ };
1521
+ }, [(_props$user2 = props.user) === null || _props$user2 === void 0 ? void 0 : _props$user2.id]);
1667
1522
  return jsxRuntime.jsx(reactBroadcast.ConfigureFlopFlip, {
1668
1523
  adapter: memoryAdapter.adapter,
1669
1524
  defaultFlags: _flagsInstanceProperty__default["default"](props),
@@ -1699,7 +1554,7 @@ function CustomViewShellAuthenticated(props) {
1699
1554
  return jsxRuntime.jsx(ApplicationLoader, {});
1700
1555
  }
1701
1556
  return jsxRuntime.jsx(i18n.AsyncLocaleData, {
1702
- locale: user?.language || browserLocale,
1557
+ locale: (user === null || user === void 0 ? void 0 : user.language) || browserLocale,
1703
1558
  applicationMessages: props.messages,
1704
1559
  children: _ref2 => {
1705
1560
  let isLoadingLocaleData = _ref2.isLoading,
@@ -1762,15 +1617,15 @@ function CustomViewShellAuthenticated(props) {
1762
1617
  const customViewsThemesOverrides = {
1763
1618
  default: {
1764
1619
  marginForCustomViewsSelectorAsTabular: '0',
1765
- marginForPageContent: `${designSystem.designTokens.spacing50} 0`,
1766
- paddingForDetailPageHeader: `0 0 ${designSystem.designTokens.spacing40} 0`,
1620
+ marginForPageContent: "".concat(designSystem.designTokens.spacing50, " 0"),
1621
+ paddingForDetailPageHeader: "0 0 ".concat(designSystem.designTokens.spacing40, " 0"),
1767
1622
  paddingForMainPageHeader: '0',
1768
1623
  paddingForTabularPageHeader: '0'
1769
1624
  }
1770
1625
  };
1771
1626
 
1772
1627
  function ownKeys$1(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1773
- function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$1(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$1(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1628
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys$1(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys$1(Object(t))).call(_context4, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1774
1629
  const browserLocale = getBrowserLocale(window);
1775
1630
  function NotificationsContainer(props) {
1776
1631
  return jsxRuntime.jsxs(jsxRuntime.Fragment, {
@@ -1830,6 +1685,7 @@ function CustomViewThemeProvider() {
1830
1685
  */
1831
1686
  const isLocalProdMode = process.env.NODE_ENV === 'production' && window.app.env === 'development';
1832
1687
  function CustomViewShell(props) {
1688
+ var _window$app$__DEVELOP;
1833
1689
  const _useState = react.useState(),
1834
1690
  _useState2 = _slicedToArray(_useState, 2),
1835
1691
  hostContext = _useState2[0],
@@ -1845,20 +1701,21 @@ function CustomViewShell(props) {
1845
1701
  if (event.data.eventName === constants.CUSTOM_VIEWS_EVENTS_NAMES.CUSTOM_VIEW_INITIALIZATION) {
1846
1702
  setHostContext(event.data.eventData.context);
1847
1703
  } else {
1848
- console.warn(`CustomViewShell: Unknown received event with name: ${event.data.eventName}`, {
1704
+ console.warn("CustomViewShell: Unknown received event with name: ".concat(event.data.eventName), {
1849
1705
  event
1850
1706
  });
1851
1707
  }
1852
1708
  }, []);
1853
1709
  const handleClose = react.useCallback(() => {
1854
- iFrameCommunicationPort.current?.postMessage({
1710
+ var _iFrameCommunicationP, _context;
1711
+ (_iFrameCommunicationP = iFrameCommunicationPort.current) === null || _iFrameCommunicationP === void 0 || _iFrameCommunicationP.postMessage({
1855
1712
  origin: window.location.origin,
1856
- source: `${constants.CUSTOM_VIEWS_EVENTS_META.CUSTOM_VIEW_KEY_PREFIX}${hostContext?.customViewConfig.id}`,
1713
+ source: _concatInstanceProperty__default["default"](_context = "".concat(constants.CUSTOM_VIEWS_EVENTS_META.CUSTOM_VIEW_KEY_PREFIX)).call(_context, hostContext === null || hostContext === void 0 ? void 0 : hostContext.customViewConfig.id),
1857
1714
  destination: constants.CUSTOM_VIEWS_EVENTS_META.HOST_APPLICATION_CODE,
1858
1715
  eventName: constants.CUSTOM_VIEWS_EVENTS_NAMES.CUSTOM_VIEW_CLOSE,
1859
1716
  eventData: {}
1860
1717
  });
1861
- }, [hostContext?.customViewConfig.id]);
1718
+ }, [hostContext === null || hostContext === void 0 ? void 0 : hostContext.customViewConfig.id]);
1862
1719
  react.useEffect(() => {
1863
1720
  const bootstrapMessageHandler = event => {
1864
1721
  if ((event.origin === window.location.origin ||
@@ -1890,7 +1747,8 @@ function CustomViewShell(props) {
1890
1747
  react.useEffect(() => {
1891
1748
  // Close the channel when the component unmounts
1892
1749
  return () => {
1893
- iFrameCommunicationPort.current?.close();
1750
+ var _iFrameCommunicationP2;
1751
+ (_iFrameCommunicationP2 = iFrameCommunicationPort.current) === null || _iFrameCommunicationP2 === void 0 || _iFrameCommunicationP2.close();
1894
1752
  iFrameCommunicationPort.current = undefined;
1895
1753
  };
1896
1754
  }, []);
@@ -1899,7 +1757,7 @@ function CustomViewShell(props) {
1899
1757
  showLogo: true
1900
1758
  });
1901
1759
  }
1902
- const hostUrl = process.env.NODE_ENV === 'development' || isLocalProdMode ? window.app.__DEVELOPMENT__?.customViewHostUrl : hostContext.hostUrl;
1760
+ const hostUrl = process.env.NODE_ENV === 'development' || isLocalProdMode ? (_window$app$__DEVELOP = window.app.__DEVELOPMENT__) === null || _window$app$__DEVELOP === void 0 ? void 0 : _window$app$__DEVELOP.customViewHostUrl : hostContext.hostUrl;
1903
1761
  return jsxRuntime.jsxs(jsxRuntime.Fragment, {
1904
1762
  children: [jsxRuntime.jsx(GlobalStyles, {}), jsxRuntime.jsx(ApplicationShellProvider, {
1905
1763
  environment: window.app,
@@ -1908,6 +1766,7 @@ function CustomViewShell(props) {
1908
1766
  children: _ref => {
1909
1767
  let isAuthenticated = _ref.isAuthenticated;
1910
1768
  if (isAuthenticated) {
1769
+ var _context2;
1911
1770
  return jsxRuntime.jsx(applicationShellConnectors.CustomViewContextProvider, {
1912
1771
  hostUrl: hostUrl,
1913
1772
  customViewConfig: hostContext.customViewConfig,
@@ -1926,7 +1785,7 @@ function CustomViewShell(props) {
1926
1785
  notificationsGlobalRef: notificationsGlobalRef,
1927
1786
  notificationsPageRef: notificationsPageRef
1928
1787
  }), jsxRuntime.jsxs(reactRouterDom.Route, {
1929
- path: `/custom-views/${hostContext.customViewConfig.id}/projects/${hostContext.projectKey}`,
1788
+ path: _concatInstanceProperty__default["default"](_context2 = "/custom-views/".concat(hostContext.customViewConfig.id, "/projects/")).call(_context2, hostContext.projectKey),
1930
1789
  children: [jsxRuntime.jsx(applicationComponents.ModalPageTopBar, {
1931
1790
  onClose: handleClose,
1932
1791
  hidePathLabel: true
@@ -2065,7 +1924,7 @@ function setupGlobalErrorListener() {
2065
1924
  }
2066
1925
 
2067
1926
  function ownKeys(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
2068
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1927
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
2069
1928
 
2070
1929
  /**
2071
1930
  * The route path to match. Usually it starts with `/:projectKey/my-entry-point`.
@@ -2075,7 +1934,8 @@ const makeRoute = (routePath, routeOptions) => {
2075
1934
  const getUrl = (nextParams, nextQueryParams) => {
2076
1935
  const baseUrl = reactRouterDom.generatePath(routePath, _objectSpread(_objectSpread({}, routeOptions.params), nextParams));
2077
1936
  if (nextQueryParams) {
2078
- return `${baseUrl}?${nextQueryParams.toString()}`;
1937
+ var _context;
1938
+ return _concatInstanceProperty__default["default"](_context = "".concat(baseUrl, "?")).call(_context, nextQueryParams.toString());
2079
1939
  }
2080
1940
  return baseUrl;
2081
1941
  };
@@ -2108,7 +1968,6 @@ exports.ApplicationLoader = ApplicationLoader;
2108
1968
  exports.ApplicationPageTitle = ApplicationPageTitle;
2109
1969
  exports.ApplicationShell = ApplicationShell;
2110
1970
  exports.ApplicationShellProvider = ApplicationShellProvider;
2111
- exports.ButlerContainer = ButlerContainer;
2112
1971
  exports.ConfigureIntlProvider = ConfigureIntlProvider;
2113
1972
  exports.CustomViewShellWrapper = CustomViewShellWrapper;
2114
1973
  exports.ErrorApologizer = ErrorApologizer;
@@ -2116,7 +1975,6 @@ exports.ErrorBoundary = ErrorBoundary;
2116
1975
  exports.FetchProject = FetchProject;
2117
1976
  exports.FetchUser = FetchUser;
2118
1977
  exports.InjectReducers = InjectReducers;
2119
- exports.ProjectDataLocale = ProjectDataLocale;
2120
1978
  exports.ProjectSwitcher = ProjectSwitcher;
2121
1979
  exports.ProtectedRoute = ProtectedRoute;
2122
1980
  exports.REQUESTS_IN_FLIGHT_LOADER_DOM_ID = REQUESTS_IN_FLIGHT_LOADER_DOM_ID;
@@ -2128,7 +1986,6 @@ exports.SuspendedProtectedRoute = SuspendedProtectedRoute;
2128
1986
  exports.SuspendedRoute = SuspendedRoute;
2129
1987
  exports.getBrowserLocale = getBrowserLocale;
2130
1988
  exports.getPreviousProjectKey = getPreviousProjectKey;
2131
- exports.pimIndexerStates = pimIndexerStates;
2132
1989
  exports.setupGlobalErrorListener = setupGlobalErrorListener;
2133
1990
  exports.useRoutesCreator = useRoutesCreator;
2134
1991
  exports.version = version;