@envive-ai/react-hooks 0.3.38 → 0.3.40

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 (119) hide show
  1. package/dist/application/commerce-api.cjs +3 -2
  2. package/dist/application/commerce-api.js +3 -2
  3. package/dist/application/models/api/orgConfigResults.d.cts +13 -2
  4. package/dist/application/models/api/orgConfigResults.d.ts +13 -2
  5. package/dist/application/models/featureGates.cjs +2 -1
  6. package/dist/application/models/featureGates.d.cts +2 -1
  7. package/dist/application/models/featureGates.d.ts +2 -1
  8. package/dist/application/models/featureGates.js +2 -1
  9. package/dist/application/models/graphql/queries/getWidgetConfigQuery.cjs +23 -0
  10. package/dist/application/models/graphql/queries/getWidgetConfigQuery.js +22 -0
  11. package/dist/application/models/index.d.cts +2 -2
  12. package/dist/application/models/index.d.ts +2 -2
  13. package/dist/application/utils/index.cjs +0 -2
  14. package/dist/application/utils/index.d.cts +1 -2
  15. package/dist/application/utils/index.d.ts +1 -2
  16. package/dist/application/utils/index.js +1 -2
  17. package/dist/atoms/app/index.d.cts +7 -7
  18. package/dist/atoms/app/index.d.ts +6 -6
  19. package/dist/atoms/chat/chatState.d.cts +18 -18
  20. package/dist/atoms/chat/chatState.d.ts +19 -19
  21. package/dist/atoms/chat/form.d.cts +2 -2
  22. package/dist/atoms/chat/form.d.ts +2 -2
  23. package/dist/atoms/chat/index.d.cts +2 -2
  24. package/dist/atoms/chat/index.d.ts +3 -3
  25. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  26. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  27. package/dist/atoms/chat/messageQueue.d.cts +6 -6
  28. package/dist/atoms/chat/messageQueue.d.ts +6 -6
  29. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  30. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  31. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  32. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  33. package/dist/atoms/chat/replies.d.cts +2 -2
  34. package/dist/atoms/chat/replies.d.ts +2 -2
  35. package/dist/atoms/chat/suggestions.d.cts +2 -2
  36. package/dist/atoms/chat/suggestions.d.ts +2 -2
  37. package/dist/atoms/envive/enviveConfig.d.ts +13 -13
  38. package/dist/atoms/envive/resolvedBaseConfigVersion.cjs +9 -0
  39. package/dist/atoms/envive/resolvedBaseConfigVersion.js +8 -0
  40. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  41. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  42. package/dist/atoms/org/customerService.d.cts +6 -6
  43. package/dist/atoms/org/customerService.d.ts +6 -6
  44. package/dist/atoms/org/graphqlConfig.d.cts +4 -4
  45. package/dist/atoms/org/graphqlConfig.d.ts +4 -4
  46. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  47. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  48. package/dist/atoms/org/orgAnalyticsConfig.d.cts +4 -4
  49. package/dist/atoms/org/orgAnalyticsConfig.d.ts +4 -4
  50. package/dist/atoms/search/chatSearch.d.cts +17 -17
  51. package/dist/atoms/search/chatSearch.d.ts +17 -17
  52. package/dist/atoms/search/searchAPI.d.cts +13 -13
  53. package/dist/atoms/search/searchAPI.d.ts +13 -13
  54. package/dist/atoms/search/types.d.ts +1 -1
  55. package/dist/atoms/search/utils.d.ts +1 -1
  56. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  57. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  58. package/dist/contexts/enviveContext/enviveContext.cjs +11 -3
  59. package/dist/contexts/enviveContext/enviveContext.js +11 -3
  60. package/dist/contexts/graphqlContext/graphqlContext.cjs +1 -1
  61. package/dist/contexts/graphqlContext/graphqlContext.d.cts +3 -1
  62. package/dist/contexts/graphqlContext/graphqlContext.d.ts +3 -1
  63. package/dist/contexts/graphqlContext/graphqlContext.js +1 -1
  64. package/dist/contexts/salesAgentContext/salesAgentService.cjs +9 -3
  65. package/dist/contexts/salesAgentContext/salesAgentService.js +9 -3
  66. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  67. package/dist/contexts/types.d.cts +1 -1
  68. package/dist/contexts/types.d.ts +1 -1
  69. package/dist/contexts/typesV3.d.cts +1 -1
  70. package/dist/contexts/typesV3.d.ts +1 -1
  71. package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.cts +2 -2
  72. package/dist/hooks/utils.d.cts +1 -1
  73. package/dist/hooks/utils.d.ts +1 -1
  74. package/dist/services/amplitudeService/amplitudeService.cjs +17 -2
  75. package/dist/services/amplitudeService/amplitudeService.d.cts +3 -1
  76. package/dist/services/amplitudeService/amplitudeService.d.ts +3 -1
  77. package/dist/services/amplitudeService/amplitudeService.js +17 -2
  78. package/dist/services/enviveConfigService/enviveConfigService.cjs +9 -3
  79. package/dist/services/enviveConfigService/enviveConfigService.d.cts +3 -2
  80. package/dist/services/enviveConfigService/enviveConfigService.d.ts +3 -2
  81. package/dist/services/enviveConfigService/enviveConfigService.js +10 -4
  82. package/dist/services/enviveConfigService/fetchGraphQLConfig.cjs +78 -39
  83. package/dist/services/enviveConfigService/fetchGraphQLConfig.js +78 -40
  84. package/dist/services/ga4ProjectionService/ga4ProjectionService.cjs +3 -3
  85. package/dist/services/ga4ProjectionService/ga4ProjectionService.js +3 -3
  86. package/dist/services/hardcopyService/hardcopyService.cjs +4 -2
  87. package/dist/services/hardcopyService/hardcopyService.js +4 -2
  88. package/dist/types/config-versions.cjs +3 -1
  89. package/dist/types/config-versions.js +3 -2
  90. package/dist/types/customerService.cjs +2 -1
  91. package/dist/types/customerService.d.cts +2 -1
  92. package/dist/types/customerService.d.ts +2 -1
  93. package/dist/types/customerService.js +2 -1
  94. package/package.json +1 -1
  95. package/src/application/commerce-api.ts +5 -1
  96. package/src/application/models/api/orgConfigResults.ts +27 -0
  97. package/src/application/models/featureGates.ts +5 -0
  98. package/src/application/models/graphql/queries/getWidgetConfigQuery.ts +34 -0
  99. package/src/application/utils/__tests__/elementObserver.test.ts +200 -0
  100. package/src/application/utils/index.ts +0 -1
  101. package/src/atoms/envive/resolvedBaseConfigVersion.ts +11 -0
  102. package/src/contexts/enviveContext/enviveContext.tsx +20 -0
  103. package/src/contexts/graphqlContext/graphqlContext.tsx +5 -0
  104. package/src/contexts/salesAgentContext/salesAgentService.ts +4 -1
  105. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +95 -0
  106. package/src/services/amplitudeService/amplitudeService.ts +31 -1
  107. package/src/services/enviveConfigService/__tests__/fetchGraphQLConfig.test.ts +107 -1
  108. package/src/services/enviveConfigService/enviveConfigService.ts +35 -7
  109. package/src/services/enviveConfigService/fetchGraphQLConfig.ts +119 -57
  110. package/src/services/ga4ProjectionService/ga4ProjectionService.ts +2 -2
  111. package/src/services/hardcopyService/__tests__/hardcopyService.test.ts +35 -1
  112. package/src/services/hardcopyService/hardcopyService.ts +6 -1
  113. package/src/types/config-versions.ts +8 -0
  114. package/src/types/customerService.ts +1 -0
  115. package/dist/application/utils/merchantUtils.cjs +0 -18
  116. package/dist/application/utils/merchantUtils.d.cts +0 -5
  117. package/dist/application/utils/merchantUtils.d.ts +0 -5
  118. package/dist/application/utils/merchantUtils.js +0 -17
  119. package/src/application/utils/merchantUtils.ts +0 -16
@@ -1,10 +1,12 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_logger = require('../../application/logging/logger.cjs');
3
+ const require_config_versions = require('../../types/config-versions.cjs');
3
4
  const require_snakeToCamelTransformer = require('../../application/models/utils/snakeToCamelTransformer.cjs');
4
5
  const require_contexts_types = require('../../contexts/types.cjs');
5
6
  const require_validateGraphQLFrontendConfig = require('../../application/models/validators/validateGraphQLFrontendConfig.cjs');
6
7
  require('../../application/models/index.cjs');
7
8
  const require_getColorsAndFrontendQuery = require('../../application/models/graphql/queries/getColorsAndFrontendQuery.cjs');
9
+ const require_getWidgetConfigQuery = require('../../application/models/graphql/queries/getWidgetConfigQuery.cjs');
8
10
  const require_mockV3Config = require('../../contexts/graphqlContext/mockV3Config.cjs');
9
11
  let __envive_ai_react_toolkit_v3_FloatingButton = require("@envive-ai/react-toolkit-v3/FloatingButton");
10
12
 
@@ -112,6 +114,47 @@ const v3FrontendConfigCleanup = (v3RootConfig) => {
112
114
  }
113
115
  };
114
116
  };
117
+ const transformV3ProductsConfig = (productsConfig) => {
118
+ const v3RootConfig = productsConfig?.v_three_config?.values;
119
+ const frontendValues = productsConfig?.frontend?.values;
120
+ if (!v3RootConfig?.colors) {
121
+ logger.logDebug("transformV3ProductsConfig | No colors found, returning mock config");
122
+ return {
123
+ colorsConfig: require_mockV3Config.mockV3ColorsConfig,
124
+ frontendConfig: require_mockV3Config.mockV3FrontendConfig,
125
+ orgPageConfig: {
126
+ pageVariants: DEFAULT_PAGE_VARIANTS,
127
+ widgetConfigs: {},
128
+ mountingConfigs: {}
129
+ }
130
+ };
131
+ }
132
+ const v3FrontendConfig = v3FrontendConfigCleanup(require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig));
133
+ const merchantOverrideCss = v3FrontendConfig.uiConfigs?.merchantOverrideCss || frontendValues?.merchant_override_css;
134
+ const v3MountingConfigs = (require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig?.mounting_configs) ?? []).reduce((acc, { key, config }) => {
135
+ acc[key] = require_validateGraphQLFrontendConfig.validateAndTransformMountingConfig(config, key);
136
+ return acc;
137
+ }, {});
138
+ const v3WidgetConfigsArray = require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig?.widget_configs) ?? [];
139
+ const v3WidgetConfigs = Object.fromEntries(v3WidgetConfigsArray?.map(({ widgetConfigId, ...rest }) => [widgetConfigId, {
140
+ widgetConfigId,
141
+ ...rest
142
+ }]));
143
+ const v3pageVariants = Array.isArray(v3RootConfig?.page_variants) ? v3RootConfig.page_variants.map(require_validateGraphQLFrontendConfig.validateAndTransformPageVariants) : DEFAULT_PAGE_VARIANTS;
144
+ return {
145
+ colorsConfig: require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig?.colors?.values),
146
+ frontendConfig: {
147
+ ...v3FrontendConfig,
148
+ merchantOverrideCss,
149
+ widgetConfigs: v3WidgetConfigs
150
+ },
151
+ orgPageConfig: {
152
+ pageVariants: v3pageVariants,
153
+ widgetConfigs: v3WidgetConfigs,
154
+ mountingConfigs: v3MountingConfigs
155
+ }
156
+ };
157
+ };
115
158
  const fetchGraphQLConfig = async (baseUrl, apiKey) => {
116
159
  try {
117
160
  const query = require_getColorsAndFrontendQuery.getColorsAndFrontendQuery();
@@ -126,49 +169,44 @@ const fetchGraphQLConfig = async (baseUrl, apiKey) => {
126
169
  if (!response.ok) throw new Error(`GraphQL request failed: ${response.statusText}`);
127
170
  const result = await response.json();
128
171
  if (result.errors) throw new Error(`GraphQL errors: ${JSON.stringify(result.errors)}`);
129
- const v3RootConfig = result.data.me.getProductsConfigByVersion?.v_three_config?.values;
130
- const frontendValues = result.data.me.getProductsConfigByVersion?.frontend?.values;
131
- if (!v3RootConfig?.colors) {
132
- logger.logDebug("fetchGraphQLConfig | No colors found, returning mock config");
133
- return {
134
- colorsConfig: require_mockV3Config.mockV3ColorsConfig,
135
- frontendConfig: require_mockV3Config.mockV3FrontendConfig,
136
- orgPageConfig: {
137
- pageVariants: DEFAULT_PAGE_VARIANTS,
138
- widgetConfigs: {},
139
- mountingConfigs: {}
140
- }
141
- };
142
- }
143
- const v3FrontendConfig = v3FrontendConfigCleanup(require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig));
144
- const merchantOverrideCss = v3FrontendConfig.uiConfigs?.merchantOverrideCss || frontendValues?.merchant_override_css;
145
- const v3MountingConfigs = (require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig?.mounting_configs) ?? []).reduce((acc, { key, config }) => {
146
- acc[key] = require_validateGraphQLFrontendConfig.validateAndTransformMountingConfig(config, key);
147
- return acc;
148
- }, {});
149
- const v3widgetConfigsArray = require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig?.widget_configs) ?? [];
150
- const v3WidgetConfigs = Object.fromEntries(v3widgetConfigsArray?.map(({ widgetConfigId, ...rest }) => [widgetConfigId, {
151
- widgetConfigId,
152
- ...rest
153
- }]));
154
- const v3pageVariants = Array.isArray(v3RootConfig?.page_variants) ? v3RootConfig.page_variants.map(require_validateGraphQLFrontendConfig.validateAndTransformPageVariants) : DEFAULT_PAGE_VARIANTS;
155
- const v3ColorsConfig = require_snakeToCamelTransformer.transformSnakeToCamel(v3RootConfig?.colors?.values);
156
172
  logger.logDebug("fetchGraphQLConfig | Returning v3 config");
173
+ return transformV3ProductsConfig(result.data.me.getProductsConfigByVersion);
174
+ } catch (err) {
175
+ logger.logError("fetchGraphQLConfig | Error fetching GraphQL config", err);
157
176
  return {
158
- colorsConfig: v3ColorsConfig,
159
- frontendConfig: {
160
- ...v3FrontendConfig,
161
- merchantOverrideCss,
162
- widgetConfigs: v3WidgetConfigs
177
+ colorsConfig: void 0,
178
+ frontendConfig: void 0
179
+ };
180
+ }
181
+ };
182
+ const fetchUnifiedGraphQLConfig = async (baseUrl, apiKey, userId) => {
183
+ try {
184
+ const query = require_getWidgetConfigQuery.getWidgetConfigQuery();
185
+ const version = require_config_versions.configVersionOverride();
186
+ const response = await fetch(`${baseUrl}/v1/graphql`, {
187
+ method: "POST",
188
+ headers: {
189
+ "Content-Type": "application/json",
190
+ Authorization: `Bearer ${apiKey}`
163
191
  },
164
- orgPageConfig: {
165
- pageVariants: v3pageVariants,
166
- widgetConfigs: v3WidgetConfigs,
167
- mountingConfigs: v3MountingConfigs
168
- }
192
+ body: JSON.stringify({
193
+ query,
194
+ variables: {
195
+ userId,
196
+ version
197
+ }
198
+ })
199
+ });
200
+ if (!response.ok) throw new Error(`GraphQL request failed: ${response.statusText}`);
201
+ const result = await response.json();
202
+ if (result.errors) throw new Error(`GraphQL errors: ${JSON.stringify(result.errors)}`);
203
+ const widgetConfig = result.data.me.getWidgetConfig;
204
+ return {
205
+ ...transformV3ProductsConfig(widgetConfig?.productsConfig),
206
+ resolution: widgetConfig?.resolution
169
207
  };
170
208
  } catch (err) {
171
- logger.logError("fetchGraphQLConfig | Error fetching GraphQL config", err);
209
+ logger.logError("fetchUnifiedGraphQLConfig | Error fetching unified GraphQL config", err);
172
210
  return {
173
211
  colorsConfig: void 0,
174
212
  frontendConfig: void 0
@@ -178,4 +216,5 @@ const fetchGraphQLConfig = async (baseUrl, apiKey) => {
178
216
 
179
217
  //#endregion
180
218
  exports.fetchGraphQLConfig = fetchGraphQLConfig;
181
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2hHcmFwaFFMQ29uZmlnLmNqcyIsIm5hbWVzIjpbIkxvZ2dlciIsIkRFRkFVTFRfUEFHRV9WQVJJQU5UUzogUGFnZVZhcmlhbnRDb25maWdbXSIsIlBhZ2VWYXJpYW50VGVzdFR5cGUiLCJGbG9hdGluZ0J1dHRvbkxvY2F0aW9uIiwiZ2V0Q29sb3JzQW5kRnJvbnRlbmRRdWVyeSIsIm1vY2tWM0NvbG9yc0NvbmZpZyIsIm1vY2tWM0Zyb250ZW5kQ29uZmlnIiwidHJhbnNmb3JtU25ha2VUb0NhbWVsIiwidmFsaWRhdGVBbmRUcmFuc2Zvcm1Nb3VudGluZ0NvbmZpZyIsInYzcGFnZVZhcmlhbnRzOiBQYWdlVmFyaWFudENvbmZpZ1tdIiwidmFsaWRhdGVBbmRUcmFuc2Zvcm1QYWdlVmFyaWFudHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZS9mZXRjaEdyYXBoUUxDb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtcbiAgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwLFxuICB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWcsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzLFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEZyb250ZW5kQ29uZmlnVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2Zyb250ZW5kQ29uZmlnVjMnO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1YzJztcbmltcG9ydCB7IEZsb2F0aW5nQnV0dG9uTG9jYXRpb24gfSBmcm9tICdAZW52aXZlLWFpL3JlYWN0LXRvb2xraXQtdjMvRmxvYXRpbmdCdXR0b24nO1xuaW1wb3J0IHsgZ2V0Q29sb3JzQW5kRnJvbnRlbmRRdWVyeSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldENvbG9yc0FuZEZyb250ZW5kUXVlcnknO1xuaW1wb3J0IHsgbW9ja1YzQ29sb3JzQ29uZmlnLCBtb2NrVjNGcm9udGVuZENvbmZpZyB9IGZyb20gJ3NyYy9jb250ZXh0cy9ncmFwaHFsQ29udGV4dC9tb2NrVjNDb25maWcnO1xuaW1wb3J0IHsgV2lkZ2V0Q29uZmlnVjMgfSBmcm9tICdzcmMvY29udGV4dHMvdHlwZXNWMyc7XG5pbXBvcnQgeyBQYWdlVmFyaWFudENvbmZpZywgUGFnZVZhcmlhbnRUZXN0VHlwZSwgV2lkZ2V0TW91bnRpbmdDb25maWcgfSBmcm9tICdzcmMvY29udGV4dHMvdHlwZXMnO1xuaW1wb3J0IHsgR3JhcGhRbENvbmZpZ1ZhbHVlcyB9IGZyb20gJ3NyYy9jb250ZXh0cy9ncmFwaHFsQ29udGV4dCc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ2ZldGNoR3JhcGhRTENvbmZpZycpO1xuXG50eXBlIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZ1YzPjtcbnR5cGUgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxDb2xvck1hcHBpbmdWMz47XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBR0VfVkFSSUFOVFM6IFBhZ2VWYXJpYW50Q29uZmlnW10gPSBbXG4gIHtcbiAgICB2YXJpYW50SWQ6ICdwbHAnLFxuICAgIHZhcmlhbnRUeXBlOiAncGxwJyxcbiAgICBwbHBJZEV4dHJhY3RvcjogJ3VybC1yZXNvbHZlci1wbHAtaWQnLFxuICAgIHdpZGdldE1vdW50aW5nOiBbXSxcbiAgICB2YXJpYW50VGVzdHM6IFt7IHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLlVybFJlc29sdmVyIH1dLFxuICB9LFxuICB7XG4gICAgdmFyaWFudElkOiAncGRwJyxcbiAgICB2YXJpYW50VHlwZTogJ3BkcCcsXG4gICAgcHJvZHVjdElkRXh0cmFjdG9yOiAndXJsLXJlc29sdmVyLXByb2R1Y3QtaWQnLFxuICAgIHdpZGdldE1vdW50aW5nOiBbXSxcbiAgICB2YXJpYW50VGVzdHM6IFt7IHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLlVybFJlc29sdmVyIH1dLFxuICB9LFxuXTtcblxuY29uc3QgbWFwUG9zaXRpb25Ub0NhbWVsQ2FzZSA9IChwb3NpdGlvbjogc3RyaW5nKTogRmxvYXRpbmdCdXR0b25Mb2NhdGlvbiA9PiB7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbS1sZWZ0JykgcmV0dXJuIEZsb2F0aW5nQnV0dG9uTG9jYXRpb24uQk9UVE9NX0xFRlQ7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ21pZGRsZS1sZWZ0JykgcmV0dXJuIEZsb2F0aW5nQnV0dG9uTG9jYXRpb24uTUlERExFX0xFRlQ7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ21pZGRsZS1yaWdodCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLk1JRERMRV9SSUdIVDtcbiAgaWYgKHBvc2l0aW9uID09PSAnYm90dG9tLXJpZ2h0JykgcmV0dXJuIEZsb2F0aW5nQnV0dG9uTG9jYXRpb24uQk9UVE9NX1JJR0hUO1xuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcG9zaXRpb246ICR7cG9zaXRpb259YCk7XG59O1xuXG5jb25zdCB2M0Zyb250ZW5kQ29uZmlnQ2xlYW51cCA9IChcbiAgdjNSb290Q29uZmlnOiBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UsXG4pOiBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UgPT4ge1xuICBjb25zdCB7IHVpQ29uZmlncyB9ID0gdjNSb290Q29uZmlnO1xuICBpZiAoIXVpQ29uZmlncykgcmV0dXJuIHYzUm9vdENvbmZpZztcbiAgY29uc3QgeyBmbG9hdGluZ0J1dHRvbiwgbG9va0FuZEZlZWwgfSA9IHVpQ29uZmlncyBhcyBhbnk7XG4gIGlmICghZmxvYXRpbmdCdXR0b24gfHwgIWxvb2tBbmRGZWVsKSByZXR1cm4gdjNSb290Q29uZmlnO1xuICBjb25zdCB7IGZvbnRTaXplLCBsaW5lSGVpZ2h0LCBsZXR0ZXJTcGFjaW5nIH0gPSBsb29rQW5kRmVlbC50eXBvZ3JhcGh5IGFzIGFueTtcbiAgcmV0dXJuIHtcbiAgICAuLi52M1Jvb3RDb25maWcsXG4gICAgdWlDb25maWdzOiB7XG4gICAgICAuLi51aUNvbmZpZ3MsXG4gICAgICBmbG9hdGluZ0J1dHRvbjoge1xuICAgICAgICAuLi5mbG9hdGluZ0J1dHRvbixcbiAgICAgICAgcG9zaXRpb246IG1hcFBvc2l0aW9uVG9DYW1lbENhc2UoXG4gICAgICAgICAgdjNSb290Q29uZmlnLnVpQ29uZmlncz8uZmxvYXRpbmdCdXR0b24/LnBvc2l0aW9uIGFzIHN0cmluZyxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBsb29rQW5kRmVlbDoge1xuICAgICAgICAuLi5sb29rQW5kRmVlbCxcbiAgICAgICAgY2hhdEhlYWRlckxvZ29EYXJrU3JjOiBsb29rQW5kRmVlbC5jaGF0SGVhZGVyTG9nb0RhcmtTcmMgfHwgbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29TcmMsXG4gICAgICAgIGNoYXRIZWFkZXJMb2dvTGlnaHRTcmM6IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvTGlnaHRTcmMgfHwgbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29TcmMsXG4gICAgICAgIHR5cG9ncmFwaHk6IHtcbiAgICAgICAgICAuLi5sb29rQW5kRmVlbC50eXBvZ3JhcGh5LFxuICAgICAgICAgIGZvbnRTaXplOiB7XG4gICAgICAgICAgICBiMTogZm9udFNpemU/LmIxIHx8IGZvbnRTaXplPy5iXzEsXG4gICAgICAgICAgICBiMjogZm9udFNpemU/LmIyIHx8IGZvbnRTaXplPy5iXzIsXG4gICAgICAgICAgICBiMzogZm9udFNpemU/LmIzIHx8IGZvbnRTaXplPy5iXzMsXG4gICAgICAgICAgICBiNDogZm9udFNpemU/LmI0IHx8IGZvbnRTaXplPy5iXzQsXG4gICAgICAgICAgICBiNTogZm9udFNpemU/LmI1IHx8IGZvbnRTaXplPy5iXzUsXG4gICAgICAgICAgICBoMTogZm9udFNpemU/LmgxIHx8IGZvbnRTaXplPy5oXzEsXG4gICAgICAgICAgICBoMjogZm9udFNpemU/LmgyIHx8IGZvbnRTaXplPy5oXzIsXG4gICAgICAgICAgICBoMzogZm9udFNpemU/LmgzIHx8IGZvbnRTaXplPy5oXzMsXG4gICAgICAgICAgICBsMTogZm9udFNpemU/LmwxIHx8IGZvbnRTaXplPy5sXzEsXG4gICAgICAgICAgICBsMjogZm9udFNpemU/LmwyIHx8IGZvbnRTaXplPy5sXzIsXG4gICAgICAgICAgICB0MTogZm9udFNpemU/LnQxIHx8IGZvbnRTaXplPy50XzEsXG4gICAgICAgICAgICB0MjogZm9udFNpemU/LnQyIHx8IGZvbnRTaXplPy50XzIsXG4gICAgICAgICAgICB0MzogZm9udFNpemU/LnQzIHx8IGZvbnRTaXplPy50XzMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiB7XG4gICAgICAgICAgICAuLi5sb29rQW5kRmVlbC50eXBvZ3JhcGh5LmxldHRlclNwYWNpbmcsXG4gICAgICAgICAgICBiMTogbGV0dGVyU3BhY2luZz8uYjEgfHwgbGV0dGVyU3BhY2luZz8uYl8xLFxuICAgICAgICAgICAgYjI6IGxldHRlclNwYWNpbmc/LmIyIHx8IGxldHRlclNwYWNpbmc/LmJfMixcbiAgICAgICAgICAgIGIzOiBsZXR0ZXJTcGFjaW5nPy5iMyB8fCBsZXR0ZXJTcGFjaW5nPy5iXzMsXG4gICAgICAgICAgICBiNDogbGV0dGVyU3BhY2luZz8uYjQgfHwgbGV0dGVyU3BhY2luZz8uYl80LFxuICAgICAgICAgICAgYjU6IGxldHRlclNwYWNpbmc/LmI1IHx8IGxldHRlclNwYWNpbmc/LmJfNSxcbiAgICAgICAgICAgIGgxOiBsZXR0ZXJTcGFjaW5nPy5oMSB8fCBsZXR0ZXJTcGFjaW5nPy5oXzEsXG4gICAgICAgICAgICBoMjogbGV0dGVyU3BhY2luZz8uaDIgfHwgbGV0dGVyU3BhY2luZz8uaF8yLFxuICAgICAgICAgICAgaDM6IGxldHRlclNwYWNpbmc/LmgzIHx8IGxldHRlclNwYWNpbmc/LmhfMyxcbiAgICAgICAgICAgIGwxOiBsZXR0ZXJTcGFjaW5nPy5sMSB8fCBsZXR0ZXJTcGFjaW5nPy5sXzEsXG4gICAgICAgICAgICBsMjogbGV0dGVyU3BhY2luZz8ubDIgfHwgbGV0dGVyU3BhY2luZz8ubF8yLFxuICAgICAgICAgICAgdDE6IGxldHRlclNwYWNpbmc/LnQxIHx8IGxldHRlclNwYWNpbmc/LnRfMSxcbiAgICAgICAgICAgIHQyOiBsZXR0ZXJTcGFjaW5nPy50MiB8fCBsZXR0ZXJTcGFjaW5nPy50XzIsXG4gICAgICAgICAgICB0MzogbGV0dGVyU3BhY2luZz8udDMgfHwgbGV0dGVyU3BhY2luZz8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGluZUhlaWdodDoge1xuICAgICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeS5saW5lSGVpZ2h0LFxuICAgICAgICAgICAgJzExNCc6IGxpbmVIZWlnaHQ/LmxoXzExNCB8fCBsaW5lSGVpZ2h0Py5bMTE0XSxcbiAgICAgICAgICAgICcxMTYnOiBsaW5lSGVpZ2h0Py5saF8xMTYgfHwgbGluZUhlaWdodD8uWzExNl0sXG4gICAgICAgICAgICAnMTE4JzogbGluZUhlaWdodD8ubGhfMTE4IHx8IGxpbmVIZWlnaHQ/LlsxMThdLFxuICAgICAgICAgICAgJzEyMCc6IGxpbmVIZWlnaHQ/LmxoXzEyMCB8fCBsaW5lSGVpZ2h0Py5bMTIwXSxcbiAgICAgICAgICAgICcxMjQnOiBsaW5lSGVpZ2h0Py5saF8xMjQgfHwgbGluZUhlaWdodD8uWzEyNF0sXG4gICAgICAgICAgICAnMTI4JzogbGluZUhlaWdodD8ubGhfMTI4IHx8IGxpbmVIZWlnaHQ/LlsxMjhdLFxuICAgICAgICAgICAgJzEzMCc6IGxpbmVIZWlnaHQ/LmxoXzEzMCB8fCBsaW5lSGVpZ2h0Py5bMTMwXSxcbiAgICAgICAgICAgICcxMzMnOiBsaW5lSGVpZ2h0Py5saF8xMzMgfHwgbGluZUhlaWdodD8uWzEzM10sXG4gICAgICAgICAgICAnMTQwJzogbGluZUhlaWdodD8ubGhfMTQwIHx8IGxpbmVIZWlnaHQ/LlsxNDBdLFxuICAgICAgICAgICAgJzE0OCc6IGxpbmVIZWlnaHQ/LmxoXzE0OCB8fCBsaW5lSGVpZ2h0Py5bMTQ4XSxcbiAgICAgICAgICAgIGIxOiBsaW5lSGVpZ2h0Py5iMSB8fCBsaW5lSGVpZ2h0Py5iXzEsXG4gICAgICAgICAgICBiMjogbGluZUhlaWdodD8uYjIgfHwgbGluZUhlaWdodD8uYl8yLFxuICAgICAgICAgICAgYjM6IGxpbmVIZWlnaHQ/LmIzIHx8IGxpbmVIZWlnaHQ/LmJfMyxcbiAgICAgICAgICAgIGI0OiBsaW5lSGVpZ2h0Py5iNCB8fCBsaW5lSGVpZ2h0Py5iXzQsXG4gICAgICAgICAgICBiNTogbGluZUhlaWdodD8uYjUgfHwgbGluZUhlaWdodD8uYl81LFxuICAgICAgICAgICAgaDE6IGxpbmVIZWlnaHQ/LmgxIHx8IGxpbmVIZWlnaHQ/LmhfMSxcbiAgICAgICAgICAgIGgyOiBsaW5lSGVpZ2h0Py5oMiB8fCBsaW5lSGVpZ2h0Py5oXzIsXG4gICAgICAgICAgICBoMzogbGluZUhlaWdodD8uaDMgfHwgbGluZUhlaWdodD8uaF8zLFxuICAgICAgICAgICAgbDE6IGxpbmVIZWlnaHQ/LmwxIHx8IGxpbmVIZWlnaHQ/LmxfMSxcbiAgICAgICAgICAgIGwyOiBsaW5lSGVpZ2h0Py5sMiB8fCBsaW5lSGVpZ2h0Py5sXzIsXG4gICAgICAgICAgICB0MTogbGluZUhlaWdodD8udDEgfHwgbGluZUhlaWdodD8udF8xLFxuICAgICAgICAgICAgdDI6IGxpbmVIZWlnaHQ/LnQyIHx8IGxpbmVIZWlnaHQ/LnRfMixcbiAgICAgICAgICAgIHQzOiBsaW5lSGVpZ2h0Py50MyB8fCBsaW5lSGVpZ2h0Py50XzMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaEdyYXBoUUxDb25maWcgPSBhc3luYyAoXG4gIGJhc2VVcmw6IHN0cmluZyxcbiAgYXBpS2V5OiBzdHJpbmcsXG4pOiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBxdWVyeSA9IGdldENvbG9yc0FuZEZyb250ZW5kUXVlcnkoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2Jhc2VVcmx9L3YxL2dyYXBocWxgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FwaUtleX1gLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcXVlcnkgfSksXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgcmVxdWVzdCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0LmVycm9ycyl9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgdjNSb290Q29uZmlnID0gcmVzdWx0LmRhdGEubWUuZ2V0UHJvZHVjdHNDb25maWdCeVZlcnNpb24/LnZfdGhyZWVfY29uZmlnPy52YWx1ZXM7XG4gICAgY29uc3QgZnJvbnRlbmRWYWx1ZXMgPSByZXN1bHQuZGF0YS5tZS5nZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj8uZnJvbnRlbmQ/LnZhbHVlcztcblxuICAgIGlmICghdjNSb290Q29uZmlnPy5jb2xvcnMpIHtcbiAgICAgIGxvZ2dlci5sb2dEZWJ1ZygnZmV0Y2hHcmFwaFFMQ29uZmlnIHwgTm8gY29sb3JzIGZvdW5kLCByZXR1cm5pbmcgbW9jayBjb25maWcnKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yc0NvbmZpZzogbW9ja1YzQ29sb3JzQ29uZmlnLFxuICAgICAgICBmcm9udGVuZENvbmZpZzogbW9ja1YzRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgICBvcmdQYWdlQ29uZmlnOiB7XG4gICAgICAgICAgcGFnZVZhcmlhbnRzOiBERUZBVUxUX1BBR0VfVkFSSUFOVFMsXG4gICAgICAgICAgd2lkZ2V0Q29uZmlnczoge30sXG4gICAgICAgICAgbW91bnRpbmdDb25maWdzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgdjNGcm9udGVuZENvbmZpZyA9IHYzRnJvbnRlbmRDb25maWdDbGVhbnVwKFxuICAgICAgdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZykgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICk7XG5cbiAgICBjb25zdCBtZXJjaGFudE92ZXJyaWRlQ3NzID1cbiAgICAgIHYzRnJvbnRlbmRDb25maWcudWlDb25maWdzPy5tZXJjaGFudE92ZXJyaWRlQ3NzIHx8IGZyb250ZW5kVmFsdWVzPy5tZXJjaGFudF9vdmVycmlkZV9jc3M7XG5cbiAgICBjb25zdCB2M01vdW50aW5nQ29uZmlnc0FycmF5ID0gKHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWc/Lm1vdW50aW5nX2NvbmZpZ3MpID8/XG4gICAgICBbXSkgYXMgdW5rbm93biBhcyB7IGtleTogc3RyaW5nOyBjb25maWc6IFdpZGdldE1vdW50aW5nQ29uZmlnIH1bXTtcbiAgICBjb25zdCB2M01vdW50aW5nQ29uZmlncyA9IHYzTW91bnRpbmdDb25maWdzQXJyYXkucmVkdWNlKFxuICAgICAgKGFjYywgeyBrZXksIGNvbmZpZyB9KSA9PiB7XG4gICAgICAgIGFjY1trZXldID0gdmFsaWRhdGVBbmRUcmFuc2Zvcm1Nb3VudGluZ0NvbmZpZyhjb25maWcsIGtleSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgV2lkZ2V0TW91bnRpbmdDb25maWc+LFxuICAgICk7XG5cbiAgICBjb25zdCB2M3dpZGdldENvbmZpZ3NBcnJheSA9ICh0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnPy53aWRnZXRfY29uZmlncykgPz9cbiAgICAgIFtdKSBhcyB1bmtub3duIGFzIFdpZGdldENvbmZpZ1YzW107XG4gICAgY29uc3QgdjNXaWRnZXRDb25maWdzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgdjN3aWRnZXRDb25maWdzQXJyYXk/Lm1hcCgoeyB3aWRnZXRDb25maWdJZCwgLi4ucmVzdCB9OiBXaWRnZXRDb25maWdWMykgPT4gW1xuICAgICAgICB3aWRnZXRDb25maWdJZCxcbiAgICAgICAgeyB3aWRnZXRDb25maWdJZCwgLi4ucmVzdCB9IGFzIFdpZGdldENvbmZpZ1YzLFxuICAgICAgXSksXG4gICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRDb25maWdWMz47XG5cbiAgICBjb25zdCB2M3BhZ2VWYXJpYW50czogUGFnZVZhcmlhbnRDb25maWdbXSA9IEFycmF5LmlzQXJyYXkodjNSb290Q29uZmlnPy5wYWdlX3ZhcmlhbnRzKVxuICAgICAgPyB2M1Jvb3RDb25maWcucGFnZV92YXJpYW50cy5tYXAodmFsaWRhdGVBbmRUcmFuc2Zvcm1QYWdlVmFyaWFudHMpXG4gICAgICA6IERFRkFVTFRfUEFHRV9WQVJJQU5UUztcblxuICAgIGNvbnN0IHYzQ29sb3JzQ29uZmlnID0gdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8uY29sb3JzPy52YWx1ZXMpO1xuXG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCdmZXRjaEdyYXBoUUxDb25maWcgfCBSZXR1cm5pbmcgdjMgY29uZmlnJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3JzQ29uZmlnOiB2M0NvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgZnJvbnRlbmRDb25maWc6IHtcbiAgICAgICAgLi4uKHYzRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlKSxcbiAgICAgICAgbWVyY2hhbnRPdmVycmlkZUNzcyxcbiAgICAgICAgd2lkZ2V0Q29uZmlnczogdjNXaWRnZXRDb25maWdzLFxuICAgICAgfSxcbiAgICAgIG9yZ1BhZ2VDb25maWc6IHtcbiAgICAgICAgcGFnZVZhcmlhbnRzOiB2M3BhZ2VWYXJpYW50cyxcbiAgICAgICAgd2lkZ2V0Q29uZmlnczogdjNXaWRnZXRDb25maWdzLFxuICAgICAgICBtb3VudGluZ0NvbmZpZ3M6IHYzTW91bnRpbmdDb25maWdzLFxuICAgICAgfSxcbiAgICB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIubG9nRXJyb3IoJ2ZldGNoR3JhcGhRTENvbmZpZyB8IEVycm9yIGZldGNoaW5nIEdyYXBoUUwgY29uZmlnJywgZXJyKTtcbiAgICByZXR1cm4geyBjb2xvcnNDb25maWc6IHVuZGVmaW5lZCwgZnJvbnRlbmRDb25maWc6IHVuZGVmaW5lZCB9O1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQWdCQSxNQUFNLFNBQVMsSUFBSUEsdUJBQU8scUJBQXFCO0FBSy9DLE1BQWFDLHdCQUE2QyxDQUN4RDtDQUNFLFdBQVc7Q0FDWCxhQUFhO0NBQ2IsZ0JBQWdCO0NBQ2hCLGdCQUFnQixFQUFFO0NBQ2xCLGNBQWMsQ0FBQyxFQUFFLFVBQVVDLDJDQUFvQixhQUFhLENBQUM7Q0FD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
219
+ exports.fetchUnifiedGraphQLConfig = fetchUnifiedGraphQLConfig;
220
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2hHcmFwaFFMQ29uZmlnLmNqcyIsIm5hbWVzIjpbIkxvZ2dlciIsIkRFRkFVTFRfUEFHRV9WQVJJQU5UUzogUGFnZVZhcmlhbnRDb25maWdbXSIsIlBhZ2VWYXJpYW50VGVzdFR5cGUiLCJGbG9hdGluZ0J1dHRvbkxvY2F0aW9uIiwibW9ja1YzQ29sb3JzQ29uZmlnIiwibW9ja1YzRnJvbnRlbmRDb25maWciLCJ0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwiLCJ2YWxpZGF0ZUFuZFRyYW5zZm9ybU1vdW50aW5nQ29uZmlnIiwidjNwYWdlVmFyaWFudHM6IFBhZ2VWYXJpYW50Q29uZmlnW10iLCJ2YWxpZGF0ZUFuZFRyYW5zZm9ybVBhZ2VWYXJpYW50cyIsImdldENvbG9yc0FuZEZyb250ZW5kUXVlcnkiLCJnZXRXaWRnZXRDb25maWdRdWVyeSIsImNvbmZpZ1ZlcnNpb25PdmVycmlkZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9lbnZpdmVDb25maWdTZXJ2aWNlL2ZldGNoR3JhcGhRTENvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1xuICBDYW1lbENhc2VkUHJvcGVydGllc0RlZXAsXG4gIHRyYW5zZm9ybVNuYWtlVG9DYW1lbCxcbiAgdmFsaWRhdGVBbmRUcmFuc2Zvcm1Nb3VudGluZ0NvbmZpZyxcbiAgdmFsaWRhdGVBbmRUcmFuc2Zvcm1QYWdlVmFyaWFudHMsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRnJvbnRlbmRDb25maWdWMyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZnJvbnRlbmRDb25maWdWMyc7XG5pbXBvcnQgeyBDb2xvck1hcHBpbmdWMyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY29sb3JzQ29uZmlnVjMnO1xuaW1wb3J0IHsgRmxvYXRpbmdCdXR0b25Mb2NhdGlvbiB9IGZyb20gJ0BlbnZpdmUtYWkvcmVhY3QtdG9vbGtpdC12My9GbG9hdGluZ0J1dHRvbic7XG5pbXBvcnQgeyBnZXRDb2xvcnNBbmRGcm9udGVuZFF1ZXJ5IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ncmFwaHFsL3F1ZXJpZXMvZ2V0Q29sb3JzQW5kRnJvbnRlbmRRdWVyeSc7XG5pbXBvcnQgeyBnZXRXaWRnZXRDb25maWdRdWVyeSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldFdpZGdldENvbmZpZ1F1ZXJ5JztcbmltcG9ydCB7IG1vY2tWM0NvbG9yc0NvbmZpZywgbW9ja1YzRnJvbnRlbmRDb25maWcgfSBmcm9tICdzcmMvY29udGV4dHMvZ3JhcGhxbENvbnRleHQvbW9ja1YzQ29uZmlnJztcbmltcG9ydCB7IFdpZGdldENvbmZpZ1YzIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzVjMnO1xuaW1wb3J0IHsgUGFnZVZhcmlhbnRDb25maWcsIFBhZ2VWYXJpYW50VGVzdFR5cGUsIFdpZGdldE1vdW50aW5nQ29uZmlnIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzJztcbmltcG9ydCB7IEdyYXBoUWxDb25maWdWYWx1ZXMgfSBmcm9tICdzcmMvY29udGV4dHMvZ3JhcGhxbENvbnRleHQnO1xuaW1wb3J0IHsgY29uZmlnVmVyc2lvbk92ZXJyaWRlIH0gZnJvbSAnc3JjL3R5cGVzL2NvbmZpZy12ZXJzaW9ucyc7XG5pbXBvcnQgeyBFeHBlcmltZW50Q29uZmlnUmVzb2x1dGlvbk1ldGFkYXRhIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ2ZldGNoR3JhcGhRTENvbmZpZycpO1xuXG50eXBlIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZ1YzPjtcbnR5cGUgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxDb2xvck1hcHBpbmdWMz47XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBR0VfVkFSSUFOVFM6IFBhZ2VWYXJpYW50Q29uZmlnW10gPSBbXG4gIHtcbiAgICB2YXJpYW50SWQ6ICdwbHAnLFxuICAgIHZhcmlhbnRUeXBlOiAncGxwJyxcbiAgICBwbHBJZEV4dHJhY3RvcjogJ3VybC1yZXNvbHZlci1wbHAtaWQnLFxuICAgIHdpZGdldE1vdW50aW5nOiBbXSxcbiAgICB2YXJpYW50VGVzdHM6IFt7IHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLlVybFJlc29sdmVyIH1dLFxuICB9LFxuICB7XG4gICAgdmFyaWFudElkOiAncGRwJyxcbiAgICB2YXJpYW50VHlwZTogJ3BkcCcsXG4gICAgcHJvZHVjdElkRXh0cmFjdG9yOiAndXJsLXJlc29sdmVyLXByb2R1Y3QtaWQnLFxuICAgIHdpZGdldE1vdW50aW5nOiBbXSxcbiAgICB2YXJpYW50VGVzdHM6IFt7IHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLlVybFJlc29sdmVyIH1dLFxuICB9LFxuXTtcblxuY29uc3QgbWFwUG9zaXRpb25Ub0NhbWVsQ2FzZSA9IChwb3NpdGlvbjogc3RyaW5nKTogRmxvYXRpbmdCdXR0b25Mb2NhdGlvbiA9PiB7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbS1sZWZ0JykgcmV0dXJuIEZsb2F0aW5nQnV0dG9uTG9jYXRpb24uQk9UVE9NX0xFRlQ7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ21pZGRsZS1sZWZ0JykgcmV0dXJuIEZsb2F0aW5nQnV0dG9uTG9jYXRpb24uTUlERExFX0xFRlQ7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ21pZGRsZS1yaWdodCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLk1JRERMRV9SSUdIVDtcbiAgaWYgKHBvc2l0aW9uID09PSAnYm90dG9tLXJpZ2h0JykgcmV0dXJuIEZsb2F0aW5nQnV0dG9uTG9jYXRpb24uQk9UVE9NX1JJR0hUO1xuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcG9zaXRpb246ICR7cG9zaXRpb259YCk7XG59O1xuXG5jb25zdCB2M0Zyb250ZW5kQ29uZmlnQ2xlYW51cCA9IChcbiAgdjNSb290Q29uZmlnOiBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UsXG4pOiBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UgPT4ge1xuICBjb25zdCB7IHVpQ29uZmlncyB9ID0gdjNSb290Q29uZmlnO1xuICBpZiAoIXVpQ29uZmlncykgcmV0dXJuIHYzUm9vdENvbmZpZztcbiAgY29uc3QgeyBmbG9hdGluZ0J1dHRvbiwgbG9va0FuZEZlZWwgfSA9IHVpQ29uZmlncyBhcyBhbnk7XG4gIGlmICghZmxvYXRpbmdCdXR0b24gfHwgIWxvb2tBbmRGZWVsKSByZXR1cm4gdjNSb290Q29uZmlnO1xuICBjb25zdCB7IGZvbnRTaXplLCBsaW5lSGVpZ2h0LCBsZXR0ZXJTcGFjaW5nIH0gPSBsb29rQW5kRmVlbC50eXBvZ3JhcGh5IGFzIGFueTtcbiAgcmV0dXJuIHtcbiAgICAuLi52M1Jvb3RDb25maWcsXG4gICAgdWlDb25maWdzOiB7XG4gICAgICAuLi51aUNvbmZpZ3MsXG4gICAgICBmbG9hdGluZ0J1dHRvbjoge1xuICAgICAgICAuLi5mbG9hdGluZ0J1dHRvbixcbiAgICAgICAgcG9zaXRpb246IG1hcFBvc2l0aW9uVG9DYW1lbENhc2UoXG4gICAgICAgICAgdjNSb290Q29uZmlnLnVpQ29uZmlncz8uZmxvYXRpbmdCdXR0b24/LnBvc2l0aW9uIGFzIHN0cmluZyxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBsb29rQW5kRmVlbDoge1xuICAgICAgICAuLi5sb29rQW5kRmVlbCxcbiAgICAgICAgY2hhdEhlYWRlckxvZ29EYXJrU3JjOiBsb29rQW5kRmVlbC5jaGF0SGVhZGVyTG9nb0RhcmtTcmMgfHwgbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29TcmMsXG4gICAgICAgIGNoYXRIZWFkZXJMb2dvTGlnaHRTcmM6IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvTGlnaHRTcmMgfHwgbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29TcmMsXG4gICAgICAgIHR5cG9ncmFwaHk6IHtcbiAgICAgICAgICAuLi5sb29rQW5kRmVlbC50eXBvZ3JhcGh5LFxuICAgICAgICAgIGZvbnRTaXplOiB7XG4gICAgICAgICAgICBiMTogZm9udFNpemU/LmIxIHx8IGZvbnRTaXplPy5iXzEsXG4gICAgICAgICAgICBiMjogZm9udFNpemU/LmIyIHx8IGZvbnRTaXplPy5iXzIsXG4gICAgICAgICAgICBiMzogZm9udFNpemU/LmIzIHx8IGZvbnRTaXplPy5iXzMsXG4gICAgICAgICAgICBiNDogZm9udFNpemU/LmI0IHx8IGZvbnRTaXplPy5iXzQsXG4gICAgICAgICAgICBiNTogZm9udFNpemU/LmI1IHx8IGZvbnRTaXplPy5iXzUsXG4gICAgICAgICAgICBoMTogZm9udFNpemU/LmgxIHx8IGZvbnRTaXplPy5oXzEsXG4gICAgICAgICAgICBoMjogZm9udFNpemU/LmgyIHx8IGZvbnRTaXplPy5oXzIsXG4gICAgICAgICAgICBoMzogZm9udFNpemU/LmgzIHx8IGZvbnRTaXplPy5oXzMsXG4gICAgICAgICAgICBsMTogZm9udFNpemU/LmwxIHx8IGZvbnRTaXplPy5sXzEsXG4gICAgICAgICAgICBsMjogZm9udFNpemU/LmwyIHx8IGZvbnRTaXplPy5sXzIsXG4gICAgICAgICAgICB0MTogZm9udFNpemU/LnQxIHx8IGZvbnRTaXplPy50XzEsXG4gICAgICAgICAgICB0MjogZm9udFNpemU/LnQyIHx8IGZvbnRTaXplPy50XzIsXG4gICAgICAgICAgICB0MzogZm9udFNpemU/LnQzIHx8IGZvbnRTaXplPy50XzMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiB7XG4gICAgICAgICAgICAuLi5sb29rQW5kRmVlbC50eXBvZ3JhcGh5LmxldHRlclNwYWNpbmcsXG4gICAgICAgICAgICBiMTogbGV0dGVyU3BhY2luZz8uYjEgfHwgbGV0dGVyU3BhY2luZz8uYl8xLFxuICAgICAgICAgICAgYjI6IGxldHRlclNwYWNpbmc/LmIyIHx8IGxldHRlclNwYWNpbmc/LmJfMixcbiAgICAgICAgICAgIGIzOiBsZXR0ZXJTcGFjaW5nPy5iMyB8fCBsZXR0ZXJTcGFjaW5nPy5iXzMsXG4gICAgICAgICAgICBiNDogbGV0dGVyU3BhY2luZz8uYjQgfHwgbGV0dGVyU3BhY2luZz8uYl80LFxuICAgICAgICAgICAgYjU6IGxldHRlclNwYWNpbmc/LmI1IHx8IGxldHRlclNwYWNpbmc/LmJfNSxcbiAgICAgICAgICAgIGgxOiBsZXR0ZXJTcGFjaW5nPy5oMSB8fCBsZXR0ZXJTcGFjaW5nPy5oXzEsXG4gICAgICAgICAgICBoMjogbGV0dGVyU3BhY2luZz8uaDIgfHwgbGV0dGVyU3BhY2luZz8uaF8yLFxuICAgICAgICAgICAgaDM6IGxldHRlclNwYWNpbmc/LmgzIHx8IGxldHRlclNwYWNpbmc/LmhfMyxcbiAgICAgICAgICAgIGwxOiBsZXR0ZXJTcGFjaW5nPy5sMSB8fCBsZXR0ZXJTcGFjaW5nPy5sXzEsXG4gICAgICAgICAgICBsMjogbGV0dGVyU3BhY2luZz8ubDIgfHwgbGV0dGVyU3BhY2luZz8ubF8yLFxuICAgICAgICAgICAgdDE6IGxldHRlclNwYWNpbmc/LnQxIHx8IGxldHRlclNwYWNpbmc/LnRfMSxcbiAgICAgICAgICAgIHQyOiBsZXR0ZXJTcGFjaW5nPy50MiB8fCBsZXR0ZXJTcGFjaW5nPy50XzIsXG4gICAgICAgICAgICB0MzogbGV0dGVyU3BhY2luZz8udDMgfHwgbGV0dGVyU3BhY2luZz8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGluZUhlaWdodDoge1xuICAgICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeS5saW5lSGVpZ2h0LFxuICAgICAgICAgICAgJzExNCc6IGxpbmVIZWlnaHQ/LmxoXzExNCB8fCBsaW5lSGVpZ2h0Py5bMTE0XSxcbiAgICAgICAgICAgICcxMTYnOiBsaW5lSGVpZ2h0Py5saF8xMTYgfHwgbGluZUhlaWdodD8uWzExNl0sXG4gICAgICAgICAgICAnMTE4JzogbGluZUhlaWdodD8ubGhfMTE4IHx8IGxpbmVIZWlnaHQ/LlsxMThdLFxuICAgICAgICAgICAgJzEyMCc6IGxpbmVIZWlnaHQ/LmxoXzEyMCB8fCBsaW5lSGVpZ2h0Py5bMTIwXSxcbiAgICAgICAgICAgICcxMjQnOiBsaW5lSGVpZ2h0Py5saF8xMjQgfHwgbGluZUhlaWdodD8uWzEyNF0sXG4gICAgICAgICAgICAnMTI4JzogbGluZUhlaWdodD8ubGhfMTI4IHx8IGxpbmVIZWlnaHQ/LlsxMjhdLFxuICAgICAgICAgICAgJzEzMCc6IGxpbmVIZWlnaHQ/LmxoXzEzMCB8fCBsaW5lSGVpZ2h0Py5bMTMwXSxcbiAgICAgICAgICAgICcxMzMnOiBsaW5lSGVpZ2h0Py5saF8xMzMgfHwgbGluZUhlaWdodD8uWzEzM10sXG4gICAgICAgICAgICAnMTQwJzogbGluZUhlaWdodD8ubGhfMTQwIHx8IGxpbmVIZWlnaHQ/LlsxNDBdLFxuICAgICAgICAgICAgJzE0OCc6IGxpbmVIZWlnaHQ/LmxoXzE0OCB8fCBsaW5lSGVpZ2h0Py5bMTQ4XSxcbiAgICAgICAgICAgIGIxOiBsaW5lSGVpZ2h0Py5iMSB8fCBsaW5lSGVpZ2h0Py5iXzEsXG4gICAgICAgICAgICBiMjogbGluZUhlaWdodD8uYjIgfHwgbGluZUhlaWdodD8uYl8yLFxuICAgICAgICAgICAgYjM6IGxpbmVIZWlnaHQ/LmIzIHx8IGxpbmVIZWlnaHQ/LmJfMyxcbiAgICAgICAgICAgIGI0OiBsaW5lSGVpZ2h0Py5iNCB8fCBsaW5lSGVpZ2h0Py5iXzQsXG4gICAgICAgICAgICBiNTogbGluZUhlaWdodD8uYjUgfHwgbGluZUhlaWdodD8uYl81LFxuICAgICAgICAgICAgaDE6IGxpbmVIZWlnaHQ/LmgxIHx8IGxpbmVIZWlnaHQ/LmhfMSxcbiAgICAgICAgICAgIGgyOiBsaW5lSGVpZ2h0Py5oMiB8fCBsaW5lSGVpZ2h0Py5oXzIsXG4gICAgICAgICAgICBoMzogbGluZUhlaWdodD8uaDMgfHwgbGluZUhlaWdodD8uaF8zLFxuICAgICAgICAgICAgbDE6IGxpbmVIZWlnaHQ/LmwxIHx8IGxpbmVIZWlnaHQ/LmxfMSxcbiAgICAgICAgICAgIGwyOiBsaW5lSGVpZ2h0Py5sMiB8fCBsaW5lSGVpZ2h0Py5sXzIsXG4gICAgICAgICAgICB0MTogbGluZUhlaWdodD8udDEgfHwgbGluZUhlaWdodD8udF8xLFxuICAgICAgICAgICAgdDI6IGxpbmVIZWlnaHQ/LnQyIHx8IGxpbmVIZWlnaHQ/LnRfMixcbiAgICAgICAgICAgIHQzOiBsaW5lSGVpZ2h0Py50MyB8fCBsaW5lSGVpZ2h0Py50XzMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG5cbi8vIFR1cm5zIGEgcmF3IHByb2R1Y3RzQ29uZmlnIHBheWxvYWQgKGZyb20gZ2V0UHJvZHVjdHNDb25maWdCeVZlcnNpb24gb3Jcbi8vIGdldFdpZGdldENvbmZpZykgaW50byB0aGUgY2FtZWxDYXNlIEdyYXBoUWxDb25maWdWYWx1ZXMgc2hhcGUgdGhlIHJlc3Qgb2Zcbi8vIHRoZSB0b29sa2l0IGNvbnN1bWVzLiBSZXR1cm5zIG1vY2sgY29uZmlnIHdoZW4gY29sb3JzIGFyZSBhYnNlbnQuXG5jb25zdCB0cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnID0gKFxuICBwcm9kdWN0c0NvbmZpZzpcbiAgICB8IHtcbiAgICAgICAgZnJvbnRlbmQ/OiB7IHZhbHVlcz86IHsgbWVyY2hhbnRfb3ZlcnJpZGVfY3NzPzogc3RyaW5nIH0gfTtcbiAgICAgICAgdl90aHJlZV9jb25maWc/OiB7IHZhbHVlcz86IGFueSB9O1xuICAgICAgfVxuICAgIHwgdW5kZWZpbmVkLFxuKTogR3JhcGhRbENvbmZpZ1ZhbHVlcyA9PiB7XG4gIGNvbnN0IHYzUm9vdENvbmZpZyA9IHByb2R1Y3RzQ29uZmlnPy52X3RocmVlX2NvbmZpZz8udmFsdWVzO1xuICBjb25zdCBmcm9udGVuZFZhbHVlcyA9IHByb2R1Y3RzQ29uZmlnPy5mcm9udGVuZD8udmFsdWVzO1xuXG4gIGlmICghdjNSb290Q29uZmlnPy5jb2xvcnMpIHtcbiAgICBsb2dnZXIubG9nRGVidWcoJ3RyYW5zZm9ybVYzUHJvZHVjdHNDb25maWcgfCBObyBjb2xvcnMgZm91bmQsIHJldHVybmluZyBtb2NrIGNvbmZpZycpO1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcnNDb25maWc6IG1vY2tWM0NvbG9yc0NvbmZpZyxcbiAgICAgIGZyb250ZW5kQ29uZmlnOiBtb2NrVjNGcm9udGVuZENvbmZpZyBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UsXG4gICAgICBvcmdQYWdlQ29uZmlnOiB7XG4gICAgICAgIHBhZ2VWYXJpYW50czogREVGQVVMVF9QQUdFX1ZBUklBTlRTLFxuICAgICAgICB3aWRnZXRDb25maWdzOiB7fSxcbiAgICAgICAgbW91bnRpbmdDb25maWdzOiB7fSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHYzRnJvbnRlbmRDb25maWcgPSB2M0Zyb250ZW5kQ29uZmlnQ2xlYW51cChcbiAgICB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnKSBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UsXG4gICk7XG5cbiAgY29uc3QgbWVyY2hhbnRPdmVycmlkZUNzcyA9XG4gICAgdjNGcm9udGVuZENvbmZpZy51aUNvbmZpZ3M/Lm1lcmNoYW50T3ZlcnJpZGVDc3MgfHwgZnJvbnRlbmRWYWx1ZXM/Lm1lcmNoYW50X292ZXJyaWRlX2NzcztcblxuICBjb25zdCB2M01vdW50aW5nQ29uZmlnc0FycmF5ID0gKHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWc/Lm1vdW50aW5nX2NvbmZpZ3MpID8/XG4gICAgW10pIGFzIHVua25vd24gYXMgeyBrZXk6IHN0cmluZzsgY29uZmlnOiBXaWRnZXRNb3VudGluZ0NvbmZpZyB9W107XG4gIGNvbnN0IHYzTW91bnRpbmdDb25maWdzID0gdjNNb3VudGluZ0NvbmZpZ3NBcnJheS5yZWR1Y2UoXG4gICAgKGFjYywgeyBrZXksIGNvbmZpZyB9KSA9PiB7XG4gICAgICBhY2Nba2V5XSA9IHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWcoY29uZmlnLCBrZXkpO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LFxuICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIFdpZGdldE1vdW50aW5nQ29uZmlnPixcbiAgKTtcblxuICBjb25zdCB2M1dpZGdldENvbmZpZ3NBcnJheSA9ICh0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnPy53aWRnZXRfY29uZmlncykgPz9cbiAgICBbXSkgYXMgdW5rbm93biBhcyBXaWRnZXRDb25maWdWM1tdO1xuICBjb25zdCB2M1dpZGdldENvbmZpZ3MgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgdjNXaWRnZXRDb25maWdzQXJyYXk/Lm1hcCgoeyB3aWRnZXRDb25maWdJZCwgLi4ucmVzdCB9OiBXaWRnZXRDb25maWdWMykgPT4gW1xuICAgICAgd2lkZ2V0Q29uZmlnSWQsXG4gICAgICB7IHdpZGdldENvbmZpZ0lkLCAuLi5yZXN0IH0gYXMgV2lkZ2V0Q29uZmlnVjMsXG4gICAgXSksXG4gICkgYXMgUmVjb3JkPHN0cmluZywgV2lkZ2V0Q29uZmlnVjM+O1xuXG4gIGNvbnN0IHYzcGFnZVZhcmlhbnRzOiBQYWdlVmFyaWFudENvbmZpZ1tdID0gQXJyYXkuaXNBcnJheSh2M1Jvb3RDb25maWc/LnBhZ2VfdmFyaWFudHMpXG4gICAgPyB2M1Jvb3RDb25maWcucGFnZV92YXJpYW50cy5tYXAodmFsaWRhdGVBbmRUcmFuc2Zvcm1QYWdlVmFyaWFudHMpXG4gICAgOiBERUZBVUxUX1BBR0VfVkFSSUFOVFM7XG5cbiAgY29uc3QgdjNDb2xvcnNDb25maWcgPSB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnPy5jb2xvcnM/LnZhbHVlcyk7XG5cbiAgcmV0dXJuIHtcbiAgICBjb2xvcnNDb25maWc6IHYzQ29sb3JzQ29uZmlnIGFzIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UsXG4gICAgZnJvbnRlbmRDb25maWc6IHtcbiAgICAgIC4uLih2M0Zyb250ZW5kQ29uZmlnIGFzIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSksXG4gICAgICBtZXJjaGFudE92ZXJyaWRlQ3NzLFxuICAgICAgd2lkZ2V0Q29uZmlnczogdjNXaWRnZXRDb25maWdzLFxuICAgIH0sXG4gICAgb3JnUGFnZUNvbmZpZzoge1xuICAgICAgcGFnZVZhcmlhbnRzOiB2M3BhZ2VWYXJpYW50cyxcbiAgICAgIHdpZGdldENvbmZpZ3M6IHYzV2lkZ2V0Q29uZmlncyxcbiAgICAgIG1vdW50aW5nQ29uZmlnczogdjNNb3VudGluZ0NvbmZpZ3MsXG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaEdyYXBoUUxDb25maWcgPSBhc3luYyAoXG4gIGJhc2VVcmw6IHN0cmluZyxcbiAgYXBpS2V5OiBzdHJpbmcsXG4pOiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBxdWVyeSA9IGdldENvbG9yc0FuZEZyb250ZW5kUXVlcnkoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2Jhc2VVcmx9L3YxL2dyYXBocWxgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FwaUtleX1gLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcXVlcnkgfSksXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgcmVxdWVzdCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0LmVycm9ycyl9YCk7XG4gICAgfVxuXG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCdmZXRjaEdyYXBoUUxDb25maWcgfCBSZXR1cm5pbmcgdjMgY29uZmlnJyk7XG4gICAgcmV0dXJuIHRyYW5zZm9ybVYzUHJvZHVjdHNDb25maWcocmVzdWx0LmRhdGEubWUuZ2V0UHJvZHVjdHNDb25maWdCeVZlcnNpb24pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIubG9nRXJyb3IoJ2ZldGNoR3JhcGhRTENvbmZpZyB8IEVycm9yIGZldGNoaW5nIEdyYXBoUUwgY29uZmlnJywgZXJyKTtcbiAgICByZXR1cm4geyBjb2xvcnNDb25maWc6IHVuZGVmaW5lZCwgZnJvbnRlbmRDb25maWc6IHVuZGVmaW5lZCB9O1xuICB9XG59O1xuXG4vLyBTdGF0c2lnLWV4cGVyaW1lbnQtYXdhcmUgdW5pZmllZCBjb25maWcgcGF0aC4gQ2FsbGVkIHdoZW4gdGhlXG4vLyBgdXNlX3VuaWZpZWRfY29uZmlnYCBTdGF0c2lnIGdhdGUgaXMgb24uIFJldHVybnMgdGhlIHNhbWUgc2hhcGUgYXNcbi8vIGZldGNoR3JhcGhRTENvbmZpZyB3aXRoIHRoZSByZXNvbHV0aW9uIG1ldGFkYXRhIHB5bW9ubyB1c2VkIHRvIHBpY2sgdGhlXG4vLyB2ZXJzaW9uIGF0dGFjaGVkIOKAlCBjYWxsZXJzIHRocmVhZCBgcmVzb2x1dGlvbi5iYXNlVmVyc2lvbmAgaW50byBkb3duc3RyZWFtXG4vLyBpbmZlcmVuY2UgcmVxdWVzdHMgc28gaW5mZXJlbmNlIGlzIHNjb3BlZCB0byB0aGUgdmVyc2lvbiB0aGF0IHByb2R1Y2VkXG4vLyB0aGUgd2lkZ2V0cyB0aGUgdXNlciBpcyByZW5kZXJpbmcuIEEgYHNwaWZmeV9jb25maWdfdmVyc2lvbmAgL1xuLy8gYGVudml2ZV9jb25maWdfdmVyc2lvbmAgVVJMIHBhcmFtLCB3aGVuIHByZXNlbnQsIGlzIHRocmVhZGVkIHRocm91Z2ggYXNcbi8vIHRoZSBgdmVyc2lvbmAgdmFyaWFibGUgdG8gcGluIGEgc3BlY2lmaWMgY29uZmlnIHZlcnNpb24gKG1hdGNoZXMgdGhlXG4vLyBsZWdhY3kgcGF0aCdzIGRlYnVnL3JvbGxiYWNrIGFmZm9yZGFuY2UpLlxuZXhwb3J0IGNvbnN0IGZldGNoVW5pZmllZEdyYXBoUUxDb25maWcgPSBhc3luYyAoXG4gIGJhc2VVcmw6IHN0cmluZyxcbiAgYXBpS2V5OiBzdHJpbmcsXG4gIHVzZXJJZDogc3RyaW5nLFxuKTogUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPiA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcXVlcnkgPSBnZXRXaWRnZXRDb25maWdRdWVyeSgpO1xuICAgIGNvbnN0IHZlcnNpb24gPSBjb25maWdWZXJzaW9uT3ZlcnJpZGUoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2Jhc2VVcmx9L3YxL2dyYXBocWxgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FwaUtleX1gLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcXVlcnksIHZhcmlhYmxlczogeyB1c2VySWQsIHZlcnNpb24gfSB9KSxcbiAgICB9KTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCByZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICBpZiAocmVzdWx0LmVycm9ycykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIGVycm9yczogJHtKU09OLnN0cmluZ2lmeShyZXN1bHQuZXJyb3JzKX1gKTtcbiAgICB9XG5cbiAgICBjb25zdCB3aWRnZXRDb25maWcgPSByZXN1bHQuZGF0YS5tZS5nZXRXaWRnZXRDb25maWc7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRyYW5zZm9ybVYzUHJvZHVjdHNDb25maWcod2lkZ2V0Q29uZmlnPy5wcm9kdWN0c0NvbmZpZyksXG4gICAgICByZXNvbHV0aW9uOiB3aWRnZXRDb25maWc/LnJlc29sdXRpb24gYXMgRXhwZXJpbWVudENvbmZpZ1Jlc29sdXRpb25NZXRhZGF0YSB8IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIubG9nRXJyb3IoJ2ZldGNoVW5pZmllZEdyYXBoUUxDb25maWcgfCBFcnJvciBmZXRjaGluZyB1bmlmaWVkIEdyYXBoUUwgY29uZmlnJywgZXJyKTtcbiAgICByZXR1cm4geyBjb2xvcnNDb25maWc6IHVuZGVmaW5lZCwgZnJvbnRlbmRDb25maWc6IHVuZGVmaW5lZCB9O1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBbUJBLE1BQU0sU0FBUyxJQUFJQSx1QkFBTyxxQkFBcUI7QUFLL0MsTUFBYUMsd0JBQTZDLENBQ3hEO0NBQ0UsV0FBVztDQUNYLGFBQWE7Q0FDYixnQkFBZ0I7Q0FDaEIsZ0JBQWdCLEVBQUU7Q0FDbEIsY0FBYyxDQUFDLEVBQUUsVUFBVUMsMkNBQW9CLGFBQWEsQ0FBQztDQUM5RCxFQUNEO0NBQ0UsV0FBVztDQUNYLGFBQWE7Q0FDYixvQkFBb0I7Q0FDcEIsZ0JBQWdCLEVBQUU7Q0FDbEIsY0FBYyxDQUFDLEVBQUUsVUFBVUEsMkNBQW9CLGFBQWEsQ0FBQztDQUM5RCxDQUNGO0FBRUQsTUFBTSwwQkFBMEIsYUFBNkM7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
@@ -1,9 +1,11 @@
1
1
  import logger_default from "../../application/logging/logger.js";
2
+ import { configVersionOverride } from "../../types/config-versions.js";
2
3
  import { transformSnakeToCamel } from "../../application/models/utils/snakeToCamelTransformer.js";
3
4
  import { PageVariantTestType } from "../../contexts/types.js";
4
5
  import { validateAndTransformMountingConfig, validateAndTransformPageVariants } from "../../application/models/validators/validateGraphQLFrontendConfig.js";
5
6
  import "../../application/models/index.js";
6
7
  import { getColorsAndFrontendQuery } from "../../application/models/graphql/queries/getColorsAndFrontendQuery.js";
8
+ import { getWidgetConfigQuery } from "../../application/models/graphql/queries/getWidgetConfigQuery.js";
7
9
  import { mockV3ColorsConfig, mockV3FrontendConfig } from "../../contexts/graphqlContext/mockV3Config.js";
8
10
  import { FloatingButtonLocation } from "@envive-ai/react-toolkit-v3/FloatingButton";
9
11
 
@@ -111,6 +113,47 @@ const v3FrontendConfigCleanup = (v3RootConfig) => {
111
113
  }
112
114
  };
113
115
  };
116
+ const transformV3ProductsConfig = (productsConfig) => {
117
+ const v3RootConfig = productsConfig?.v_three_config?.values;
118
+ const frontendValues = productsConfig?.frontend?.values;
119
+ if (!v3RootConfig?.colors) {
120
+ logger.logDebug("transformV3ProductsConfig | No colors found, returning mock config");
121
+ return {
122
+ colorsConfig: mockV3ColorsConfig,
123
+ frontendConfig: mockV3FrontendConfig,
124
+ orgPageConfig: {
125
+ pageVariants: DEFAULT_PAGE_VARIANTS,
126
+ widgetConfigs: {},
127
+ mountingConfigs: {}
128
+ }
129
+ };
130
+ }
131
+ const v3FrontendConfig = v3FrontendConfigCleanup(transformSnakeToCamel(v3RootConfig));
132
+ const merchantOverrideCss = v3FrontendConfig.uiConfigs?.merchantOverrideCss || frontendValues?.merchant_override_css;
133
+ const v3MountingConfigs = (transformSnakeToCamel(v3RootConfig?.mounting_configs) ?? []).reduce((acc, { key, config }) => {
134
+ acc[key] = validateAndTransformMountingConfig(config, key);
135
+ return acc;
136
+ }, {});
137
+ const v3WidgetConfigsArray = transformSnakeToCamel(v3RootConfig?.widget_configs) ?? [];
138
+ const v3WidgetConfigs = Object.fromEntries(v3WidgetConfigsArray?.map(({ widgetConfigId, ...rest }) => [widgetConfigId, {
139
+ widgetConfigId,
140
+ ...rest
141
+ }]));
142
+ const v3pageVariants = Array.isArray(v3RootConfig?.page_variants) ? v3RootConfig.page_variants.map(validateAndTransformPageVariants) : DEFAULT_PAGE_VARIANTS;
143
+ return {
144
+ colorsConfig: transformSnakeToCamel(v3RootConfig?.colors?.values),
145
+ frontendConfig: {
146
+ ...v3FrontendConfig,
147
+ merchantOverrideCss,
148
+ widgetConfigs: v3WidgetConfigs
149
+ },
150
+ orgPageConfig: {
151
+ pageVariants: v3pageVariants,
152
+ widgetConfigs: v3WidgetConfigs,
153
+ mountingConfigs: v3MountingConfigs
154
+ }
155
+ };
156
+ };
114
157
  const fetchGraphQLConfig = async (baseUrl, apiKey) => {
115
158
  try {
116
159
  const query = getColorsAndFrontendQuery();
@@ -125,49 +168,44 @@ const fetchGraphQLConfig = async (baseUrl, apiKey) => {
125
168
  if (!response.ok) throw new Error(`GraphQL request failed: ${response.statusText}`);
126
169
  const result = await response.json();
127
170
  if (result.errors) throw new Error(`GraphQL errors: ${JSON.stringify(result.errors)}`);
128
- const v3RootConfig = result.data.me.getProductsConfigByVersion?.v_three_config?.values;
129
- const frontendValues = result.data.me.getProductsConfigByVersion?.frontend?.values;
130
- if (!v3RootConfig?.colors) {
131
- logger.logDebug("fetchGraphQLConfig | No colors found, returning mock config");
132
- return {
133
- colorsConfig: mockV3ColorsConfig,
134
- frontendConfig: mockV3FrontendConfig,
135
- orgPageConfig: {
136
- pageVariants: DEFAULT_PAGE_VARIANTS,
137
- widgetConfigs: {},
138
- mountingConfigs: {}
139
- }
140
- };
141
- }
142
- const v3FrontendConfig = v3FrontendConfigCleanup(transformSnakeToCamel(v3RootConfig));
143
- const merchantOverrideCss = v3FrontendConfig.uiConfigs?.merchantOverrideCss || frontendValues?.merchant_override_css;
144
- const v3MountingConfigs = (transformSnakeToCamel(v3RootConfig?.mounting_configs) ?? []).reduce((acc, { key, config }) => {
145
- acc[key] = validateAndTransformMountingConfig(config, key);
146
- return acc;
147
- }, {});
148
- const v3widgetConfigsArray = transformSnakeToCamel(v3RootConfig?.widget_configs) ?? [];
149
- const v3WidgetConfigs = Object.fromEntries(v3widgetConfigsArray?.map(({ widgetConfigId, ...rest }) => [widgetConfigId, {
150
- widgetConfigId,
151
- ...rest
152
- }]));
153
- const v3pageVariants = Array.isArray(v3RootConfig?.page_variants) ? v3RootConfig.page_variants.map(validateAndTransformPageVariants) : DEFAULT_PAGE_VARIANTS;
154
- const v3ColorsConfig = transformSnakeToCamel(v3RootConfig?.colors?.values);
155
171
  logger.logDebug("fetchGraphQLConfig | Returning v3 config");
172
+ return transformV3ProductsConfig(result.data.me.getProductsConfigByVersion);
173
+ } catch (err) {
174
+ logger.logError("fetchGraphQLConfig | Error fetching GraphQL config", err);
156
175
  return {
157
- colorsConfig: v3ColorsConfig,
158
- frontendConfig: {
159
- ...v3FrontendConfig,
160
- merchantOverrideCss,
161
- widgetConfigs: v3WidgetConfigs
176
+ colorsConfig: void 0,
177
+ frontendConfig: void 0
178
+ };
179
+ }
180
+ };
181
+ const fetchUnifiedGraphQLConfig = async (baseUrl, apiKey, userId) => {
182
+ try {
183
+ const query = getWidgetConfigQuery();
184
+ const version = configVersionOverride();
185
+ const response = await fetch(`${baseUrl}/v1/graphql`, {
186
+ method: "POST",
187
+ headers: {
188
+ "Content-Type": "application/json",
189
+ Authorization: `Bearer ${apiKey}`
162
190
  },
163
- orgPageConfig: {
164
- pageVariants: v3pageVariants,
165
- widgetConfigs: v3WidgetConfigs,
166
- mountingConfigs: v3MountingConfigs
167
- }
191
+ body: JSON.stringify({
192
+ query,
193
+ variables: {
194
+ userId,
195
+ version
196
+ }
197
+ })
198
+ });
199
+ if (!response.ok) throw new Error(`GraphQL request failed: ${response.statusText}`);
200
+ const result = await response.json();
201
+ if (result.errors) throw new Error(`GraphQL errors: ${JSON.stringify(result.errors)}`);
202
+ const widgetConfig = result.data.me.getWidgetConfig;
203
+ return {
204
+ ...transformV3ProductsConfig(widgetConfig?.productsConfig),
205
+ resolution: widgetConfig?.resolution
168
206
  };
169
207
  } catch (err) {
170
- logger.logError("fetchGraphQLConfig | Error fetching GraphQL config", err);
208
+ logger.logError("fetchUnifiedGraphQLConfig | Error fetching unified GraphQL config", err);
171
209
  return {
172
210
  colorsConfig: void 0,
173
211
  frontendConfig: void 0
@@ -176,5 +214,5 @@ const fetchGraphQLConfig = async (baseUrl, apiKey) => {
176
214
  };
177
215
 
178
216
  //#endregion
179
- export { fetchGraphQLConfig };
180
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2hHcmFwaFFMQ29uZmlnLmpzIiwibmFtZXMiOlsiTG9nZ2VyIiwiREVGQVVMVF9QQUdFX1ZBUklBTlRTOiBQYWdlVmFyaWFudENvbmZpZ1tdIiwidjNwYWdlVmFyaWFudHM6IFBhZ2VWYXJpYW50Q29uZmlnW10iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZS9mZXRjaEdyYXBoUUxDb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtcbiAgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwLFxuICB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWcsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzLFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEZyb250ZW5kQ29uZmlnVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2Zyb250ZW5kQ29uZmlnVjMnO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1YzJztcbmltcG9ydCB7IEZsb2F0aW5nQnV0dG9uTG9jYXRpb24gfSBmcm9tICdAZW52aXZlLWFpL3JlYWN0LXRvb2xraXQtdjMvRmxvYXRpbmdCdXR0b24nO1xuaW1wb3J0IHsgZ2V0Q29sb3JzQW5kRnJvbnRlbmRRdWVyeSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldENvbG9yc0FuZEZyb250ZW5kUXVlcnknO1xuaW1wb3J0IHsgbW9ja1YzQ29sb3JzQ29uZmlnLCBtb2NrVjNGcm9udGVuZENvbmZpZyB9IGZyb20gJ3NyYy9jb250ZXh0cy9ncmFwaHFsQ29udGV4dC9tb2NrVjNDb25maWcnO1xuaW1wb3J0IHsgV2lkZ2V0Q29uZmlnVjMgfSBmcm9tICdzcmMvY29udGV4dHMvdHlwZXNWMyc7XG5pbXBvcnQgeyBQYWdlVmFyaWFudENvbmZpZywgUGFnZVZhcmlhbnRUZXN0VHlwZSwgV2lkZ2V0TW91bnRpbmdDb25maWcgfSBmcm9tICdzcmMvY29udGV4dHMvdHlwZXMnO1xuaW1wb3J0IHsgR3JhcGhRbENvbmZpZ1ZhbHVlcyB9IGZyb20gJ3NyYy9jb250ZXh0cy9ncmFwaHFsQ29udGV4dCc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ2ZldGNoR3JhcGhRTENvbmZpZycpO1xuXG50eXBlIEZyb250ZW5kQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxGcm9udGVuZENvbmZpZ1YzPjtcbnR5cGUgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxDb2xvck1hcHBpbmdWMz47XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBR0VfVkFSSUFOVFM6IFBhZ2VWYXJpYW50Q29uZmlnW10gPSBbXG4gIHtcbiAgICB2YXJpYW50SWQ6ICdwbHAnLFxuICAgIHZhcmlhbnRUeXBlOiAncGxwJyxcbiAgICBwbHBJZEV4dHJhY3RvcjogJ3VybC1yZXNvbHZlci1wbHAtaWQnLFxuICAgIHdpZGdldE1vdW50aW5nOiBbXSxcbiAgICB2YXJpYW50VGVzdHM6IFt7IHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLlVybFJlc29sdmVyIH1dLFxuICB9LFxuICB7XG4gICAgdmFyaWFudElkOiAncGRwJyxcbiAgICB2YXJpYW50VHlwZTogJ3BkcCcsXG4gICAgcHJvZHVjdElkRXh0cmFjdG9yOiAndXJsLXJlc29sdmVyLXByb2R1Y3QtaWQnLFxuICAgIHdpZGdldE1vdW50aW5nOiBbXSxcbiAgICB2YXJpYW50VGVzdHM6IFt7IHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLlVybFJlc29sdmVyIH1dLFxuICB9LFxuXTtcblxuY29uc3QgbWFwUG9zaXRpb25Ub0NhbWVsQ2FzZSA9IChwb3NpdGlvbjogc3RyaW5nKTogRmxvYXRpbmdCdXR0b25Mb2NhdGlvbiA9PiB7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbS1sZWZ0JykgcmV0dXJuIEZsb2F0aW5nQnV0dG9uTG9jYXRpb24uQk9UVE9NX0xFRlQ7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ21pZGRsZS1sZWZ0JykgcmV0dXJuIEZsb2F0aW5nQnV0dG9uTG9jYXRpb24uTUlERExFX0xFRlQ7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ21pZGRsZS1yaWdodCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLk1JRERMRV9SSUdIVDtcbiAgaWYgKHBvc2l0aW9uID09PSAnYm90dG9tLXJpZ2h0JykgcmV0dXJuIEZsb2F0aW5nQnV0dG9uTG9jYXRpb24uQk9UVE9NX1JJR0hUO1xuICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcG9zaXRpb246ICR7cG9zaXRpb259YCk7XG59O1xuXG5jb25zdCB2M0Zyb250ZW5kQ29uZmlnQ2xlYW51cCA9IChcbiAgdjNSb290Q29uZmlnOiBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UsXG4pOiBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UgPT4ge1xuICBjb25zdCB7IHVpQ29uZmlncyB9ID0gdjNSb290Q29uZmlnO1xuICBpZiAoIXVpQ29uZmlncykgcmV0dXJuIHYzUm9vdENvbmZpZztcbiAgY29uc3QgeyBmbG9hdGluZ0J1dHRvbiwgbG9va0FuZEZlZWwgfSA9IHVpQ29uZmlncyBhcyBhbnk7XG4gIGlmICghZmxvYXRpbmdCdXR0b24gfHwgIWxvb2tBbmRGZWVsKSByZXR1cm4gdjNSb290Q29uZmlnO1xuICBjb25zdCB7IGZvbnRTaXplLCBsaW5lSGVpZ2h0LCBsZXR0ZXJTcGFjaW5nIH0gPSBsb29rQW5kRmVlbC50eXBvZ3JhcGh5IGFzIGFueTtcbiAgcmV0dXJuIHtcbiAgICAuLi52M1Jvb3RDb25maWcsXG4gICAgdWlDb25maWdzOiB7XG4gICAgICAuLi51aUNvbmZpZ3MsXG4gICAgICBmbG9hdGluZ0J1dHRvbjoge1xuICAgICAgICAuLi5mbG9hdGluZ0J1dHRvbixcbiAgICAgICAgcG9zaXRpb246IG1hcFBvc2l0aW9uVG9DYW1lbENhc2UoXG4gICAgICAgICAgdjNSb290Q29uZmlnLnVpQ29uZmlncz8uZmxvYXRpbmdCdXR0b24/LnBvc2l0aW9uIGFzIHN0cmluZyxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgICBsb29rQW5kRmVlbDoge1xuICAgICAgICAuLi5sb29rQW5kRmVlbCxcbiAgICAgICAgY2hhdEhlYWRlckxvZ29EYXJrU3JjOiBsb29rQW5kRmVlbC5jaGF0SGVhZGVyTG9nb0RhcmtTcmMgfHwgbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29TcmMsXG4gICAgICAgIGNoYXRIZWFkZXJMb2dvTGlnaHRTcmM6IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvTGlnaHRTcmMgfHwgbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29TcmMsXG4gICAgICAgIHR5cG9ncmFwaHk6IHtcbiAgICAgICAgICAuLi5sb29rQW5kRmVlbC50eXBvZ3JhcGh5LFxuICAgICAgICAgIGZvbnRTaXplOiB7XG4gICAgICAgICAgICBiMTogZm9udFNpemU/LmIxIHx8IGZvbnRTaXplPy5iXzEsXG4gICAgICAgICAgICBiMjogZm9udFNpemU/LmIyIHx8IGZvbnRTaXplPy5iXzIsXG4gICAgICAgICAgICBiMzogZm9udFNpemU/LmIzIHx8IGZvbnRTaXplPy5iXzMsXG4gICAgICAgICAgICBiNDogZm9udFNpemU/LmI0IHx8IGZvbnRTaXplPy5iXzQsXG4gICAgICAgICAgICBiNTogZm9udFNpemU/LmI1IHx8IGZvbnRTaXplPy5iXzUsXG4gICAgICAgICAgICBoMTogZm9udFNpemU/LmgxIHx8IGZvbnRTaXplPy5oXzEsXG4gICAgICAgICAgICBoMjogZm9udFNpemU/LmgyIHx8IGZvbnRTaXplPy5oXzIsXG4gICAgICAgICAgICBoMzogZm9udFNpemU/LmgzIHx8IGZvbnRTaXplPy5oXzMsXG4gICAgICAgICAgICBsMTogZm9udFNpemU/LmwxIHx8IGZvbnRTaXplPy5sXzEsXG4gICAgICAgICAgICBsMjogZm9udFNpemU/LmwyIHx8IGZvbnRTaXplPy5sXzIsXG4gICAgICAgICAgICB0MTogZm9udFNpemU/LnQxIHx8IGZvbnRTaXplPy50XzEsXG4gICAgICAgICAgICB0MjogZm9udFNpemU/LnQyIHx8IGZvbnRTaXplPy50XzIsXG4gICAgICAgICAgICB0MzogZm9udFNpemU/LnQzIHx8IGZvbnRTaXplPy50XzMsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsZXR0ZXJTcGFjaW5nOiB7XG4gICAgICAgICAgICAuLi5sb29rQW5kRmVlbC50eXBvZ3JhcGh5LmxldHRlclNwYWNpbmcsXG4gICAgICAgICAgICBiMTogbGV0dGVyU3BhY2luZz8uYjEgfHwgbGV0dGVyU3BhY2luZz8uYl8xLFxuICAgICAgICAgICAgYjI6IGxldHRlclNwYWNpbmc/LmIyIHx8IGxldHRlclNwYWNpbmc/LmJfMixcbiAgICAgICAgICAgIGIzOiBsZXR0ZXJTcGFjaW5nPy5iMyB8fCBsZXR0ZXJTcGFjaW5nPy5iXzMsXG4gICAgICAgICAgICBiNDogbGV0dGVyU3BhY2luZz8uYjQgfHwgbGV0dGVyU3BhY2luZz8uYl80LFxuICAgICAgICAgICAgYjU6IGxldHRlclNwYWNpbmc/LmI1IHx8IGxldHRlclNwYWNpbmc/LmJfNSxcbiAgICAgICAgICAgIGgxOiBsZXR0ZXJTcGFjaW5nPy5oMSB8fCBsZXR0ZXJTcGFjaW5nPy5oXzEsXG4gICAgICAgICAgICBoMjogbGV0dGVyU3BhY2luZz8uaDIgfHwgbGV0dGVyU3BhY2luZz8uaF8yLFxuICAgICAgICAgICAgaDM6IGxldHRlclNwYWNpbmc/LmgzIHx8IGxldHRlclNwYWNpbmc/LmhfMyxcbiAgICAgICAgICAgIGwxOiBsZXR0ZXJTcGFjaW5nPy5sMSB8fCBsZXR0ZXJTcGFjaW5nPy5sXzEsXG4gICAgICAgICAgICBsMjogbGV0dGVyU3BhY2luZz8ubDIgfHwgbGV0dGVyU3BhY2luZz8ubF8yLFxuICAgICAgICAgICAgdDE6IGxldHRlclNwYWNpbmc/LnQxIHx8IGxldHRlclNwYWNpbmc/LnRfMSxcbiAgICAgICAgICAgIHQyOiBsZXR0ZXJTcGFjaW5nPy50MiB8fCBsZXR0ZXJTcGFjaW5nPy50XzIsXG4gICAgICAgICAgICB0MzogbGV0dGVyU3BhY2luZz8udDMgfHwgbGV0dGVyU3BhY2luZz8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGluZUhlaWdodDoge1xuICAgICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeS5saW5lSGVpZ2h0LFxuICAgICAgICAgICAgJzExNCc6IGxpbmVIZWlnaHQ/LmxoXzExNCB8fCBsaW5lSGVpZ2h0Py5bMTE0XSxcbiAgICAgICAgICAgICcxMTYnOiBsaW5lSGVpZ2h0Py5saF8xMTYgfHwgbGluZUhlaWdodD8uWzExNl0sXG4gICAgICAgICAgICAnMTE4JzogbGluZUhlaWdodD8ubGhfMTE4IHx8IGxpbmVIZWlnaHQ/LlsxMThdLFxuICAgICAgICAgICAgJzEyMCc6IGxpbmVIZWlnaHQ/LmxoXzEyMCB8fCBsaW5lSGVpZ2h0Py5bMTIwXSxcbiAgICAgICAgICAgICcxMjQnOiBsaW5lSGVpZ2h0Py5saF8xMjQgfHwgbGluZUhlaWdodD8uWzEyNF0sXG4gICAgICAgICAgICAnMTI4JzogbGluZUhlaWdodD8ubGhfMTI4IHx8IGxpbmVIZWlnaHQ/LlsxMjhdLFxuICAgICAgICAgICAgJzEzMCc6IGxpbmVIZWlnaHQ/LmxoXzEzMCB8fCBsaW5lSGVpZ2h0Py5bMTMwXSxcbiAgICAgICAgICAgICcxMzMnOiBsaW5lSGVpZ2h0Py5saF8xMzMgfHwgbGluZUhlaWdodD8uWzEzM10sXG4gICAgICAgICAgICAnMTQwJzogbGluZUhlaWdodD8ubGhfMTQwIHx8IGxpbmVIZWlnaHQ/LlsxNDBdLFxuICAgICAgICAgICAgJzE0OCc6IGxpbmVIZWlnaHQ/LmxoXzE0OCB8fCBsaW5lSGVpZ2h0Py5bMTQ4XSxcbiAgICAgICAgICAgIGIxOiBsaW5lSGVpZ2h0Py5iMSB8fCBsaW5lSGVpZ2h0Py5iXzEsXG4gICAgICAgICAgICBiMjogbGluZUhlaWdodD8uYjIgfHwgbGluZUhlaWdodD8uYl8yLFxuICAgICAgICAgICAgYjM6IGxpbmVIZWlnaHQ/LmIzIHx8IGxpbmVIZWlnaHQ/LmJfMyxcbiAgICAgICAgICAgIGI0OiBsaW5lSGVpZ2h0Py5iNCB8fCBsaW5lSGVpZ2h0Py5iXzQsXG4gICAgICAgICAgICBiNTogbGluZUhlaWdodD8uYjUgfHwgbGluZUhlaWdodD8uYl81LFxuICAgICAgICAgICAgaDE6IGxpbmVIZWlnaHQ/LmgxIHx8IGxpbmVIZWlnaHQ/LmhfMSxcbiAgICAgICAgICAgIGgyOiBsaW5lSGVpZ2h0Py5oMiB8fCBsaW5lSGVpZ2h0Py5oXzIsXG4gICAgICAgICAgICBoMzogbGluZUhlaWdodD8uaDMgfHwgbGluZUhlaWdodD8uaF8zLFxuICAgICAgICAgICAgbDE6IGxpbmVIZWlnaHQ/LmwxIHx8IGxpbmVIZWlnaHQ/LmxfMSxcbiAgICAgICAgICAgIGwyOiBsaW5lSGVpZ2h0Py5sMiB8fCBsaW5lSGVpZ2h0Py5sXzIsXG4gICAgICAgICAgICB0MTogbGluZUhlaWdodD8udDEgfHwgbGluZUhlaWdodD8udF8xLFxuICAgICAgICAgICAgdDI6IGxpbmVIZWlnaHQ/LnQyIHx8IGxpbmVIZWlnaHQ/LnRfMixcbiAgICAgICAgICAgIHQzOiBsaW5lSGVpZ2h0Py50MyB8fCBsaW5lSGVpZ2h0Py50XzMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBmZXRjaEdyYXBoUUxDb25maWcgPSBhc3luYyAoXG4gIGJhc2VVcmw6IHN0cmluZyxcbiAgYXBpS2V5OiBzdHJpbmcsXG4pOiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBxdWVyeSA9IGdldENvbG9yc0FuZEZyb250ZW5kUXVlcnkoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2Jhc2VVcmx9L3YxL2dyYXBocWxgLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FwaUtleX1gLFxuICAgICAgfSxcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcXVlcnkgfSksXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgcmVxdWVzdCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0LmVycm9ycyl9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgdjNSb290Q29uZmlnID0gcmVzdWx0LmRhdGEubWUuZ2V0UHJvZHVjdHNDb25maWdCeVZlcnNpb24/LnZfdGhyZWVfY29uZmlnPy52YWx1ZXM7XG4gICAgY29uc3QgZnJvbnRlbmRWYWx1ZXMgPSByZXN1bHQuZGF0YS5tZS5nZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbj8uZnJvbnRlbmQ/LnZhbHVlcztcblxuICAgIGlmICghdjNSb290Q29uZmlnPy5jb2xvcnMpIHtcbiAgICAgIGxvZ2dlci5sb2dEZWJ1ZygnZmV0Y2hHcmFwaFFMQ29uZmlnIHwgTm8gY29sb3JzIGZvdW5kLCByZXR1cm5pbmcgbW9jayBjb25maWcnKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yc0NvbmZpZzogbW9ja1YzQ29sb3JzQ29uZmlnLFxuICAgICAgICBmcm9udGVuZENvbmZpZzogbW9ja1YzRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgICBvcmdQYWdlQ29uZmlnOiB7XG4gICAgICAgICAgcGFnZVZhcmlhbnRzOiBERUZBVUxUX1BBR0VfVkFSSUFOVFMsXG4gICAgICAgICAgd2lkZ2V0Q29uZmlnczoge30sXG4gICAgICAgICAgbW91bnRpbmdDb25maWdzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgdjNGcm9udGVuZENvbmZpZyA9IHYzRnJvbnRlbmRDb25maWdDbGVhbnVwKFxuICAgICAgdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZykgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICk7XG5cbiAgICBjb25zdCBtZXJjaGFudE92ZXJyaWRlQ3NzID1cbiAgICAgIHYzRnJvbnRlbmRDb25maWcudWlDb25maWdzPy5tZXJjaGFudE92ZXJyaWRlQ3NzIHx8IGZyb250ZW5kVmFsdWVzPy5tZXJjaGFudF9vdmVycmlkZV9jc3M7XG5cbiAgICBjb25zdCB2M01vdW50aW5nQ29uZmlnc0FycmF5ID0gKHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWc/Lm1vdW50aW5nX2NvbmZpZ3MpID8/XG4gICAgICBbXSkgYXMgdW5rbm93biBhcyB7IGtleTogc3RyaW5nOyBjb25maWc6IFdpZGdldE1vdW50aW5nQ29uZmlnIH1bXTtcbiAgICBjb25zdCB2M01vdW50aW5nQ29uZmlncyA9IHYzTW91bnRpbmdDb25maWdzQXJyYXkucmVkdWNlKFxuICAgICAgKGFjYywgeyBrZXksIGNvbmZpZyB9KSA9PiB7XG4gICAgICAgIGFjY1trZXldID0gdmFsaWRhdGVBbmRUcmFuc2Zvcm1Nb3VudGluZ0NvbmZpZyhjb25maWcsIGtleSk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgV2lkZ2V0TW91bnRpbmdDb25maWc+LFxuICAgICk7XG5cbiAgICBjb25zdCB2M3dpZGdldENvbmZpZ3NBcnJheSA9ICh0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnPy53aWRnZXRfY29uZmlncykgPz9cbiAgICAgIFtdKSBhcyB1bmtub3duIGFzIFdpZGdldENvbmZpZ1YzW107XG4gICAgY29uc3QgdjNXaWRnZXRDb25maWdzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgdjN3aWRnZXRDb25maWdzQXJyYXk/Lm1hcCgoeyB3aWRnZXRDb25maWdJZCwgLi4ucmVzdCB9OiBXaWRnZXRDb25maWdWMykgPT4gW1xuICAgICAgICB3aWRnZXRDb25maWdJZCxcbiAgICAgICAgeyB3aWRnZXRDb25maWdJZCwgLi4ucmVzdCB9IGFzIFdpZGdldENvbmZpZ1YzLFxuICAgICAgXSksXG4gICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRDb25maWdWMz47XG5cbiAgICBjb25zdCB2M3BhZ2VWYXJpYW50czogUGFnZVZhcmlhbnRDb25maWdbXSA9IEFycmF5LmlzQXJyYXkodjNSb290Q29uZmlnPy5wYWdlX3ZhcmlhbnRzKVxuICAgICAgPyB2M1Jvb3RDb25maWcucGFnZV92YXJpYW50cy5tYXAodmFsaWRhdGVBbmRUcmFuc2Zvcm1QYWdlVmFyaWFudHMpXG4gICAgICA6IERFRkFVTFRfUEFHRV9WQVJJQU5UUztcblxuICAgIGNvbnN0IHYzQ29sb3JzQ29uZmlnID0gdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8uY29sb3JzPy52YWx1ZXMpO1xuXG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCdmZXRjaEdyYXBoUUxDb25maWcgfCBSZXR1cm5pbmcgdjMgY29uZmlnJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3JzQ29uZmlnOiB2M0NvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgZnJvbnRlbmRDb25maWc6IHtcbiAgICAgICAgLi4uKHYzRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlKSxcbiAgICAgICAgbWVyY2hhbnRPdmVycmlkZUNzcyxcbiAgICAgICAgd2lkZ2V0Q29uZmlnczogdjNXaWRnZXRDb25maWdzLFxuICAgICAgfSxcbiAgICAgIG9yZ1BhZ2VDb25maWc6IHtcbiAgICAgICAgcGFnZVZhcmlhbnRzOiB2M3BhZ2VWYXJpYW50cyxcbiAgICAgICAgd2lkZ2V0Q29uZmlnczogdjNXaWRnZXRDb25maWdzLFxuICAgICAgICBtb3VudGluZ0NvbmZpZ3M6IHYzTW91bnRpbmdDb25maWdzLFxuICAgICAgfSxcbiAgICB9O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIubG9nRXJyb3IoJ2ZldGNoR3JhcGhRTENvbmZpZyB8IEVycm9yIGZldGNoaW5nIEdyYXBoUUwgY29uZmlnJywgZXJyKTtcbiAgICByZXR1cm4geyBjb2xvcnNDb25maWc6IHVuZGVmaW5lZCwgZnJvbnRlbmRDb25maWc6IHVuZGVmaW5lZCB9O1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBZ0JBLE1BQU0sU0FBUyxJQUFJQSxlQUFPLHFCQUFxQjtBQUsvQyxNQUFhQyx3QkFBNkMsQ0FDeEQ7Q0FDRSxXQUFXO0NBQ1gsYUFBYTtDQUNiLGdCQUFnQjtDQUNoQixnQkFBZ0IsRUFBRTtDQUNsQixjQUFjLENBQUMsRUFBRSxVQUFVLG9CQUFvQixhQUFhLENBQUM7Q0FDOUQsRUFDRDtDQUNFLFdBQVc7Q0FDWCxhQUFhO0NBQ2Isb0JBQW9CO0NBQ3BCLGdCQUFnQixFQUFFO0NBQ2xCLGNBQWMsQ0FBQyxFQUFFLFVBQVUsb0JBQW9CLGFBQWEsQ0FBQztDQUM5RCxDQUNGO0FBRUQsTUFBTSwwQkFBMEIsYUFBNkM7QUFDM0UsS0FBSSxhQUFhLGNBQWUsUUFBTyx1QkFBdUI7QUFDOUQsS0FBSSxhQUFhLGNBQWUsUUFBTyx1QkFBdUI7QUFDOUQsS0FBSSxhQUFhLGVB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
217
+ export { fetchGraphQLConfig, fetchUnifiedGraphQLConfig };
218
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2hHcmFwaFFMQ29uZmlnLmpzIiwibmFtZXMiOlsiTG9nZ2VyIiwiREVGQVVMVF9QQUdFX1ZBUklBTlRTOiBQYWdlVmFyaWFudENvbmZpZ1tdIiwidjNwYWdlVmFyaWFudHM6IFBhZ2VWYXJpYW50Q29uZmlnW10iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZS9mZXRjaEdyYXBoUUxDb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtcbiAgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwLFxuICB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWcsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzLFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEZyb250ZW5kQ29uZmlnVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2Zyb250ZW5kQ29uZmlnVjMnO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1YzJztcbmltcG9ydCB7IEZsb2F0aW5nQnV0dG9uTG9jYXRpb24gfSBmcm9tICdAZW52aXZlLWFpL3JlYWN0LXRvb2xraXQtdjMvRmxvYXRpbmdCdXR0b24nO1xuaW1wb3J0IHsgZ2V0Q29sb3JzQW5kRnJvbnRlbmRRdWVyeSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldENvbG9yc0FuZEZyb250ZW5kUXVlcnknO1xuaW1wb3J0IHsgZ2V0V2lkZ2V0Q29uZmlnUXVlcnkgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRXaWRnZXRDb25maWdRdWVyeSc7XG5pbXBvcnQgeyBtb2NrVjNDb2xvcnNDb25maWcsIG1vY2tWM0Zyb250ZW5kQ29uZmlnIH0gZnJvbSAnc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0L21vY2tWM0NvbmZpZyc7XG5pbXBvcnQgeyBXaWRnZXRDb25maWdWMyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlc1YzJztcbmltcG9ydCB7IFBhZ2VWYXJpYW50Q29uZmlnLCBQYWdlVmFyaWFudFRlc3RUeXBlLCBXaWRnZXRNb3VudGluZ0NvbmZpZyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlcyc7XG5pbXBvcnQgeyBHcmFwaFFsQ29uZmlnVmFsdWVzIH0gZnJvbSAnc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0JztcbmltcG9ydCB7IGNvbmZpZ1ZlcnNpb25PdmVycmlkZSB9IGZyb20gJ3NyYy90eXBlcy9jb25maWctdmVyc2lvbnMnO1xuaW1wb3J0IHsgRXhwZXJpbWVudENvbmZpZ1Jlc29sdXRpb25NZXRhZGF0YSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL29yZ0NvbmZpZ1Jlc3VsdHMnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdmZXRjaEdyYXBoUUxDb25maWcnKTtcblxudHlwZSBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8RnJvbnRlbmRDb25maWdWMz47XG50eXBlIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8Q29sb3JNYXBwaW5nVjM+O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QQUdFX1ZBUklBTlRTOiBQYWdlVmFyaWFudENvbmZpZ1tdID0gW1xuICB7XG4gICAgdmFyaWFudElkOiAncGxwJyxcbiAgICB2YXJpYW50VHlwZTogJ3BscCcsXG4gICAgcGxwSWRFeHRyYWN0b3I6ICd1cmwtcmVzb2x2ZXItcGxwLWlkJyxcbiAgICB3aWRnZXRNb3VudGluZzogW10sXG4gICAgdmFyaWFudFRlc3RzOiBbeyB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlciB9XSxcbiAgfSxcbiAge1xuICAgIHZhcmlhbnRJZDogJ3BkcCcsXG4gICAgdmFyaWFudFR5cGU6ICdwZHAnLFxuICAgIHByb2R1Y3RJZEV4dHJhY3RvcjogJ3VybC1yZXNvbHZlci1wcm9kdWN0LWlkJyxcbiAgICB3aWRnZXRNb3VudGluZzogW10sXG4gICAgdmFyaWFudFRlc3RzOiBbeyB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlciB9XSxcbiAgfSxcbl07XG5cbmNvbnN0IG1hcFBvc2l0aW9uVG9DYW1lbENhc2UgPSAocG9zaXRpb246IHN0cmluZyk6IEZsb2F0aW5nQnV0dG9uTG9jYXRpb24gPT4ge1xuICBpZiAocG9zaXRpb24gPT09ICdib3R0b20tbGVmdCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLkJPVFRPTV9MRUZUO1xuICBpZiAocG9zaXRpb24gPT09ICdtaWRkbGUtbGVmdCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLk1JRERMRV9MRUZUO1xuICBpZiAocG9zaXRpb24gPT09ICdtaWRkbGUtcmlnaHQnKSByZXR1cm4gRmxvYXRpbmdCdXR0b25Mb2NhdGlvbi5NSURETEVfUklHSFQ7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbS1yaWdodCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLkJPVFRPTV9SSUdIVDtcbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBvc2l0aW9uOiAke3Bvc2l0aW9ufWApO1xufTtcblxuY29uc3QgdjNGcm9udGVuZENvbmZpZ0NsZWFudXAgPSAoXG4gIHYzUm9vdENvbmZpZzogRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuKTogRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlID0+IHtcbiAgY29uc3QgeyB1aUNvbmZpZ3MgfSA9IHYzUm9vdENvbmZpZztcbiAgaWYgKCF1aUNvbmZpZ3MpIHJldHVybiB2M1Jvb3RDb25maWc7XG4gIGNvbnN0IHsgZmxvYXRpbmdCdXR0b24sIGxvb2tBbmRGZWVsIH0gPSB1aUNvbmZpZ3MgYXMgYW55O1xuICBpZiAoIWZsb2F0aW5nQnV0dG9uIHx8ICFsb29rQW5kRmVlbCkgcmV0dXJuIHYzUm9vdENvbmZpZztcbiAgY29uc3QgeyBmb250U2l6ZSwgbGluZUhlaWdodCwgbGV0dGVyU3BhY2luZyB9ID0gbG9va0FuZEZlZWwudHlwb2dyYXBoeSBhcyBhbnk7XG4gIHJldHVybiB7XG4gICAgLi4udjNSb290Q29uZmlnLFxuICAgIHVpQ29uZmlnczoge1xuICAgICAgLi4udWlDb25maWdzLFxuICAgICAgZmxvYXRpbmdCdXR0b246IHtcbiAgICAgICAgLi4uZmxvYXRpbmdCdXR0b24sXG4gICAgICAgIHBvc2l0aW9uOiBtYXBQb3NpdGlvblRvQ2FtZWxDYXNlKFxuICAgICAgICAgIHYzUm9vdENvbmZpZy51aUNvbmZpZ3M/LmZsb2F0aW5nQnV0dG9uPy5wb3NpdGlvbiBhcyBzdHJpbmcsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgbG9va0FuZEZlZWw6IHtcbiAgICAgICAgLi4ubG9va0FuZEZlZWwsXG4gICAgICAgIGNoYXRIZWFkZXJMb2dvRGFya1NyYzogbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29EYXJrU3JjIHx8IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvU3JjLFxuICAgICAgICBjaGF0SGVhZGVyTG9nb0xpZ2h0U3JjOiBsb29rQW5kRmVlbC5jaGF0SGVhZGVyTG9nb0xpZ2h0U3JjIHx8IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvU3JjLFxuICAgICAgICB0eXBvZ3JhcGh5OiB7XG4gICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeSxcbiAgICAgICAgICBmb250U2l6ZToge1xuICAgICAgICAgICAgYjE6IGZvbnRTaXplPy5iMSB8fCBmb250U2l6ZT8uYl8xLFxuICAgICAgICAgICAgYjI6IGZvbnRTaXplPy5iMiB8fCBmb250U2l6ZT8uYl8yLFxuICAgICAgICAgICAgYjM6IGZvbnRTaXplPy5iMyB8fCBmb250U2l6ZT8uYl8zLFxuICAgICAgICAgICAgYjQ6IGZvbnRTaXplPy5iNCB8fCBmb250U2l6ZT8uYl80LFxuICAgICAgICAgICAgYjU6IGZvbnRTaXplPy5iNSB8fCBmb250U2l6ZT8uYl81LFxuICAgICAgICAgICAgaDE6IGZvbnRTaXplPy5oMSB8fCBmb250U2l6ZT8uaF8xLFxuICAgICAgICAgICAgaDI6IGZvbnRTaXplPy5oMiB8fCBmb250U2l6ZT8uaF8yLFxuICAgICAgICAgICAgaDM6IGZvbnRTaXplPy5oMyB8fCBmb250U2l6ZT8uaF8zLFxuICAgICAgICAgICAgbDE6IGZvbnRTaXplPy5sMSB8fCBmb250U2l6ZT8ubF8xLFxuICAgICAgICAgICAgbDI6IGZvbnRTaXplPy5sMiB8fCBmb250U2l6ZT8ubF8yLFxuICAgICAgICAgICAgdDE6IGZvbnRTaXplPy50MSB8fCBmb250U2l6ZT8udF8xLFxuICAgICAgICAgICAgdDI6IGZvbnRTaXplPy50MiB8fCBmb250U2l6ZT8udF8yLFxuICAgICAgICAgICAgdDM6IGZvbnRTaXplPy50MyB8fCBmb250U2l6ZT8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGV0dGVyU3BhY2luZzoge1xuICAgICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeS5sZXR0ZXJTcGFjaW5nLFxuICAgICAgICAgICAgYjE6IGxldHRlclNwYWNpbmc/LmIxIHx8IGxldHRlclNwYWNpbmc/LmJfMSxcbiAgICAgICAgICAgIGIyOiBsZXR0ZXJTcGFjaW5nPy5iMiB8fCBsZXR0ZXJTcGFjaW5nPy5iXzIsXG4gICAgICAgICAgICBiMzogbGV0dGVyU3BhY2luZz8uYjMgfHwgbGV0dGVyU3BhY2luZz8uYl8zLFxuICAgICAgICAgICAgYjQ6IGxldHRlclNwYWNpbmc/LmI0IHx8IGxldHRlclNwYWNpbmc/LmJfNCxcbiAgICAgICAgICAgIGI1OiBsZXR0ZXJTcGFjaW5nPy5iNSB8fCBsZXR0ZXJTcGFjaW5nPy5iXzUsXG4gICAgICAgICAgICBoMTogbGV0dGVyU3BhY2luZz8uaDEgfHwgbGV0dGVyU3BhY2luZz8uaF8xLFxuICAgICAgICAgICAgaDI6IGxldHRlclNwYWNpbmc/LmgyIHx8IGxldHRlclNwYWNpbmc/LmhfMixcbiAgICAgICAgICAgIGgzOiBsZXR0ZXJTcGFjaW5nPy5oMyB8fCBsZXR0ZXJTcGFjaW5nPy5oXzMsXG4gICAgICAgICAgICBsMTogbGV0dGVyU3BhY2luZz8ubDEgfHwgbGV0dGVyU3BhY2luZz8ubF8xLFxuICAgICAgICAgICAgbDI6IGxldHRlclNwYWNpbmc/LmwyIHx8IGxldHRlclNwYWNpbmc/LmxfMixcbiAgICAgICAgICAgIHQxOiBsZXR0ZXJTcGFjaW5nPy50MSB8fCBsZXR0ZXJTcGFjaW5nPy50XzEsXG4gICAgICAgICAgICB0MjogbGV0dGVyU3BhY2luZz8udDIgfHwgbGV0dGVyU3BhY2luZz8udF8yLFxuICAgICAgICAgICAgdDM6IGxldHRlclNwYWNpbmc/LnQzIHx8IGxldHRlclNwYWNpbmc/LnRfMyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IHtcbiAgICAgICAgICAgIC4uLmxvb2tBbmRGZWVsLnR5cG9ncmFwaHkubGluZUhlaWdodCxcbiAgICAgICAgICAgICcxMTQnOiBsaW5lSGVpZ2h0Py5saF8xMTQgfHwgbGluZUhlaWdodD8uWzExNF0sXG4gICAgICAgICAgICAnMTE2JzogbGluZUhlaWdodD8ubGhfMTE2IHx8IGxpbmVIZWlnaHQ/LlsxMTZdLFxuICAgICAgICAgICAgJzExOCc6IGxpbmVIZWlnaHQ/LmxoXzExOCB8fCBsaW5lSGVpZ2h0Py5bMTE4XSxcbiAgICAgICAgICAgICcxMjAnOiBsaW5lSGVpZ2h0Py5saF8xMjAgfHwgbGluZUhlaWdodD8uWzEyMF0sXG4gICAgICAgICAgICAnMTI0JzogbGluZUhlaWdodD8ubGhfMTI0IHx8IGxpbmVIZWlnaHQ/LlsxMjRdLFxuICAgICAgICAgICAgJzEyOCc6IGxpbmVIZWlnaHQ/LmxoXzEyOCB8fCBsaW5lSGVpZ2h0Py5bMTI4XSxcbiAgICAgICAgICAgICcxMzAnOiBsaW5lSGVpZ2h0Py5saF8xMzAgfHwgbGluZUhlaWdodD8uWzEzMF0sXG4gICAgICAgICAgICAnMTMzJzogbGluZUhlaWdodD8ubGhfMTMzIHx8IGxpbmVIZWlnaHQ/LlsxMzNdLFxuICAgICAgICAgICAgJzE0MCc6IGxpbmVIZWlnaHQ/LmxoXzE0MCB8fCBsaW5lSGVpZ2h0Py5bMTQwXSxcbiAgICAgICAgICAgICcxNDgnOiBsaW5lSGVpZ2h0Py5saF8xNDggfHwgbGluZUhlaWdodD8uWzE0OF0sXG4gICAgICAgICAgICBiMTogbGluZUhlaWdodD8uYjEgfHwgbGluZUhlaWdodD8uYl8xLFxuICAgICAgICAgICAgYjI6IGxpbmVIZWlnaHQ/LmIyIHx8IGxpbmVIZWlnaHQ/LmJfMixcbiAgICAgICAgICAgIGIzOiBsaW5lSGVpZ2h0Py5iMyB8fCBsaW5lSGVpZ2h0Py5iXzMsXG4gICAgICAgICAgICBiNDogbGluZUhlaWdodD8uYjQgfHwgbGluZUhlaWdodD8uYl80LFxuICAgICAgICAgICAgYjU6IGxpbmVIZWlnaHQ/LmI1IHx8IGxpbmVIZWlnaHQ/LmJfNSxcbiAgICAgICAgICAgIGgxOiBsaW5lSGVpZ2h0Py5oMSB8fCBsaW5lSGVpZ2h0Py5oXzEsXG4gICAgICAgICAgICBoMjogbGluZUhlaWdodD8uaDIgfHwgbGluZUhlaWdodD8uaF8yLFxuICAgICAgICAgICAgaDM6IGxpbmVIZWlnaHQ/LmgzIHx8IGxpbmVIZWlnaHQ/LmhfMyxcbiAgICAgICAgICAgIGwxOiBsaW5lSGVpZ2h0Py5sMSB8fCBsaW5lSGVpZ2h0Py5sXzEsXG4gICAgICAgICAgICBsMjogbGluZUhlaWdodD8ubDIgfHwgbGluZUhlaWdodD8ubF8yLFxuICAgICAgICAgICAgdDE6IGxpbmVIZWlnaHQ/LnQxIHx8IGxpbmVIZWlnaHQ/LnRfMSxcbiAgICAgICAgICAgIHQyOiBsaW5lSGVpZ2h0Py50MiB8fCBsaW5lSGVpZ2h0Py50XzIsXG4gICAgICAgICAgICB0MzogbGluZUhlaWdodD8udDMgfHwgbGluZUhlaWdodD8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59O1xuXG4vLyBUdXJucyBhIHJhdyBwcm9kdWN0c0NvbmZpZyBwYXlsb2FkIChmcm9tIGdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uIG9yXG4vLyBnZXRXaWRnZXRDb25maWcpIGludG8gdGhlIGNhbWVsQ2FzZSBHcmFwaFFsQ29uZmlnVmFsdWVzIHNoYXBlIHRoZSByZXN0IG9mXG4vLyB0aGUgdG9vbGtpdCBjb25zdW1lcy4gUmV0dXJucyBtb2NrIGNvbmZpZyB3aGVuIGNvbG9ycyBhcmUgYWJzZW50LlxuY29uc3QgdHJhbnNmb3JtVjNQcm9kdWN0c0NvbmZpZyA9IChcbiAgcHJvZHVjdHNDb25maWc6XG4gICAgfCB7XG4gICAgICAgIGZyb250ZW5kPzogeyB2YWx1ZXM/OiB7IG1lcmNoYW50X292ZXJyaWRlX2Nzcz86IHN0cmluZyB9IH07XG4gICAgICAgIHZfdGhyZWVfY29uZmlnPzogeyB2YWx1ZXM/OiBhbnkgfTtcbiAgICAgIH1cbiAgICB8IHVuZGVmaW5lZCxcbik6IEdyYXBoUWxDb25maWdWYWx1ZXMgPT4ge1xuICBjb25zdCB2M1Jvb3RDb25maWcgPSBwcm9kdWN0c0NvbmZpZz8udl90aHJlZV9jb25maWc/LnZhbHVlcztcbiAgY29uc3QgZnJvbnRlbmRWYWx1ZXMgPSBwcm9kdWN0c0NvbmZpZz8uZnJvbnRlbmQ/LnZhbHVlcztcblxuICBpZiAoIXYzUm9vdENvbmZpZz8uY29sb3JzKSB7XG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCd0cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnIHwgTm8gY29sb3JzIGZvdW5kLCByZXR1cm5pbmcgbW9jayBjb25maWcnKTtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3JzQ29uZmlnOiBtb2NrVjNDb2xvcnNDb25maWcsXG4gICAgICBmcm9udGVuZENvbmZpZzogbW9ja1YzRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgb3JnUGFnZUNvbmZpZzoge1xuICAgICAgICBwYWdlVmFyaWFudHM6IERFRkFVTFRfUEFHRV9WQVJJQU5UUyxcbiAgICAgICAgd2lkZ2V0Q29uZmlnczoge30sXG4gICAgICAgIG1vdW50aW5nQ29uZmlnczoge30sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdCB2M0Zyb250ZW5kQ29uZmlnID0gdjNGcm9udGVuZENvbmZpZ0NsZWFudXAoXG4gICAgdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZykgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICApO1xuXG4gIGNvbnN0IG1lcmNoYW50T3ZlcnJpZGVDc3MgPVxuICAgIHYzRnJvbnRlbmRDb25maWcudWlDb25maWdzPy5tZXJjaGFudE92ZXJyaWRlQ3NzIHx8IGZyb250ZW5kVmFsdWVzPy5tZXJjaGFudF9vdmVycmlkZV9jc3M7XG5cbiAgY29uc3QgdjNNb3VudGluZ0NvbmZpZ3NBcnJheSA9ICh0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnPy5tb3VudGluZ19jb25maWdzKSA/P1xuICAgIFtdKSBhcyB1bmtub3duIGFzIHsga2V5OiBzdHJpbmc7IGNvbmZpZzogV2lkZ2V0TW91bnRpbmdDb25maWcgfVtdO1xuICBjb25zdCB2M01vdW50aW5nQ29uZmlncyA9IHYzTW91bnRpbmdDb25maWdzQXJyYXkucmVkdWNlKFxuICAgIChhY2MsIHsga2V5LCBjb25maWcgfSkgPT4ge1xuICAgICAgYWNjW2tleV0gPSB2YWxpZGF0ZUFuZFRyYW5zZm9ybU1vdW50aW5nQ29uZmlnKGNvbmZpZywga2V5KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRNb3VudGluZ0NvbmZpZz4sXG4gICk7XG5cbiAgY29uc3QgdjNXaWRnZXRDb25maWdzQXJyYXkgPSAodHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8ud2lkZ2V0X2NvbmZpZ3MpID8/XG4gICAgW10pIGFzIHVua25vd24gYXMgV2lkZ2V0Q29uZmlnVjNbXTtcbiAgY29uc3QgdjNXaWRnZXRDb25maWdzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIHYzV2lkZ2V0Q29uZmlnc0FycmF5Py5tYXAoKHsgd2lkZ2V0Q29uZmlnSWQsIC4uLnJlc3QgfTogV2lkZ2V0Q29uZmlnVjMpID0+IFtcbiAgICAgIHdpZGdldENvbmZpZ0lkLFxuICAgICAgeyB3aWRnZXRDb25maWdJZCwgLi4ucmVzdCB9IGFzIFdpZGdldENvbmZpZ1YzLFxuICAgIF0pLFxuICApIGFzIFJlY29yZDxzdHJpbmcsIFdpZGdldENvbmZpZ1YzPjtcblxuICBjb25zdCB2M3BhZ2VWYXJpYW50czogUGFnZVZhcmlhbnRDb25maWdbXSA9IEFycmF5LmlzQXJyYXkodjNSb290Q29uZmlnPy5wYWdlX3ZhcmlhbnRzKVxuICAgID8gdjNSb290Q29uZmlnLnBhZ2VfdmFyaWFudHMubWFwKHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzKVxuICAgIDogREVGQVVMVF9QQUdFX1ZBUklBTlRTO1xuXG4gIGNvbnN0IHYzQ29sb3JzQ29uZmlnID0gdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8uY29sb3JzPy52YWx1ZXMpO1xuXG4gIHJldHVybiB7XG4gICAgY29sb3JzQ29uZmlnOiB2M0NvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlLFxuICAgIGZyb250ZW5kQ29uZmlnOiB7XG4gICAgICAuLi4odjNGcm9udGVuZENvbmZpZyBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UpLFxuICAgICAgbWVyY2hhbnRPdmVycmlkZUNzcyxcbiAgICAgIHdpZGdldENvbmZpZ3M6IHYzV2lkZ2V0Q29uZmlncyxcbiAgICB9LFxuICAgIG9yZ1BhZ2VDb25maWc6IHtcbiAgICAgIHBhZ2VWYXJpYW50czogdjNwYWdlVmFyaWFudHMsXG4gICAgICB3aWRnZXRDb25maWdzOiB2M1dpZGdldENvbmZpZ3MsXG4gICAgICBtb3VudGluZ0NvbmZpZ3M6IHYzTW91bnRpbmdDb25maWdzLFxuICAgIH0sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hHcmFwaFFMQ29uZmlnID0gYXN5bmMgKFxuICBiYXNlVXJsOiBzdHJpbmcsXG4gIGFwaUtleTogc3RyaW5nLFxuKTogUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPiA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcXVlcnkgPSBnZXRDb2xvcnNBbmRGcm9udGVuZFF1ZXJ5KCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS92MS9ncmFwaHFsYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthcGlLZXl9YCxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHF1ZXJ5IH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIHJlcXVlc3QgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIGlmIChyZXN1bHQuZXJyb3JzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgZXJyb3JzOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdC5lcnJvcnMpfWApO1xuICAgIH1cblxuICAgIGxvZ2dlci5sb2dEZWJ1ZygnZmV0Y2hHcmFwaFFMQ29uZmlnIHwgUmV0dXJuaW5nIHYzIGNvbmZpZycpO1xuICAgIHJldHVybiB0cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnKHJlc3VsdC5kYXRhLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmxvZ0Vycm9yKCdmZXRjaEdyYXBoUUxDb25maWcgfCBFcnJvciBmZXRjaGluZyBHcmFwaFFMIGNvbmZpZycsIGVycik7XG4gICAgcmV0dXJuIHsgY29sb3JzQ29uZmlnOiB1bmRlZmluZWQsIGZyb250ZW5kQ29uZmlnOiB1bmRlZmluZWQgfTtcbiAgfVxufTtcblxuLy8gU3RhdHNpZy1leHBlcmltZW50LWF3YXJlIHVuaWZpZWQgY29uZmlnIHBhdGguIENhbGxlZCB3aGVuIHRoZVxuLy8gYHVzZV91bmlmaWVkX2NvbmZpZ2AgU3RhdHNpZyBnYXRlIGlzIG9uLiBSZXR1cm5zIHRoZSBzYW1lIHNoYXBlIGFzXG4vLyBmZXRjaEdyYXBoUUxDb25maWcgd2l0aCB0aGUgcmVzb2x1dGlvbiBtZXRhZGF0YSBweW1vbm8gdXNlZCB0byBwaWNrIHRoZVxuLy8gdmVyc2lvbiBhdHRhY2hlZCDigJQgY2FsbGVycyB0aHJlYWQgYHJlc29sdXRpb24uYmFzZVZlcnNpb25gIGludG8gZG93bnN0cmVhbVxuLy8gaW5mZXJlbmNlIHJlcXVlc3RzIHNvIGluZmVyZW5jZSBpcyBzY29wZWQgdG8gdGhlIHZlcnNpb24gdGhhdCBwcm9kdWNlZFxuLy8gdGhlIHdpZGdldHMgdGhlIHVzZXIgaXMgcmVuZGVyaW5nLiBBIGBzcGlmZnlfY29uZmlnX3ZlcnNpb25gIC9cbi8vIGBlbnZpdmVfY29uZmlnX3ZlcnNpb25gIFVSTCBwYXJhbSwgd2hlbiBwcmVzZW50LCBpcyB0aHJlYWRlZCB0aHJvdWdoIGFzXG4vLyB0aGUgYHZlcnNpb25gIHZhcmlhYmxlIHRvIHBpbiBhIHNwZWNpZmljIGNvbmZpZyB2ZXJzaW9uIChtYXRjaGVzIHRoZVxuLy8gbGVnYWN5IHBhdGgncyBkZWJ1Zy9yb2xsYmFjayBhZmZvcmRhbmNlKS5cbmV4cG9ydCBjb25zdCBmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnID0gYXN5bmMgKFxuICBiYXNlVXJsOiBzdHJpbmcsXG4gIGFwaUtleTogc3RyaW5nLFxuICB1c2VySWQ6IHN0cmluZyxcbik6IFByb21pc2U8R3JhcGhRbENvbmZpZ1ZhbHVlcz4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gZ2V0V2lkZ2V0Q29uZmlnUXVlcnkoKTtcbiAgICBjb25zdCB2ZXJzaW9uID0gY29uZmlnVmVyc2lvbk92ZXJyaWRlKCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS92MS9ncmFwaHFsYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthcGlLZXl9YCxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHF1ZXJ5LCB2YXJpYWJsZXM6IHsgdXNlcklkLCB2ZXJzaW9uIH0gfSksXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgcmVxdWVzdCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0LmVycm9ycyl9YCk7XG4gICAgfVxuXG4gICAgY29uc3Qgd2lkZ2V0Q29uZmlnID0gcmVzdWx0LmRhdGEubWUuZ2V0V2lkZ2V0Q29uZmlnO1xuICAgIHJldHVybiB7XG4gICAgICAuLi50cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnKHdpZGdldENvbmZpZz8ucHJvZHVjdHNDb25maWcpLFxuICAgICAgcmVzb2x1dGlvbjogd2lkZ2V0Q29uZmlnPy5yZXNvbHV0aW9uIGFzIEV4cGVyaW1lbnRDb25maWdSZXNvbHV0aW9uTWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmxvZ0Vycm9yKCdmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnIHwgRXJyb3IgZmV0Y2hpbmcgdW5pZmllZCBHcmFwaFFMIGNvbmZpZycsIGVycik7XG4gICAgcmV0dXJuIHsgY29sb3JzQ29uZmlnOiB1bmRlZmluZWQsIGZyb250ZW5kQ29uZmlnOiB1bmRlZmluZWQgfTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBbUJBLE1BQU0sU0FBUyxJQUFJQSxlQUFPLHFCQUFxQjtBQUsvQyxNQUFhQyx3QkFBNkMsQ0FDeEQ7Q0FDRSxXQUFXO0NBQ1gsYUFBYTtDQUNiLGdCQUFnQjtDQUNoQixnQkFBZ0IsRUFBRTtDQUNsQixjQUFjLENBQUMsRUFBRSxVQUFVLG9CQUFvQixhQUFhLENBQUM7Q0FDOUQsRUFDRDtDQUNFLFdBQVc7Q0FDWCxhQUFhO0NBQ2Isb0JBQW9CO0NBQ3BCLGdCQUFnQixFQUFFO0NBQ2xCLGNBQWMsQ0FBQyxFQUFFLFVBQVUsb0JBQW9CLGFBQWEsQ0FBQztDQUM5RCxDQUNGO0FBRUQsTUFBTSwwQkFBMEIsYUFBNkM7QUFDM0UsS0FBSSxhQUFhLGNBQWUsUUFBTyx1QkFBdUI7QUFDOUQsS0FBSSxhQUFhLGNBQWUsUUFBTyx1QkFBdUI7QUFDOUQsS0FBSSxhQUFhLGVBQWdCLFFBQU8sdUJBQXVCO0FBQy9ELEtBQUksYUFBYSxlQUFnQixRQUFPLHVCQUF1QjtBQUMvRCxPQUFNLElBQUksTUFBTSxxQkFBcUIsV0FBVzs7QUFHbEQsTUFBTSwyQkFDSixpQkFDNkI7Q0FDN0IsTUFBTSxFQUFFLGNBQWM7QUFDdEIsS0FBSSxDQUFDLFVBQVcsUUFBTztDQUN2QixNQUFNLEVBQUUsZ0JBQWdCLGdCQUFn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
@@ -25,10 +25,10 @@ const flattenDotKeys = (obj) => {
25
25
  return result;
26
26
  };
27
27
  const sanitizePageId = (filtered) => {
28
- const pageType = filtered["page_type"] ?? filtered["context.page_type"];
28
+ const pageType = filtered.page_type ?? filtered["context.page_type"];
29
29
  if (pageType === "pdp" || pageType === "plp") return filtered;
30
30
  const rest = { ...filtered };
31
- delete rest["page_id"];
31
+ delete rest.page_id;
32
32
  delete rest["context.page_id"];
33
33
  return rest;
34
34
  };
@@ -95,4 +95,4 @@ const projectToGA4 = (eventName, eventProps) => {
95
95
 
96
96
  //#endregion
97
97
  exports.projectToGA4 = projectToGA4;
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0UHJvamVjdGlvblNlcnZpY2UuY2pzIiwibmFtZXMiOlsiTG9nZ2VyIiwicmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiIsImN1cnJlbnQ6IHVua25vd24iLCJHQTRfRVZFTlRfU0NIRU1BIiwiZmlsdGVyZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2dhNFByb2plY3Rpb25TZXJ2aWNlL2dhNFByb2plY3Rpb25TZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUgfSBmcm9tICcuLi9hbXBsaXR1ZGVTZXJ2aWNlL2V2ZW50TmFtZXMnO1xuaW1wb3J0IHsgR0E0UHJvamVjdGVkRXZlbnRDb25maWcsIEdBNF9FVkVOVF9TQ0hFTUEgfSBmcm9tICcuL2dhNEV2ZW50U2NoZW1hJztcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcignZ2E0UHJvamVjdGlvblNlcnZpY2UnKTtcblxuY29uc3QgZmlsdGVyVG9TY2hlbWEgPSAoXG4gIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBhbGxvd2VkRmllbGRzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGFsbG93ZWRGaWVsZHMpIHtcbiAgICBpZiAoZmllbGQgaW4gZXZlbnRQcm9wcykge1xuICAgICAgcmVzdWx0W2ZpZWxkXSA9IGV2ZW50UHJvcHNbZmllbGRdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gRmxhdHRlbiBvbmx5IHRydWUgdG9wLWxldmVsIG5lc3RlZCBvYmplY3RzIChrZXlzIHdpdGggbm8gZG90cykgb25lIGxldmVsIGRlZXAuXG4vLyBLZXlzIHRoYXQgYWxyZWFkeSBjb250YWluIGRvdHMgYXJlIGxlZnQgaW50YWN0IHNvIHRoYXQgZS5nLlxuLy8gYHRyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uX2RhdGE6IHsgLi4uIH1gIGlzIHByZXNlcnZlZCBmb3IgZG93bnN0cmVhbSBleHRyYWN0aW9uLlxuY29uc3QgZmxhdHRlbk9uZUxldmVsID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIGlmIChcbiAgICAgICFrZXkuaW5jbHVkZXMoJy4nKSAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICFBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICkge1xuICAgICAgZm9yIChjb25zdCBbc3ViS2V5LCBzdWJWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICAgIHJlc3VsdFtgJHtrZXl9LiR7c3ViS2V5fWBdID0gc3ViVmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBBcHBseSBhIEdBNCBwcm9qZWN0aW9uIG1hcCB7IGdhNEtleTogc291cmNlS2V5IH0gdG8gZXh0cmFjdCBhbmQgcmVuYW1lIGZpZWxkcy5cbmNvbnN0IGZpbHRlcldpdGhQcm9qZWN0aW9ucyA9IChcbiAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHByb2plY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2dhNEtleSwgc291cmNlS2V5XSBvZiBPYmplY3QuZW50cmllcyhwcm9qZWN0aW9ucykpIHtcbiAgICBpZiAoc291cmNlS2V5IGluIGV2ZW50UHJvcHMpIHtcbiAgICAgIHJlc3VsdFtnYTRLZXldID0gZXZlbnRQcm9wc1tzb3VyY2VLZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gXCJjb250ZXh0LnBhZ2VfdHlwZVwiIOKGkiBcImNvbnRleHRfcGFnZV90eXBlXCJcbmNvbnN0IGZsYXR0ZW5Eb3RLZXlzID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIHJlc3VsdFtrZXkucmVwbGFjZSgvXFwuL2csICdfJyldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIE9taXQgY29udGV4dC5wYWdlX2lkIGZvciBub24tcGRwL3BscCBwYWdlIHR5cGVzLiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBmb3IgY29udGV4dC5wYWdlX2lkIGlzOlxuLy8gUERQOiBwcm9kdWN0X2lkXG4vLyBQTFA6IHBscF9pZFxuLy8gU2VhcmNoOiBzZWFyY2ggcXVlcnlcbi8vIE90aGVyOiBwYWdlIHVybFxuLy8gV2Ugd2FudCB0byBvbWl0IGFsbCBidXQgcGRwIGFuZCBwbHAgcGFnZSB0eXBlcyB0byBwcm92aWRlIGEgY2xlYXIsIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGZvciBtZXJjaGFudHMuXG4vLyBIYW5kbGVzIGJvdGggZG90LW5vdGF0aW9uIGtleXMgKGFsbG93ZWRGaWVsZHMgcGF0aCkgYW5kIHJlbmFtZWQgR0E0IGtleXMgKGZpZWxkUHJvamVjdGlvbnMgcGF0aCkuXG5jb25zdCBzYW5pdGl6ZVBhZ2VJZCA9IChmaWx0ZXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHBhZ2VUeXBlID0gZmlsdGVyZWRbJ3BhZ2VfdHlwZSddID8/IGZpbHRlcmVkWydjb250ZXh0LnBhZ2VfdHlwZSddO1xuICBpZiAocGFnZVR5cGUgPT09ICdwZHAnIHx8IHBhZ2VUeXBlID09PSAncGxwJykge1xuICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgfVxuICBjb25zdCByZXN0ID0geyAuLi5maWx0ZXJlZCB9O1xuICBkZWxldGUgcmVzdFsncGFnZV9pZCddO1xuICBkZWxldGUgcmVzdFsnY29udGV4dC5wYWdlX2lkJ107XG4gIHJldHVybiByZXN0O1xufTtcblxuY29uc3QgZ2V0TmVzdGVkVmFsdWUgPSAob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcGF0aDogc3RyaW5nKTogdW5rbm93biA9PiB7XG4gIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICBsZXQgY3VycmVudDogdW5rbm93biA9IG9iajtcbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgaWYgKGN1cnJlbnQgPT09IG51bGwgfHwgdHlwZW9mIGN1cnJlbnQgIT09ICdvYmplY3QnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGN1cnJlbnQgPSAoY3VycmVudCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbcGFydF07XG4gIH1cbiAgcmV0dXJuIGN1cnJlbnQ7XG59O1xuXG4vLyBFeHRyYWN0IHdoaXRlbGlzdGVkIHN1Yi1maWVsZHMgZnJvbSB0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbl9kYXRhXG5jb25zdCBwcm9qZWN0V2lkZ2V0SW50ZXJhY3Rpb25EYXRhID0gKFxuICBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgY29uZmlnOiBHQTRQcm9qZWN0ZWRFdmVudENvbmZpZyxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgaWYgKCFjb25maWcud2lkZ2V0SW50ZXJhY3Rpb25EYXRhUHJvamVjdGlvbnMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBpbnRlcmFjdGlvbiA9IGV2ZW50UHJvcHNbJ3RyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uJ107XG4gIGlmICh0eXBlb2YgaW50ZXJhY3Rpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgcHJvamVjdGlvbk1hcCA9IGNvbmZpZy53aWRnZXRJbnRlcmFjdGlvbkRhdGFQcm9qZWN0aW9uc1tpbnRlcmFjdGlvbl07XG4gIGlmICghcHJvamVjdGlvbk1hcCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGludGVyYWN0aW9uRGF0YSA9IGV2ZW50UHJvcHNbJ3RyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uX2RhdGEnXTtcbiAgaWYgKFxuICAgIGludGVyYWN0aW9uRGF0YSA9PT0gbnVsbCB8fFxuICAgIGludGVyYWN0aW9uRGF0YSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgdHlwZW9mIGludGVyYWN0aW9uRGF0YSAhPT0gJ29iamVjdCdcbiAgKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGludGVyYWN0aW9uRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtnYUtleSwgc291cmNlUGF0aF0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdGlvbk1hcCkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGdldE5lc3RlZFZhbHVlKGRhdGEsIHNvdXJjZVBhdGgpO1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHRbZ2FLZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCB0cnVuY2F0ZVN0cmluZyA9ICh2YWx1ZTogdW5rbm93bik6IHVua25vd24gPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiAxMDApIHtcbiAgICByZXR1cm4gYCR7dmFsdWUuc3Vic3RyaW5nKDAsIDk3KX0uLi5gO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmNvbnN0IHRydW5jYXRlVmFsdWVzID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIHJlc3VsdFtrZXldID0gdHJ1bmNhdGVTdHJpbmcodmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCBwdXNoVG9EYXRhTGF5ZXIgPSAoZ2FFdmVudDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kYXRhTGF5ZXIpIHtcbiAgICB3aW5kb3cuZGF0YUxheWVyLnB1c2goZ2FFdmVudCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwcm9qZWN0VG9HQTQgPSAoXG4gIGV2ZW50TmFtZTogRW52aXZlTWV0cmljc0V2ZW50TmFtZSxcbiAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogdm9pZCA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2NoZW1hRW50cnkgPSBHQTRfRVZFTlRfU0NIRU1BW2V2ZW50TmFtZV07XG5cbiAgICBpZiAoc2NoZW1hRW50cnkuZ2FFdmVudE5hbWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWcgPSBzY2hlbWFFbnRyeTtcbiAgICBjb25zdCBwcm9wcyA9IGZsYXR0ZW5PbmVMZXZlbChldmVudFByb3BzID8/IHt9KTtcblxuICAgIGxldCBmaWx0ZXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaWYgKGNvbmZpZy5maWVsZFByb2plY3Rpb25zKSB7XG4gICAgICBmaWx0ZXJlZCA9IGZpbHRlcldpdGhQcm9qZWN0aW9ucyhwcm9wcywgY29uZmlnLmZpZWxkUHJvamVjdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXJlZCA9IGZpbHRlclRvU2NoZW1hKHByb3BzLCBjb25maWcuYWxsb3dlZEZpZWxkcyk7XG4gICAgfVxuICAgIGZpbHRlcmVkID0gc2FuaXRpemVQYWdlSWQoZmlsdGVyZWQpO1xuXG4gICAgY29uc3QgaW50ZXJhY3Rpb25GaWVsZHMgPSBwcm9qZWN0V2lkZ2V0SW50ZXJhY3Rpb25EYXRhKHByb3BzLCBjb25maWcpO1xuXG4gICAgY29uc3QgZmxhdFBhcmFtcyA9IHtcbiAgICAgIC4uLmZsYXR0ZW5Eb3RLZXlzKGZpbHRlcmVkKSxcbiAgICAgIC4uLmludGVyYWN0aW9uRmllbGRzLFxuICAgIH07XG5cbiAgICBjb25zdCB0cnVuY2F0ZWRQYXJhbXMgPSB0cnVuY2F0ZVZhbHVlcyhmbGF0UGFyYW1zKTtcblxuICAgIHB1c2hUb0RhdGFMYXllcih7XG4gICAgICBldmVudDogY29uZmlnLmdhRXZlbnROYW1lLFxuICAgICAgLi4udHJ1bmNhdGVkUGFyYW1zLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIubG9nRXJyb3IoJ0Vycm9yIHByb2plY3RpbmcgZXZlbnQgdG8gR0E0JywgZXJyLCB7XG4gICAgICBl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
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0UHJvamVjdGlvblNlcnZpY2UuY2pzIiwibmFtZXMiOlsiTG9nZ2VyIiwicmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiIsImN1cnJlbnQ6IHVua25vd24iLCJHQTRfRVZFTlRfU0NIRU1BIiwiZmlsdGVyZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2dhNFByb2plY3Rpb25TZXJ2aWNlL2dhNFByb2plY3Rpb25TZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUgfSBmcm9tICcuLi9hbXBsaXR1ZGVTZXJ2aWNlL2V2ZW50TmFtZXMnO1xuaW1wb3J0IHsgR0E0UHJvamVjdGVkRXZlbnRDb25maWcsIEdBNF9FVkVOVF9TQ0hFTUEgfSBmcm9tICcuL2dhNEV2ZW50U2NoZW1hJztcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcignZ2E0UHJvamVjdGlvblNlcnZpY2UnKTtcblxuY29uc3QgZmlsdGVyVG9TY2hlbWEgPSAoXG4gIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBhbGxvd2VkRmllbGRzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGFsbG93ZWRGaWVsZHMpIHtcbiAgICBpZiAoZmllbGQgaW4gZXZlbnRQcm9wcykge1xuICAgICAgcmVzdWx0W2ZpZWxkXSA9IGV2ZW50UHJvcHNbZmllbGRdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gRmxhdHRlbiBvbmx5IHRydWUgdG9wLWxldmVsIG5lc3RlZCBvYmplY3RzIChrZXlzIHdpdGggbm8gZG90cykgb25lIGxldmVsIGRlZXAuXG4vLyBLZXlzIHRoYXQgYWxyZWFkeSBjb250YWluIGRvdHMgYXJlIGxlZnQgaW50YWN0IHNvIHRoYXQgZS5nLlxuLy8gYHRyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uX2RhdGE6IHsgLi4uIH1gIGlzIHByZXNlcnZlZCBmb3IgZG93bnN0cmVhbSBleHRyYWN0aW9uLlxuY29uc3QgZmxhdHRlbk9uZUxldmVsID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIGlmIChcbiAgICAgICFrZXkuaW5jbHVkZXMoJy4nKSAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICFBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICkge1xuICAgICAgZm9yIChjb25zdCBbc3ViS2V5LCBzdWJWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICAgIHJlc3VsdFtgJHtrZXl9LiR7c3ViS2V5fWBdID0gc3ViVmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBBcHBseSBhIEdBNCBwcm9qZWN0aW9uIG1hcCB7IGdhNEtleTogc291cmNlS2V5IH0gdG8gZXh0cmFjdCBhbmQgcmVuYW1lIGZpZWxkcy5cbmNvbnN0IGZpbHRlcldpdGhQcm9qZWN0aW9ucyA9IChcbiAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHByb2plY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2dhNEtleSwgc291cmNlS2V5XSBvZiBPYmplY3QuZW50cmllcyhwcm9qZWN0aW9ucykpIHtcbiAgICBpZiAoc291cmNlS2V5IGluIGV2ZW50UHJvcHMpIHtcbiAgICAgIHJlc3VsdFtnYTRLZXldID0gZXZlbnRQcm9wc1tzb3VyY2VLZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gXCJjb250ZXh0LnBhZ2VfdHlwZVwiIOKGkiBcImNvbnRleHRfcGFnZV90eXBlXCJcbmNvbnN0IGZsYXR0ZW5Eb3RLZXlzID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIHJlc3VsdFtrZXkucmVwbGFjZSgvXFwuL2csICdfJyldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIE9taXQgY29udGV4dC5wYWdlX2lkIGZvciBub24tcGRwL3BscCBwYWdlIHR5cGVzLiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBmb3IgY29udGV4dC5wYWdlX2lkIGlzOlxuLy8gUERQOiBwcm9kdWN0X2lkXG4vLyBQTFA6IHBscF9pZFxuLy8gU2VhcmNoOiBzZWFyY2ggcXVlcnlcbi8vIE90aGVyOiBwYWdlIHVybFxuLy8gV2Ugd2FudCB0byBvbWl0IGFsbCBidXQgcGRwIGFuZCBwbHAgcGFnZSB0eXBlcyB0byBwcm92aWRlIGEgY2xlYXIsIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGZvciBtZXJjaGFudHMuXG4vLyBIYW5kbGVzIGJvdGggZG90LW5vdGF0aW9uIGtleXMgKGFsbG93ZWRGaWVsZHMgcGF0aCkgYW5kIHJlbmFtZWQgR0E0IGtleXMgKGZpZWxkUHJvamVjdGlvbnMgcGF0aCkuXG5jb25zdCBzYW5pdGl6ZVBhZ2VJZCA9IChmaWx0ZXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHBhZ2VUeXBlID0gZmlsdGVyZWQucGFnZV90eXBlID8/IGZpbHRlcmVkWydjb250ZXh0LnBhZ2VfdHlwZSddO1xuICBpZiAocGFnZVR5cGUgPT09ICdwZHAnIHx8IHBhZ2VUeXBlID09PSAncGxwJykge1xuICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgfVxuICBjb25zdCByZXN0ID0geyAuLi5maWx0ZXJlZCB9O1xuICBkZWxldGUgcmVzdC5wYWdlX2lkO1xuICBkZWxldGUgcmVzdFsnY29udGV4dC5wYWdlX2lkJ107XG4gIHJldHVybiByZXN0O1xufTtcblxuY29uc3QgZ2V0TmVzdGVkVmFsdWUgPSAob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgcGF0aDogc3RyaW5nKTogdW5rbm93biA9PiB7XG4gIGNvbnN0IHBhcnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICBsZXQgY3VycmVudDogdW5rbm93biA9IG9iajtcbiAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgaWYgKGN1cnJlbnQgPT09IG51bGwgfHwgdHlwZW9mIGN1cnJlbnQgIT09ICdvYmplY3QnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGN1cnJlbnQgPSAoY3VycmVudCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbcGFydF07XG4gIH1cbiAgcmV0dXJuIGN1cnJlbnQ7XG59O1xuXG4vLyBFeHRyYWN0IHdoaXRlbGlzdGVkIHN1Yi1maWVsZHMgZnJvbSB0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbl9kYXRhXG5jb25zdCBwcm9qZWN0V2lkZ2V0SW50ZXJhY3Rpb25EYXRhID0gKFxuICBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgY29uZmlnOiBHQTRQcm9qZWN0ZWRFdmVudENvbmZpZyxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgaWYgKCFjb25maWcud2lkZ2V0SW50ZXJhY3Rpb25EYXRhUHJvamVjdGlvbnMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBpbnRlcmFjdGlvbiA9IGV2ZW50UHJvcHNbJ3RyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uJ107XG4gIGlmICh0eXBlb2YgaW50ZXJhY3Rpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgcHJvamVjdGlvbk1hcCA9IGNvbmZpZy53aWRnZXRJbnRlcmFjdGlvbkRhdGFQcm9qZWN0aW9uc1tpbnRlcmFjdGlvbl07XG4gIGlmICghcHJvamVjdGlvbk1hcCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGludGVyYWN0aW9uRGF0YSA9IGV2ZW50UHJvcHNbJ3RyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uX2RhdGEnXTtcbiAgaWYgKFxuICAgIGludGVyYWN0aW9uRGF0YSA9PT0gbnVsbCB8fFxuICAgIGludGVyYWN0aW9uRGF0YSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgdHlwZW9mIGludGVyYWN0aW9uRGF0YSAhPT0gJ29iamVjdCdcbiAgKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGludGVyYWN0aW9uRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtnYUtleSwgc291cmNlUGF0aF0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdGlvbk1hcCkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGdldE5lc3RlZFZhbHVlKGRhdGEsIHNvdXJjZVBhdGgpO1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHRbZ2FLZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCB0cnVuY2F0ZVN0cmluZyA9ICh2YWx1ZTogdW5rbm93bik6IHVua25vd24gPT4ge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiAxMDApIHtcbiAgICByZXR1cm4gYCR7dmFsdWUuc3Vic3RyaW5nKDAsIDk3KX0uLi5gO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmNvbnN0IHRydW5jYXRlVmFsdWVzID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIHJlc3VsdFtrZXldID0gdHJ1bmNhdGVTdHJpbmcodmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCBwdXNoVG9EYXRhTGF5ZXIgPSAoZ2FFdmVudDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkID0+IHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kYXRhTGF5ZXIpIHtcbiAgICB3aW5kb3cuZGF0YUxheWVyLnB1c2goZ2FFdmVudCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwcm9qZWN0VG9HQTQgPSAoXG4gIGV2ZW50TmFtZTogRW52aXZlTWV0cmljc0V2ZW50TmFtZSxcbiAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogdm9pZCA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2NoZW1hRW50cnkgPSBHQTRfRVZFTlRfU0NIRU1BW2V2ZW50TmFtZV07XG5cbiAgICBpZiAoc2NoZW1hRW50cnkuZ2FFdmVudE5hbWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWcgPSBzY2hlbWFFbnRyeTtcbiAgICBjb25zdCBwcm9wcyA9IGZsYXR0ZW5PbmVMZXZlbChldmVudFByb3BzID8/IHt9KTtcblxuICAgIGxldCBmaWx0ZXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaWYgKGNvbmZpZy5maWVsZFByb2plY3Rpb25zKSB7XG4gICAgICBmaWx0ZXJlZCA9IGZpbHRlcldpdGhQcm9qZWN0aW9ucyhwcm9wcywgY29uZmlnLmZpZWxkUHJvamVjdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXJlZCA9IGZpbHRlclRvU2NoZW1hKHByb3BzLCBjb25maWcuYWxsb3dlZEZpZWxkcyk7XG4gICAgfVxuICAgIGZpbHRlcmVkID0gc2FuaXRpemVQYWdlSWQoZmlsdGVyZWQpO1xuXG4gICAgY29uc3QgaW50ZXJhY3Rpb25GaWVsZHMgPSBwcm9qZWN0V2lkZ2V0SW50ZXJhY3Rpb25EYXRhKHByb3BzLCBjb25maWcpO1xuXG4gICAgY29uc3QgZmxhdFBhcmFtcyA9IHtcbiAgICAgIC4uLmZsYXR0ZW5Eb3RLZXlzKGZpbHRlcmVkKSxcbiAgICAgIC4uLmludGVyYWN0aW9uRmllbGRzLFxuICAgIH07XG5cbiAgICBjb25zdCB0cnVuY2F0ZWRQYXJhbXMgPSB0cnVuY2F0ZVZhbHVlcyhmbGF0UGFyYW1zKTtcblxuICAgIHB1c2hUb0RhdGFMYXllcih7XG4gICAgICBldmVudDogY29uZmlnLmdhRXZlbnROYW1lLFxuICAgICAgLi4udHJ1bmNhdGVkUGFyYW1zLFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIubG9nRXJyb3IoJ0Vycm9yIHByb2plY3RpbmcgZXZlbnQgdG8gR0E0JywgZXJyLCB7XG4gICAgICBldmVudE5h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
@@ -25,10 +25,10 @@ const flattenDotKeys = (obj) => {
25
25
  return result;
26
26
  };
27
27
  const sanitizePageId = (filtered) => {
28
- const pageType = filtered["page_type"] ?? filtered["context.page_type"];
28
+ const pageType = filtered.page_type ?? filtered["context.page_type"];
29
29
  if (pageType === "pdp" || pageType === "plp") return filtered;
30
30
  const rest = { ...filtered };
31
- delete rest["page_id"];
31
+ delete rest.page_id;
32
32
  delete rest["context.page_id"];
33
33
  return rest;
34
34
  };
@@ -95,4 +95,4 @@ const projectToGA4 = (eventName, eventProps) => {
95
95
 
96
96
  //#endregion
97
97
  export { projectToGA4 };
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0UHJvamVjdGlvblNlcnZpY2UuanMiLCJuYW1lcyI6WyJMb2dnZXIiLCJyZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IiwiY3VycmVudDogdW5rbm93biIsImZpbHRlcmVkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9nYTRQcm9qZWN0aW9uU2VydmljZS9nYTRQcm9qZWN0aW9uU2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSAnLi4vYW1wbGl0dWRlU2VydmljZS9ldmVudE5hbWVzJztcbmltcG9ydCB7IEdBNFByb2plY3RlZEV2ZW50Q29uZmlnLCBHQTRfRVZFTlRfU0NIRU1BIH0gZnJvbSAnLi9nYTRFdmVudFNjaGVtYSc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ2dhNFByb2plY3Rpb25TZXJ2aWNlJyk7XG5cbmNvbnN0IGZpbHRlclRvU2NoZW1hID0gKFxuICBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgYWxsb3dlZEZpZWxkczogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBmaWVsZCBvZiBhbGxvd2VkRmllbGRzKSB7XG4gICAgaWYgKGZpZWxkIGluIGV2ZW50UHJvcHMpIHtcbiAgICAgIHJlc3VsdFtmaWVsZF0gPSBldmVudFByb3BzW2ZpZWxkXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIEZsYXR0ZW4gb25seSB0cnVlIHRvcC1sZXZlbCBuZXN0ZWQgb2JqZWN0cyAoa2V5cyB3aXRoIG5vIGRvdHMpIG9uZSBsZXZlbCBkZWVwLlxuLy8gS2V5cyB0aGF0IGFscmVhZHkgY29udGFpbiBkb3RzIGFyZSBsZWZ0IGludGFjdCBzbyB0aGF0IGUuZy5cbi8vIGB0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbl9kYXRhOiB7IC4uLiB9YCBpcyBwcmVzZXJ2ZWQgZm9yIGRvd25zdHJlYW0gZXh0cmFjdGlvbi5cbmNvbnN0IGZsYXR0ZW5PbmVMZXZlbCA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICBpZiAoXG4gICAgICAha2V5LmluY2x1ZGVzKCcuJykgJiZcbiAgICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAhQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICApIHtcbiAgICAgIGZvciAoY29uc3QgW3N1YktleSwgc3ViVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgICAgICByZXN1bHRbYCR7a2V5fS4ke3N1YktleX1gXSA9IHN1YlZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gQXBwbHkgYSBHQTQgcHJvamVjdGlvbiBtYXAgeyBnYTRLZXk6IHNvdXJjZUtleSB9IHRvIGV4dHJhY3QgYW5kIHJlbmFtZSBmaWVsZHMuXG5jb25zdCBmaWx0ZXJXaXRoUHJvamVjdGlvbnMgPSAoXG4gIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBwcm9qZWN0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtnYTRLZXksIHNvdXJjZUtleV0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdGlvbnMpKSB7XG4gICAgaWYgKHNvdXJjZUtleSBpbiBldmVudFByb3BzKSB7XG4gICAgICByZXN1bHRbZ2E0S2V5XSA9IGV2ZW50UHJvcHNbc291cmNlS2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIFwiY29udGV4dC5wYWdlX3R5cGVcIiDihpIgXCJjb250ZXh0X3BhZ2VfdHlwZVwiXG5jb25zdCBmbGF0dGVuRG90S2V5cyA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICByZXN1bHRba2V5LnJlcGxhY2UoL1xcLi9nLCAnXycpXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBPbWl0IGNvbnRleHQucGFnZV9pZCBmb3Igbm9uLXBkcC9wbHAgcGFnZSB0eXBlcy4gVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZm9yIGNvbnRleHQucGFnZV9pZCBpczpcbi8vIFBEUDogcHJvZHVjdF9pZFxuLy8gUExQOiBwbHBfaWRcbi8vIFNlYXJjaDogc2VhcmNoIHF1ZXJ5XG4vLyBPdGhlcjogcGFnZSB1cmxcbi8vIFdlIHdhbnQgdG8gb21pdCBhbGwgYnV0IHBkcCBhbmQgcGxwIHBhZ2UgdHlwZXMgdG8gcHJvdmlkZSBhIGNsZWFyLCBjb25zaXN0ZW50IGludGVyZmFjZSBmb3IgbWVyY2hhbnRzLlxuLy8gSGFuZGxlcyBib3RoIGRvdC1ub3RhdGlvbiBrZXlzIChhbGxvd2VkRmllbGRzIHBhdGgpIGFuZCByZW5hbWVkIEdBNCBrZXlzIChmaWVsZFByb2plY3Rpb25zIHBhdGgpLlxuY29uc3Qgc2FuaXRpemVQYWdlSWQgPSAoZmlsdGVyZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCBwYWdlVHlwZSA9IGZpbHRlcmVkWydwYWdlX3R5cGUnXSA/PyBmaWx0ZXJlZFsnY29udGV4dC5wYWdlX3R5cGUnXTtcbiAgaWYgKHBhZ2VUeXBlID09PSAncGRwJyB8fCBwYWdlVHlwZSA9PT0gJ3BscCcpIHtcbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH1cbiAgY29uc3QgcmVzdCA9IHsgLi4uZmlsdGVyZWQgfTtcbiAgZGVsZXRlIHJlc3RbJ3BhZ2VfaWQnXTtcbiAgZGVsZXRlIHJlc3RbJ2NvbnRleHQucGFnZV9pZCddO1xuICByZXR1cm4gcmVzdDtcbn07XG5cbmNvbnN0IGdldE5lc3RlZFZhbHVlID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHBhdGg6IHN0cmluZyk6IHVua25vd24gPT4ge1xuICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgbGV0IGN1cnJlbnQ6IHVua25vd24gPSBvYmo7XG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmIChjdXJyZW50ID09PSBudWxsIHx8IHR5cGVvZiBjdXJyZW50ICE9PSAnb2JqZWN0JykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjdXJyZW50ID0gKGN1cnJlbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3BhcnRdO1xuICB9XG4gIHJldHVybiBjdXJyZW50O1xufTtcblxuLy8gRXh0cmFjdCB3aGl0ZWxpc3RlZCBzdWItZmllbGRzIGZyb20gdHJpZ2dlci53aWRnZXRfaW50ZXJhY3Rpb25fZGF0YVxuY29uc3QgcHJvamVjdFdpZGdldEludGVyYWN0aW9uRGF0YSA9IChcbiAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGNvbmZpZzogR0E0UHJvamVjdGVkRXZlbnRDb25maWcsXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGlmICghY29uZmlnLndpZGdldEludGVyYWN0aW9uRGF0YVByb2plY3Rpb25zKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgaW50ZXJhY3Rpb24gPSBldmVudFByb3BzWyd0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbiddO1xuICBpZiAodHlwZW9mIGludGVyYWN0aW9uICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHByb2plY3Rpb25NYXAgPSBjb25maWcud2lkZ2V0SW50ZXJhY3Rpb25EYXRhUHJvamVjdGlvbnNbaW50ZXJhY3Rpb25dO1xuICBpZiAoIXByb2plY3Rpb25NYXApIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBpbnRlcmFjdGlvbkRhdGEgPSBldmVudFByb3BzWyd0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbl9kYXRhJ107XG4gIGlmIChcbiAgICBpbnRlcmFjdGlvbkRhdGEgPT09IG51bGwgfHxcbiAgICBpbnRlcmFjdGlvbkRhdGEgPT09IHVuZGVmaW5lZCB8fFxuICAgIHR5cGVvZiBpbnRlcmFjdGlvbkRhdGEgIT09ICdvYmplY3QnXG4gICkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBpbnRlcmFjdGlvbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBbZ2FLZXksIHNvdXJjZVBhdGhdIG9mIE9iamVjdC5lbnRyaWVzKHByb2plY3Rpb25NYXApKSB7XG4gICAgY29uc3QgdmFsdWUgPSBnZXROZXN0ZWRWYWx1ZShkYXRhLCBzb3VyY2VQYXRoKTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0W2dhS2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgdHJ1bmNhdGVTdHJpbmcgPSAodmFsdWU6IHVua25vd24pOiB1bmtub3duID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gMTAwKSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlLnN1YnN0cmluZygwLCA5Nyl9Li4uYDtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59O1xuXG5jb25zdCB0cnVuY2F0ZVZhbHVlcyA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICByZXN1bHRba2V5XSA9IHRydW5jYXRlU3RyaW5nKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgcHVzaFRvRGF0YUxheWVyID0gKGdhRXZlbnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgd2luZG93LmRhdGFMYXllci5wdXNoKGdhRXZlbnQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcHJvamVjdFRvR0E0ID0gKFxuICBldmVudE5hbWU6IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IHZvaWQgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNjaGVtYUVudHJ5ID0gR0E0X0VWRU5UX1NDSEVNQVtldmVudE5hbWVdO1xuXG4gICAgaWYgKHNjaGVtYUVudHJ5LmdhRXZlbnROYW1lID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0gc2NoZW1hRW50cnk7XG4gICAgY29uc3QgcHJvcHMgPSBmbGF0dGVuT25lTGV2ZWwoZXZlbnRQcm9wcyA/PyB7fSk7XG5cbiAgICBsZXQgZmlsdGVyZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGlmIChjb25maWcuZmllbGRQcm9qZWN0aW9ucykge1xuICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJXaXRoUHJvamVjdGlvbnMocHJvcHMsIGNvbmZpZy5maWVsZFByb2plY3Rpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJUb1NjaGVtYShwcm9wcywgY29uZmlnLmFsbG93ZWRGaWVsZHMpO1xuICAgIH1cbiAgICBmaWx0ZXJlZCA9IHNhbml0aXplUGFnZUlkKGZpbHRlcmVkKTtcblxuICAgIGNvbnN0IGludGVyYWN0aW9uRmllbGRzID0gcHJvamVjdFdpZGdldEludGVyYWN0aW9uRGF0YShwcm9wcywgY29uZmlnKTtcblxuICAgIGNvbnN0IGZsYXRQYXJhbXMgPSB7XG4gICAgICAuLi5mbGF0dGVuRG90S2V5cyhmaWx0ZXJlZCksXG4gICAgICAuLi5pbnRlcmFjdGlvbkZpZWxkcyxcbiAgICB9O1xuXG4gICAgY29uc3QgdHJ1bmNhdGVkUGFyYW1zID0gdHJ1bmNhdGVWYWx1ZXMoZmxhdFBhcmFtcyk7XG5cbiAgICBwdXNoVG9EYXRhTGF5ZXIoe1xuICAgICAgZXZlbnQ6IGNvbmZpZy5nYUV2ZW50TmFtZSxcbiAgICAgIC4uLnRydW5jYXRlZFBhcmFtcyxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmxvZ0Vycm9yKCdFcnJvciBwcm9qZWN0aW5nIGV2ZW50IHRvIEdBNCcsIGVyciwge1xuICAgICAgZXZlbnROYW1lLFxuICAgIH0pO1xu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
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0UHJvamVjdGlvblNlcnZpY2UuanMiLCJuYW1lcyI6WyJMb2dnZXIiLCJyZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IiwiY3VycmVudDogdW5rbm93biIsImZpbHRlcmVkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9nYTRQcm9qZWN0aW9uU2VydmljZS9nYTRQcm9qZWN0aW9uU2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSAnLi4vYW1wbGl0dWRlU2VydmljZS9ldmVudE5hbWVzJztcbmltcG9ydCB7IEdBNFByb2plY3RlZEV2ZW50Q29uZmlnLCBHQTRfRVZFTlRfU0NIRU1BIH0gZnJvbSAnLi9nYTRFdmVudFNjaGVtYSc7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ2dhNFByb2plY3Rpb25TZXJ2aWNlJyk7XG5cbmNvbnN0IGZpbHRlclRvU2NoZW1hID0gKFxuICBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgYWxsb3dlZEZpZWxkczogcmVhZG9ubHkgc3RyaW5nW10sXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBmaWVsZCBvZiBhbGxvd2VkRmllbGRzKSB7XG4gICAgaWYgKGZpZWxkIGluIGV2ZW50UHJvcHMpIHtcbiAgICAgIHJlc3VsdFtmaWVsZF0gPSBldmVudFByb3BzW2ZpZWxkXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIEZsYXR0ZW4gb25seSB0cnVlIHRvcC1sZXZlbCBuZXN0ZWQgb2JqZWN0cyAoa2V5cyB3aXRoIG5vIGRvdHMpIG9uZSBsZXZlbCBkZWVwLlxuLy8gS2V5cyB0aGF0IGFscmVhZHkgY29udGFpbiBkb3RzIGFyZSBsZWZ0IGludGFjdCBzbyB0aGF0IGUuZy5cbi8vIGB0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbl9kYXRhOiB7IC4uLiB9YCBpcyBwcmVzZXJ2ZWQgZm9yIGRvd25zdHJlYW0gZXh0cmFjdGlvbi5cbmNvbnN0IGZsYXR0ZW5PbmVMZXZlbCA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICBpZiAoXG4gICAgICAha2V5LmluY2x1ZGVzKCcuJykgJiZcbiAgICAgIHZhbHVlICE9PSBudWxsICYmXG4gICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAhQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICApIHtcbiAgICAgIGZvciAoY29uc3QgW3N1YktleSwgc3ViVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgICAgICByZXN1bHRbYCR7a2V5fS4ke3N1YktleX1gXSA9IHN1YlZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gQXBwbHkgYSBHQTQgcHJvamVjdGlvbiBtYXAgeyBnYTRLZXk6IHNvdXJjZUtleSB9IHRvIGV4dHJhY3QgYW5kIHJlbmFtZSBmaWVsZHMuXG5jb25zdCBmaWx0ZXJXaXRoUHJvamVjdGlvbnMgPSAoXG4gIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBwcm9qZWN0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtnYTRLZXksIHNvdXJjZUtleV0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdGlvbnMpKSB7XG4gICAgaWYgKHNvdXJjZUtleSBpbiBldmVudFByb3BzKSB7XG4gICAgICByZXN1bHRbZ2E0S2V5XSA9IGV2ZW50UHJvcHNbc291cmNlS2V5XTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIFwiY29udGV4dC5wYWdlX3R5cGVcIiDihpIgXCJjb250ZXh0X3BhZ2VfdHlwZVwiXG5jb25zdCBmbGF0dGVuRG90S2V5cyA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICByZXN1bHRba2V5LnJlcGxhY2UoL1xcLi9nLCAnXycpXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBPbWl0IGNvbnRleHQucGFnZV9pZCBmb3Igbm9uLXBkcC9wbHAgcGFnZSB0eXBlcy4gVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZm9yIGNvbnRleHQucGFnZV9pZCBpczpcbi8vIFBEUDogcHJvZHVjdF9pZFxuLy8gUExQOiBwbHBfaWRcbi8vIFNlYXJjaDogc2VhcmNoIHF1ZXJ5XG4vLyBPdGhlcjogcGFnZSB1cmxcbi8vIFdlIHdhbnQgdG8gb21pdCBhbGwgYnV0IHBkcCBhbmQgcGxwIHBhZ2UgdHlwZXMgdG8gcHJvdmlkZSBhIGNsZWFyLCBjb25zaXN0ZW50IGludGVyZmFjZSBmb3IgbWVyY2hhbnRzLlxuLy8gSGFuZGxlcyBib3RoIGRvdC1ub3RhdGlvbiBrZXlzIChhbGxvd2VkRmllbGRzIHBhdGgpIGFuZCByZW5hbWVkIEdBNCBrZXlzIChmaWVsZFByb2plY3Rpb25zIHBhdGgpLlxuY29uc3Qgc2FuaXRpemVQYWdlSWQgPSAoZmlsdGVyZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCBwYWdlVHlwZSA9IGZpbHRlcmVkLnBhZ2VfdHlwZSA/PyBmaWx0ZXJlZFsnY29udGV4dC5wYWdlX3R5cGUnXTtcbiAgaWYgKHBhZ2VUeXBlID09PSAncGRwJyB8fCBwYWdlVHlwZSA9PT0gJ3BscCcpIHtcbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH1cbiAgY29uc3QgcmVzdCA9IHsgLi4uZmlsdGVyZWQgfTtcbiAgZGVsZXRlIHJlc3QucGFnZV9pZDtcbiAgZGVsZXRlIHJlc3RbJ2NvbnRleHQucGFnZV9pZCddO1xuICByZXR1cm4gcmVzdDtcbn07XG5cbmNvbnN0IGdldE5lc3RlZFZhbHVlID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHBhdGg6IHN0cmluZyk6IHVua25vd24gPT4ge1xuICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgbGV0IGN1cnJlbnQ6IHVua25vd24gPSBvYmo7XG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIGlmIChjdXJyZW50ID09PSBudWxsIHx8IHR5cGVvZiBjdXJyZW50ICE9PSAnb2JqZWN0JykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjdXJyZW50ID0gKGN1cnJlbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3BhcnRdO1xuICB9XG4gIHJldHVybiBjdXJyZW50O1xufTtcblxuLy8gRXh0cmFjdCB3aGl0ZWxpc3RlZCBzdWItZmllbGRzIGZyb20gdHJpZ2dlci53aWRnZXRfaW50ZXJhY3Rpb25fZGF0YVxuY29uc3QgcHJvamVjdFdpZGdldEludGVyYWN0aW9uRGF0YSA9IChcbiAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGNvbmZpZzogR0E0UHJvamVjdGVkRXZlbnRDb25maWcsXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGlmICghY29uZmlnLndpZGdldEludGVyYWN0aW9uRGF0YVByb2plY3Rpb25zKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgaW50ZXJhY3Rpb24gPSBldmVudFByb3BzWyd0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbiddO1xuICBpZiAodHlwZW9mIGludGVyYWN0aW9uICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHByb2plY3Rpb25NYXAgPSBjb25maWcud2lkZ2V0SW50ZXJhY3Rpb25EYXRhUHJvamVjdGlvbnNbaW50ZXJhY3Rpb25dO1xuICBpZiAoIXByb2plY3Rpb25NYXApIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBpbnRlcmFjdGlvbkRhdGEgPSBldmVudFByb3BzWyd0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbl9kYXRhJ107XG4gIGlmIChcbiAgICBpbnRlcmFjdGlvbkRhdGEgPT09IG51bGwgfHxcbiAgICBpbnRlcmFjdGlvbkRhdGEgPT09IHVuZGVmaW5lZCB8fFxuICAgIHR5cGVvZiBpbnRlcmFjdGlvbkRhdGEgIT09ICdvYmplY3QnXG4gICkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBpbnRlcmFjdGlvbkRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBbZ2FLZXksIHNvdXJjZVBhdGhdIG9mIE9iamVjdC5lbnRyaWVzKHByb2plY3Rpb25NYXApKSB7XG4gICAgY29uc3QgdmFsdWUgPSBnZXROZXN0ZWRWYWx1ZShkYXRhLCBzb3VyY2VQYXRoKTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0W2dhS2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgdHJ1bmNhdGVTdHJpbmcgPSAodmFsdWU6IHVua25vd24pOiB1bmtub3duID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gMTAwKSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlLnN1YnN0cmluZygwLCA5Nyl9Li4uYDtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59O1xuXG5jb25zdCB0cnVuY2F0ZVZhbHVlcyA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICByZXN1bHRba2V5XSA9IHRydW5jYXRlU3RyaW5nKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgcHVzaFRvRGF0YUxheWVyID0gKGdhRXZlbnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgd2luZG93LmRhdGFMYXllci5wdXNoKGdhRXZlbnQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcHJvamVjdFRvR0E0ID0gKFxuICBldmVudE5hbWU6IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IHZvaWQgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNjaGVtYUVudHJ5ID0gR0E0X0VWRU5UX1NDSEVNQVtldmVudE5hbWVdO1xuXG4gICAgaWYgKHNjaGVtYUVudHJ5LmdhRXZlbnROYW1lID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0gc2NoZW1hRW50cnk7XG4gICAgY29uc3QgcHJvcHMgPSBmbGF0dGVuT25lTGV2ZWwoZXZlbnRQcm9wcyA/PyB7fSk7XG5cbiAgICBsZXQgZmlsdGVyZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGlmIChjb25maWcuZmllbGRQcm9qZWN0aW9ucykge1xuICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJXaXRoUHJvamVjdGlvbnMocHJvcHMsIGNvbmZpZy5maWVsZFByb2plY3Rpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmlsdGVyZWQgPSBmaWx0ZXJUb1NjaGVtYShwcm9wcywgY29uZmlnLmFsbG93ZWRGaWVsZHMpO1xuICAgIH1cbiAgICBmaWx0ZXJlZCA9IHNhbml0aXplUGFnZUlkKGZpbHRlcmVkKTtcblxuICAgIGNvbnN0IGludGVyYWN0aW9uRmllbGRzID0gcHJvamVjdFdpZGdldEludGVyYWN0aW9uRGF0YShwcm9wcywgY29uZmlnKTtcblxuICAgIGNvbnN0IGZsYXRQYXJhbXMgPSB7XG4gICAgICAuLi5mbGF0dGVuRG90S2V5cyhmaWx0ZXJlZCksXG4gICAgICAuLi5pbnRlcmFjdGlvbkZpZWxkcyxcbiAgICB9O1xuXG4gICAgY29uc3QgdHJ1bmNhdGVkUGFyYW1zID0gdHJ1bmNhdGVWYWx1ZXMoZmxhdFBhcmFtcyk7XG5cbiAgICBwdXNoVG9EYXRhTGF5ZXIoe1xuICAgICAgZXZlbnQ6IGNvbmZpZy5nYUV2ZW50TmFtZSxcbiAgICAgIC4uLnRydW5jYXRlZFBhcmFtcyxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmxvZ0Vycm9yKCdFcnJvciBwcm9qZWN0aW5nIGV2ZW50IHRvIEdBNCcsIGVyciwge1xuICAgICAgZXZlbnROYW1lLFxuICAgIH0pO1xuICB9XG59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